From f3501bf01de7fba3d97741b9389c555f11b0df02 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Thu, 1 Sep 2022 12:59:13 +0200
Subject: [PATCH] add JSONSummary function to chain_mapping.MappingResult class

---
 modules/mol/alg/pymod/chain_mapping.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/modules/mol/alg/pymod/chain_mapping.py b/modules/mol/alg/pymod/chain_mapping.py
index 1d64e8748..844e0052c 100644
--- a/modules/mol/alg/pymod/chain_mapping.py
+++ b/modules/mol/alg/pymod/chain_mapping.py
@@ -63,7 +63,7 @@ class MappingResult:
 
     @property
     def mapping(self):
-        """ Mapping of :attr:`model` chains onto :attr:`~target`
+        """ Mapping of :attr:`~model` chains onto :attr:`~target`
 
         Exact same shape as :attr:`~chem_groups` but containing the names of the
         mapped chains in :attr:`~model`. May contain None for :attr:`~target`
@@ -88,6 +88,21 @@ class MappingResult:
         """
         return self._alns
 
+    def JSONSummary(self):
+        """ Returns JSON serializable summary of results
+        """
+        json_dict = dict()
+        json_dict["chem_groups"] = self.chem_groups
+        json_dict["mapping"] = self.mapping
+        json_dict["alns"] = list()
+        for aln in self.alns.values():
+            trg_seq = aln.GetSequence(0)
+            mdl_seq = aln.GetSequence(1)
+            aln_dict = {"trg_ch": trg_seq.GetName(), "trg_seq": str(trg_seq),
+                        "mdl_ch": mdl_seq.GetName(), "mdl_seq": str(mdl_seq)}
+            json_dict["alns"].append(aln_dict)
+        return json_dict
+
 
 class ReprResult:
 
-- 
GitLab