Commit 1f7985e7 authored by peastman's avatar peastman
Browse files

Support residue template parameters for CustomManyParticleForce

parent 5d9a166c
...@@ -1216,7 +1216,6 @@ class NonbondedGenerator: ...@@ -1216,7 +1216,6 @@ class NonbondedGenerator:
self.ff = forcefield self.ff = forcefield
self.coulomb14scale = coulomb14scale self.coulomb14scale = coulomb14scale
self.lj14scale = lj14scale self.lj14scale = lj14scale
self.typeMap = {}
self.params = ForceField._AtomTypeParameters(forcefield, 'NonbondedForce', 'Atom', ('charge', 'sigma', 'epsilon')) self.params = ForceField._AtomTypeParameters(forcefield, 'NonbondedForce', 'Atom', ('charge', 'sigma', 'epsilon'))
def registerAtom(self, parameters): def registerAtom(self, parameters):
...@@ -1295,7 +1294,6 @@ class GBSAOBCGenerator: ...@@ -1295,7 +1294,6 @@ class GBSAOBCGenerator:
def __init__(self, forcefield): def __init__(self, forcefield):
self.ff = forcefield self.ff = forcefield
self.typeMap = {}
self.params = ForceField._AtomTypeParameters(forcefield, 'GBSAOBCForce', 'Atom', ('charge', 'radius', 'scale')) self.params = ForceField._AtomTypeParameters(forcefield, 'GBSAOBCForce', 'Atom', ('charge', 'radius', 'scale'))
def registerAtom(self, parameters): def registerAtom(self, parameters):
...@@ -1639,7 +1637,6 @@ class CustomNonbondedGenerator: ...@@ -1639,7 +1637,6 @@ class CustomNonbondedGenerator:
self.ff = forcefield self.ff = forcefield
self.energy = energy self.energy = energy
self.bondCutoff = bondCutoff self.bondCutoff = bondCutoff
self.typeMap = {}
self.globalParams = {} self.globalParams = {}
self.perParticleParams = [] self.perParticleParams = []
self.functions = [] self.functions = []
...@@ -1726,7 +1723,6 @@ class CustomGBGenerator: ...@@ -1726,7 +1723,6 @@ class CustomGBGenerator:
def __init__(self, forcefield): def __init__(self, forcefield):
self.ff = forcefield self.ff = forcefield
self.typeMap = {}
self.globalParams = {} self.globalParams = {}
self.perParticleParams = [] self.perParticleParams = []
self.computedValues = [] self.computedValues = []
...@@ -1812,7 +1808,6 @@ class CustomManyParticleGenerator: ...@@ -1812,7 +1808,6 @@ class CustomManyParticleGenerator:
self.energy = energy self.energy = energy
self.permutationMode = permutationMode self.permutationMode = permutationMode
self.bondCutoff = bondCutoff self.bondCutoff = bondCutoff
self.typeMap = {}
self.globalParams = {} self.globalParams = {}
self.perParticleParams = [] self.perParticleParams = []
self.functions = [] self.functions = []
...@@ -1830,12 +1825,8 @@ class CustomManyParticleGenerator: ...@@ -1830,12 +1825,8 @@ class CustomManyParticleGenerator:
generator.perParticleParams.append(param.attrib['name']) generator.perParticleParams.append(param.attrib['name'])
for param in element.findall('TypeFilter'): for param in element.findall('TypeFilter'):
generator.typeFilters.append((int(param.attrib['index']), [int(x) for x in param.attrib['types'].split(',')])) generator.typeFilters.append((int(param.attrib['index']), [int(x) for x in param.attrib['types'].split(',')]))
for atom in element.findall('Atom'): generator.params = ForceField._AtomTypeParameters(ff, 'CustomManyParticleForce', 'Atom', generator.perParticleParams)
types = ff._findAtomTypes(atom.attrib, 1) generator.params.parseDefinitions(element)
if None not in types:
values = [float(atom.attrib[param]) for param in generator.perParticleParams]
for t in types[0]:
generator.typeMap[t] = (values, int(atom.attrib['filterType']))
def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args): def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args):
methodMap = {NoCutoff:mm.CustomManyParticleForce.NoCutoff, methodMap = {NoCutoff:mm.CustomManyParticleForce.NoCutoff,
...@@ -1865,12 +1856,9 @@ class CustomManyParticleGenerator: ...@@ -1865,12 +1856,9 @@ class CustomManyParticleGenerator:
elif type == 'Discrete3D': elif type == 'Discrete3D':
force.addTabulatedFunction(name, mm.Discrete2DFunction(params['xsize'], params['ysize'], params['zsize'], values)) force.addTabulatedFunction(name, mm.Discrete2DFunction(params['xsize'], params['ysize'], params['zsize'], values))
for atom in data.atoms: for atom in data.atoms:
t = data.atomType[atom] values = self.params.getAtomParameters(atom, data)
if t in self.typeMap: type = int(self.params.getExtraParameters(atom, data)['filterType'])
values = self.typeMap[t] force.addParticle(values, type)
force.addParticle(values[0], values[1])
else:
raise ValueError('No CustomManyParticle parameters defined for atom type '+t)
force.setNonbondedMethod(methodMap[nonbondedMethod]) force.setNonbondedMethod(methodMap[nonbondedMethod])
force.setCutoffDistance(nonbondedCutoff) force.setCutoffDistance(nonbondedCutoff)
sys.addForce(force) sys.addForce(force)
......
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