From c9fcbc7c59597d2c96a51d03fef66bd4fef1cace Mon Sep 17 00:00:00 2001
From: Gerardo Tauriello <gerardo.tauriello@unibas.ch>
Date: Tue, 24 Apr 2018 19:43:01 +0200
Subject: [PATCH] CA-only means CA-only for all scores.

---
 modules/mol/alg/pymod/qsscoring.py | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/modules/mol/alg/pymod/qsscoring.py b/modules/mol/alg/pymod/qsscoring.py
index aa37d37da..8686ff05c 100644
--- a/modules/mol/alg/pymod/qsscoring.py
+++ b/modules/mol/alg/pymod/qsscoring.py
@@ -856,7 +856,6 @@ class OligoLDDTScorer(object):
     self._lddt_mdl = None
     self._oligo_lddt_scorer = None
     self._sc_lddt_scorers = None
-    self._report = dict()
 
   @property
   def lddt_ref(self):
@@ -912,10 +911,17 @@ class OligoLDDTScorer(object):
           aln.GetSequence(1).GetString())
         modelseq.AttachView(model)
         aln.AddSequence(modelseq)
-        lddt_scorer = lDDTScorer(
-          references=[reference],
-          model=model,
-          settings=self.settings)
+        # Filter to CA-only if desired (done after AttachView to not mess it up)
+        if self.calpha_only:
+          lddt_scorer = lDDTScorer(
+            references=[reference.Select('aname=CA')],
+            model=model.Select('aname=CA'),
+            settings=self.settings)
+        else:
+          lddt_scorer = lDDTScorer(
+            references=[reference],
+            model=model,
+            settings=self.settings)
         lddt_scorer.alignment = aln  # a bit of a hack
         self._sc_lddt_scorers.append(lddt_scorer)
     return self._sc_lddt_scorers
@@ -952,12 +958,14 @@ class OligoLDDTScorer(object):
                              (ref_res.qualified_name))
         else:
           assigned_residues.append(ref_res.qualified_name)
-        scores.append({
-          "residue_number": ref_res.GetNumber().num,
-          "residue_name": ref_res.name,
-          "lddt": mdl_res_renum.GetFloatProp(self.settings.label),
-          "conserved_contacts": mdl_res_renum.GetFloatProp(self.settings.label + "_conserved"),
-          "total_contacts": mdl_res_renum.GetFloatProp(self.settings.label + "_total")})
+        # check if property there (may be missing for CA-only)
+        if mdl_res_renum.HasProp(self.settings.label):
+          scores.append({
+            "residue_number": ref_res.GetNumber().num,
+            "residue_name": ref_res.name,
+            "lddt": mdl_res_renum.GetFloatProp(self.settings.label),
+            "conserved_contacts": mdl_res_renum.GetFloatProp(self.settings.label + "_conserved"),
+            "total_contacts": mdl_res_renum.GetFloatProp(self.settings.label + "_total")})
     return scores
 
   @property
-- 
GitLab