diff --git a/modules/mol/alg/tests/test_lddt.py b/modules/mol/alg/tests/test_lddt.py
index a1f8bfca7aad902de35f9bab8072d3852c181e6e..b90249a68530619654c1b4bfb49cc542796a3bc8 100644
--- a/modules/mol/alg/tests/test_lddt.py
+++ b/modules/mol/alg/tests/test_lddt.py
@@ -3,7 +3,6 @@ import ost
from ost import io, mol, settings, conop, seq
# check if we can import: fails if numpy or scipy not available
try:
- from ost.mol.alg.qsscoring import *
from ost.mol.alg.lddt import *
from ost.mol.alg.scoring import *
except ImportError:
@@ -79,25 +78,25 @@ class TestlDDT(unittest.TestCase):
ent_full = _LoadFile("4br6.1.pdb")
model = ent_full.Select('peptide=true')
target = ent_full.Select('peptide=true and cname=A,B')
- # we use functionality from QS-scorer to derive a mapping
- qs_scorer = QSscorer(model, target)
+ # hardcoded chain mapping
+ chain_mapping = {"A": "A", "B": "B"}
lddt_scorer = lDDTScorer(target)
-
+
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping)
+ chain_mapping=chain_mapping)
self.assertAlmostEqual(score, 1.0, places=5)
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping, no_interchain=True)
+ chain_mapping=chain_mapping, no_interchain=True)
self.assertAlmostEqual(score, 1.0, places=5)
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping, no_interchain=False,
+ chain_mapping=chain_mapping, no_interchain=False,
penalize_extra_chains=True)
self.assertAlmostEqual(score, 0.52084655, places=5)
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping, no_interchain=True,
+ chain_mapping=chain_mapping, no_interchain=True,
penalize_extra_chains=True)
self.assertAlmostEqual(score, 0.499570048, places=5)
@@ -112,8 +111,8 @@ class TestlDDT(unittest.TestCase):
for ch in model.chains:
ed.RenumberChain(ch.handle, 42, True)
- # we use functionality from QS-scorer to derive a mapping
- qs_scorer = QSscorer(model, target)
+ # hardcoded chain mapping
+ chain_mapping = {"A": "A", "B": "B"}
lddt_scorer = lDDTScorer(target)
# naively running lDDT will fail, as residue-residue mapping happens
@@ -121,23 +120,23 @@ class TestlDDT(unittest.TestCase):
# complaining about residue name mismatch
with self.assertRaises(RuntimeError):
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping, no_interchain=False,
+ chain_mapping=chain_mapping, no_interchain=False,
penalize_extra_chains=True)
- # we can rescue that with alignments from qsscorer
+ # we can rescue that with alignments
res_map = dict()
- for aln in qs_scorer.alignments:
- model_chain_name = aln.GetSequence(0).GetName()
- # we need to inverse the direction... qsscorer
- # has first model sequence and then target sequence
- # (at least the way we set it up above...)
- new_aln = seq.CreateAlignment()
- new_aln.AddSequence(aln.GetSequence(1))
- new_aln.AddSequence(aln.GetSequence(0))
- res_map[model_chain_name] = new_aln
+ for mdl_ch_name, trg_ch_name in chain_mapping.items():
+ mdl_ch = model.FindChain(mdl_ch_name)
+ trg_ch = target.FindChain(trg_ch_name)
+ mdl_seq = ''.join([r.one_letter_code for r in mdl_ch.residues])
+ mdl_seq = seq.CreateSequence(mdl_ch_name, mdl_seq)
+ trg_seq = ''.join([r.one_letter_code for r in trg_ch.residues])
+ trg_seq = seq.CreateSequence(trg_ch_name, trg_seq)
+ aln = seq.alg.GlobalAlign(trg_seq, mdl_seq, seq.alg.BLOSUM62)[0]
+ res_map[mdl_ch_name] = aln
score, per_res_scores = lddt_scorer.lDDT(model,
- chain_mapping=qs_scorer.chain_mapping, no_interchain=False,
+ chain_mapping=chain_mapping, no_interchain=False,
penalize_extra_chains=True, residue_mapping=res_map)
self.assertAlmostEqual(score, 0.52084655, places=5)