From 857e05d4fa32c8e7cfaec6539281e59ca5686038 Mon Sep 17 00:00:00 2001 From: Xavier Robin <xavier.robin@unibas.ch> Date: Fri, 26 Apr 2024 11:37:18 +0200 Subject: [PATCH] ligand scoring: prevent infinite loop in assignment This indicates a bug that must be fixed but at least we don't run forever. --- modules/mol/alg/pymod/ligand_scoring.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/mol/alg/pymod/ligand_scoring.py b/modules/mol/alg/pymod/ligand_scoring.py index 4d8bac436..4c7ebdf54 100644 --- a/modules/mol/alg/pymod/ligand_scoring.py +++ b/modules/mol/alg/pymod/ligand_scoring.py @@ -880,6 +880,7 @@ class LigandScorer: # First only consider top coverage matches. min_coverage = np.max(coverage) + i = mat1.size + 1 while min_coverage > 0 and not np.all(np.isnan(mat1)): LogVerbose("Looking for matches with coverage >= %s" % min_coverage) min_mat1 = LigandScorer._nanmin_nowarn(mat1, coverage < min_coverage) @@ -909,8 +910,14 @@ class LigandScorer: # Recompute min min_mat1 = LigandScorer._nanmin_nowarn(mat1, coverage < min_coverage) + if i < 0: + raise Exception("Ligand scoring bug: hit appatent infinite loop!") + i -= 1 # Recompute min_coverage min_coverage = np.max(coverage) + if i < 0: + raise Exception("Ligand scoring bug: hit appatent infinite loop!") + i -= 1 return assignments @staticmethod -- GitLab