"vscode:/vscode.git/clone" did not exist on "f18fa49cfce1a651f55753504b80db3d2ba163bf"
Commit de04489b authored by peastman's avatar peastman
Browse files

Merge pull request #852 from swails/amber10-12

Fix very subtle bug in Amber prmtop with NBFIX
parents 7f8c5089 53e7cadc
...@@ -305,6 +305,10 @@ class PrmtopLoader(object): ...@@ -305,6 +305,10 @@ class PrmtopLoader(object):
return self._nonbondTerms return self._nonbondTerms
except AttributeError: except AttributeError:
pass pass
# Check if there are any non-zero HBOND terms
for x, y in zip(self._raw_data['HBOND_ACOEF'], self._raw_data['HBOND_BCOEF']):
if float(x) or float(y):
raise Exception('10-12 interactions are not supported')
self._nonbondTerms=[] self._nonbondTerms=[]
lengthConversionFactor = units.angstrom.conversion_factor_to(units.nanometer) lengthConversionFactor = units.angstrom.conversion_factor_to(units.nanometer)
energyConversionFactor = units.kilocalorie_per_mole.conversion_factor_to(units.kilojoule_per_mole) energyConversionFactor = units.kilocalorie_per_mole.conversion_factor_to(units.kilojoule_per_mole)
...@@ -333,6 +337,7 @@ class PrmtopLoader(object): ...@@ -333,6 +337,7 @@ class PrmtopLoader(object):
for i in range(numTypes): for i in range(numTypes):
for j in range(numTypes): for j in range(numTypes):
index = int(self._raw_data['NONBONDED_PARM_INDEX'][numTypes*i+j]) - 1 index = int(self._raw_data['NONBONDED_PARM_INDEX'][numTypes*i+j]) - 1
if index < 0: continue
rij = type_parameters[i][0] + type_parameters[j][0] rij = type_parameters[i][0] + type_parameters[j][0]
wdij = sqrt(type_parameters[i][1] * type_parameters[j][1]) wdij = sqrt(type_parameters[i][1] * type_parameters[j][1])
a = float(self._raw_data['LENNARD_JONES_ACOEF'][index]) a = float(self._raw_data['LENNARD_JONES_ACOEF'][index])
...@@ -477,6 +482,7 @@ class PrmtopLoader(object): ...@@ -477,6 +482,7 @@ class PrmtopLoader(object):
typ1 = atomTypeIndexes[iAtom] - 1 typ1 = atomTypeIndexes[iAtom] - 1
typ2 = atomTypeIndexes[lAtom] - 1 typ2 = atomTypeIndexes[lAtom] - 1
idx = nbidx[numTypes*typ1+typ2] - 1 idx = nbidx[numTypes*typ1+typ2] - 1
if idx < 0: continue
a = parm_acoef[idx] a = parm_acoef[idx]
b = parm_bcoef[idx] b = parm_bcoef[idx]
try: try:
...@@ -870,6 +876,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode ...@@ -870,6 +876,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode
for i in range(numTypes): for i in range(numTypes):
for j in range(numTypes): for j in range(numTypes):
idx = nbidx[numTypes*i+j] - 1 idx = nbidx[numTypes*i+j] - 1
if idx < 0: continue
acoef[i+numTypes*j] = sqrt(parm_acoef[idx]) * afac acoef[i+numTypes*j] = sqrt(parm_acoef[idx]) * afac
bcoef[i+numTypes*j] = parm_bcoef[idx] * bfac bcoef[i+numTypes*j] = parm_bcoef[idx] * bfac
if has_1264: if has_1264:
...@@ -878,6 +885,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode ...@@ -878,6 +885,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode
for i in range(numTypes): for i in range(numTypes):
for j in range(numTypes): for j in range(numTypes):
idx = nbidx[numTypes*i+j] - 1 idx = nbidx[numTypes*i+j] - 1
if idx < 0: continue
ccoef[i+numTypes*j] = parm_ccoef[idx] * cfac ccoef[i+numTypes*j] = parm_ccoef[idx] * cfac
cforce = mm.CustomNonbondedForce('(a/r6)^2-b/r6-c/r^4; r6=r^6;' cforce = mm.CustomNonbondedForce('(a/r6)^2-b/r6-c/r^4; r6=r^6;'
'a=acoef(type1, type2);' 'a=acoef(type1, type2);'
...@@ -911,6 +919,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode ...@@ -911,6 +919,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode
for i in range(numTypes): for i in range(numTypes):
for j in range(numTypes): for j in range(numTypes):
idx = nbidx[numTypes*i+j] - 1 idx = nbidx[numTypes*i+j] - 1
if idx < 0: continue
ccoef[i+numTypes*j] = parm_ccoef[idx] * cfac ccoef[i+numTypes*j] = parm_ccoef[idx] * cfac
cforce = mm.CustomNonbondedForce('-c/r^4; c=ccoef(type1, type2)') cforce = mm.CustomNonbondedForce('-c/r^4; c=ccoef(type1, type2)')
cforce.addTabulatedFunction('ccoef', cforce.addTabulatedFunction('ccoef',
......
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