Commit d9e09633 authored by Jason Swails's avatar Jason Swails
Browse files

Finish the last commit. Make sure the box vector calculation from the lengths

and angles makes numbers exactly 0 that _should_ be zero (but aren't due to
precision and round-off issues).

Now the box vector code in the prmtop file is fully general for every type of
box that Amber supports.
parent d39325d3
......@@ -141,7 +141,8 @@ class AmberPrmtopFile(object):
# Set the periodic box size.
if prmtop.getIfBox():
top.setUnitCellDimensions(tuple(x.value_in_unit(unit.nanometer) for x in prmtop.getBoxBetaAndDimensions()[1:4])*unit.nanometer)
conv = (1.0 * unit.angstrom).value_in_unit(unit.nanometer)
top.setUnitCellDimensions(tuple(x*conv for x in prmtop.getBoxBetaAndDimensions()[1:4])*unit.nanometer)
def createSystem(self, nonbondedMethod=ff.NoCutoff, nonbondedCutoff=1.0*unit.nanometer,
constraints=None, rigidWater=True, implicitSolvent=None,
......
......@@ -742,10 +742,9 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode
_box_vectors_from_lengths_angles([boxX, boxY, boxZ],
[boxBeta, boxBeta, boxBeta],
tmp)
d0 = units.Quantity(0.0, units.angstroms)
xVec = units.Quantity(tmp[0], u.angstroms)
yVec = units.Quantity(tmp[1], u.angstroms)
zVec = units.Quantity(tmp[2], u.angstroms)
xVec = units.Quantity(tmp[0], units.angstroms)
yVec = units.Quantity(tmp[1], units.angstroms)
zVec = units.Quantity(tmp[2], units.angstroms)
system.setDefaultPeriodicBoxVectors(xVec, yVec, zVec)
# Set cutoff.
......@@ -1235,6 +1234,12 @@ def _box_vectors_from_lengths_angles(lengths, angles, boxVectors):
boxVectors[0][1] = boxVectors[0][2] = boxVectors[1][2] = 0.0
# Now make sure any vector close to zero is zero exactly
for i in range(3):
for j in range(3):
if abs(boxVectors[i][j]) < TINY:
boxVectors[i][j] = 0.0
def readAmberCoordinates(filename, asNumpy=False):
"""
Read atomic coordinates (and optionally, box vectors) from Amber formatted coordinate file.
......
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