From cf017c86e0c27799b66f0fdc2e4952e1b787f33f Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Tue, 23 Jul 2024 16:04:05 +0200
Subject: [PATCH] Scoring: Set transformation matrix to identity matrix if NO
 residue is mapped

---
 modules/mol/alg/pymod/scoring.py | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/modules/mol/alg/pymod/scoring.py b/modules/mol/alg/pymod/scoring.py
index 7de667890..24a676fb9 100644
--- a/modules/mol/alg/pymod/scoring.py
+++ b/modules/mol/alg/pymod/scoring.py
@@ -1350,9 +1350,13 @@ class Scorer:
         """
         if self._transform is None:
             if len(self.mapped_model_pos) < 3:
-                res = mol.alg.SuperposeSVD(self.mapped_model_pos_full_bb,
-                                           self.mapped_target_pos_full_bb)
-                self._transform = res.transformation
+                if len(self.mapped_model_pos_full_bb) >=3:
+                    res = mol.alg.SuperposeSVD(self.mapped_model_pos_full_bb,
+                                               self.mapped_target_pos_full_bb)
+                    self._transform = res.transformation
+                else:
+                    # there is really nothing we can do => set identity matrix
+                    self._transform = geom.Mat4()
             else:
                 res = mol.alg.SuperposeSVD(self.mapped_model_pos,
                                            self.mapped_target_pos)
@@ -1449,9 +1453,13 @@ class Scorer:
         """
         if self._rigid_transform is None:
             if len(self.rigid_mapped_model_pos) < 3:
-                res = mol.alg.SuperposeSVD(self.rigid_mapped_model_pos_full_bb,
-                                           self.rigid_mapped_target_pos_full_bb)
-                self._rigid_transform = res.transformation
+                if len(self.rigid_mapped_model_pos_full_bb) >= 3:
+                    res = mol.alg.SuperposeSVD(self.rigid_mapped_model_pos_full_bb,
+                                               self.rigid_mapped_target_pos_full_bb)
+                    self._rigid_transform = res.transformation
+                else:
+                    # there is really nothing we can do => set identity matrix
+                    self._rigid_transform = geom.Mat4()
             else:
                 res = mol.alg.SuperposeSVD(self.rigid_mapped_model_pos,
                                            self.rigid_mapped_target_pos)
-- 
GitLab