Commit 762ffcee authored by peastman's avatar peastman
Browse files

Optimized creation of proper torsions

parent 4ffc9e3f
...@@ -2016,11 +2016,17 @@ class PeriodicTorsionGenerator(object): ...@@ -2016,11 +2016,17 @@ class PeriodicTorsionGenerator(object):
self.ff = forcefield self.ff = forcefield
self.proper = [] self.proper = []
self.improper = [] self.improper = []
self.propersForAtomType = defaultdict(set)
def registerProperTorsion(self, parameters): def registerProperTorsion(self, parameters):
torsion = self.ff._parseTorsion(parameters) torsion = self.ff._parseTorsion(parameters)
if torsion is not None: if torsion is not None:
index = len(self.proper)
self.proper.append(torsion) self.proper.append(torsion)
for t in torsion.types2:
self.propersForAtomType[t].add(index)
for t in torsion.types3:
self.propersForAtomType[t].add(index)
def registerImproperTorsion(self, parameters, ordering='default'): def registerImproperTorsion(self, parameters, ordering='default'):
torsion = self.ff._parseTorsion(parameters) torsion = self.ff._parseTorsion(parameters)
...@@ -2062,7 +2068,8 @@ class PeriodicTorsionGenerator(object): ...@@ -2062,7 +2068,8 @@ class PeriodicTorsionGenerator(object):
type3 = data.atomType[data.atoms[torsion[2]]] type3 = data.atomType[data.atoms[torsion[2]]]
type4 = data.atomType[data.atoms[torsion[3]]] type4 = data.atomType[data.atoms[torsion[3]]]
match = None match = None
for tordef in self.proper: for index in self.propersForAtomType[type2]:
tordef = self.proper[index]
types1 = tordef.types1 types1 = tordef.types1
types2 = tordef.types2 types2 = tordef.types2
types3 = tordef.types3 types3 = tordef.types3
......
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