From 8074b86b868fad931360c9eabb89277e7315386c Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavier.robin@unibas.ch>
Date: Wed, 9 Aug 2023 11:32:03 +0200
Subject: [PATCH] fix: ligand maps must always be available

---
 actions/ost-compare-ligand-structures | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/actions/ost-compare-ligand-structures b/actions/ost-compare-ligand-structures
index a246b13af..d8e55d6b5 100644
--- a/actions/ost-compare-ligand-structures
+++ b/actions/ost-compare-ligand-structures
@@ -379,8 +379,6 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
         # Replace model ligand by path
         if len(model_ligands) == len(scorer.model_ligands):
             # Map ligand => path
-            model_ligands_map = {k.hash_code: v for k, v in zip(
-                scorer.model_ligands, args.model_ligands)}
             out["model_ligands"] = args.model_ligands
         elif len(model_ligands) < len(scorer.model_ligands):
             # Multi-ligand SDF files were given
@@ -396,16 +394,16 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
                                "(%d) than given (%d)" % (
                 len(scorer.model_ligands), len(model_ligands)))
     else:
-        model_ligands_map = {l.hash_code: _QualifiedResidueNotation(l)
-                             for l in scorer.model_ligands}
-        out["model_ligands"] = list(model_ligands_map.values())
+        # Map ligand => qualified residue
+        out["model_ligands"] = [_QualifiedResidueNotation(l) for l in scorer.model_ligands]
+
+    model_ligands_map = {k.hash_code: v for k, v in zip(
+        scorer.model_ligands, out["model_ligands"])}
 
     if reference_ligands is not None:
         # Replace reference ligand by path
         if len(reference_ligands) == len(scorer.target_ligands):
             # Map ligand => path
-            reference_ligands_map = {k.hash_code: v for k, v in zip(
-                scorer.target_ligands, args.reference_ligands)}
             out["reference_ligands"] = args.reference_ligands
         elif len(reference_ligands) < len(scorer.target_ligands):
             # Multi-ligand SDF files were given
@@ -422,9 +420,12 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
                 len(scorer.target_ligands), len(reference_ligands)))
 
     else:
-        reference_ligands_map = {l.hash_code: _QualifiedResidueNotation(l)
-                             for l in scorer.target_ligands}
-        out["reference_ligands"] = list(reference_ligands_map.values())
+        # Map ligand => qualified residue
+        out["reference_ligands"] = [_QualifiedResidueNotation(l) for l in scorer.target_ligands]
+
+    reference_ligands_map = {k.hash_code: v for k, v in zip(
+        scorer.target_ligands, out["reference_ligands"])}
+        
 
     if not (args.lddt_pli or args.rmsd):
         ost.LogWarning("No score selected, output will be empty.")
-- 
GitLab