diff --git a/modules/mol/alg/pymod/chain_mapping.py b/modules/mol/alg/pymod/chain_mapping.py index 9285c14ef0a86435af223b3b583fd0792868c028..874f83d1206d83013925bf56ddc8b05176174e11 100644 --- a/modules/mol/alg/pymod/chain_mapping.py +++ b/modules/mol/alg/pymod/chain_mapping.py @@ -2917,7 +2917,7 @@ def _SingleRigidGDTTS(initial_transforms, initial_mappings, chem_groups, for transform in initial_transforms: mapping = dict() mapped_mdl_chains = set() - gdt_cache = dict() # cache for non-normalized gdt scores + gdt = 0.0 for trg_chains, mdl_chains, trg_pos, mdl_pos, in zip(chem_groups, chem_mapping, @@ -2927,7 +2927,6 @@ def _SingleRigidGDTTS(initial_transforms, initial_mappings, chem_groups, if len(trg_pos) == 0 or len(mdl_pos) == 0: continue # cannot compute valid gdt - n_gdt_contacts = 4 * len(trg_pos[0]) gdt_scores = list() t_mdl_pos = list() @@ -2941,19 +2940,15 @@ def _SingleRigidGDTTS(initial_transforms, initial_mappings, chem_groups, gdt = t_pos.GetGDTTS(t_m_pos) if gdt >= single_chain_gdtts_thresh: gdt_scores.append((gdt, (t,m))) - gdt_cache[(t,m)] = n_gdt_contacts * gdt + n_gdt_contacts = 4 * len(trg_pos[0]) gdt_scores.sort(reverse=True) - sorted_pairs = [item[1] for item in gdt_scores] - for p in sorted_pairs: + for item in gdt_scores: + p = item[1] if p[0] not in mapping and p[1] not in mapped_mdl_chains: mapping[p[0]] = p[1] mapped_mdl_chains.add(p[1]) - - # compute overall gdt for this transform (non-normalized gdt!!!) - gdt = 0 - for t,m in mapping.items(): - gdt += gdt_cache[(t,m)] + gdt += (item[0] * n_gdt_contacts) if gdt > best_gdt: best_gdt = gdt