"vscode:/vscode.git/clone" did not exist on "19266648326ff90ff157cdf3c906cd0c145d0e2a"
Commit ed3e8a11 authored by Jason Swails's avatar Jason Swails
Browse files

Correct the returned units for StretchBendForce and add unit tests for it.

parent df20dcac
...@@ -278,7 +278,7 @@ UNITS = { ...@@ -278,7 +278,7 @@ UNITS = {
("AmoebaPiTorsionForce", "getPiTorsionParameters") : ( None, (None, None, None, None, None, None, 'unit.kilojoule_per_mole')), ("AmoebaPiTorsionForce", "getPiTorsionParameters") : ( None, (None, None, None, None, None, None, 'unit.kilojoule_per_mole')),
("AmoebaStretchBendForce", "getNumStretchBends") : ( None, ()), ("AmoebaStretchBendForce", "getNumStretchBends") : ( None, ()),
("AmoebaStretchBendForce", "getStretchBendParameters") : ( None, (None, None, None, 'unit.nanometer', 'unit.nanometer', 'unit.radian', 'unit.kilojoule_per_mole/unit.nanometer/unit.degree', 'unit.kilojoule_per_mole/unit.nanometer/unit.degree')), ("AmoebaStretchBendForce", "getStretchBendParameters") : ( None, (None, None, None, 'unit.nanometer', 'unit.nanometer', 'unit.radian', 'unit.kilojoule_per_mole/unit.nanometer/unit.radian', 'unit.kilojoule_per_mole/unit.nanometer/unit.radian')),
("AmoebaTorsionTorsionForce", "getNumTorsionTorsions") : ( None, ()), ("AmoebaTorsionTorsionForce", "getNumTorsionTorsions") : ( None, ()),
("AmoebaTorsionTorsionForce", "getNumTorsionTorsionGrids") : ( None, ()), ("AmoebaTorsionTorsionForce", "getNumTorsionTorsionGrids") : ( None, ()),
......
...@@ -722,5 +722,75 @@ class TestAPIUnits(unittest.TestCase): ...@@ -722,5 +722,75 @@ class TestAPIUnits(unittest.TestCase):
self.assertEqual(tk, 1.0*kilocalorie_per_mole/radians**2) self.assertEqual(tk, 1.0*kilocalorie_per_mole/radians**2)
self.assertIs(tk.unit, kilojoules_per_mole/radians**2) self.assertIs(tk.unit, kilojoules_per_mole/radians**2)
def testAmoebaPiTorsionForce(self):
""" Tests the AmoebaPiTorsionForce API features """
force = AmoebaPiTorsionForce()
force.addPiTorsion(0, 1, 2, 3, 4, 5, 1.0)
force.addPiTorsion(1, 2, 3, 4, 5, 6, 1.0*kilocalories_per_mole)
self.assertEqual(force.getNumPiTorsions(), 2)
i, j, k, l, m, n, tk = force.getPiTorsionParameters(0)
self.assertEqual(i, 0)
self.assertEqual(j, 1)
self.assertEqual(k, 2)
self.assertEqual(l, 3)
self.assertEqual(m, 4)
self.assertEqual(n, 5)
self.assertEqual(tk, 1.0*kilojoules_per_mole)
self.assertIs(tk.unit, kilojoule_per_mole)
i, j, k, l, m, n, tk = force.getPiTorsionParameters(1)
self.assertEqual(i, 1)
self.assertEqual(j, 2)
self.assertEqual(k, 3)
self.assertEqual(l, 4)
self.assertEqual(m, 5)
self.assertEqual(n, 6)
self.assertEqual(tk, 1.0*kilocalories_per_mole)
self.assertIs(tk.unit, kilojoule_per_mole)
def testAmoebaStretchBendForce(self):
""" Tests the AmoebaStretchBendForce API features """
force = AmoebaStretchBendForce()
force.addStretchBend(0, 1, 2, 0.10, 0.12, math.pi/2, 10.0, 12.0)
force.addStretchBend(1, 2, 3, 1.0*angstroms, 1.2*angstroms, 60*degrees,
10.0*kilocalories_per_mole/angstroms/radians,
12.0*kilocalories_per_mole/angstroms/radians)
self.assertEqual(force.getNumStretchBends(), 2)
i, j, k, r1, r2, t, k1, k2 = force.getStretchBendParameters(0)
self.assertEqual(i, 0)
self.assertEqual(j, 1)
self.assertEqual(k, 2)
self.assertEqual(r1, 0.1*nanometers)
self.assertIs(r1.unit, nanometers)
self.assertEqual(r2, 0.12*nanometers)
self.assertIs(r2.unit, nanometers)
self.assertEqual(t, math.pi/2*radians)
self.assertIs(t.unit, radians)
self.assertEqual(k1, 10*kilojoules_per_mole/nanometers/radians)
self.assertIs(k1.unit, kilojoules_per_mole/nanometers/radians)
self.assertEqual(k2, 12*kilojoules_per_mole/nanometers/radians)
self.assertIs(k2.unit, kilojoules_per_mole/nanometers/radians)
i, j, k, r1, r2, t, k1, k2 = force.getStretchBendParameters(1)
self.assertEqual(i, 1)
self.assertEqual(j, 2)
self.assertEqual(k, 3)
self.assertEqual(r1, 1.0*angstroms)
self.assertIs(r1.unit, nanometers)
self.assertEqual(r2, 1.2*angstroms)
self.assertIs(r2.unit, nanometers)
self.assertAlmostEqualUnit(t, 60*degrees)
self.assertIs(t.unit, radians)
self.assertEqual(k1, 10*kilocalories_per_mole/angstroms/radians)
self.assertIs(k1.unit, kilojoules_per_mole/nanometers/radians)
self.assertEqual(k2, 12*kilocalories_per_mole/angstroms/radians)
self.assertIs(k2.unit, kilojoules_per_mole/nanometers/radians)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment