From e2a16931f71a78629c0e8ee5d2336fee10e2fb67 Mon Sep 17 00:00:00 2001 From: Gabriel Studer <gabriel.studer@unibas.ch> Date: Thu, 17 Nov 2022 22:44:56 +0100 Subject: [PATCH] stereochemistry unit tests --- modules/mol/alg/tests/test_stereochemistry.py | 58 ++++++++++++------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/modules/mol/alg/tests/test_stereochemistry.py b/modules/mol/alg/tests/test_stereochemistry.py index 98889d650..c394b6d87 100644 --- a/modules/mol/alg/tests/test_stereochemistry.py +++ b/modules/mol/alg/tests/test_stereochemistry.py @@ -1,5 +1,3 @@ - - import unittest, os, sys import ost from ost import io, mol, settings, conop, seq @@ -143,23 +141,45 @@ class TestStereochemistry(unittest.TestCase): stereo_link_data = link_data) self.assertTrue(None not in param) + def test_StereoCheck(self): + """ Test StereoCheck - - - - - - - - - - - - - - - - + GetClashes, GetBadBonds and GetBadAngles get tested implicitely + """ + ent = _LoadFile("10b2.pdb") + sterochecked_ent, clashes, bad_bonds, bad_angles = \ + stereochemistry.StereoCheck(ent) + + self.assertEqual(len(clashes), 0) + self.assertEqual(len(bad_bonds), 0) + self.assertEqual(len(bad_angles), 0) + + phe_A_218 = ent.FindResidue("A", mol.ResNum(218)) + c_B_75 = ent.FindResidue("B", mol.ResNum(75)) + + phe_at = phe_A_218.FindAtom("CD2") + c_at = c_B_75.FindAtom("C4'") + ed = ent.EditXCS() + ed.SetAtomPos(phe_at, 0.5*(phe_at.GetPos() + c_at.GetPos())) + + stereochecked_ent, clashes, bad_bonds, bad_angles = \ + stereochemistry.StereoCheck(ent) + + self.assertEqual(len(clashes), 2) + self.assertEqual(len(bad_bonds), 2) + self.assertEqual(len(bad_angles), 2) + + # c_B_75 gets completely removed as two backbone atoms are involved + # in clashes. phe_A_218 has the sidechain removed + self.assertEqual(len(ent.residues)-1, + len(stereochecked_ent.residues)) + c_B_75 = stereochecked_ent.FindResidue("B", mol.ResNum(75)) + self.assertFalse(c_B_75.IsValid()) + phe_A_218 = stereochecked_ent.FindResidue("A", mol.ResNum(218)) + self.assertTrue(phe_A_218.IsValid()) + phe_atoms = [a.GetName() for a in phe_A_218.atoms] + self.assertEqual(sorted(["N", "CA", "C", "O"]), + sorted(phe_atoms)) if __name__ == "__main__": from ost import testutils @@ -167,5 +187,3 @@ if __name__ == "__main__": testutils.RunTests() else: print('No compound library available. Ignoring test_stereochemistry.py tests.') - - -- GitLab