Unverified Commit 06767dde authored by Peter Eastman's avatar Peter Eastman Committed by GitHub
Browse files

Added AMOEBA 2018 force field (#3299)

* Adding support for new AMOEBA features

* Support modern method of specifying in-plane angles

* Implemented stretch-torsions

* Implemented angle-torsions

* More AMOEBA fixes

* Bug fix

* Converted AMOEBA 2018 force field

* Added documentation for AMOEBA 2018

* Added a missing file for tests
parent 610e92fa
......@@ -35,16 +35,19 @@ import os.path
# biotype 2006 CA "Calcium Ion" 256
# biotype 2007 CL "Chloride Ion" 258
ions = { 'Li+' : ['LI', 249],
'Na+' : ['NA', 250],
'K+' : ['K', 251],
'Rb+' : ['RB', 252],
'Cs+' : ['CS', 253],
'Be+' : ['BE', 254],
'Mg+' : ['MG', 255],
'Ca+' : ['CA', 256],
'Zn+' : ['ZN', 257],
'Cl-' : ['Cl', 258]
ions = { 'Li+' : ['LI', 351],
'Na+' : ['NA', 352],
'K+' : ['K', 353],
'Rb+' : ['RB', 354],
'Cs+' : ['CS', 355],
'Be2' : ['BE', 356],
'Mg2' : ['MG', 357],
'Ca2' : ['CA', 358],
'Zn2' : ['ZN', 359],
'F-' : ['F', 360],
'Cl-' : ['Cl', 361],
'Br-' : ['Br', 362],
'I-' : ['I', 363]
}
atomTypes = {}
......@@ -149,9 +152,9 @@ def buildProteinResidue( residueDict, atoms, bondInfo, abbr, loc, tinkerLookupNa
residueDict[abbr]['atoms'][bondedAtom]['bonds'][atom] = 1
residueDict[abbr]['atoms'][atom]['bonds'][bondedAtom] = 1
else:
print "Error: bonded atom=%s not in residue=%s" % ( atom, abbr )
print("Error: bonded atom=%s not in residue=%s" % ( atom, abbr ))
else:
print "Error: bonded atom=%s nt in residue=%s" % ( atom, abbr )
print("Error: bonded atom=%s nt in residue=%s" % ( atom, abbr ))
return
......@@ -204,7 +207,7 @@ def copyProteinResidue( residue ):
def buildResidueDict( residueXmlFileName ):
residueTree = etree.parse(residueXmlFileName)
print "Read %s" % (residueXmlFileName)
print("Read %s" % (residueXmlFileName))
root = residueTree.getroot()
residueDict = dict()
......@@ -262,7 +265,7 @@ def buildResidueDict( residueXmlFileName ):
residueDict[cResidueName]['tinkerLookupName'] = 'C-Terminal ' + 'HIS ' + sub
else:
residueDict[cResidueName]['tinkerLookupName'] = 'C-Terminal ' + abbr + ' ' + sub
print "tinkerLookupName %s %s" % ( abbr, residueDict[cResidueName]['tinkerLookupName'])
print("tinkerLookupName %s %s" % ( abbr, residueDict[cResidueName]['tinkerLookupName']))
else:
residueDict[cResidueName]['tinkerLookupName'] = 'C-Terminal ' + abbr
residueDict[cResidueName]['atoms']['OXT'] = copyAtom( residueDict[abbr]['atoms']['O'] )
......@@ -296,10 +299,10 @@ def buildResidueDict( residueXmlFileName ):
buildProteinResidue( residueDict, atoms, bondInfo, abbr, loc, tinkerName, 1, residueName, type )
print "Start Lookup XML FFFFinal\n\n"
print("Start Lookup XML FFFFinal\n\n")
printXml = 1
if( printXml ):
print "<Residues>"
print("<Residues>")
for resName in sorted( residueDict.keys() ):
if( 'include' in residueDict[resName] and residueDict[resName]['include'] ):
type = residueDict[resName]['type']
......@@ -307,13 +310,13 @@ def buildResidueDict( residueXmlFileName ):
tinkerLookupName = residueDict[resName]['tinkerLookupName']
fullName = residueDict[resName]['residueName']
outputString = """ <Residue abbreviation="%s" loc="%s" type="%s" tinkerLookupName="%s" fullName="%s">""" % (resName, loc, type, tinkerLookupName, fullName )
print "%s" % outputString
print("%s" % outputString)
atomsInfo = residueDict[resName]['atoms']
for atomName in sorted( atomsInfo.keys() ):
tinkerLookupName = atomsInfo[atomName]['tinkerLookupName']
outputString = """ <Atom name="%s" tinkerLookupName="%s" />""" % (atomName, tinkerLookupName)
print "%s" % outputString
print("%s" % outputString)
includedBonds = dict()
for atomName in sorted( atomsInfo.keys() ):
......@@ -327,9 +330,9 @@ def buildResidueDict( residueXmlFileName ):
includedBonds[bondedAtom] = dict()
includedBonds[atomName][bondedAtom] = 1
includedBonds[bondedAtom][atomName] = 1
print "%s" % outputString
print "</Residue>"
print "</Residues>"
print("%s" % outputString)
print("</Residue>")
print("</Residues>")
return residueDict
......@@ -363,13 +366,13 @@ def setBioTypes( bioTypes, residueDict ):
if lookupName in bioTypes:
res['atoms'][atom]['type'] = bioTypes[lookupName][3]
else:
print "For %s lookupName=%s not in biotype" % (atom,lookupName)
print("For %s lookupName=%s not in biotype" % (atom,lookupName))
if( 'parent' in res ):
lookupName = res['atoms'][atom]['tinkerLookupName'] + '_' + res['parent']['tinkerLookupName']
if( lookupName in bioTypes ):
res['atoms'][atom]['type'] = bioTypes[lookupName][3]
else:
print "Missing lookupName=%s from biotype" % (lookupName)
print("Missing lookupName=%s from biotype" % (lookupName))
return 0
#=============================================================================================
......@@ -460,12 +463,16 @@ forces = {}
recognizedForces = {}
recognizedForces['bond'] = 1
recognizedForces['angle'] = 1
recognizedForces['anglep'] = 1
recognizedForces['strbnd'] = 1
recognizedForces['ureybrad'] = 1
recognizedForces['opbend'] = 1
recognizedForces['torsion'] = 1
recognizedForces['pitors'] = 1
recognizedForces['strtors'] = 1
recognizedForces['angtors'] = 1
recognizedForces['vdw'] = 1
recognizedForces['vdwpr'] = 1
recognizedForces['polarize'] = 1
recognizedForces['tortors'] = addTorTor
recognizedForces['multipole'] = addMultipole
......@@ -573,7 +580,7 @@ while lineIndex < len( allLines ):
scalars[fields[0]] = fields[1]
lineIndex += 1
else:
print "Field %s not recognized: line=<%s>" % ( fields[0], allLines[lineIndex] )
print("Field %s not recognized: line=<%s>" % ( fields[0], allLines[lineIndex] ))
lineIndex += 1
#=============================================================================================
......@@ -589,12 +596,12 @@ setBioTypes( bioTypes, residueDict )
tinkerXmlFileName = scalars['forcefield']
tinkerXmlFileName += '.xml'
tinkerXmlFile = open( tinkerXmlFileName, 'w' )
print "Opened %s." % (tinkerXmlFileName)
print("Opened %s." % (tinkerXmlFileName))
gkXmlFileName = scalars['forcefield']
gkXmlFileName += '_gk.xml'
gkXmlFile = open( gkXmlFileName, 'w' )
print "Opened %s." % (gkXmlFileName)
print("Opened %s." % (gkXmlFileName))
today = datetime.date.today().isoformat()
sourceFile = os.path.basename(sys.argv[1])
......@@ -680,7 +687,7 @@ for resname, res in sorted(residueDict.items()):
type = res['atoms'][atom]['type']
typeI = int( type )
if( typeI < 0 ):
print "Error: type=%s for atom=%s of residue=%s" % (type, atom, resname)
print("Error: type=%s for atom=%s of residue=%s" % (type, atom, resname))
tag = " <Atom name=\"%s\" type=\"%s\" />" % (atom, type)
atomIndex[atom] = atomCount
atomCount += 1
......@@ -755,7 +762,7 @@ tinkerXmlFile.write(' </Residue>\n')
# ions
for ion,ionInfo in ions.iteritems():
for ion,ionInfo in ions.items():
outputString = """ <Residue name="%s">\n""" % (ionInfo[0])
outputString += """ <Atom name="%s" type="%s"/>\n""" % (ionInfo[0], str(ionInfo[1]))
outputString += """ </Residue>\n"""
......@@ -792,18 +799,18 @@ if( isAmoeba ):
sextic = float(scalars['angle-sextic'])
outputString = """ <AmoebaAngleForce angle-cubic="%s" angle-quartic="%s" angle-pentic="%s" angle-sextic="%s">""" %( str(cubic), str(quartic), str(pentic), str(sextic) )
tinkerXmlFile.write( "%s\n" % (outputString ) )
angles = forces['angle']
radian = 57.2957795130
radian2 = 4.184/(radian*radian)
for angle in angles:
for set in ['angle', 'anglep']:
for angle in forces[set]:
k = float(angle[3])*radian2
outputString = """ <Angle class1="%s" class2="%s" class3="%s" k="%s" angle1="%s" """ % (angle[0], angle[1], angle[2], str(k), angle[4] )
outputString = ' <Angle class1="%s" class2="%s" class3="%s" k="%s" angle1="%s"' % (angle[0], angle[1], angle[2], str(k), angle[4] )
if( len(angle) > 5 ):
outputString += """ angle2="%s" """ % (angle[5])
outputString += ' angle2="%s"' % (angle[5])
if( len(angle) > 6 ):
outputString += """ angle3="%s" """ % (angle[6])
outputString += " /> "
outputString += ' angle3="%s"' % (angle[6])
outputString += ' inPlane="%s"/>' % (set == 'anglep')
tinkerXmlFile.write( "%s\n" % (outputString ) )
tinkerXmlFile.write( " </AmoebaAngleForce>\n" )
......@@ -824,6 +831,9 @@ if( isAmoeba ):
radian2 = 4.184/(radian*radian)
for opbend in opbends:
k = float(opbend[4])*radian2
for i in range(4):
if opbend[i] == '0':
opbend[i] = ''
outputString = """ <Angle class1="%s" class2="%s" class3="%s" class4="%s" k="%s"/>""" % (opbend[0], opbend[1], opbend[2], opbend[3], str(k))
tinkerXmlFile.write( "%s\n" % (outputString ) )
tinkerXmlFile.write( " </AmoebaOutOfPlaneBendForce>\n" )
......@@ -869,6 +879,26 @@ if( isAmoeba ):
tinkerXmlFile.write( "%s\n" % (outputString ) )
tinkerXmlFile.write( " </AmoebaPiTorsionForce>\n" )
#=============================================================================================
# Stretch torsion
tinkerXmlFile.write(' <AmoebaStretchTorsionForce>\n')
for torsion in forces['strtors']:
v = [float(x)*10*4.184 for x in torsion[4:]]
tinkerXmlFile.write(f' <Torsion class1="{torsion[0]}" class2="{torsion[1]}" class3="{torsion[2]}" class4="{torsion[3]}" v11="{v[0]}" v12="{v[1]}" v13="{v[2]}" v21="{v[3]}" v22="{v[4]}" v23="{v[5]}" v31="{v[6]}" v32="{v[7]}" v33="{v[8]}"/>\n')
tinkerXmlFile.write(' </AmoebaStretchTorsionForce>\n')
#=============================================================================================
# Angle torsion
tinkerXmlFile.write(' <AmoebaAngleTorsionForce>\n')
for torsion in forces['angtors']:
v = [float(x)*4.184 for x in torsion[4:]]
tinkerXmlFile.write(f' <Torsion class1="{torsion[0]}" class2="{torsion[1]}" class3="{torsion[2]}" class4="{torsion[3]}" v11="{v[0]}" v12="{v[1]}" v13="{v[2]}" v21="{v[3]}" v22="{v[4]}" v23="{v[5]}"/>\n')
tinkerXmlFile.write(' </AmoebaAngleTorsionForce>\n')
#=============================================================================================
# AmoebaStretchBendForce
......@@ -906,7 +936,7 @@ if( isAmoeba ):
outputString = """ <TorsionTorsionGrid grid="%s" nx="%s" ny="%s" >""" % (str(index), torInfo[5], torInfo[6] )
tinkerXmlFile.write( "%s\n" % (outputString ) )
for (gridIndex, gridEntry) in enumerate(grid):
print "Gxx %d %s" % ( gridIndex, str(gridEntry) )
print("Gxx %d %s" % ( gridIndex, str(gridEntry) ))
if( len( gridEntry ) > 5 ):
f = float( gridEntry[2] )*4.184
fx = float( gridEntry[3] )*4.184
......@@ -930,15 +960,19 @@ if( isAmoeba ):
outputString = """ <AmoebaVdwForce type="%s" radiusrule="%s" radiustype="%s" radiussize="%s" epsilonrule="%s" vdw-13-scale="%s" vdw-14-scale="%s" vdw-15-scale="%s" >""" % (
scalars['vdwtype'], scalars['radiusrule'], scalars['radiustype'], scalars['radiussize'], scalars['epsilonrule'], scalars['vdw-13-scale'], scalars['vdw-14-scale'], scalars['vdw-15-scale'] )
tinkerXmlFile.write( "%s\n" % (outputString ) )
vdws = forces['vdw']
for vdw in vdws:
for vdw in forces['vdw']:
sigma = float(vdw[1])*0.1
epsilon = float(vdw[2])*4.184
if( len(vdw) > 3 ):
reduction = vdw[3]
else:
reduction = 1.0
outputString = """ <Vdw class="%s" sigma="%s" epsilon="%s" reduction="%s" /> """ % (vdw[0], str(sigma), str(epsilon), str(reduction) )
outputString = """ <Vdw class="%s" sigma="%s" epsilon="%s" reduction="%s"/>""" % (vdw[0], str(sigma), str(epsilon), str(reduction))
tinkerXmlFile.write( "%s\n" % (outputString ) )
for pair in forces['vdwpr']:
sigma = float(pair[2])*0.1
epsilon = float(pair[3])*4.184
outputString = """ <Pair class1="%s" class2="%s" sigma="%s" epsilon="%s"/>""" % (pair[0], pair[1], str(sigma), str(epsilon))
tinkerXmlFile.write( "%s\n" % (outputString ) )
tinkerXmlFile.write( " </AmoebaVdwForce>\n" )
......@@ -1013,11 +1047,11 @@ if( isAmoeba ):
outputString += "/>"
tinkerXmlFile.write( "%s\n" % (outputString ) )
print m[polarize[0]]
print(m[polarize[0]])
for t in sorted(m):
for k in m[t]:
if t not in m[k]:
print t, k
print(t, k)
tinkerXmlFile.write( " </AmoebaMultipoleForce>\n" )
......@@ -1037,10 +1071,10 @@ if( isAmoeba ):
# radii are set in forcefield.py
for type in sorted( atomTypes ):
print "atom type=%s %s" % ( str(type), str(atomTypes[type]) )
print("atom type=%s %s" % ( str(type), str(atomTypes[type]) ))
for type in sorted( bioTypes ):
print "bio type=%s %s" % ( str(type), str(bioTypes[type]) )
print("bio type=%s %s" % ( str(type), str(bioTypes[type]) ))
multipoleArray = forces['multipole']
for multipoleInfo in multipoleArray:
......@@ -1067,9 +1101,9 @@ if( isAmoeba ):
elif( element == 'Fe' ):
shct = 0.88
else:
print "Warning no overlap scale factor for type=%d element=%s" % (type, element)
print("Warning no overlap scale factor for type=%d element=%s" % (type, element))
else:
print "Warning no overlap scale factor for type=%d " % (type)
print("Warning no overlap scale factor for type=%d " % (type))
outputString = """ <GeneralizedKirkwood type="%s" charge="%s" shct="%s" /> """ % ( axisInfo[0], multipoles[0], str(shct) )
gkXmlFile.write( "%s\n" % (outputString ) )
......
......@@ -649,25 +649,28 @@ dielectric constant, and :math:`T` is the temperature in Kelvin.
AMOEBA
------
The AMOEBA polarizable force field provides parameters for proteins, water, and ions.
The AMOEBA polarizable force field provides parameters for proteins, nucleic acids, water, and ions.
.. tabularcolumns:: |l|L|
============================= ================================================================================
File Parameters
============================= ================================================================================
:file:`amoeba2013.xml` AMOEBA 2013\ :cite:`Shi2013`
:file:`amoeba2013_gk.xml` Generalized Kirkwood solvation model\ :cite:`Schnieders2007` for use with AMOEBA 2013 force field
:file:`amoeba2018.xml` AMOEBA 2018\ :cite:`Shi2013`
:file:`amoeba2018_gk.xml` Generalized Kirkwood solvation model\ :cite:`Schnieders2007` for use with AMOEBA 2018 force field
:file:`amoeba2013.xml` AMOEBA 2013. This force field is deprecated. It is
recommended to use AMOEBA 2018 instead.
:file:`amoeba2013_gk.xml` Generalized Kirkwood solvation model for use with AMOEBA 2013 force field
:file:`amoeba2009.xml` AMOEBA 2009\ :cite:`Ren2002`. This force field is deprecated. It is
recommended to use AMOEBA 2013 instead.
recommended to use AMOEBA 2018 instead.
:file:`amoeba2009_gk.xml` Generalized Kirkwood solvation model for use with AMOEBA 2009 force field
============================= ================================================================================
For explicit solvent simulations, just include the single file :file:`amoeba2013.xml`.
For explicit solvent simulations, just include the single file :file:`amoeba2018.xml`.
AMOEBA also supports implicit solvent using a Generalized Kirkwood model. To enable
it, also include :file:`amoeba2013_gk.xml`.
it, also include :file:`amoeba2018_gk.xml`.
The older AMOEBA 2009 force field is provided only for backward compatibility, and is not
The older AMOEBA 2009 and 2013 force fields are provided only for backward compatibility, and are not
recommended for most simulations.
CHARMM Polarizable Force Field
......
This source diff could not be displayed because it is too large. You can view the blob instead.
<ForceField>
<Info>
<Source>amoebabio18.prm</Source>
<DateGenerated>2021-10-24</DateGenerated>
<Reference>Yue Shi, Zhen Xia, Jiajing Zhang, Robert Best, Chuanjie Wu, Jay W. Ponder, and Pengyu Ren. Polarizable Atomic Multipole-Based AMOEBA Force Field for Proteins. Journal of Chemical Theory and Computation, 9(9):4046–4063, 2013.</Reference>
<Reference>Rae A. Corrigan, Guowei Qi, Andrew C. Thiel, Jack R. Lynn, Brandon D. Walker, Thomas L. Casavant, Louis Lagardere, Jean-Philip Piquemal, Jay W. Ponder, Pengyu Ren, and Michael J. Schnieders. Implicit Solvents for the Polarizable Atomic Multipole AMOEBA Force Field. Journal of Chemical Theory and Computation, 17(4):2323-2341, 2021.</Reference>
</Info>
<AmoebaGeneralizedKirkwoodForce solventDielectric="78.3" soluteDielectric="1.0" includeCavityTerm="1" probeRadius="0.14" surfaceAreaFactor="-170.35173066268223">
<GeneralizedKirkwood type="1" charge="-0.22483" shct="0.79" />
<GeneralizedKirkwood type="2" charge="-0.09722" shct="0.72" />
<GeneralizedKirkwood type="2" charge="-0.31113" shct="0.72" />
<GeneralizedKirkwood type="2" charge="-0.18217" shct="0.72" />
<GeneralizedKirkwood type="2" charge="-0.06142" shct="0.72" />
<GeneralizedKirkwood type="3" charge="0.79586" shct="0.72" />
<GeneralizedKirkwood type="4" charge="0.13964" shct="0.85" />
<GeneralizedKirkwood type="5" charge="-0.76219" shct="0.85" />
<GeneralizedKirkwood type="6" charge="0.07437" shct="0.85" />
<GeneralizedKirkwood type="7" charge="-0.15418" shct="0.79" />
<GeneralizedKirkwood type="7" charge="-0.14115" shct="0.79" />
<GeneralizedKirkwood type="8" charge="-0.17302" shct="0.72" />
<GeneralizedKirkwood type="8" charge="-0.36199" shct="0.72" />
<GeneralizedKirkwood type="8" charge="-0.11441" shct="0.72" />
<GeneralizedKirkwood type="8" charge="0.04440" shct="0.72" />
<GeneralizedKirkwood type="9" charge="0.81010" shct="0.72" />
<GeneralizedKirkwood type="9" charge="0.85003" shct="0.72" />
<GeneralizedKirkwood type="10" charge="0.12044" shct="0.85" />
<GeneralizedKirkwood type="10" charge="0.12637" shct="0.85" />
<GeneralizedKirkwood type="11" charge="-0.75149" shct="0.85" />
<GeneralizedKirkwood type="11" charge="-0.77014" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.08514" shct="0.85" />
<GeneralizedKirkwood type="12" charge="0.07834" shct="0.85" />
<GeneralizedKirkwood type="13" charge="-0.15959" shct="0.72" />
<GeneralizedKirkwood type="14" charge="0.07420" shct="0.85" />
<GeneralizedKirkwood type="15" charge="-0.06548" shct="0.72" />
<GeneralizedKirkwood type="16" charge="0.07117" shct="0.85" />
<GeneralizedKirkwood type="17" charge="-0.16832" shct="0.72" />
<GeneralizedKirkwood type="18" charge="0.06566" shct="0.85" />
<GeneralizedKirkwood type="19" charge="-0.13173" shct="0.72" />
<GeneralizedKirkwood type="20" charge="0.06916" shct="0.85" />
<GeneralizedKirkwood type="21" charge="-0.02887" shct="0.72" />
<GeneralizedKirkwood type="22" charge="0.08767" shct="0.85" />
<GeneralizedKirkwood type="23" charge="-0.17741" shct="0.72" />
<GeneralizedKirkwood type="24" charge="0.05874" shct="0.85" />
<GeneralizedKirkwood type="25" charge="-0.08555" shct="0.72" />
<GeneralizedKirkwood type="26" charge="0.08230" shct="0.85" />
<GeneralizedKirkwood type="27" charge="-0.11939" shct="0.72" />
<GeneralizedKirkwood type="28" charge="0.07096" shct="0.85" />
<GeneralizedKirkwood type="29" charge="-0.17217" shct="0.72" />
<GeneralizedKirkwood type="30" charge="0.06823" shct="0.85" />
<GeneralizedKirkwood type="31" charge="-0.16882" shct="0.72" />
<GeneralizedKirkwood type="32" charge="0.06001" shct="0.85" />
<GeneralizedKirkwood type="33" charge="0.16229" shct="0.72" />
<GeneralizedKirkwood type="34" charge="0.05600" shct="0.85" />
<GeneralizedKirkwood type="35" charge="-0.44145" shct="0.85" />
<GeneralizedKirkwood type="36" charge="0.23017" shct="0.85" />
<GeneralizedKirkwood type="37" charge="0.10834" shct="0.72" />
<GeneralizedKirkwood type="38" charge="0.06805" shct="0.85" />
<GeneralizedKirkwood type="39" charge="-0.40177" shct="0.85" />
<GeneralizedKirkwood type="40" charge="0.24568" shct="0.85" />
<GeneralizedKirkwood type="41" charge="-0.16081" shct="0.72" />
<GeneralizedKirkwood type="42" charge="0.06784" shct="0.85" />
<GeneralizedKirkwood type="43" charge="-0.30144" shct="0.72" />
<GeneralizedKirkwood type="43" charge="-0.30144" shct="0.72" />
<GeneralizedKirkwood type="43" charge="-0.08027" shct="0.72" />
<GeneralizedKirkwood type="44" charge="0.14381" shct="0.85" />
<GeneralizedKirkwood type="44" charge="0.00975" shct="0.85" />
<GeneralizedKirkwood type="45" charge="-0.03264" shct="0.96" />
<GeneralizedKirkwood type="46" charge="0.10947" shct="0.85" />
<GeneralizedKirkwood type="47" charge="0.07683" shct="0.96" />
<GeneralizedKirkwood type="48" charge="-0.23113" shct="0.72" />
<GeneralizedKirkwood type="48" charge="0.60118" shct="0.72" />
<GeneralizedKirkwood type="49" charge="-0.85155" shct="0.96" />
<GeneralizedKirkwood type="50" charge="-0.13558" shct="0.79" />
<GeneralizedKirkwood type="51" charge="-0.26070" shct="0.72" />
<GeneralizedKirkwood type="51" charge="-0.37342" shct="0.72" />
<GeneralizedKirkwood type="52" charge="0.90470" shct="0.72" />
<GeneralizedKirkwood type="53" charge="-0.76984" shct="0.85" />
<GeneralizedKirkwood type="54" charge="0.09550" shct="0.85" />
<GeneralizedKirkwood type="55" charge="-0.13205" shct="0.72" />
<GeneralizedKirkwood type="55" charge="-0.12680" shct="0.72" />
<GeneralizedKirkwood type="56" charge="0.09686" shct="0.85" />
<GeneralizedKirkwood type="56" charge="0.11510" shct="0.85" />
<GeneralizedKirkwood type="57" charge="-0.16591" shct="0.72" />
<GeneralizedKirkwood type="57" charge="-0.14420" shct="0.72" />
<GeneralizedKirkwood type="58" charge="0.08886" shct="0.85" />
<GeneralizedKirkwood type="58" charge="0.12121" shct="0.85" />
<GeneralizedKirkwood type="59" charge="-0.03932" shct="0.72" />
<GeneralizedKirkwood type="60" charge="0.06588" shct="0.85" />
<GeneralizedKirkwood type="61" charge="-0.11216" shct="0.72" />
<GeneralizedKirkwood type="62" charge="0.09205" shct="0.85" />
<GeneralizedKirkwood type="63" charge="-0.04246" shct="0.72" />
<GeneralizedKirkwood type="64" charge="0.04681" shct="0.72" />
<GeneralizedKirkwood type="65" charge="0.00023" shct="0.85" />
<GeneralizedKirkwood type="66" charge="-0.02656" shct="0.72" />
<GeneralizedKirkwood type="67" charge="0.00719" shct="0.85" />
<GeneralizedKirkwood type="68" charge="-0.02866" shct="0.72" />
<GeneralizedKirkwood type="69" charge="0.00685" shct="0.85" />
<GeneralizedKirkwood type="70" charge="-0.10731" shct="0.72" />
<GeneralizedKirkwood type="71" charge="0.09011" shct="0.85" />
<GeneralizedKirkwood type="72" charge="-0.05309" shct="0.72" />
<GeneralizedKirkwood type="73" charge="0.07134" shct="0.72" />
<GeneralizedKirkwood type="74" charge="0.00345" shct="0.85" />
<GeneralizedKirkwood type="75" charge="-0.12512" shct="0.72" />
<GeneralizedKirkwood type="76" charge="0.01090" shct="0.85" />
<GeneralizedKirkwood type="77" charge="0.35744" shct="0.72" />
<GeneralizedKirkwood type="78" charge="-0.46438" shct="0.85" />
<GeneralizedKirkwood type="79" charge="0.22899" shct="0.85" />
<GeneralizedKirkwood type="80" charge="-0.14909" shct="0.72" />
<GeneralizedKirkwood type="81" charge="0.07954" shct="0.85" />
<GeneralizedKirkwood type="82" charge="-0.21590" shct="0.72" />
<GeneralizedKirkwood type="83" charge="-0.04549" shct="0.72" />
<GeneralizedKirkwood type="84" charge="0.01759" shct="0.85" />
<GeneralizedKirkwood type="85" charge="-0.15892" shct="0.72" />
<GeneralizedKirkwood type="86" charge="-0.03324" shct="0.85" />
<GeneralizedKirkwood type="87" charge="0.62054" shct="0.72" />
<GeneralizedKirkwood type="88" charge="-0.91150" shct="0.85" />
<GeneralizedKirkwood type="89" charge="-0.16339" shct="0.72" />
<GeneralizedKirkwood type="90" charge="0.08819" shct="0.85" />
<GeneralizedKirkwood type="91" charge="-0.14846" shct="0.72" />
<GeneralizedKirkwood type="92" charge="0.09676" shct="0.72" />
<GeneralizedKirkwood type="93" charge="0.02989" shct="0.85" />
<GeneralizedKirkwood type="94" charge="0.00548" shct="0.72" />
<GeneralizedKirkwood type="95" charge="-0.03588" shct="0.79" />
<GeneralizedKirkwood type="96" charge="0.08805" shct="0.85" />
<GeneralizedKirkwood type="97" charge="0.27382" shct="0.72" />
<GeneralizedKirkwood type="98" charge="-0.20979" shct="0.72" />
<GeneralizedKirkwood type="99" charge="0.00102" shct="0.85" />
<GeneralizedKirkwood type="100" charge="-0.11296" shct="0.72" />
<GeneralizedKirkwood type="101" charge="0.00446" shct="0.85" />
<GeneralizedKirkwood type="102" charge="0.06902" shct="0.72" />
<GeneralizedKirkwood type="103" charge="0.00474" shct="0.85" />
<GeneralizedKirkwood type="104" charge="-0.01987" shct="0.72" />
<GeneralizedKirkwood type="105" charge="0.00374" shct="0.85" />
<GeneralizedKirkwood type="106" charge="-0.10044" shct="0.72" />
<GeneralizedKirkwood type="107" charge="0.11241" shct="0.85" />
<GeneralizedKirkwood type="108" charge="0.16205" shct="0.72" />
<GeneralizedKirkwood type="109" charge="-0.10600" shct="0.79" />
<GeneralizedKirkwood type="110" charge="0.20247" shct="0.85" />
<GeneralizedKirkwood type="111" charge="0.04476" shct="0.72" />
<GeneralizedKirkwood type="112" charge="0.08897" shct="0.85" />
<GeneralizedKirkwood type="113" charge="0.39335" shct="0.72" />
<GeneralizedKirkwood type="114" charge="0.09278" shct="0.85" />
<GeneralizedKirkwood type="115" charge="-0.08186" shct="0.79" />
<GeneralizedKirkwood type="116" charge="0.14211" shct="0.85" />
<GeneralizedKirkwood type="117" charge="-0.10846" shct="0.72" />
<GeneralizedKirkwood type="118" charge="0.08849" shct="0.85" />
<GeneralizedKirkwood type="119" charge="0.04660" shct="0.72" />
<GeneralizedKirkwood type="120" charge="-0.16996" shct="0.79" />
<GeneralizedKirkwood type="121" charge="0.13110" shct="0.85" />
<GeneralizedKirkwood type="122" charge="0.08866" shct="0.72" />
<GeneralizedKirkwood type="123" charge="0.02049" shct="0.85" />
<GeneralizedKirkwood type="124" charge="0.34991" shct="0.72" />
<GeneralizedKirkwood type="125" charge="0.03404" shct="0.85" />
<GeneralizedKirkwood type="126" charge="-0.50635" shct="0.79" />
<GeneralizedKirkwood type="127" charge="-0.11338" shct="0.72" />
<GeneralizedKirkwood type="128" charge="0.08990" shct="0.85" />
<GeneralizedKirkwood type="129" charge="0.20611" shct="0.72" />
<GeneralizedKirkwood type="130" charge="-0.56975" shct="0.79" />
<GeneralizedKirkwood type="131" charge="-0.02289" shct="0.72" />
<GeneralizedKirkwood type="132" charge="0.03876" shct="0.85" />
<GeneralizedKirkwood type="133" charge="0.33110" shct="0.72" />
<GeneralizedKirkwood type="134" charge="0.03651" shct="0.85" />
<GeneralizedKirkwood type="135" charge="-0.13121" shct="0.79" />
<GeneralizedKirkwood type="136" charge="0.10796" shct="0.85" />
<GeneralizedKirkwood type="137" charge="-0.33682" shct="0.72" />
<GeneralizedKirkwood type="138" charge="0.04965" shct="0.85" />
<GeneralizedKirkwood type="139" charge="1.01811" shct="0.72" />
<GeneralizedKirkwood type="140" charge="-0.85879" shct="0.85" />
<GeneralizedKirkwood type="141" charge="-0.17303" shct="0.72" />
<GeneralizedKirkwood type="142" charge="0.10446" shct="0.85" />
<GeneralizedKirkwood type="143" charge="0.85923" shct="0.72" />
<GeneralizedKirkwood type="144" charge="-0.63514" shct="0.85" />
<GeneralizedKirkwood type="145" charge="-0.43939" shct="0.85" />
<GeneralizedKirkwood type="146" charge="0.24242" shct="0.85" />
<GeneralizedKirkwood type="147" charge="-0.15914" shct="0.72" />
<GeneralizedKirkwood type="148" charge="0.10149" shct="0.85" />
<GeneralizedKirkwood type="149" charge="0.76984" shct="0.72" />
<GeneralizedKirkwood type="150" charge="-0.74313" shct="0.85" />
<GeneralizedKirkwood type="151" charge="-0.28938" shct="0.79" />
<GeneralizedKirkwood type="152" charge="0.14092" shct="0.85" />
<GeneralizedKirkwood type="153" charge="-0.10324" shct="0.72" />
<GeneralizedKirkwood type="154" charge="0.06492" shct="0.85" />
<GeneralizedKirkwood type="155" charge="-0.35416" shct="0.72" />
<GeneralizedKirkwood type="156" charge="0.06420" shct="0.85" />
<GeneralizedKirkwood type="157" charge="1.05691" shct="0.72" />
<GeneralizedKirkwood type="158" charge="-0.89737" shct="0.85" />
<GeneralizedKirkwood type="159" charge="-0.10668" shct="0.72" />
<GeneralizedKirkwood type="160" charge="0.09513" shct="0.85" />
<GeneralizedKirkwood type="161" charge="-0.23637" shct="0.72" />
<GeneralizedKirkwood type="162" charge="0.10600" shct="0.85" />
<GeneralizedKirkwood type="163" charge="0.90086" shct="0.72" />
<GeneralizedKirkwood type="164" charge="-0.60677" shct="0.85" />
<GeneralizedKirkwood type="165" charge="-0.53100" shct="0.85" />
<GeneralizedKirkwood type="166" charge="0.24071" shct="0.85" />
<GeneralizedKirkwood type="167" charge="-0.07575" shct="0.72" />
<GeneralizedKirkwood type="168" charge="0.09458" shct="0.85" />
<GeneralizedKirkwood type="169" charge="-0.27255" shct="0.72" />
<GeneralizedKirkwood type="170" charge="0.10149" shct="0.85" />
<GeneralizedKirkwood type="171" charge="0.76984" shct="0.72" />
<GeneralizedKirkwood type="172" charge="-0.74313" shct="0.85" />
<GeneralizedKirkwood type="173" charge="-0.28938" shct="0.79" />
<GeneralizedKirkwood type="174" charge="0.14092" shct="0.85" />
<GeneralizedKirkwood type="175" charge="-0.14215" shct="0.72" />
<GeneralizedKirkwood type="176" charge="0.08383" shct="0.85" />
<GeneralizedKirkwood type="177" charge="-0.22038" shct="0.72" />
<GeneralizedKirkwood type="178" charge="0.07884" shct="0.85" />
<GeneralizedKirkwood type="179" charge="0.14780" shct="0.96" />
<GeneralizedKirkwood type="180" charge="-0.21776" shct="0.72" />
<GeneralizedKirkwood type="181" charge="0.05672" shct="0.85" />
<GeneralizedKirkwood type="182" charge="-0.08975" shct="0.72" />
<GeneralizedKirkwood type="183" charge="0.08202" shct="0.85" />
<GeneralizedKirkwood type="184" charge="-0.21565" shct="0.72" />
<GeneralizedKirkwood type="185" charge="0.08265" shct="0.85" />
<GeneralizedKirkwood type="186" charge="-0.02245" shct="0.72" />
<GeneralizedKirkwood type="187" charge="0.07982" shct="0.85" />
<GeneralizedKirkwood type="188" charge="-0.01637" shct="0.72" />
<GeneralizedKirkwood type="189" charge="0.09822" shct="0.85" />
<GeneralizedKirkwood type="190" charge="0.10000" shct="0.79" />
<GeneralizedKirkwood type="191" charge="0.20727" shct="0.85" />
<GeneralizedKirkwood type="192" charge="-0.14610" shct="0.72" />
<GeneralizedKirkwood type="193" charge="0.06260" shct="0.85" />
<GeneralizedKirkwood type="194" charge="-0.13934" shct="0.72" />
<GeneralizedKirkwood type="195" charge="0.07212" shct="0.85" />
<GeneralizedKirkwood type="196" charge="-0.12642" shct="0.72" />
<GeneralizedKirkwood type="197" charge="0.06261" shct="0.85" />
<GeneralizedKirkwood type="198" charge="0.04761" shct="0.72" />
<GeneralizedKirkwood type="199" charge="0.02822" shct="0.85" />
<GeneralizedKirkwood type="200" charge="-0.20360" shct="0.79" />
<GeneralizedKirkwood type="201" charge="0.08988" shct="0.85" />
<GeneralizedKirkwood type="202" charge="-0.09097" shct="0.72" />
<GeneralizedKirkwood type="203" charge="0.07770" shct="0.85" />
<GeneralizedKirkwood type="204" charge="-0.21722" shct="0.72" />
<GeneralizedKirkwood type="205" charge="0.08258" shct="0.85" />
<GeneralizedKirkwood type="206" charge="-0.01121" shct="0.72" />
<GeneralizedKirkwood type="207" charge="0.07564" shct="0.85" />
<GeneralizedKirkwood type="208" charge="-0.27936" shct="0.79" />
<GeneralizedKirkwood type="209" charge="0.15532" shct="0.85" />
<GeneralizedKirkwood type="210" charge="0.98761" shct="0.72" />
<GeneralizedKirkwood type="211" charge="-0.29224" shct="0.79" />
<GeneralizedKirkwood type="212" charge="0.15787" shct="0.85" />
<GeneralizedKirkwood type="213" charge="-0.08587" shct="0.72" />
<GeneralizedKirkwood type="214" charge="0.08588" shct="0.85" />
<GeneralizedKirkwood type="215" charge="-0.01858" shct="0.72" />
<GeneralizedKirkwood type="216" charge="0.08368" shct="0.85" />
<GeneralizedKirkwood type="217" charge="-0.01249" shct="0.72" />
<GeneralizedKirkwood type="218" charge="0.10208" shct="0.85" />
<GeneralizedKirkwood type="219" charge="0.10000" shct="0.79" />
<GeneralizedKirkwood type="220" charge="0.20727" shct="0.85" />
<GeneralizedKirkwood type="221" charge="-0.19058" shct="0.72" />
<GeneralizedKirkwood type="222" charge="0.07778" shct="0.85" />
<GeneralizedKirkwood type="223" charge="0.68484" shct="0.72" />
<GeneralizedKirkwood type="224" charge="-0.72760" shct="0.85" />
<GeneralizedKirkwood type="225" charge="-0.30948" shct="0.79" />
<GeneralizedKirkwood type="226" charge="0.15474" shct="0.85" />
<GeneralizedKirkwood type="227" charge="-0.26804" shct="0.79" />
<GeneralizedKirkwood type="228" charge="0.11919" shct="0.85" />
<GeneralizedKirkwood type="229" charge="-0.00970" shct="0.72" />
<GeneralizedKirkwood type="230" charge="0.05285" shct="0.85" />
<GeneralizedKirkwood type="231" charge="0.07891" shct="0.79" />
<GeneralizedKirkwood type="231" charge="0.11164" shct="0.79" />
<GeneralizedKirkwood type="231" charge="0.11164" shct="0.79" />
<GeneralizedKirkwood type="232" charge="0.26670" shct="0.85" />
<GeneralizedKirkwood type="232" charge="0.21240" shct="0.85" />
<GeneralizedKirkwood type="232" charge="0.21240" shct="0.85" />
<GeneralizedKirkwood type="233" charge="1.02670" shct="0.72" />
<GeneralizedKirkwood type="234" charge="-0.88956" shct="0.85" />
<GeneralizedKirkwood type="235" charge="0.92336" shct="0.72" />
<GeneralizedKirkwood type="235" charge="0.83309" shct="0.72" />
<GeneralizedKirkwood type="235" charge="0.83309" shct="0.72" />
<GeneralizedKirkwood type="236" charge="-0.58827" shct="0.85" />
<GeneralizedKirkwood type="236" charge="-0.61662" shct="0.85" />
<GeneralizedKirkwood type="236" charge="-0.61662" shct="0.85" />
<GeneralizedKirkwood type="237" charge="-0.46459" shct="0.85" />
<GeneralizedKirkwood type="238" charge="0.24812" shct="0.85" />
<GeneralizedKirkwood type="239" charge="0.07219" shct="0.79" />
<GeneralizedKirkwood type="240" charge="0.23262" shct="0.85" />
<GeneralizedKirkwood type="241" charge="-0.16428" shct="0.72" />
<GeneralizedKirkwood type="242" charge="0.94625" shct="0.72" />
<GeneralizedKirkwood type="243" charge="-0.74794" shct="0.85" />
<GeneralizedKirkwood type="244" charge="0.12611" shct="0.85" />
<GeneralizedKirkwood type="245" charge="-0.04567" shct="0.72" />
<GeneralizedKirkwood type="246" charge="0.10559" shct="0.85" />
<GeneralizedKirkwood type="247" charge="0.19705" shct="0.72" />
<GeneralizedKirkwood type="247" charge="0.19705" shct="0.72" />
<GeneralizedKirkwood type="248" charge="0.35474" shct="0.72" />
<GeneralizedKirkwood type="248" charge="0.35474" shct="0.72" />
<GeneralizedKirkwood type="249" charge="0.62323" shct="0.72" />
<GeneralizedKirkwood type="250" charge="0.11018" shct="0.72" />
<GeneralizedKirkwood type="251" charge="-0.16574" shct="0.79" />
<GeneralizedKirkwood type="252" charge="-0.19177" shct="0.79" />
<GeneralizedKirkwood type="253" charge="-0.30216" shct="0.79" />
<GeneralizedKirkwood type="254" charge="0.53583" shct="0.72" />
<GeneralizedKirkwood type="255" charge="-0.50058" shct="0.79" />
<GeneralizedKirkwood type="256" charge="-0.59923" shct="0.79" />
<GeneralizedKirkwood type="257" charge="-0.68218" shct="0.79" />
<GeneralizedKirkwood type="258" charge="0.03522" shct="0.85" />
<GeneralizedKirkwood type="258" charge="0.03522" shct="0.85" />
<GeneralizedKirkwood type="259" charge="0.01012" shct="0.85" />
<GeneralizedKirkwood type="260" charge="0.11946" shct="0.85" />
<GeneralizedKirkwood type="261" charge="-0.24104" shct="0.79" />
<GeneralizedKirkwood type="262" charge="-0.26707" shct="0.79" />
<GeneralizedKirkwood type="263" charge="-0.21855" shct="0.72" />
<GeneralizedKirkwood type="264" charge="-0.26774" shct="0.79" />
<GeneralizedKirkwood type="265" charge="0.21574" shct="0.72" />
<GeneralizedKirkwood type="265" charge="0.21574" shct="0.72" />
<GeneralizedKirkwood type="266" charge="0.99441" shct="0.72" />
<GeneralizedKirkwood type="266" charge="0.99441" shct="0.72" />
<GeneralizedKirkwood type="267" charge="0.63287" shct="0.72" />
<GeneralizedKirkwood type="268" charge="-0.72673" shct="0.79" />
<GeneralizedKirkwood type="269" charge="0.03287" shct="0.85" />
<GeneralizedKirkwood type="270" charge="-0.80802" shct="0.85" />
<GeneralizedKirkwood type="270" charge="-0.80802" shct="0.85" />
<GeneralizedKirkwood type="271" charge="0.01925" shct="0.85" />
<GeneralizedKirkwood type="271" charge="0.01925" shct="0.85" />
<GeneralizedKirkwood type="272" charge="0.11117" shct="0.85" />
<GeneralizedKirkwood type="273" charge="0.81575" shct="0.72" />
<GeneralizedKirkwood type="274" charge="0.91682" shct="0.72" />
<GeneralizedKirkwood type="275" charge="0.25636" shct="0.72" />
<GeneralizedKirkwood type="275" charge="0.25636" shct="0.72" />
<GeneralizedKirkwood type="276" charge="0.33548" shct="0.72" />
<GeneralizedKirkwood type="276" charge="0.33548" shct="0.72" />
<GeneralizedKirkwood type="277" charge="-0.46516" shct="0.79" />
<GeneralizedKirkwood type="278" charge="-0.34777" shct="0.79" />
<GeneralizedKirkwood type="279" charge="-0.00139" shct="0.72" />
<GeneralizedKirkwood type="280" charge="-0.13948" shct="0.79" />
<GeneralizedKirkwood type="281" charge="-0.16551" shct="0.79" />
<GeneralizedKirkwood type="282" charge="-0.49075" shct="0.79" />
<GeneralizedKirkwood type="283" charge="-0.68515" shct="0.79" />
<GeneralizedKirkwood type="284" charge="0.13360" shct="0.85" />
<GeneralizedKirkwood type="285" charge="-0.75414" shct="0.85" />
<GeneralizedKirkwood type="286" charge="0.03471" shct="0.85" />
<GeneralizedKirkwood type="286" charge="0.03471" shct="0.85" />
<GeneralizedKirkwood type="287" charge="0.12326" shct="0.85" />
<GeneralizedKirkwood type="288" charge="-0.12472" shct="0.72" />
<GeneralizedKirkwood type="289" charge="-0.32491" shct="0.72" />
<GeneralizedKirkwood type="290" charge="0.94792" shct="0.72" />
<GeneralizedKirkwood type="291" charge="0.13457" shct="0.72" />
<GeneralizedKirkwood type="292" charge="-0.20596" shct="0.79" />
<GeneralizedKirkwood type="293" charge="-0.37323" shct="0.79" />
<GeneralizedKirkwood type="294" charge="0.96217" shct="0.72" />
<GeneralizedKirkwood type="295" charge="0.07468" shct="0.85" />
<GeneralizedKirkwood type="296" charge="-0.81528" shct="0.85" />
<GeneralizedKirkwood type="297" charge="0.03316" shct="0.85" />
<GeneralizedKirkwood type="298" charge="-0.79250" shct="0.85" />
<GeneralizedKirkwood type="299" charge="0.16411" shct="0.85" />
<GeneralizedKirkwood type="300" charge="0.96728" shct="0.72" />
<GeneralizedKirkwood type="301" charge="0.20155" shct="0.72" />
<GeneralizedKirkwood type="302" charge="0.85168" shct="0.72" />
<GeneralizedKirkwood type="303" charge="-0.38069" shct="0.79" />
<GeneralizedKirkwood type="304" charge="-0.19639" shct="0.79" />
<GeneralizedKirkwood type="305" charge="-0.30583" shct="0.72" />
<GeneralizedKirkwood type="306" charge="0.16490" shct="0.85" />
<GeneralizedKirkwood type="307" charge="0.03819" shct="0.85" />
<GeneralizedKirkwood type="308" charge="-0.80827" shct="0.85" />
<GeneralizedKirkwood type="309" charge="-0.71662" shct="0.85" />
<GeneralizedKirkwood type="310" charge="0.03960" shct="0.85" />
<GeneralizedKirkwood type="311" charge="-0.21219" shct="0.85" />
<GeneralizedKirkwood type="312" charge="-0.04958" shct="0.72" />
<GeneralizedKirkwood type="312" charge="-0.04958" shct="0.72" />
<GeneralizedKirkwood type="313" charge="0.05304" shct="0.85" />
<GeneralizedKirkwood type="314" charge="0.22509" shct="0.72" />
<GeneralizedKirkwood type="315" charge="0.01372" shct="0.85" />
<GeneralizedKirkwood type="316" charge="0.03216" shct="0.72" />
<GeneralizedKirkwood type="317" charge="0.02686" shct="0.85" />
<GeneralizedKirkwood type="318" charge="0.20366" shct="0.72" />
<GeneralizedKirkwood type="318" charge="0.20366" shct="0.72" />
<GeneralizedKirkwood type="319" charge="0.05807" shct="0.85" />
<GeneralizedKirkwood type="319" charge="0.05807" shct="0.85" />
<GeneralizedKirkwood type="320" charge="-0.46715" shct="0.85" />
<GeneralizedKirkwood type="321" charge="0.36314" shct="0.85" />
<GeneralizedKirkwood type="322" charge="-0.54322" shct="0.85" />
<GeneralizedKirkwood type="323" charge="0.36509" shct="0.85" />
<GeneralizedKirkwood type="324" charge="0.21472" shct="0.72" />
<GeneralizedKirkwood type="324" charge="0.21472" shct="0.72" />
<GeneralizedKirkwood type="325" charge="0.01769" shct="0.85" />
<GeneralizedKirkwood type="325" charge="0.01769" shct="0.85" />
<GeneralizedKirkwood type="326" charge="-0.56592" shct="0.85" />
<GeneralizedKirkwood type="327" charge="0.36475" shct="0.85" />
<GeneralizedKirkwood type="328" charge="-0.04092" shct="0.72" />
<GeneralizedKirkwood type="329" charge="0.09541" shct="0.72" />
<GeneralizedKirkwood type="329" charge="0.09541" shct="0.72" />
<GeneralizedKirkwood type="330" charge="-0.16585" shct="0.72" />
<GeneralizedKirkwood type="331" charge="0.36158" shct="0.72" />
<GeneralizedKirkwood type="332" charge="-0.20726" shct="0.85" />
<GeneralizedKirkwood type="333" charge="0.07594" shct="0.85" />
<GeneralizedKirkwood type="334" charge="-0.02874" shct="0.85" />
<GeneralizedKirkwood type="335" charge="0.04534" shct="0.85" />
<GeneralizedKirkwood type="335" charge="0.04534" shct="0.85" />
<GeneralizedKirkwood type="336" charge="0.06371" shct="0.85" />
<GeneralizedKirkwood type="337" charge="0.20884" shct="0.72" />
<GeneralizedKirkwood type="337" charge="0.20884" shct="0.72" />
<GeneralizedKirkwood type="338" charge="-0.53633" shct="0.85" />
<GeneralizedKirkwood type="339" charge="0.35299" shct="0.85" />
<GeneralizedKirkwood type="340" charge="0.01484" shct="0.85" />
<GeneralizedKirkwood type="340" charge="0.01484" shct="0.85" />
<GeneralizedKirkwood type="341" charge="-0.56353" shct="0.85" />
<GeneralizedKirkwood type="342" charge="0.36821" shct="0.85" />
<GeneralizedKirkwood type="343" charge="1.70654" shct="0.86" />
<GeneralizedKirkwood type="343" charge="1.70654" shct="0.86" />
<GeneralizedKirkwood type="344" charge="-0.97486" shct="0.85" />
<GeneralizedKirkwood type="345" charge="-0.55194" shct="0.85" />
<GeneralizedKirkwood type="346" charge="-0.53022" shct="0.85" />
<GeneralizedKirkwood type="347" charge="-0.51852" shct="0.85" />
<GeneralizedKirkwood type="348" charge="-0.54572" shct="0.85" />
<GeneralizedKirkwood type="349" charge="-0.51966" shct="0.85" />
<GeneralizedKirkwood type="350" charge="0.25983" shct="0.85" />
<GeneralizedKirkwood type="351" charge="1.00000" shct="0.8" />
<GeneralizedKirkwood type="352" charge="1.00000" shct="0.8" />
<GeneralizedKirkwood type="353" charge="1.00000" shct="0.8" />
<GeneralizedKirkwood type="354" charge="1.00000" shct="0.8" />
<GeneralizedKirkwood type="355" charge="1.00000" shct="0.8" />
<GeneralizedKirkwood type="356" charge="2.00000" shct="0.8" />
<GeneralizedKirkwood type="357" charge="2.00000" shct="0.8" />
<GeneralizedKirkwood type="358" charge="2.00000" shct="0.8" />
<GeneralizedKirkwood type="359" charge="2.00000" shct="0.8" />
<GeneralizedKirkwood type="360" charge="-1.00000" shct="0.88" />
<GeneralizedKirkwood type="361" charge="-1.00000" shct="0.8" />
<GeneralizedKirkwood type="362" charge="-1.00000" shct="0.8" />
<GeneralizedKirkwood type="363" charge="-1.00000" shct="0.8" />
</AmoebaGeneralizedKirkwoodForce>
<AmoebaWcaDispersionForce epso="0.46024000000000004" epsh="0.056484" rmino="0.17025" rminh="0.13275" awater="33.428" slevy="1.0" dispoff="0.026000000000000002" shctd="0.81" >
<WcaDispersion class="1" radius="0.1855" epsilon="0.46024000000000004" />
<WcaDispersion class="2" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="3" radius="0.191" epsilon="0.443504" />
<WcaDispersion class="4" radius="0.1295" epsilon="0.092048" />
<WcaDispersion class="5" radius="0.165" epsilon="0.468608" />
<WcaDispersion class="6" radius="0.147" epsilon="0.108784" />
<WcaDispersion class="7" radius="0.1825" epsilon="0.42258400000000007" />
<WcaDispersion class="8" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="9" radius="0.149" epsilon="0.100416" />
<WcaDispersion class="10" radius="0.17025" epsilon="0.46024000000000004" />
<WcaDispersion class="11" radius="0.13275" epsilon="0.056484" />
<WcaDispersion class="12" radius="0.20025" epsilon="1.48532" />
<WcaDispersion class="14" radius="0.21000000000000002" epsilon="1.48532" />
<WcaDispersion class="13" radius="0.15000000000000002" epsilon="0.110876" />
<WcaDispersion class="15" radius="0.1855" epsilon="0.46024000000000004" />
<WcaDispersion class="16" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="17" radius="0.19" epsilon="0.372376" />
<WcaDispersion class="18" radius="0.149" epsilon="0.108784" />
<WcaDispersion class="19" radius="0.17025" epsilon="0.46024000000000004" />
<WcaDispersion class="20" radius="0.13275" epsilon="0.056484" />
<WcaDispersion class="21" radius="0.166" epsilon="0.468608" />
<WcaDispersion class="22" radius="0.19" epsilon="0.42258400000000007" />
<WcaDispersion class="23" radius="0.149" epsilon="0.108784" />
<WcaDispersion class="24" radius="0.1855" epsilon="0.46024000000000004" />
<WcaDispersion class="25" radius="0.1295" epsilon="0.092048" />
<WcaDispersion class="26" radius="0.19" epsilon="0.42258400000000007" />
<WcaDispersion class="27" radius="0.149" epsilon="0.108784" />
<WcaDispersion class="28" radius="0.19" epsilon="0.42258400000000007" />
<WcaDispersion class="29" radius="0.1855" epsilon="0.46024000000000004" />
<WcaDispersion class="30" radius="0.191" epsilon="0.443504" />
<WcaDispersion class="31" radius="0.1775" epsilon="0.39748" />
<WcaDispersion class="32" radius="0.191" epsilon="0.443504" />
<WcaDispersion class="33" radius="0.165" epsilon="0.468608" />
<WcaDispersion class="34" radius="0.17025" epsilon="0.46024000000000004" />
<WcaDispersion class="35" radius="0.13275" epsilon="0.06276" />
<WcaDispersion class="36" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="37" radius="0.1905" epsilon="0.43932" />
<WcaDispersion class="38" radius="0.124" epsilon="0.054392" />
<WcaDispersion class="39" radius="0.1825" epsilon="0.42258400000000007" />
<WcaDispersion class="40" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="41" radius="0.188" epsilon="0.43932" />
<WcaDispersion class="42" radius="0.135" epsilon="0.08368" />
<WcaDispersion class="43" radius="0.18600000000000003" epsilon="0.468608" />
<WcaDispersion class="44" radius="0.18700000000000003" epsilon="0.443504" />
<WcaDispersion class="45" radius="0.18600000000000003" epsilon="0.443504" />
<WcaDispersion class="46" radius="0.18500000000000003" epsilon="0.5313680000000001" />
<WcaDispersion class="47" radius="0.18000000000000002" epsilon="0.518816" />
<WcaDispersion class="48" radius="0.18700000000000003" epsilon="0.443504" />
<WcaDispersion class="49" radius="0.18200000000000002" epsilon="0.5313680000000001" />
<WcaDispersion class="50" radius="0.18200000000000002" epsilon="0.5313680000000001" />
<WcaDispersion class="51" radius="0.14750000000000002" epsilon="0.12133600000000001" />
<WcaDispersion class="52" radius="0.15400000000000003" epsilon="0.12133600000000001" />
<WcaDispersion class="53" radius="0.1325" epsilon="0.08368" />
<WcaDispersion class="54" radius="0.18500000000000003" epsilon="0.5313680000000001" />
<WcaDispersion class="55" radius="0.1895" epsilon="0.443504" />
<WcaDispersion class="56" radius="0.18600000000000003" epsilon="0.39748" />
<WcaDispersion class="57" radius="0.1525" epsilon="0.12133600000000001" />
<WcaDispersion class="58" radius="0.1675" epsilon="0.539736" />
<WcaDispersion class="59" radius="0.18600000000000003" epsilon="0.443504" />
<WcaDispersion class="60" radius="0.18500000000000003" epsilon="0.5313680000000001" />
<WcaDispersion class="61" radius="0.1325" epsilon="0.08368" />
<WcaDispersion class="62" radius="0.19" epsilon="0.42258400000000007" />
<WcaDispersion class="63" radius="0.18500000000000003" epsilon="0.5313680000000001" />
<WcaDispersion class="64" radius="0.145" epsilon="0.10460000000000001" />
<WcaDispersion class="65" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="66" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="67" radius="0.14450000000000002" epsilon="0.100416" />
<WcaDispersion class="68" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="69" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="70" radius="0.13275" epsilon="0.056484" />
<WcaDispersion class="71" radius="0.17250000000000001" epsilon="0.451872" />
<WcaDispersion class="72" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="73" radius="0.147" epsilon="0.100416" />
<WcaDispersion class="74" radius="0.17250000000000001" epsilon="0.451872" />
<WcaDispersion class="75" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="76" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="77" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="78" radius="0.14450000000000002" epsilon="0.100416" />
<WcaDispersion class="79" radius="0.191" epsilon="0.42258400000000007" />
<WcaDispersion class="80" radius="0.17250000000000001" epsilon="0.451872" />
<WcaDispersion class="81" radius="0.13275" epsilon="0.056484" />
<WcaDispersion class="82" radius="0.147" epsilon="0.100416" />
<WcaDispersion class="83" radius="0.17250000000000001" epsilon="0.451872" />
<WcaDispersion class="84" radius="0.22250000000000003" epsilon="1.2552" />
<WcaDispersion class="85" radius="0.17" epsilon="0.46024000000000004" />
<WcaDispersion class="86" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="87" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="88" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="89" radius="0.17025" epsilon="0.468608" />
<WcaDispersion class="90" radius="0.17025" epsilon="0.46024000000000004" />
<WcaDispersion class="91" radius="0.13275" epsilon="0.056484" />
<WcaDispersion class="92" radius="0.11000000000000001" epsilon="0.276144" />
<WcaDispersion class="93" radius="0.14775000000000002" epsilon="1.1715200000000001" />
<WcaDispersion class="94" radius="0.18400000000000002" epsilon="1.4644" />
<WcaDispersion class="95" radius="0.195" epsilon="1.58992" />
<WcaDispersion class="96" radius="0.207" epsilon="1.75728" />
<WcaDispersion class="97" radius="0.094" epsilon="0.380744" />
<WcaDispersion class="98" radius="0.145" epsilon="1.1715200000000001" />
<WcaDispersion class="99" radius="0.1795" epsilon="1.4644" />
<WcaDispersion class="100" radius="0.134" epsilon="0.928848" />
<WcaDispersion class="101" radius="0.1715" epsilon="1.046" />
<WcaDispersion class="102" radius="0.20600000000000002" epsilon="1.4225600000000003" />
<WcaDispersion class="103" radius="0.21600000000000003" epsilon="1.79912" />
<WcaDispersion class="104" radius="0.23050000000000004" epsilon="2.1756800000000003" />
</AmoebaWcaDispersionForce>
</ForceField>
......@@ -3446,6 +3446,7 @@ class AmoebaAngleGenerator(object):
self.angle = []
self.k = []
self.inPlane = []
#=============================================================================================
......@@ -3478,6 +3479,10 @@ class AmoebaAngleGenerator(object):
pass
generator.angle.append(angleList)
generator.k.append(float(angle.attrib['k']))
if 'inPlane' in angle.attrib:
generator.inPlane.append(angle.attrib['inPlane'].lower() == 'true')
else:
generator.inPlane.append(None) # for backward compatibility with older versions of AMOEBA
else:
outputString = "AmoebaAngleGenerator: error getting types: %s %s %s" % (
angle.attrib['class1'],
......@@ -3519,11 +3524,15 @@ class AmoebaAngleGenerator(object):
for angleDict in angleList:
angle = angleDict['angle']
isConstrained = angleDict['isConstrained']
inPlane = angleDict['inPlane']
type1 = data.atomType[data.atoms[angle[0]]]
type2 = data.atomType[data.atoms[angle[1]]]
type3 = data.atomType[data.atoms[angle[2]]]
for i in range(len(self.types1)):
# self.inPlane is used for modern force fields. inPlane is used for legacy ones that don't specify it.
if self.inPlane[i] or (self.inPlane[i] is None and inPlane):
continue
types1 = self.types1[i]
types2 = self.types2[i]
types3 = self.types3[i]
......@@ -3588,13 +3597,16 @@ class AmoebaAngleGenerator(object):
angle = angleDict['angle']
isConstrained = angleDict['isConstrained']
inPlane = angleDict['inPlane']
type1 = data.atomType[data.atoms[angle[0]]]
type2 = data.atomType[data.atoms[angle[1]]]
type3 = data.atomType[data.atoms[angle[2]]]
for i in range(len(self.types1)):
# self.inPlane is used for modern force fields. inPlane is used for legacy ones that don't specify it.
if self.inPlane[i] == False or (self.inPlane[i] is None and not inPlane):
continue
types1 = self.types1[i]
types2 = self.types2[i]
types3 = self.types3[i]
......@@ -3682,6 +3694,10 @@ class AmoebaOutOfPlaneBendGenerator(object):
forceField._forces.append(generator)
for angle in element.findall('Angle'):
if 'class3' in angle.attrib and 'class4' in angle.attrib and angle.attrib['class3'] == '0' and angle.attrib['class4'] == '0':
# This is needed for backward compatibility with old AMOEBA force fields that specified wildcards in a nonstandard way.
angle.attrib['class3'] = ''
angle.attrib['class4'] = ''
types = generator.findAtomTypes(forceField, angle, 4)
if types is not None:
......@@ -3697,33 +3713,6 @@ class AmoebaOutOfPlaneBendGenerator(object):
angle.attrib['class1'], angle.attrib['class2'], angle.attrib['class3'], angle.attrib['class4'])
raise ValueError(outputString)
#=============================================================================================
# Get middle atom in a angle
# return index of middle atom or -1 if no middle is found
# This method appears not to be needed since the angle[1] entry appears to always
# be the middle atom. However, was unsure if this is guaranteed
#=============================================================================================
def getMiddleAtom(self, angle, data):
# find atom shared by both bonds making up the angle
for atomIndex in angle:
isMiddle = 0
for bond in data.atomBonds[atomIndex]:
atom1 = data.bonds[bond].atom1
atom2 = data.bonds[bond].atom2
if (atom1 != atomIndex):
partner = atom1
else:
partner = atom2
if (partner == angle[0] or partner == angle[1] or partner == angle[2]):
isMiddle += 1
if (isMiddle == 2):
return atomIndex
return -1
#=============================================================================================
def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args):
......@@ -3744,30 +3733,28 @@ class AmoebaOutOfPlaneBendGenerator(object):
force = mm.CustomCompoundBondForce(4, energy)
force.addPerBondParameter("k")
force.setName('AmoebaOutOfPlaneBend')
sys.addForce(force)
else:
force = existing[0]
# this hash is used to insure the out-of-plane-bend bonds
# this hash is used to ensure the out-of-plane-bend bonds
# are only added once
skipAtoms = dict()
angles = []
# these lists are used in the partitioning of the angles into
# angle and inPlane angles
inPlaneAngles = []
nonInPlaneAngles = []
def addBond(particles):
types = [data.atomType[data.atoms[p]] for p in particles]
for i in range(len(self.types1)):
if types[1] in self.types2[i] and types[3] in self.types1[i]:
if (types[0] in self.types3[i] and types[2] in self.types4[i]) or (types[2] in self.types3[i] and types[0] in self.types4[i]):
force.addBond(particles, [self.ks[i]])
return
for (angle, isConstrained) in zip(data.angles, data.isAngleConstrained):
middleAtom = self.getMiddleAtom(angle, data)
if (middleAtom > -1):
middleAtom = angle[1]
middleType = data.atomType[data.atoms[middleAtom]]
middleCovalency = len(data.atomBonds[middleAtom])
else:
middleType = -1
middleCovalency = -1
# if middle atom has covalency of 3 and
# the types of the middle atom and the partner atom (atom bonded to
......@@ -3775,17 +3762,14 @@ class AmoebaOutOfPlaneBendGenerator(object):
# three out-of-plane bend angles are generated. Three in-plane angle
# are also generated. If the conditions are not satisfied, the angle is marked as 'generic' angle (not a in-plane angle)
if (middleAtom > -1 and middleCovalency == 3 and middleAtom not in skipAtoms):
if middleCovalency == 3 and middleAtom not in skipAtoms:
partners = []
partnerSet = set()
partnerTypes = []
partnerK = []
for bond in data.atomBonds[middleAtom]:
atom1 = data.bonds[bond].atom1
atom2 = data.bonds[bond].atom2
if (atom1 != middleAtom):
if atom1 != middleAtom:
partner = atom1
else:
partner = atom2
......@@ -3794,96 +3778,74 @@ class AmoebaOutOfPlaneBendGenerator(object):
for i in range(len(self.types1)):
types1 = self.types1[i]
types2 = self.types2[i]
if (middleType in types2 and partnerType in types1):
if middleType in types2 and partnerType in types1:
partners.append(partner)
partnerSet.add(partner)
partnerTypes.append(partnerType)
partnerK.append(self.ks[i])
break
if (len(partners) == 3):
if len(partners) == 3:
force.addBond([partners[0], middleAtom, partners[1], partners[2]], [partnerK[2]])
force.addBond([partners[0], middleAtom, partners[2], partners[1]], [partnerK[1]])
force.addBond([partners[1], middleAtom, partners[2], partners[0]], [partnerK[0]])
addBond([partners[0], middleAtom, partners[1], partners[2]])
addBond([partners[2], middleAtom, partners[0], partners[1]])
addBond([partners[1], middleAtom, partners[2], partners[0]])
# skipAtoms is used to insure angles are only included once
# skipAtoms is used to ensure angles are only included once
skipAtoms[middleAtom] = set()
skipAtoms[middleAtom].add(partners[0])
skipAtoms[middleAtom].add(partners[1])
skipAtoms[middleAtom].add(partners[2])
skipAtoms[middleAtom] = set(partners[:3])
# in-plane angle
angleDict = {}
angleList = []
angleList.append(angle[0])
angleList.append(angle[1])
angleList.append(angle[2])
angleList = list(angle[:3])
for atomIndex in partners:
if atomIndex not in angleList:
angleList.append(atomIndex)
angleDict['angle'] = angleList
angleDict['isConstrained'] = 0
angleSet = set()
angleSet.add(angle[0])
angleSet.add(angle[1])
angleSet.add(angle[2])
for atomIndex in partnerSet:
if (atomIndex not in angleSet):
angleList.append(atomIndex)
inPlaneAngles.append(angleDict)
angleDict['inPlane'] = True
angles.append(angleDict)
else:
angleDict = {}
angleDict['angle'] = angle
angleList = list(angle[:3])
for atomIndex in partners:
if atomIndex not in angleList:
angleList.append(atomIndex)
angleDict['angle'] = angleList
angleDict['isConstrained'] = isConstrained
nonInPlaneAngles.append(angleDict)
else:
if (middleAtom > -1 and middleCovalency == 3 and middleAtom in skipAtoms):
partnerSet = skipAtoms[middleAtom]
angleDict['inPlane'] = False
angles.append(angleDict)
elif middleCovalency == 3 and middleAtom in skipAtoms:
angleDict = {}
angleList = []
angleList.append(angle[0])
angleList.append(angle[1])
angleList.append(angle[2])
angleList = list(angle[:3])
for atomIndex in skipAtoms[middleAtom]:
if atomIndex not in angleList:
angleList.append(atomIndex)
angleDict['angle'] = angleList
angleDict['isConstrained'] = isConstrained
angleSet = set()
angleSet.add(angle[0])
angleSet.add(angle[1])
angleSet.add(angle[2])
for atomIndex in partnerSet:
if (atomIndex not in angleSet):
angleList.append(atomIndex)
inPlaneAngles.append(angleDict)
angleDict['inPlane'] = True
angles.append(angleDict)
else:
angleDict = {}
angleDict['angle'] = angle
angleDict['isConstrained'] = isConstrained
nonInPlaneAngles.append(angleDict)
angleDict['inPlane'] = False
angles.append(angleDict)
if len(existing) == 0 and force.getNumBonds() > 0:
sys.addForce(force)
# get AmoebaAngleGenerator and add AmoebaAngle and AmoebaInPlaneAngle forces
for force in self.forceField._forces:
if (force.__class__.__name__ == 'AmoebaAngleGenerator'):
force.createForcePostOpBendAngle(sys, data, nonbondedMethod, nonbondedCutoff, nonInPlaneAngles, args)
force.createForcePostOpBendInPlaneAngle(sys, data, nonbondedMethod, nonbondedCutoff, inPlaneAngles, args)
force.createForcePostOpBendAngle(sys, data, nonbondedMethod, nonbondedCutoff, angles, args)
force.createForcePostOpBendInPlaneAngle(sys, data, nonbondedMethod, nonbondedCutoff, angles, args)
for force in self.forceField._forces:
if (force.__class__.__name__ == 'AmoebaStretchBendGenerator'):
for angleDict in inPlaneAngles:
nonInPlaneAngles.append(angleDict)
force.createForcePostAmoebaBondForce(sys, data, nonbondedMethod, nonbondedCutoff, nonInPlaneAngles, args)
force.createForcePostAmoebaBondForce(sys, data, nonbondedMethod, nonbondedCutoff, angles, args)
parsers["AmoebaOutOfPlaneBendForce"] = AmoebaOutOfPlaneBendGenerator.parseElement
......@@ -4037,7 +3999,7 @@ class AmoebaPiTorsionGenerator(object):
#=============================================================================================
def createForce(self, sys, data, nonpiTorsionedMethod, nonpiTorsionedCutoff, args):
def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args):
energy = """2*k*sin(phi)^2;
phi = pointdihedral(x3+c1x, y3+c1y, z3+c1z, x3, y3, z3, x4, y4, z4, x4+c2x, y4+c2y, z4+c2z);
......@@ -4053,7 +4015,6 @@ class AmoebaPiTorsionGenerator(object):
force = mm.CustomCompoundBondForce(6, energy)
force.addPerBondParameter('k')
force.setName('AmoebaPiTorsion')
sys.addForce(force)
else:
force = existing[0]
......@@ -4115,11 +4076,199 @@ class AmoebaPiTorsionGenerator(object):
piTorsionAtom6 = b1
force.addBond([piTorsionAtom1, piTorsionAtom2, piTorsionAtom3, piTorsionAtom4, piTorsionAtom5, piTorsionAtom6], [self.k[i]])
if len(existing) == 0 and force.getNumBonds() > 0:
sys.addForce(force)
parsers["AmoebaPiTorsionForce"] = AmoebaPiTorsionGenerator.parseElement
#=============================================================================================
## @private
class AmoebaStretchTorsionGenerator(object):
"""An AmoebaStretchTorsionGenerator constructs a AmoebaStretchTorsionForce."""
def __init__(self):
self.torsions = []
@staticmethod
def parseElement(element, forceField):
generator = AmoebaStretchTorsionGenerator()
forceField._forces.append(generator)
params = ('v11', 'v12', 'v13', 'v21', 'v22', 'v23', 'v31', 'v32', 'v33')
for torsion in element.findall('Torsion'):
types = forceField._findAtomTypes(torsion.attrib, 4)
if None not in types:
v = [float(torsion.attrib[param]) for param in params]
generator.torsions.append((types, v))
def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args):
pass
def postprocessSystem(self, sys, data, args):
# We need to wait until after all bonds and torsions have been added before adding the stretch-torsions,
# since it needs parameters from them.
energy = """v11*(distance(p1,p2)-length1)*phi1 +
v12*(distance(p1,p2)-length1)*phi2 +
v13*(distance(p1,p2)-length1)*phi3 +
v21*(distance(p2,p3)-length2)*phi1 +
v22*(distance(p2,p3)-length2)*phi2 +
v23*(distance(p2,p3)-length2)*phi3 +
v31*(distance(p3,p4)-length3)*phi1 +
v32*(distance(p3,p4)-length3)*phi2 +
v33*(distance(p3,p4)-length3)*phi3;
phi1=1+cos(phi+phase1); phi2=1+cos(2*phi+phase2); phi3=1+cos(3*phi+phase3);
phi=dihedral(p1,p2,p3,p4)"""
existing = [f for f in sys.getForces() if type(f) == mm.CustomCompoundBondForce and f.getEnergyFunction() == energy]
if len(existing) == 0:
force = mm.CustomCompoundBondForce(4, energy)
for param in ('v11', 'v12', 'v13', 'v21', 'v22', 'v23', 'v31', 'v32', 'v33'):
force.addPerBondParameter(param)
for i in range(3):
force.addPerBondParameter(f'length{i+1}')
for i in range(3):
force.addPerBondParameter(f'phase{i+1}')
force.setName('AmoebaStretchTorsion')
else:
force = existing[0]
# Record parameters for bonds and torsions so we can look them up quickly.
bondForce = [f for f in sys.getForces() if type(f) == mm.CustomBondForce and f.getName() == 'AmoebaBond'][0]
torsionForce = [f for f in sys.getForces() if type(f) == mm.PeriodicTorsionForce][0]
bondLength = {}
torsionPhase = defaultdict(lambda: [0.0, math.pi, 0.0])
for i in range(bondForce.getNumBonds()):
p1, p2, params = bondForce.getBondParameters(i)
bondLength[(p1, p2)] = params[0]
bondLength[(p2, p1)] = params[0]
for i in range(torsionForce.getNumTorsions()):
p1, p2, p3, p4, periodicity, phase, k = torsionForce.getTorsionParameters(i)
if periodicity < 4:
phase = phase.value_in_unit(unit.radian)
torsionPhase[(p1, p2, p3, p4)][periodicity-1] = phase
torsionPhase[(p4, p3, p2, p1)][periodicity-1] = phase
# Add stretch-torsions.
for torsion in data.propers:
type1 = data.atomType[data.atoms[torsion[0]]]
type2 = data.atomType[data.atoms[torsion[1]]]
type3 = data.atomType[data.atoms[torsion[2]]]
type4 = data.atomType[data.atoms[torsion[3]]]
for types, v in self.torsions:
if (type1 in types[3] and type2 in types[2] and type3 in types[1] and type4 in types[0]):
type1, type2, type3, type4 = type4, type3, type2, type1
torsion = tuple(reversed(torsion))
if (type1 in types[0] and type2 in types[1] and type3 in types[2] and type4 in types[3]):
params = list(v)
params.append(bondLength[(torsion[0], torsion[1])])
params.append(bondLength[(torsion[1], torsion[2])])
params.append(bondLength[(torsion[2], torsion[3])])
params += torsionPhase[torsion]
force.addBond(torsion, params)
break
if len(existing) == 0 and force.getNumBonds() > 0:
sys.addForce(force)
parsers["AmoebaStretchTorsionForce"] = AmoebaStretchTorsionGenerator.parseElement
#=============================================================================================
## @private
class AmoebaAngleTorsionGenerator(object):
"""An AmoebaAngleTorsionGenerator constructs a AmoebaAngleTorsionForce."""
def __init__(self):
self.torsions = []
@staticmethod
def parseElement(element, forceField):
generator = AmoebaAngleTorsionGenerator()
forceField._forces.append(generator)
params = ('v11', 'v12', 'v13', 'v21', 'v22', 'v23')
for torsion in element.findall('Torsion'):
types = forceField._findAtomTypes(torsion.attrib, 4)
if None not in types:
v = [float(torsion.attrib[param]) for param in params]
generator.torsions.append((types, v))
def createForce(self, sys, data, nonbondedMethod, nonbondedCutoff, args):
pass
def postprocessSystem(self, sys, data, args):
# We need to wait until after all angles and torsions have been added before adding the angle-torsions,
# since it needs parameters from them.
energy = """v11*(angle(p1,p2,p3)-angle1)*phi1 +
v12*(angle(p1,p2,p3)-angle1)*phi2 +
v13*(angle(p1,p2,p3)-angle1)*phi3 +
v21*(angle(p2,p3,p4)-angle2)*phi1 +
v22*(angle(p2,p3,p4)-angle2)*phi2 +
v23*(angle(p2,p3,p4)-angle2)*phi3;
phi1=1+cos(phi+phase1); phi2=1+cos(2*phi+phase2); phi3=1+cos(3*phi+phase3);
phi=dihedral(p1,p2,p3,p4)"""
existing = [f for f in sys.getForces() if type(f) == mm.CustomCompoundBondForce and f.getEnergyFunction() == energy]
if len(existing) == 0:
force = mm.CustomCompoundBondForce(4, energy)
for param in ('v11', 'v12', 'v13', 'v21', 'v22', 'v23'):
force.addPerBondParameter(param)
for i in range(2):
force.addPerBondParameter(f'angle{i+1}')
for i in range(3):
force.addPerBondParameter(f'phase{i+1}')
force.setName('AmoebaAngleTorsion')
else:
force = existing[0]
# Record parameters for angles and torsions so we can look them up quickly.
angleForce = [f for f in sys.getForces() if type(f) == mm.CustomAngleForce and f.getName() == 'AmoebaAngle'][0]
inPlaneAngleForce = [f for f in sys.getForces() if type(f) == mm.CustomCompoundBondForce and f.getName() == 'AmoebaInPlaneAngle'][0]
torsionForce = [f for f in sys.getForces() if type(f) == mm.PeriodicTorsionForce][0]
equilAngle = {}
torsionPhase = defaultdict(lambda: [0.0, math.pi, 0.0])
angleScale = math.pi/180
for i in range(angleForce.getNumAngles()):
p1, p2, p3, params = angleForce.getAngleParameters(i)
equilAngle[(p1, p2, p3)] = params[0]*angleScale
equilAngle[(p3, p2, p1)] = params[0]*angleScale
for i in range(inPlaneAngleForce.getNumBonds()):
particles, params = inPlaneAngleForce.getBondParameters(i)
equilAngle[tuple(particles[:3])] = params[0]*angleScale
equilAngle[tuple(reversed(particles[:3]))] = params[0]*angleScale
for i in range(torsionForce.getNumTorsions()):
p1, p2, p3, p4, periodicity, phase, k = torsionForce.getTorsionParameters(i)
if periodicity < 4:
phase = phase.value_in_unit(unit.radian)
torsionPhase[(p1, p2, p3, p4)][periodicity-1] = phase
torsionPhase[(p4, p3, p2, p1)][periodicity-1] = phase
# Add stretch-torsions.
for torsion in data.propers:
type1 = data.atomType[data.atoms[torsion[0]]]
type2 = data.atomType[data.atoms[torsion[1]]]
type3 = data.atomType[data.atoms[torsion[2]]]
type4 = data.atomType[data.atoms[torsion[3]]]
for types, v in self.torsions:
if (type1 in types[3] and type2 in types[2] and type3 in types[1] and type4 in types[0]):
type1, type2, type3, type4 = type4, type3, type2, type1
torsion = tuple(reversed(torsion))
if (type1 in types[0] and type2 in types[1] and type3 in types[2] and type4 in types[3]):
params = list(v)
params.append(equilAngle[(torsion[0], torsion[1], torsion[2])])
params.append(equilAngle[(torsion[1], torsion[2], torsion[3])])
params += torsionPhase[torsion]
force.addBond(torsion, params)
break
if len(existing) == 0 and force.getNumBonds() > 0:
sys.addForce(force)
parsers["AmoebaAngleTorsionForce"] = AmoebaAngleTorsionGenerator.parseElement
#=============================================================================================
## @private
class AmoebaTorsionTorsionGenerator(object):
......@@ -4292,7 +4441,6 @@ class AmoebaTorsionTorsionGenerator(object):
if len(existing) == 0:
force = mm.AmoebaTorsionTorsionForce()
sys.addForce(force)
else:
force = existing[0]
......@@ -4356,6 +4504,8 @@ class AmoebaTorsionTorsionGenerator(object):
for (index, grid) in enumerate(self.grids):
force.setTorsionTorsionGrid(index, grid)
if len(existing) == 0 and force.getNumTorsionTorsions() > 0:
sys.addForce(force)
parsers["AmoebaTorsionTorsionForce"] = AmoebaTorsionTorsionGenerator.parseElement
......@@ -4542,7 +4692,8 @@ class AmoebaVdwGenerator(object):
generator = AmoebaVdwGenerator(element.attrib['type'], element.attrib['radiusrule'], element.attrib['radiustype'], element.attrib['radiussize'], element.attrib['epsilonrule'],
float(element.attrib['vdw-13-scale']), float(element.attrib['vdw-14-scale']), float(element.attrib['vdw-15-scale']))
forceField.registerGenerator(generator)
generator.params = ForceField._AtomTypeParameters(forceField, 'AmoebaVdwForce', 'Vdw', ('sigma', 'epsilon', 'reduction'))
generator.params = {}
generator.pairs = []
else:
# Multiple <AmoebaVdwForce> tags were found, probably in different files. Simply add more types to the existing one.
generator = existing[0]
......@@ -4553,7 +4704,11 @@ class AmoebaVdwGenerator(object):
if generator.radiusrule != element.attrib['radiusrule'] or generator.epsilonrule != element.attrib['epsilonrule'] or \
generator.radiustype != element.attrib['radiustype'] or generator.radiussize != element.attrib['radiussize']:
raise ValueError('Found multiple AmoebaVdwForce tags with different combining rules')
generator.params.parseDefinitions(element)
for vdw in element.findall('Vdw'):
generator.params[vdw.attrib['class']] = tuple(float(vdw.attrib[name]) for name in ('sigma', 'epsilon', 'reduction'))
for pair in element.findall('Pair'):
generator.pairs.append((pair.attrib['class1'], pair.attrib['class2'], float(pair.attrib['sigma']), float(pair.attrib['epsilon'])))
generator.classNameForType = dict((t.name, t.atomClass) for t in forceField._atomTypes.values())
#=============================================================================================
......@@ -4623,15 +4778,23 @@ class AmoebaVdwGenerator(object):
if (nonbondedMethod == PME):
force.setNonbondedMethod(mm.AmoebaVdwForce.CutoffPeriodic)
# add particles to force
# Define types
sigmaScale = 1
if self.radiustype == 'SIGMA':
sigmaScale = 1.122462048309372
if self.radiussize == 'DIAMETER':
sigmaScale = 0.5
classToTypeMap = {}
for className in self.params:
sigma, epsilon, _ = self.params[className]
classToTypeMap[className] = force.addParticleType(sigma*sigmaScale, epsilon)
# add particles to force
for (i, atom) in enumerate(data.atoms):
values = self.params.getAtomParameters(atom, data)
className = self.classNameForType[data.atomType[atom]]
_, _, reduction = self.params[className]
# ivIndex = index of bonded partner for hydrogens; otherwise ivIndex = particle index
ivIndex = i
......@@ -4642,7 +4805,12 @@ class AmoebaVdwGenerator(object):
else:
ivIndex = data.bonds[bondIndex].atom1
force.addParticle(ivIndex, values[0]*sigmaScale, values[1], values[2])
force.addParticle(ivIndex, classToTypeMap[className], reduction)
# Add pairs
for c1, c2, sigma, epsilon in self.pairs:
force.addTypePair(classToTypeMap[c1], classToTypeMap[c2], sigma, epsilon)
# set combining rules
......
......@@ -1282,7 +1282,7 @@ class AmoebaTestForceField(unittest.TestCase):
forcefield = ForceField('amoeba2013.xml', 'amoeba2013_gk.xml')
system = forcefield.createSystem(pdb.topology, polarization='direct')
integrator = VerletIntegrator(0.001)
context = Context(system, integrator)
context = Context(system, integrator, Platform.getPlatformByName('Reference'))
context.setPositions(pdb.positions)
state1 = context.getState(getForces=True)
with open('systems/alanine-dipeptide-amoeba-forces.xml') as input:
......@@ -1291,6 +1291,55 @@ class AmoebaTestForceField(unittest.TestCase):
diff = norm(f1-f2)
self.assertTrue(diff < 0.1 or diff/norm(f1) < 1e-3)
def computeAmoeba18Energies(self, filename):
pdb = PDBFile(filename)
forcefield = ForceField('amoeba2018.xml')
system = forcefield.createSystem(pdb.topology, polarization='mutual', mutualInducedTargetEpsilon=1e-5)
for i, f in enumerate(system.getForces()):
f.setForceGroup(i)
integrator = VerletIntegrator(0.001)
context = Context(system, integrator, Platform.getPlatformByName('Reference'))
context.setPositions(pdb.positions)
energies = {}
for i, f in enumerate(system.getForces()):
state = context.getState(getEnergy=True, groups={i})
energies[f.getName()] = state.getPotentialEnergy().value_in_unit(kilocalories_per_mole)
return energies
def test_Amoeba18BPTI(self):
"""Test that AMOEBA18 computes energies correctly for BPTI."""
energies = self.computeAmoeba18Energies('systems/bpti.pdb')
# Compare to values computed with Tinker.
self.assertAlmostEqual(290.2445, energies['AmoebaBond'], 4)
self.assertAlmostEqual(496.4300, energies['AmoebaAngle']+energies['AmoebaInPlaneAngle'], 4)
self.assertAlmostEqual(51.2913, energies['AmoebaOutOfPlaneBend'], 4)
self.assertAlmostEqual(5.7695, energies['AmoebaStretchBend'], 4)
self.assertAlmostEqual(75.6890, energies['PeriodicTorsionForce'], 4)
self.assertAlmostEqual(19.3364, energies['AmoebaPiTorsion'], 4)
self.assertAlmostEqual(-32.6689, energies['AmoebaTorsionTorsionForce'], 4)
self.assertAlmostEqual(383.8705, energies['AmoebaVdwForce'], 4)
self.assertAlmostEqual(-1323.5640-225.3660, energies['AmoebaMultipoleForce'], 2)
self.assertAlmostEqual(-258.9676, sum(list(energies.values())), 2)
def test_Amoeba18DNA(self):
"""Test that AMOEBA18 computes energies correctly for DNA."""
energies = self.computeAmoeba18Energies('systems/dna.pdb')
# Compare to values computed with Tinker.
self.assertAlmostEqual(688.7794, energies['AmoebaBond'], 4)
self.assertAlmostEqual(430.5887, energies['AmoebaAngle']+energies['AmoebaInPlaneAngle'], 4)
self.assertAlmostEqual(10.5715, energies['AmoebaOutOfPlaneBend'], 4)
self.assertAlmostEqual(0.7773, energies['AmoebaStretchBend'], 4)
self.assertAlmostEqual(77.0482, energies['PeriodicTorsionForce'], 4)
self.assertAlmostEqual(56.5654, energies['AmoebaPiTorsion'], 4)
self.assertAlmostEqual(-0.5457, energies['AmoebaStretchTorsion'], 4)
self.assertAlmostEqual(-1.6044, energies['AmoebaAngleTorsion'], 4)
self.assertAlmostEqual(106.4062, energies['AmoebaVdwForce'], 4)
self.assertAlmostEqual(90.5715-73.6051, energies['AmoebaMultipoleForce'], 4)
self.assertAlmostEqual(1385.5529, sum(list(energies.values())), 4)
if __name__ == '__main__':
unittest.main()
REMARK 1 PDBFIXER FROM: 1A1F.pdb
REMARK 1 CREATED WITH OPENMM 7.6, 2021-10-20
CRYST1 43.000 55.900 128.400 90.00 90.00 90.00 P 1 1
ATOM 1 O5' DA B 1 12.630 25.479 39.440 1.00 0.00 O
ATOM 2 HO5' DA B 1 11.964 26.391 39.073 1.00 0.00 H
ATOM 3 C5' DA B 1 13.937 25.610 38.876 1.00 0.00 C
ATOM 4 H5' DA B 1 13.847 25.555 37.684 1.00 0.00 H
ATOM 5 H5'' DA B 1 14.320 26.719 39.098 1.00 0.00 H
ATOM 6 C4' DA B 1 14.887 24.556 39.393 1.00 0.00 C
ATOM 7 H4' DA B 1 15.954 24.787 38.908 1.00 0.00 H
ATOM 8 O4' DA B 1 15.100 24.749 40.813 1.00 0.00 O
ATOM 9 C3' DA B 1 14.387 23.120 39.235 1.00 0.00 C
ATOM 10 H3' DA B 1 13.785 23.006 38.210 1.00 0.00 H
ATOM 11 O3' DA B 1 15.483 22.256 38.923 1.00 0.00 O
ATOM 12 C2' DA B 1 13.819 22.795 40.604 1.00 0.00 C
ATOM 13 H2' DA B 1 13.713 21.844 41.301 1.00 0.00 H
ATOM 14 H2'' DA B 1 12.674 22.887 40.274 1.00 0.00 H
ATOM 15 C1' DA B 1 14.742 23.573 41.522 1.00 0.00 C
ATOM 16 H1' DA B 1 15.848 23.231 41.807 1.00 0.00 H
ATOM 17 N9 DA B 1 14.136 23.979 42.789 1.00 0.00 N
ATOM 18 C8 DA B 1 14.571 23.668 44.053 1.00 0.00 C
ATOM 19 H8 DA B 1 15.664 23.489 44.485 1.00 0.00 H
ATOM 20 N7 DA B 1 13.823 24.162 45.006 1.00 0.00 N
ATOM 21 C5 DA B 1 12.827 24.850 44.330 1.00 0.00 C
ATOM 22 C6 DA B 1 11.720 25.593 44.773 1.00 0.00 C
ATOM 23 N6 DA B 1 11.417 25.776 46.062 1.00 0.00 N
ATOM 24 H61 DA B 1 12.028 26.574 46.696 1.00 0.00 H
ATOM 25 H62 DA B 1 10.394 25.442 46.564 1.00 0.00 H
ATOM 26 N1 DA B 1 10.922 26.154 43.837 1.00 0.00 N
ATOM 27 C2 DA B 1 11.225 25.969 42.547 1.00 0.00 C
ATOM 28 H2 DA B 1 10.436 26.545 41.871 1.00 0.00 H
ATOM 29 N3 DA B 1 12.236 25.291 42.006 1.00 0.00 N
ATOM 30 C4 DA B 1 13.008 24.748 42.962 1.00 0.00 C
ATOM 31 P DG B 2 15.226 20.682 38.734 1.00 0.00 P
ATOM 32 OP1 DG B 2 16.366 20.118 37.964 1.00 0.00 O
ATOM 33 OP2 DG B 2 13.841 20.501 38.232 1.00 0.00 O
ATOM 34 O5' DG B 2 15.303 20.113 40.220 1.00 0.00 O
ATOM 35 C5' DG B 2 16.564 20.044 40.908 1.00 0.00 C
ATOM 36 H5' DG B 2 17.381 19.597 40.156 1.00 0.00 H
ATOM 37 H5'' DG B 2 17.086 21.063 41.251 1.00 0.00 H
ATOM 38 C4' DG B 2 16.468 19.107 42.089 1.00 0.00 C
ATOM 39 H4' DG B 2 17.563 18.934 42.535 1.00 0.00 H
ATOM 40 O4' DG B 2 15.772 19.742 43.187 1.00 0.00 O
ATOM 41 C3' DG B 2 15.724 17.801 41.812 1.00 0.00 C
ATOM 42 H3' DG B 2 15.943 17.448 40.693 1.00 0.00 H
ATOM 43 O3' DG B 2 16.404 16.721 42.454 1.00 0.00 O
ATOM 44 C2' DG B 2 14.356 18.037 42.428 1.00 0.00 C
ATOM 45 H2' DG B 2 13.519 17.374 42.946 1.00 0.00 H
ATOM 46 H2'' DG B 2 13.741 18.042 41.408 1.00 0.00 H
ATOM 47 C1' DG B 2 14.687 18.932 43.612 1.00 0.00 C
ATOM 48 H1' DG B 2 15.209 18.469 44.578 1.00 0.00 H
ATOM 49 N9 DG B 2 13.611 19.821 44.041 1.00 0.00 N
ATOM 50 C8 DG B 2 12.734 20.510 43.240 1.00 0.00 C
ATOM 51 H8 DG B 2 12.123 20.172 42.277 1.00 0.00 H
ATOM 52 N7 DG B 2 11.901 21.254 43.916 1.00 0.00 N
ATOM 53 C5 DG B 2 12.245 21.037 45.242 1.00 0.00 C
ATOM 54 C6 DG B 2 11.694 21.577 46.434 1.00 0.00 C
ATOM 55 O6 DG B 2 10.765 22.385 46.558 1.00 0.00 O
ATOM 56 N1 DG B 2 12.343 21.088 47.565 1.00 0.00 N
ATOM 57 H1 DG B 2 12.034 21.627 48.579 1.00 0.00 H
ATOM 58 C2 DG B 2 13.385 20.195 47.550 1.00 0.00 C
ATOM 59 N2 DG B 2 13.880 19.840 48.746 1.00 0.00 N
ATOM 60 H21 DG B 2 13.601 18.971 49.506 1.00 0.00 H
ATOM 61 H22 DG B 2 14.797 20.478 49.156 1.00 0.00 H
ATOM 62 N3 DG B 2 13.907 19.685 46.447 1.00 0.00 N
ATOM 63 C4 DG B 2 13.293 20.148 45.338 1.00 0.00 C
ATOM 64 P DC B 3 15.864 15.221 42.273 1.00 0.00 P
ATOM 65 OP1 DC B 3 17.025 14.295 42.340 1.00 0.00 O
ATOM 66 OP2 DC B 3 14.972 15.195 41.084 1.00 0.00 O
ATOM 67 O5' DC B 3 14.974 15.005 43.572 1.00 0.00 O
ATOM 68 C5' DC B 3 15.560 15.108 44.879 1.00 0.00 C
ATOM 69 H5' DC B 3 16.337 14.196 44.900 1.00 0.00 H
ATOM 70 H5'' DC B 3 16.263 16.031 45.163 1.00 0.00 H
ATOM 71 C4' DC B 3 14.517 14.859 45.942 1.00 0.00 C
ATOM 72 H4' DC B 3 15.122 14.737 46.965 1.00 0.00 H
ATOM 73 O4' DC B 3 13.696 16.033 46.161 1.00 0.00 O
ATOM 74 C3' DC B 3 13.548 13.717 45.633 1.00 0.00 C
ATOM 75 H3' DC B 3 13.922 12.887 44.864 1.00 0.00 H
ATOM 76 O3' DC B 3 13.288 12.999 46.834 1.00 0.00 O
ATOM 77 C2' DC B 3 12.277 14.444 45.236 1.00 0.00 C
ATOM 78 H2' DC B 3 12.390 14.463 44.045 1.00 0.00 H
ATOM 79 H2'' DC B 3 11.213 13.901 45.256 1.00 0.00 H
ATOM 80 C1' DC B 3 12.347 15.607 46.198 1.00 0.00 C
ATOM 81 H1' DC B 3 12.304 15.359 47.361 1.00 0.00 H
ATOM 82 N1 DC B 3 11.482 16.758 45.904 1.00 0.00 N
ATOM 83 C2 DC B 3 11.098 17.584 46.962 1.00 0.00 C
ATOM 84 O2 DC B 3 11.548 17.354 48.096 1.00 0.00 O
ATOM 85 N3 DC B 3 10.253 18.611 46.727 1.00 0.00 N
ATOM 86 C4 DC B 3 9.802 18.833 45.491 1.00 0.00 C
ATOM 87 N4 DC B 3 8.947 19.842 45.313 1.00 0.00 N
ATOM 88 H41 DC B 3 8.547 20.581 46.157 1.00 0.00 H
ATOM 89 H42 DC B 3 8.161 19.901 44.421 1.00 0.00 H
ATOM 90 C5 DC B 3 10.202 18.026 44.386 1.00 0.00 C
ATOM 91 H5 DC B 3 9.521 18.038 43.410 1.00 0.00 H
ATOM 92 C6 DC B 3 11.038 17.009 44.636 1.00 0.00 C
ATOM 93 H6 DC B 3 10.939 16.341 43.660 1.00 0.00 H
ATOM 94 P DG B 4 13.014 11.424 46.779 1.00 0.00 P
ATOM 95 OP1 DG B 4 14.232 10.763 46.245 1.00 0.00 O
ATOM 96 OP2 DG B 4 11.710 11.208 46.113 1.00 0.00 O
ATOM 97 O5' DG B 4 12.864 11.047 48.316 1.00 0.00 O
ATOM 98 C5' DG B 4 13.816 11.527 49.282 1.00 0.00 C
ATOM 99 H5' DG B 4 14.467 10.534 49.439 1.00 0.00 H
ATOM 100 H5'' DG B 4 14.678 12.307 49.007 1.00 0.00 H
ATOM 101 C4' DG B 4 13.106 11.987 50.532 1.00 0.00 C
ATOM 102 H4' DG B 4 13.920 12.259 51.363 1.00 0.00 H
ATOM 103 O4' DG B 4 12.426 13.246 50.296 1.00 0.00 O
ATOM 104 C3' DG B 4 12.042 11.016 51.035 1.00 0.00 C
ATOM 105 H3' DG B 4 12.311 9.908 50.684 1.00 0.00 H
ATOM 106 O3' DG B 4 12.112 10.908 52.455 1.00 0.00 O
ATOM 107 C2' DG B 4 10.737 11.650 50.588 1.00 0.00 C
ATOM 108 H2' DG B 4 9.745 11.499 51.222 1.00 0.00 H
ATOM 109 H2'' DG B 4 10.508 11.040 49.590 1.00 0.00 H
ATOM 110 C1' DG B 4 11.051 13.136 50.637 1.00 0.00 C
ATOM 111 H1' DG B 4 11.118 13.759 51.653 1.00 0.00 H
ATOM 112 N9 DG B 4 10.288 13.945 49.690 1.00 0.00 N
ATOM 113 C8 DG B 4 10.397 13.932 48.320 1.00 0.00 C
ATOM 114 H8 DG B 4 10.700 12.998 47.669 1.00 0.00 H
ATOM 115 N7 DG B 4 9.590 14.772 47.733 1.00 0.00 N
ATOM 116 C5 DG B 4 8.902 15.376 48.777 1.00 0.00 C
ATOM 117 C6 DG B 4 7.893 16.376 48.755 1.00 0.00 C
ATOM 118 O6 DG B 4 7.390 16.944 47.780 1.00 0.00 O
ATOM 119 N1 DG B 4 7.466 16.699 50.038 1.00 0.00 N
ATOM 120 H1 DG B 4 6.826 17.700 50.082 1.00 0.00 H
ATOM 121 C2 DG B 4 7.948 16.135 51.194 1.00 0.00 C
ATOM 122 N2 DG B 4 7.403 16.579 52.334 1.00 0.00 N
ATOM 123 H21 DG B 4 6.624 16.199 53.146 1.00 0.00 H
ATOM 124 H22 DG B 4 7.866 17.602 52.732 1.00 0.00 H
ATOM 125 N3 DG B 4 8.891 15.207 51.230 1.00 0.00 N
ATOM 126 C4 DG B 4 9.320 14.875 49.992 1.00 0.00 C
ATOM 127 P DT B 5 11.265 9.771 53.202 1.00 0.00 P
ATOM 128 OP1 DT B 5 11.788 9.633 54.588 1.00 0.00 O
ATOM 129 OP2 DT B 5 11.213 8.581 52.315 1.00 0.00 O
ATOM 130 O5' DT B 5 9.810 10.411 53.273 1.00 0.00 O
ATOM 131 C5' DT B 5 9.586 11.626 54.005 1.00 0.00 C
ATOM 132 H5' DT B 5 10.246 12.621 53.958 1.00 0.00 H
ATOM 133 H5'' DT B 5 9.837 11.252 55.117 1.00 0.00 H
ATOM 134 C4' DT B 5 8.119 11.985 53.982 1.00 0.00 C
ATOM 135 H4' DT B 5 7.928 12.699 54.920 1.00 0.00 H
ATOM 136 O4' DT B 5 7.780 12.784 52.821 1.00 0.00 O
ATOM 137 C3' DT B 5 7.175 10.781 53.962 1.00 0.00 C
ATOM 138 H3' DT B 5 7.620 9.765 54.404 1.00 0.00 H
ATOM 139 O3' DT B 5 6.090 11.008 54.854 1.00 0.00 O
ATOM 140 C2' DT B 5 6.651 10.774 52.536 1.00 0.00 C
ATOM 141 H2' DT B 5 5.668 10.207 52.178 1.00 0.00 H
ATOM 142 H2'' DT B 5 7.419 9.961 52.113 1.00 0.00 H
ATOM 143 C1' DT B 5 6.585 12.263 52.269 1.00 0.00 C
ATOM 144 H1' DT B 5 5.746 12.801 52.923 1.00 0.00 H
ATOM 145 N1 DT B 5 6.498 12.678 50.855 1.00 0.00 N
ATOM 146 C2 DT B 5 5.745 13.797 50.569 1.00 0.00 C
ATOM 147 O2 DT B 5 5.193 14.468 51.427 1.00 0.00 O
ATOM 148 N3 DT B 5 5.666 14.108 49.237 1.00 0.00 N
ATOM 149 H3 DT B 5 4.888 14.950 48.918 1.00 0.00 H
ATOM 150 C4 DT B 5 6.256 13.434 48.185 1.00 0.00 C
ATOM 151 O4 DT B 5 6.085 13.827 47.035 1.00 0.00 O
ATOM 152 C5 DT B 5 7.048 12.282 48.559 1.00 0.00 C
ATOM 153 C7 DT B 5 7.738 11.499 47.487 1.00 0.00 C
ATOM 154 H71 DT B 5 7.935 10.333 47.683 1.00 0.00 H
ATOM 155 H72 DT B 5 8.688 11.872 46.862 1.00 0.00 H
ATOM 156 H73 DT B 5 6.874 11.333 46.672 1.00 0.00 H
ATOM 157 C6 DT B 5 7.128 11.966 49.859 1.00 0.00 C
ATOM 158 H6 DT B 5 7.250 10.793 49.960 1.00 0.00 H
ATOM 159 P DG B 6 5.237 9.765 55.398 1.00 0.00 P
ATOM 160 OP1 DG B 6 5.824 9.352 56.698 1.00 0.00 O
ATOM 161 OP2 DG B 6 5.098 8.771 54.303 1.00 0.00 O
ATOM 162 O5' DG B 6 3.808 10.404 55.671 1.00 0.00 O
ATOM 163 C5' DG B 6 3.681 11.632 56.401 1.00 0.00 C
ATOM 164 H5' DG B 6 3.707 11.294 57.554 1.00 0.00 H
ATOM 165 H5'' DG B 6 4.575 12.423 56.380 1.00 0.00 H
ATOM 166 C4' DG B 6 2.372 12.298 56.056 1.00 0.00 C
ATOM 167 H4' DG B 6 2.192 13.200 56.815 1.00 0.00 H
ATOM 168 O4' DG B 6 2.476 12.952 54.766 1.00 0.00 O
ATOM 169 C3' DG B 6 1.216 11.306 55.946 1.00 0.00 C
ATOM 170 H3' DG B 6 1.380 10.322 56.602 1.00 0.00 H
ATOM 171 O3' DG B 6 0.041 11.808 56.580 1.00 0.00 O
ATOM 172 C2' DG B 6 1.008 11.156 54.450 1.00 0.00 C
ATOM 173 H2' DG B 6 -0.074 10.848 54.091 1.00 0.00 H
ATOM 174 H2'' DG B 6 1.628 10.170 54.208 1.00 0.00 H
ATOM 175 C1' DG B 6 1.450 12.498 53.898 1.00 0.00 C
ATOM 176 H1' DG B 6 0.746 13.460 53.933 1.00 0.00 H
ATOM 177 N9 DG B 6 2.008 12.399 52.553 1.00 0.00 N
ATOM 178 C8 DG B 6 3.086 11.641 52.165 1.00 0.00 C
ATOM 179 H8 DG B 6 3.275 10.500 52.415 1.00 0.00 H
ATOM 180 N7 DG B 6 3.331 11.711 50.885 1.00 0.00 N
ATOM 181 C5 DG B 6 2.365 12.577 50.396 1.00 0.00 C
ATOM 182 C6 DG B 6 2.124 13.030 49.071 1.00 0.00 C
ATOM 183 O6 DG B 6 2.734 12.739 48.035 1.00 0.00 O
ATOM 184 N1 DG B 6 1.043 13.905 49.018 1.00 0.00 N
ATOM 185 H1 DG B 6 1.060 14.502 47.990 1.00 0.00 H
ATOM 186 C2 DG B 6 0.291 14.296 50.099 1.00 0.00 C
ATOM 187 N2 DG B 6 -0.705 15.160 49.843 1.00 0.00 N
ATOM 188 H21 DG B 6 -1.586 15.476 50.576 1.00 0.00 H
ATOM 189 H22 DG B 6 -0.532 16.124 49.164 1.00 0.00 H
ATOM 190 N3 DG B 6 0.500 13.876 51.338 1.00 0.00 N
ATOM 191 C4 DG B 6 1.545 13.022 51.412 1.00 0.00 C
ATOM 192 P DG B 7 -1.292 10.912 56.593 1.00 0.00 P
ATOM 193 OP1 DG B 7 -1.938 11.043 57.924 1.00 0.00 O
ATOM 194 OP2 DG B 7 -0.944 9.562 56.073 1.00 0.00 O
ATOM 195 O5' DG B 7 -2.205 11.644 55.520 1.00 0.00 O
ATOM 196 C5' DG B 7 -2.381 13.065 55.580 1.00 0.00 C
ATOM 197 H5' DG B 7 -2.843 13.278 56.665 1.00 0.00 H
ATOM 198 H5'' DG B 7 -1.445 13.806 55.543 1.00 0.00 H
ATOM 199 C4' DG B 7 -3.371 13.512 54.533 1.00 0.00 C
ATOM 200 H4' DG B 7 -3.635 14.661 54.725 1.00 0.00 H
ATOM 201 O4' DG B 7 -2.752 13.517 53.224 1.00 0.00 O
ATOM 202 C3' DG B 7 -4.600 12.614 54.425 1.00 0.00 C
ATOM 203 H3' DG B 7 -4.864 12.050 55.442 1.00 0.00 H
ATOM 204 O3' DG B 7 -5.761 13.425 54.250 1.00 0.00 O
ATOM 205 C2' DG B 7 -4.320 11.780 53.185 1.00 0.00 C
ATOM 206 H2' DG B 7 -5.174 11.039 52.810 1.00 0.00 H
ATOM 207 H2'' DG B 7 -3.641 10.879 53.582 1.00 0.00 H
ATOM 208 C1' DG B 7 -3.527 12.748 52.321 1.00 0.00 C
ATOM 209 H1' DG B 7 -4.068 13.642 51.750 1.00 0.00 H
ATOM 210 N9 DG B 7 -2.614 12.128 51.364 1.00 0.00 N
ATOM 211 C8 DG B 7 -1.592 11.253 51.642 1.00 0.00 C
ATOM 212 H8 DG B 7 -1.578 10.228 52.242 1.00 0.00 H
ATOM 213 N7 DG B 7 -0.936 10.878 50.578 1.00 0.00 N
ATOM 214 C5 DG B 7 -1.561 11.543 49.532 1.00 0.00 C
ATOM 215 C6 DG B 7 -1.288 11.534 48.137 1.00 0.00 C
ATOM 216 O6 DG B 7 -0.405 10.917 47.528 1.00 0.00 O
ATOM 217 N1 DG B 7 -2.170 12.347 47.435 1.00 0.00 N
ATOM 218 H1 DG B 7 -1.721 12.605 46.365 1.00 0.00 H
ATOM 219 C2 DG B 7 -3.184 13.079 48.001 1.00 0.00 C
ATOM 220 N2 DG B 7 -3.933 13.798 47.152 1.00 0.00 N
ATOM 221 H21 DG B 7 -3.920 13.900 45.967 1.00 0.00 H
ATOM 222 H22 DG B 7 -4.449 14.789 47.563 1.00 0.00 H
ATOM 223 N3 DG B 7 -3.447 13.103 49.299 1.00 0.00 N
ATOM 224 C4 DG B 7 -2.604 12.317 50.000 1.00 0.00 C
ATOM 225 P DG B 8 -7.216 12.809 54.530 1.00 0.00 P
ATOM 226 OP1 DG B 8 -7.817 13.525 55.680 1.00 0.00 O
ATOM 227 OP2 DG B 8 -7.079 11.329 54.572 1.00 0.00 O
ATOM 228 O5' DG B 8 -8.012 13.201 53.209 1.00 0.00 O
ATOM 229 C5' DG B 8 -7.333 13.192 51.948 1.00 0.00 C
ATOM 230 H5' DG B 8 -6.799 14.262 52.013 1.00 0.00 H
ATOM 231 H5'' DG B 8 -6.645 12.277 51.662 1.00 0.00 H
ATOM 232 C4' DG B 8 -8.283 13.522 50.823 1.00 0.00 C
ATOM 233 H4' DG B 8 -8.616 14.669 50.800 1.00 0.00 H
ATOM 234 O4' DG B 8 -7.552 13.316 49.595 1.00 0.00 O
ATOM 235 C3' DG B 8 -9.485 12.592 50.727 1.00 0.00 C
ATOM 236 H3' DG B 8 -10.052 12.410 51.761 1.00 0.00 H
ATOM 237 O3' DG B 8 -10.560 13.263 50.065 1.00 0.00 O
ATOM 238 C2' DG B 8 -8.956 11.434 49.904 1.00 0.00 C
ATOM 239 H2' DG B 8 -9.636 10.571 49.440 1.00 0.00 H
ATOM 240 H2'' DG B 8 -8.640 10.717 50.812 1.00 0.00 H
ATOM 241 C1' DG B 8 -7.933 12.089 48.986 1.00 0.00 C
ATOM 242 H1' DG B 8 -8.111 12.573 47.915 1.00 0.00 H
ATOM 243 N9 DG B 8 -6.725 11.288 48.835 1.00 0.00 N
ATOM 244 C8 DG B 8 -6.007 10.683 49.838 1.00 0.00 C
ATOM 245 H8 DG B 8 -6.343 9.912 50.682 1.00 0.00 H
ATOM 246 N7 DG B 8 -4.963 10.035 49.403 1.00 0.00 N
ATOM 247 C5 DG B 8 -4.995 10.221 48.027 1.00 0.00 C
ATOM 248 C6 DG B 8 -4.117 9.755 47.019 1.00 0.00 C
ATOM 249 O6 DG B 8 -3.098 9.063 47.143 1.00 0.00 O
ATOM 250 N1 DG B 8 -4.523 10.171 45.755 1.00 0.00 N
ATOM 251 H1 DG B 8 -3.672 10.053 44.933 1.00 0.00 H
ATOM 252 C2 DG B 8 -5.631 10.940 45.497 1.00 0.00 C
ATOM 253 N2 DG B 8 -5.863 11.231 44.211 1.00 0.00 N
ATOM 254 H21 DG B 8 -6.205 12.333 43.914 1.00 0.00 H
ATOM 255 H22 DG B 8 -5.647 10.649 43.196 1.00 0.00 H
ATOM 256 N3 DG B 8 -6.455 11.386 46.429 1.00 0.00 N
ATOM 257 C4 DG B 8 -6.079 10.990 47.663 1.00 0.00 C
ATOM 258 P DA B 9 -11.751 12.405 49.416 1.00 0.00 P
ATOM 259 OP1 DA B 9 -12.764 13.349 48.874 1.00 0.00 O
ATOM 260 OP2 DA B 9 -12.158 11.384 50.414 1.00 0.00 O
ATOM 261 O5' DA B 9 -11.057 11.661 48.193 1.00 0.00 O
ATOM 262 C5' DA B 9 -10.733 12.374 46.988 1.00 0.00 C
ATOM 263 H5' DA B 9 -11.719 13.021 46.773 1.00 0.00 H
ATOM 264 H5'' DA B 9 -9.956 13.272 46.838 1.00 0.00 H
ATOM 265 C4' DA B 9 -10.690 11.427 45.813 1.00 0.00 C
ATOM 266 H4' DA B 9 -10.665 12.076 44.812 1.00 0.00 H
ATOM 267 O4' DA B 9 -9.442 10.691 45.798 1.00 0.00 O
ATOM 268 C3' DA B 9 -11.808 10.383 45.788 1.00 0.00 C
ATOM 269 H3' DA B 9 -12.847 10.675 46.296 1.00 0.00 H
ATOM 270 O3' DA B 9 -12.346 10.271 44.468 1.00 0.00 O
ATOM 271 C2' DA B 9 -11.110 9.102 46.215 1.00 0.00 C
ATOM 272 H2' DA B 9 -11.460 9.018 47.357 1.00 0.00 H
ATOM 273 H2'' DA B 9 -11.417 7.980 45.948 1.00 0.00 H
ATOM 274 C1' DA B 9 -9.699 9.298 45.690 1.00 0.00 C
ATOM 275 H1' DA B 9 -9.382 9.150 44.555 1.00 0.00 H
ATOM 276 N9 DA B 9 -8.668 8.591 46.453 1.00 0.00 N
ATOM 277 C8 DA B 9 -8.651 8.323 47.800 1.00 0.00 C
ATOM 278 H8 DA B 9 -9.441 7.999 48.630 1.00 0.00 H
ATOM 279 N7 DA B 9 -7.583 7.674 48.197 1.00 0.00 N
ATOM 280 C5 DA B 9 -6.847 7.499 47.035 1.00 0.00 C
ATOM 281 C6 DA B 9 -5.604 6.887 46.779 1.00 0.00 C
ATOM 282 N6 DA B 9 -4.854 6.309 47.723 1.00 0.00 N
ATOM 283 H61 DA B 9 -5.162 5.894 48.793 1.00 0.00 H
ATOM 284 H62 DA B 9 -3.700 6.080 47.543 1.00 0.00 H
ATOM 285 N1 DA B 9 -5.151 6.885 45.507 1.00 0.00 N
ATOM 286 C2 DA B 9 -5.902 7.464 44.560 1.00 0.00 C
ATOM 287 H2 DA B 9 -5.380 7.375 43.495 1.00 0.00 H
ATOM 288 N3 DA B 9 -7.081 8.073 44.673 1.00 0.00 N
ATOM 289 C4 DA B 9 -7.504 8.058 45.950 1.00 0.00 C
ATOM 290 P DC B 10 -13.178 8.962 44.054 1.00 0.00 P
ATOM 291 OP1 DC B 10 -14.144 9.344 42.993 1.00 0.00 O
ATOM 292 OP2 DC B 10 -13.671 8.310 45.292 1.00 0.00 O
ATOM 293 O5' DC B 10 -12.063 8.033 43.404 1.00 0.00 O
ATOM 294 C5' DC B 10 -11.099 8.599 42.500 1.00 0.00 C
ATOM 295 H5' DC B 10 -10.454 9.603 42.575 1.00 0.00 H
ATOM 296 H5'' DC B 10 -11.833 8.980 41.630 1.00 0.00 H
ATOM 297 C4' DC B 10 -10.275 7.511 41.855 1.00 0.00 C
ATOM 298 H4' DC B 10 -9.635 7.997 40.971 1.00 0.00 H
ATOM 299 O4' DC B 10 -9.267 7.016 42.769 1.00 0.00 O
ATOM 300 C3' DC B 10 -11.076 6.292 41.394 1.00 0.00 C
ATOM 301 H3' DC B 10 -12.235 6.507 41.222 1.00 0.00 H
ATOM 302 O3' DC B 10 -10.619 5.884 40.105 1.00 0.00 O
ATOM 303 C2' DC B 10 -10.736 5.236 42.431 1.00 0.00 C
ATOM 304 H2' DC B 10 -10.767 4.142 41.962 1.00 0.00 H
ATOM 305 H2'' DC B 10 -11.689 5.163 43.148 1.00 0.00 H
ATOM 306 C1' DC B 10 -9.305 5.601 42.777 1.00 0.00 C
ATOM 307 H1' DC B 10 -8.548 5.359 41.889 1.00 0.00 H
ATOM 308 N1 DC B 10 -8.831 5.138 44.090 1.00 0.00 N
ATOM 309 C2 DC B 10 -7.597 4.482 44.160 1.00 0.00 C
ATOM 310 O2 DC B 10 -6.943 4.320 43.119 1.00 0.00 O
ATOM 311 N3 DC B 10 -7.149 4.039 45.356 1.00 0.00 N
ATOM 312 C4 DC B 10 -7.880 4.232 46.454 1.00 0.00 C
ATOM 313 N4 DC B 10 -7.398 3.774 47.611 1.00 0.00 N
ATOM 314 H41 DC B 10 -6.352 3.206 47.664 1.00 0.00 H
ATOM 315 H42 DC B 10 -7.862 3.801 48.707 1.00 0.00 H
ATOM 316 C5 DC B 10 -9.139 4.903 46.415 1.00 0.00 C
ATOM 317 H5 DC B 10 -9.862 4.756 47.349 1.00 0.00 H
ATOM 318 C6 DC B 10 -9.572 5.337 45.222 1.00 0.00 C
ATOM 319 H6 DC B 10 -10.752 5.405 45.349 1.00 0.00 H
ATOM 320 P DC B 11 -11.594 5.053 39.141 1.00 0.00 P
ATOM 321 OP1 DC B 11 -11.628 5.743 37.831 1.00 0.00 O
ATOM 322 OP2 DC B 11 -12.865 4.793 39.870 1.00 0.00 O
ATOM 323 O5' DC B 11 -10.825 3.671 38.964 1.00 0.00 O
ATOM 324 C5' DC B 11 -9.528 3.640 38.348 1.00 0.00 C
ATOM 325 H5' DC B 11 -9.805 3.864 37.210 1.00 0.00 H
ATOM 326 H5'' DC B 11 -8.750 4.530 38.539 1.00 0.00 H
ATOM 327 C4' DC B 11 -8.879 2.291 38.548 1.00 0.00 C
ATOM 328 H4' DC B 11 -7.859 2.416 37.937 1.00 0.00 H
ATOM 329 O4' DC B 11 -8.352 2.162 39.892 1.00 0.00 O
ATOM 330 C3' DC B 11 -9.799 1.087 38.334 1.00 0.00 C
ATOM 331 H3' DC B 11 -10.720 1.074 37.577 1.00 0.00 H
ATOM 332 O3' DC B 11 -9.042 0.047 37.715 1.00 0.00 O
ATOM 333 HO3' DC B 11 -7.920 0.397 37.606 1.00 0.00 H
ATOM 334 C2' DC B 11 -10.109 0.639 39.752 1.00 0.00 C
ATOM 335 H2' DC B 11 -11.208 1.047 39.943 1.00 0.00 H
ATOM 336 H2'' DC B 11 -10.299 -0.541 39.788 1.00 0.00 H
ATOM 337 C1' DC B 11 -8.783 0.923 40.428 1.00 0.00 C
ATOM 338 H1' DC B 11 -7.981 0.080 40.161 1.00 0.00 H
ATOM 339 N1 DC B 11 -8.798 1.033 41.897 1.00 0.00 N
ATOM 340 C2 DC B 11 -7.693 0.559 42.606 1.00 0.00 C
ATOM 341 O2 DC B 11 -6.735 0.093 41.973 1.00 0.00 O
ATOM 342 N3 DC B 11 -7.693 0.620 43.956 1.00 0.00 N
ATOM 343 C4 DC B 11 -8.740 1.138 44.599 1.00 0.00 C
ATOM 344 N4 DC B 11 -8.699 1.168 45.935 1.00 0.00 N
ATOM 345 H41 DC B 11 -8.686 1.621 47.028 1.00 0.00 H
ATOM 346 H42 DC B 11 -8.923 0.018 46.156 1.00 0.00 H
ATOM 347 C5 DC B 11 -9.876 1.644 43.902 1.00 0.00 C
ATOM 348 H5 DC B 11 -10.872 1.636 44.553 1.00 0.00 H
ATOM 349 C6 DC B 11 -9.864 1.573 42.562 1.00 0.00 C
ATOM 350 H6 DC B 11 -10.995 1.384 42.247 1.00 0.00 H
TER 351 DC B 11
END
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