Skip to content
Snippets Groups Projects
Commit ff281118 authored by James Graham's avatar James Graham
Browse files

Fix failing tests

Update test values for new parameters
Make molecule templates ordered
parent bd8fc8a9
No related branches found
No related tags found
No related merge requests found
......@@ -36,15 +36,19 @@
"sugar-dih-30pc-2": "fourier 2 0.75 3 0 -0.10 1 120",
"sugar-dih-80pc-1": "fourier 2 0.75 3 0 -0.32 1 -120",
"sugar-dih-80pc-2": "fourier 2 0.75 3 0 -0.32 1 120",
"sugar-glyc-d13": "charmm -0.1801345 1 -123.0662189 0.0",
"sugar-glyc-d14": "charmm -0.8522 1 -146.907595 0.0",
"sugar-glyc-d16": "charmm 0.4714055 1 0.8067885 0.0",
"sugar-glyc-d2a34": "charmm -0.819724 1 -65.408620 0.0",
"sugar-glyc-d2a6": "charmm 1.312271 1 13.593349 0.0",
"sugar-glyc-d2b34": "charmm -0.2683885 1 -83.0853785 0.0",
"sugar-glyc-d2b6": "charmm -0.542714 1 -26.391433 0.0",
"sugar-glyc-d3a": "charmm -6.74014666 1 -83.661744 0.0",
"sugar-glyc-d3b": "charmm -0.05605633 1 -42.276276 0.0"
"sugar-glyc-d1-3": "charmm -0.1801345 1 -123.0662189 0.0",
"sugar-glyc-d1-4": "charmm -0.8522 1 -146.907595 0.0",
"sugar-glyc-d1-6": "charmm 0.4714055 1 0.8067885 0.0",
"sugar-glyc-d2-a-34": "charmm -0.819724 1 -65.408620 0.0",
"sugar-glyc-d2-a-6": "charmm 1.312271 1 13.593349 0.0",
"sugar-glyc-d2-b-34": "charmm -0.2683885 1 -83.0853785 0.0",
"sugar-glyc-d2-b-6": "charmm -0.542714 1 -26.391433 0.0",
"sugar-glyc-d3-a": "charmm -6.74014666 1 -83.661744 0.0",
"sugar-glyc-d3-b": "charmm -0.05605633 1 -42.276276 0.0"
},
"improper":{
"dipole-cone-1": "dipole/cone 200 120 60",
"dipole-cone-2": "dipole/cone 200 -120 60"
}
}
}
......@@ -31,7 +31,7 @@
"templates":["0KA", "4XX"]
},
"6KA":{
"templates":["0KA", "5XX"]
"templates":["0KA", "6XX"]
},
"1KB":{
"templates":["0KB", "1XX"]
......
......@@ -21,7 +21,7 @@ class Molecule:
self.dihedrals = []
self.impropers = []
self.polymer_type = set()
self.templates = set()
self.templates = []
for key, value in kwargs.items():
try:
......@@ -76,6 +76,7 @@ class MolDatabase:
for mol in self.molecules.values():
used_templates = set()
while mol.templates:
print(mol.templates)
template = mol.templates.pop()
if template not in used_templates:
mol.extend(self.molecules[template])
......
CRYST1 10.000 10.000 10.000 90.00 90.00 90.00 P 1 1
ATOM 1 C1 0GA X 1 5.378 5.919 6.028 0.00 0.00
ATOM 2 C2 0GA X 1 3.931 5.794 5.771 0.00 0.00
ATOM 3 C3 0GA X 1 3.661 4.581 4.907 0.00 0.00
ATOM 4 C4 0GA X 1 4.331 4.828 3.525 0.00 0.00
ATOM 5 C5 0GA X 1 5.816 5.052 3.761 0.00 0.00
ATOM 6 O5 0GA X 1 6.007 6.100 4.727 0.00 0.00
END
TITLE 1
REMARK THIS IS A SIMULATION BOX
CRYST1 21.909 21.486 21.995 90.00 90.00 90.00 P 1 1
MODEL 1
ATOM 1 C1 0GA 1 10.560 9.630 18.250 1.00 0.00
ATOM 2 C2 0GA 1 9.870 8.550 19.060 1.00 0.00
ATOM 3 C3 0GA 1 9.170 8.920 20.360 1.00 0.00
ATOM 4 C4 0GA 1 9.900 10.020 21.110 1.00 0.00
ATOM 5 C5 0GA 1 10.550 11.090 20.250 1.00 0.00
ATOM 6 O5 0GA 1 11.310 10.500 19.160 1.00 0.00
ATOM 7 D1 0GA 1 11.060 9.270 18.610 1.00 0.00
ATOM 8 D2 0GA 1 10.260 9.030 19.420 1.00 0.00
ATOM 9 D3 0GA 1 9.260 9.490 19.930 1.00 0.00
ATOM 10 D4 0GA 1 10.370 9.710 20.680 1.00 0.00
ATOM 11 D5 0GA 1 10.040 10.620 19.930 1.00 0.00
TER
ENDMDL
{
"notes": "These parameters are temporary",
"molecules": {
"0XX":{
"polymer_type":["sugar"],
"atoms":[
{"name": "C1", "type": "MEOH"},
{"name": "C2", "type": "MEOH"},
{"name": "C3", "type": "MEOH"},
{"name": "C4", "type": "MEOH"},
{"name": "C5", "type": "ETOH"},
{"name": "O5", "type": "OXY"}
],
"lengths":[
{"type": "sugar-ring", "atoms":["C1", "C2"]},
{"type": "sugar-ring", "atoms":["C2", "C3"]},
{"type": "sugar-ring", "atoms":["C3", "C4"]},
{"type": "sugar-ring", "atoms":["C4", "C5"]},
{"type": "sugar-ring", "atoms":["C5", "O5"]},
{"type": "sugar-ring", "atoms":["O5", "C1"]}
],
"angles":[
{"type": "sugar-ring", "atoms":["C1", "C2", "C3"]},
{"type": "sugar-ring", "atoms":["C2", "C3", "C4"]},
{"type": "sugar-ring", "atoms":["C3", "C4", "C5"]},
{"type": "sugar-ring", "atoms":["C4", "C5", "O5"]},
{"type": "sugar-ring", "atoms":["C5", "O5", "C1"]},
{"type": "sugar-ring", "atoms":["O5", "C1", "C2"]}
]
},
"0GX": {
"templates": [
"0XX"
],
"dihedrals": [
{
"type": "sugar-dih-1",
"atoms": [
"C1",
"C2",
"C3",
"C4"
]
},
{
"type": "sugar-dih-2",
"atoms": [
"C2",
"C3",
"C4",
"C5"
]
},
{
"type": "sugar-dih-1",
"atoms": [
"C3",
"C4",
"C5",
"O5"
]
},
{
"type": "sugar-dih-2",
"atoms": [
"C4",
"C5",
"O5",
"C1"
]
},
{
"type": "sugar-dih-1",
"atoms": [
"C5",
"O5",
"C1",
"C2"
]
},
{
"type": "sugar-dih-2",
"atoms": [
"O5",
"C1",
"C2",
"C3"
]
}
]
},
"0GA": {
"templates": [
"0GX"
],
"impropers": [
{
"type": "dipole-cone-1",
"atoms": [
"C1",
"C2",
"O5",
"C1"
]
},
{
"type": "dipole-cone-1",
"atoms": [
"C2",
"C3",
"C1",
"C2"
]
},
{
"type": "dipole-cone-2",
"atoms": [
"C3",
"C4",
"C2",
"C3"
]
},
{
"type": "dipole-cone-1",
"atoms": [
"C4",
"C5",
"C3",
"C4"
]
},
{
"type": "dipole-cone-2",
"atoms": [
"C5",
"O5",
"C4",
"C5"
]
}
]
},
"0GB": {
"templates": [
"0GX"
],
"impropers": [
{
"type": "dipole-cone-2",
"atoms": [
"C1",
"C2",
"O5",
"C1"
]
},
{
"type": "dipole-cone-1",
"atoms": [
"C2",
"C3",
"C1",
"C2"
]
},
{
"type": "dipole-cone-2",
"atoms": [
"C3",
"C4",
"C2",
"C3"
]
},
{
"type": "dipole-cone-1",
"atoms": [
"C4",
"C5",
"C3",
"C4"
]
},
{
"type": "dipole-cone-2",
"atoms": [
"C5",
"O5",
"C4",
"C5"
]
}
]
}
}
}
......@@ -21,9 +21,5 @@ class TestBondDatabase(unittest.TestCase):
self.assertEqual(db.dihedral["sugar-dih-1"].style, "fourier")
self.assertEqual(db.dihedral["sugar-dih-1"].params, "2 1.00 3 0 0.25 1 -120")
self.assertTrue("dipole-cone-1" in db.improper)
self.assertEqual(db.improper["dipole-cone-1"].style, "dipole/cone")
self.assertEqual(db.improper["dipole-cone-1"].params, "200 120 60")
if __name__ == '__main__':
unittest.main()
......@@ -16,27 +16,25 @@ class TestMolDatabase(unittest.TestCase):
def test_read_lengths(self):
db = MolDatabase()
self.assertEqual(db.molecules["0GA"].lengths[0].type, "sugar-ring")
self.assertEqual(db.molecules["0GA"].lengths[0].atoms[0], "C1")
self.assertEqual(db.molecules["0GA"].lengths[0].atoms[1], "C2")
self.assertEqual(db.molecules["0GA"].lengths[5].type, "sugar-ring")
self.assertEqual(db.molecules["0GA"].lengths[5].atoms[0], "O5")
self.assertEqual(db.molecules["0GA"].lengths[5].atoms[1], "C1")
self.assertEqual(6, len(db.molecules["0GA"].lengths))
self.assertEqual(7, len(db.molecules["3GA"].lengths))
self.assertEqual(db.molecules["0XX"].lengths[0].type, "sugar-ring")
self.assertEqual(db.molecules["0XX"].lengths[0].atoms[0], "C1")
self.assertEqual(db.molecules["0XX"].lengths[0].atoms[1], "C2")
self.assertEqual(db.molecules["0XX"].lengths[5].type, "sugar-ring")
self.assertEqual(db.molecules["0XX"].lengths[5].atoms[0], "O5")
self.assertEqual(db.molecules["0XX"].lengths[5].atoms[1], "C1")
self.assertEqual(21, len(db.molecules["0XX"].lengths))
def test_read_angles(self):
db = MolDatabase()
self.assertEqual(db.molecules["0GA"].angles[0].type, "sugar-ring")
self.assertEqual(db.molecules["0GA"].angles[0].atoms[0], "C1")
self.assertEqual(db.molecules["0GA"].angles[0].atoms[1], "C2")
self.assertEqual(db.molecules["0GA"].angles[0].atoms[2], "C3")
self.assertEqual(db.molecules["0GA"].angles[5].type, "sugar-ring")
self.assertEqual(db.molecules["0GA"].angles[5].atoms[0], "O5")
self.assertEqual(db.molecules["0GA"].angles[5].atoms[1], "C1")
self.assertEqual(db.molecules["0GA"].angles[5].atoms[2], "C2")
self.assertEqual(6, len(db.molecules["0GA"].angles))
self.assertEqual(6, len(db.molecules["3GA"].angles))
self.assertEqual(db.molecules["0XX"].angles[0].type, "sugar-ring")
self.assertEqual(db.molecules["0XX"].angles[0].atoms[0], "C1")
self.assertEqual(db.molecules["0XX"].angles[0].atoms[1], "C2")
self.assertEqual(db.molecules["0XX"].angles[0].atoms[2], "C3")
self.assertEqual(db.molecules["0XX"].angles[5].type, "sugar-ring")
self.assertEqual(db.molecules["0XX"].angles[5].atoms[0], "O5")
self.assertEqual(db.molecules["0XX"].angles[5].atoms[1], "C1")
self.assertEqual(db.molecules["0XX"].angles[5].atoms[2], "C2")
self.assertEqual(11, len(db.molecules["0XX"].angles))
def test_template(self):
db = MolDatabase("data/mol-elba-sugar.json")
......@@ -48,11 +46,11 @@ class TestMolDatabase(unittest.TestCase):
self.assertEqual(db.molecules["1GA"].lengths[1].atoms[0], "C1")
self.assertEqual(db.molecules["1GA"].lengths[1].atoms[1], "C2")
self.assertEqual(6, len(db.molecules["0GA"].lengths))
self.assertEqual(7, len(db.molecules["1GA"].lengths))
self.assertEqual(21, len(db.molecules["0GA"].lengths))
self.assertEqual(22, len(db.molecules["1GA"].lengths))
self.assertEqual(6, len(db.molecules["0GA"].angles))
self.assertEqual(6, len(db.molecules["1GA"].angles))
self.assertEqual(11, len(db.molecules["0GA"].angles))
self.assertEqual(13, len(db.molecules["1GA"].angles))
def test_template_simple(self):
db = MolDatabase("test/data/template.json")
......
......@@ -18,27 +18,25 @@ class TestPDB2LMP(unittest.TestCase):
conv = PDB2LMP("test/data/glc.pdb")
conv.collect_types()
self.assertListEqual(conv.moltypes, ["0GA"])
self.assertListEqual(conv.atomtypes, ["MEOH", "ETOH", "OXY", "WAT"])
self.assertListEqual(conv.lentypes, ["sugar-ring"])
self.assertListEqual(conv.angtypes, ["sugar-ring"])
self.assertEqual(conv.natoms.total, 6)
self.assertEqual(conv.natoms.types, 4)
self.assertEqual(conv.nlengths.total, 6)
self.assertEqual(conv.nlengths.types, 1)
self.assertEqual(conv.nangles.total, 6)
self.assertEqual(conv.nangles.types, 1)
self.assertListEqual(conv.atomtypes, ["MEOH", "ETOH", "OXY", "DUM", "WAT"])
self.assertListEqual(conv.lentypes, ["sugar-ring", "sugar-dum-adj", "sugar-dum"])
self.assertListEqual(conv.angtypes, ["sugar-ring", "sugar-dipole"])
self.assertEqual(conv.natoms.total, 11)
self.assertEqual(conv.natoms.types, 5)
self.assertEqual(conv.nlengths.total, 21)
self.assertEqual(conv.nlengths.types, 3)
self.assertEqual(conv.nangles.total, 11)
self.assertEqual(conv.nangles.types, 2)
self.assertEqual(conv.ndihedrals.total, 6)
self.assertEqual(conv.ndihedrals.types, 2)
self.assertEqual(conv.nimpropers.total, 5)
self.assertEqual(conv.nimpropers.types, 2)
def test_collect_types_no_add_water(self):
conv = PDB2LMP("test/data/glc.pdb")
conv.collect_types(add_water=False)
self.assertListEqual(conv.moltypes, ["0GA"])
self.assertListEqual(conv.atomtypes, ["MEOH", "ETOH", "OXY"])
self.assertEqual(conv.natoms.total, 6)
self.assertEqual(conv.natoms.types, 3)
self.assertListEqual(conv.atomtypes, ["MEOH", "ETOH", "OXY", "DUM"])
self.assertEqual(conv.natoms.total, 11)
self.assertEqual(conv.natoms.types, 4)
def test_collect_types_subset(self):
conv = PDB2LMP("test/data/ala-aa.gro")
......@@ -49,7 +47,8 @@ class TestPDB2LMP(unittest.TestCase):
self.assertEqual(conv.natoms.types, 4)
def test_collect_types_multiple_residues(self):
conv = PDB2LMP("test/data/glc_crystal.gro")
moldb = MolDatabase("test/data/glc_moldb.json")
conv = PDB2LMP("test/data/glc_crystal.gro", moldb=moldb)
conv.collect_types()
self.assertListEqual(conv.moltypes, ["0GB"])
self.assertListEqual(conv.atomtypes, ["MEOH", "ETOH", "OXY", "WAT"])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment