From 81f7a79373807e9c239b1b54b2640d4550b7a0a3 Mon Sep 17 00:00:00 2001 From: Xavier Robin <xavier.robin@unibas.ch> Date: Wed, 15 Feb 2023 10:48:38 +0100 Subject: [PATCH] fix: SCHWED-5783 also save lDDT-PLI if RMSD is better --- modules/mol/alg/pymod/ligand_scoring.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/modules/mol/alg/pymod/ligand_scoring.py b/modules/mol/alg/pymod/ligand_scoring.py index 5238518cf..d4b5c7bd7 100644 --- a/modules/mol/alg/pymod/ligand_scoring.py +++ b/modules/mol/alg/pymod/ligand_scoring.py @@ -481,9 +481,25 @@ class LigandScorer: LogDebug("lDDT-PLI for symmetry %d: %.4f" % (i, global_lddt)) # Save results? - if not lddt_pli_full_matrix[target_i, model_i] or \ - global_lddt > lddt_pli_full_matrix[ - target_i, model_i]["lddt_pli"] : + + if not lddt_pli_full_matrix[target_i, model_i]: + # First iteration + save_lddt = True + else: + last_best_lddt = lddt_pli_full_matrix[ + target_i, model_i]["lddt_pli"] + last_best_rmsd = lddt_pli_full_matrix[ + target_i, model_i]["rmsd"] + if global_lddt > last_best_lddt: + # Better lDDT-PLI + save_lddt = True + elif global_lddt == last_best_lddt and \ + rmsd < last_best_rmsd: + # Same lDDT-PLI, better RMSD + save_lddt = True + else: + save_lddt = False + if save_lddt: lddt_pli_full_matrix[target_i, model_i] = { "lddt_pli": global_lddt, "lddt_pli_n_contacts": lddt_tot, -- GitLab