Skip to content
Snippets Groups Projects
Commit 0f64233d authored by Studer Gabriel's avatar Studer Gabriel
Browse files

stereochemistry unit tests

parent 9a2ebefe
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,7 @@ set(OST_MOL_ALG_UNIT_TESTS ...@@ -10,6 +10,7 @@ set(OST_MOL_ALG_UNIT_TESTS
test_sec_struct.py test_sec_struct.py
test_lddt.py test_lddt.py
test_qsscore.py test_qsscore.py
test_stereochemistry.py
) )
if (COMPOUND_LIB) if (COMPOUND_LIB)
......
import unittest, os, sys
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 import stereochemistry
except ImportError:
print("Failed to import stereochemistry. Happens when numpy missing. " \
"Ignoring test_stereochemistry.py tests.")
sys.exit(0)
def _LoadFile(file_name):
"""Helper to avoid repeating input path over and over."""
return io.LoadPDB(os.path.join('testfiles', file_name))
class TestStereochemistry(unittest.TestCase):
def test_GetResidueType(self):
""" internal function in stereochemistry module, nevertheless crucial...
"""
ent = _LoadFile("10b2.pdb")
# get some residues
ile_a_199 = ent.FindResidue("A", mol.ResNum(199))
self.assertEqual(ile_a_199.GetName(), "ILE")
pro_a_200 = ent.FindResidue("A", mol.ResNum(200))
self.assertEqual(pro_a_200.GetName(), "PRO")
glu_a_201 = ent.FindResidue("A", mol.ResNum(201))
self.assertEqual(glu_a_201.GetName(), "GLU")
pro_a_202 = ent.FindResidue("A", mol.ResNum(202))
self.assertEqual(pro_a_202.GetName(), "PRO")
ser_a_221 = ent.FindResidue("A", mol.ResNum(221))
self.assertEqual(ser_a_221.GetName(), "SER")
gly_a_222 = ent.FindResidue("A", mol.ResNum(222))
self.assertEqual(gly_a_222.GetName(), "GLY")
arg_a_223 = ent.FindResidue("A", mol.ResNum(223))
self.assertEqual(arg_a_223.GetName(), "ARG")
c_b_75 = ent.FindResidue("B", mol.ResNum(75))
self.assertEqual(c_b_75.GetName(), "C")
a_b_76 = ent.FindResidue("B", mol.ResNum(76))
self.assertEqual(a_b_76.GetName(), "A")
# check PRO_CIS
res_type = stereochemistry._GetResidueType([ile_a_199.FindAtom("C"),
pro_a_200.FindAtom("N")])
self.assertEqual(res_type, "PRO_CIS")
res_type = stereochemistry._GetResidueType([pro_a_200.FindAtom("N"),
ile_a_199.FindAtom("C")])
self.assertEqual(res_type, "PRO_CIS")
res_type = stereochemistry._GetResidueType([ile_a_199.FindAtom("O"),
ile_a_199.FindAtom("C"),
pro_a_200.FindAtom("N")])
self.assertEqual(res_type, "PRO_CIS")
res_type = stereochemistry._GetResidueType([pro_a_200.FindAtom("N"),
ile_a_199.FindAtom("C"),
ile_a_199.FindAtom("O")])
self.assertEqual(res_type, "PRO_CIS")
# check PRO_TRANS
res_type = stereochemistry._GetResidueType([glu_a_201.FindAtom("C"),
pro_a_202.FindAtom("N")])
self.assertEqual(res_type, "PRO_TRANS")
res_type = stereochemistry._GetResidueType([pro_a_202.FindAtom("N"),
glu_a_201.FindAtom("C")])
self.assertEqual(res_type, "PRO_TRANS")
res_type = stereochemistry._GetResidueType([glu_a_201.FindAtom("O"),
glu_a_201.FindAtom("C"),
pro_a_202.FindAtom("N")])
self.assertEqual(res_type, "PRO_TRANS")
res_type = stereochemistry._GetResidueType([pro_a_202.FindAtom("N"),
glu_a_201.FindAtom("C"),
glu_a_201.FindAtom("O")])
self.assertEqual(res_type, "PRO_TRANS")
# check GLY
res_type = stereochemistry._GetResidueType([ser_a_221.FindAtom("C"),
gly_a_222.FindAtom("N")])
self.assertEqual(res_type, "GLY")
res_type = stereochemistry._GetResidueType([gly_a_222.FindAtom("N"),
ser_a_221.FindAtom("C")])
self.assertEqual(res_type, "GLY")
res_type = stereochemistry._GetResidueType([ser_a_221.FindAtom("O"),
ser_a_221.FindAtom("C"),
gly_a_222.FindAtom("N")])
self.assertEqual(res_type, "GLY")
res_type = stereochemistry._GetResidueType([gly_a_222.FindAtom("N"),
ser_a_221.FindAtom("C"),
ser_a_221.FindAtom("O")])
self.assertEqual(res_type, "GLY")
# check PEPTIDE
res_type = stereochemistry._GetResidueType([arg_a_223.FindAtom("C"),
gly_a_222.FindAtom("N")])
self.assertEqual(res_type, "PEPTIDE")
res_type = stereochemistry._GetResidueType([gly_a_222.FindAtom("N"),
arg_a_223.FindAtom("C")])
self.assertEqual(res_type, "PEPTIDE")
res_type = stereochemistry._GetResidueType([arg_a_223.FindAtom("O"),
arg_a_223.FindAtom("C"),
gly_a_222.FindAtom("N")])
self.assertEqual(res_type, "PEPTIDE")
res_type = stereochemistry._GetResidueType([gly_a_222.FindAtom("N"),
arg_a_223.FindAtom("C"),
arg_a_223.FindAtom("O")])
self.assertEqual(res_type, "PEPTIDE")
# check NA
res_type = stereochemistry._GetResidueType([a_b_76.FindAtom("P"),
c_b_75.FindAtom("O3'")])
self.assertEqual(res_type, "NA")
res_type = stereochemistry._GetResidueType([c_b_75.FindAtom("O3'"),
a_b_76.FindAtom("P")])
self.assertEqual(res_type, "NA")
res_type = stereochemistry._GetResidueType([a_b_76.FindAtom("O5'"),
a_b_76.FindAtom("P"),
c_b_75.FindAtom("O3'")])
self.assertEqual(res_type, "NA")
res_type = stereochemistry._GetResidueType([c_b_75.FindAtom("O3'"),
a_b_76.FindAtom("P"),
a_b_76.FindAtom("O5'")])
self.assertEqual(res_type, "NA")
def test_FullParameters(self):
""" Tests whether we get parameters for each bond/angle
"""
ent = _LoadFile("10b2.pdb")
data = stereochemistry.GetDefaultStereoData()
link_data = stereochemistry.GetDefaultStereoLinkData()
# do bonds
for b in ent.bonds:
param = stereochemistry.GetBondParam(b.first, b.second,
stereo_data=data,
stereo_link_data = link_data)
self.assertTrue(None not in param)
# do angles
angles = stereochemistry._GetAngles(ent.bonds)
for a in angles:
param = stereochemistry.GetAngleParam(a[0], a[1], a[2],
stereo_data=data,
stereo_link_data = link_data)
self.assertTrue(None not in param)
if __name__ == "__main__":
from ost import testutils
if testutils.SetDefaultCompoundLib():
testutils.RunTests()
else:
print('No compound library available. Ignoring test_stereochemistry.py tests.')
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment