Skip to content

Commit 3c9c8e2

Browse files
author
Travis Hesketh
committed
Additional tests, codecov
1 parent 0e07908 commit 3c9c8e2

File tree

3 files changed

+133
-3
lines changed

3 files changed

+133
-3
lines changed

.coveragerc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[run]
2+
omit =
3+
pygen_structures/test/*
4+
pygen_structures/_typing.py

.travis.yml

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ before_install:
1111
- conda config --set always_yes yes --set changeps1 no
1212
- conda update -q conda
1313
- conda info -a
14-
- conda create -q -c rdkit -c omnia -n testenv python=$TRAVIS_PYTHON_VERSION 'rdkit>=2018.03' numpy pytest openmm
14+
- conda create -q -c rdkit -c omnia -n testenv python=$TRAVIS_PYTHON_VERSION 'rdkit>=2018.03' numpy pytest pytest-cov codecov openmm
1515
- conda activate testenv
1616
- python --version
1717
install:
1818
- python setup.py install
19-
2019
script:
21-
- pytest
20+
- pytest --cov-config .coveragerc --cov=pygen_structures
21+
after_success:
22+
- codecov
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import os
2+
import pickle
3+
from pygen_structures import(
4+
load_charmm_dir,
5+
code_to_mol,
6+
sequence_to_mol,
7+
Molecule,
8+
)
9+
from pygen_structures.convenience_functions import pdb_to_mol
10+
11+
RTF, PRM = load_charmm_dir()
12+
13+
14+
def test_load_charmm_dir():
15+
pickle_dir = os.path.split(__file__)[0]
16+
pickle_path = os.path.join(pickle_dir, 'charmm_dir.pkl')
17+
18+
with open(pickle_path, 'rb') as pickle_file:
19+
rtf, prm = pickle.load(pickle_file)
20+
assert(rtf.residues.keys() == RTF.residues.keys())
21+
assert(rtf.patches.keys() == RTF.patches.keys())
22+
assert(prm.bonds == PRM.bonds)
23+
assert(prm.angles == PRM.angles)
24+
assert(prm.dihedrals == PRM.dihedrals)
25+
assert(prm.impropers == PRM.impropers)
26+
assert(prm.cross_maps == PRM.cross_maps)
27+
28+
29+
def test_code_to_mol():
30+
code = 'YEET'
31+
molecule = code_to_mol(code, RTF)
32+
33+
sequence = ['TYR', 'GLU', 'GLU', 'THR']
34+
residues = []
35+
for index, residue_name in enumerate(sequence):
36+
residue = RTF.residues[residue_name].to_residue(index)
37+
residues.append(residue)
38+
ref_molecule = Molecule('YEET', residues, RTF)
39+
ref_molecule.finalize()
40+
41+
for residue, ref_residue in zip(molecule.residues, ref_molecule.residues):
42+
assert(residue.name == ref_residue.name)
43+
assert(set(residue.atoms) == set(ref_residue.atoms))
44+
assert(set(residue.bonds) == set(ref_residue.bonds))
45+
assert(set(residue.impropers) == set(ref_residue.impropers))
46+
assert(set(residue.cross_maps) == set(ref_residue.cross_maps))
47+
48+
49+
def test_code_to_mol_terminal_patches():
50+
code = 'NNEU-YEET-CT2'
51+
molecule = code_to_mol(code, RTF)
52+
53+
sequence = ['TYR', 'GLU', 'GLU', 'THR']
54+
patches = {'NNEU': ['FIRST'], 'CT2': ['LAST']}
55+
56+
residues = []
57+
for index, residue_name in enumerate(sequence):
58+
residue = RTF.residues[residue_name].to_residue(index)
59+
residues.append(residue)
60+
ref_molecule = Molecule('YEET', residues, RTF, patches)
61+
ref_molecule.finalize()
62+
63+
for residue, ref_residue in zip(molecule.residues, ref_molecule.residues):
64+
assert(residue.name == ref_residue.name)
65+
assert(set(residue.atoms) == set(ref_residue.atoms))
66+
assert(set(residue.bonds) == set(ref_residue.bonds))
67+
assert(set(residue.impropers) == set(ref_residue.impropers))
68+
assert(set(residue.cross_maps) == set(ref_residue.cross_maps))
69+
70+
71+
def test_code_to_mol_patches():
72+
code = 'CAAC'
73+
patches = {'DISU': [0, -1]}
74+
molecule = code_to_mol(code, RTF, patches)
75+
76+
sequence = ['CYS', 'ALA', 'ALA', 'CYS']
77+
residues = []
78+
for index, residue_name in enumerate(sequence):
79+
residue = RTF.residues[residue_name].to_residue(index)
80+
residues.append(residue)
81+
ref_molecule = Molecule('CAAC', residues, RTF, patches)
82+
ref_molecule.finalize()
83+
84+
for residue, ref_residue in zip(molecule.residues, ref_molecule.residues):
85+
assert(residue.name == ref_residue.name)
86+
assert(set(residue.atoms) == set(ref_residue.atoms))
87+
assert(set(residue.bonds) == set(ref_residue.bonds))
88+
assert(set(residue.impropers) == set(ref_residue.impropers))
89+
assert(set(residue.cross_maps) == set(ref_residue.cross_maps))
90+
91+
92+
def test_sequence_to_mol():
93+
sequence = ['TYR', 'GLU', 'GLU', 'THR']
94+
molecule = sequence_to_mol(sequence, RTF)
95+
96+
residues = []
97+
for index, residue_name in enumerate(sequence):
98+
residue = RTF.residues[residue_name].to_residue(index)
99+
residues.append(residue)
100+
ref_molecule = Molecule('YEET', residues, RTF)
101+
ref_molecule.finalize()
102+
103+
for residue, ref_residue in zip(molecule.residues, ref_molecule.residues):
104+
assert(residue.name == ref_residue.name)
105+
assert(set(residue.atoms) == set(ref_residue.atoms))
106+
assert(set(residue.bonds) == set(ref_residue.bonds))
107+
assert(set(residue.impropers) == set(ref_residue.impropers))
108+
assert(set(residue.cross_maps) == set(ref_residue.cross_maps))
109+
110+
111+
def test_pdb_to_mol():
112+
code = 'AF'
113+
114+
ref_molecule = code_to_mol(code, RTF)
115+
ref_molecule.to_pdb_file('AF.pdb')
116+
117+
molecule = pdb_to_mol('AF.pdb', RTF)
118+
os.remove('AF.pdb')
119+
120+
for residue, ref_residue in zip(molecule.residues, ref_molecule.residues):
121+
assert(residue.name == ref_residue.name)
122+
assert(set(residue.atoms) == set(ref_residue.atoms))
123+
assert(set(residue.bonds) == set(ref_residue.bonds))
124+
assert(set(residue.impropers) == set(ref_residue.impropers))
125+
assert(set(residue.cross_maps) == set(ref_residue.cross_maps))

0 commit comments

Comments
 (0)