Commit 41c9f421 by Peter Eastman

Initial checkin

parent 31c1df98
The MIT License (MIT)
This is part of the OpenMM molecular simulation toolkit originating from
Simbios, the NIH National Center for Physics-Based Simulation of
Biological Structures at Stanford, funded under the NIH Roadmap for
Medical Research, grant U54 GM072970. See https://simtk.org.
Copyright (c) 2013 peastman
Portions copyright (c) 2013 Stanford University and the Authors.
Authors: Peter Eastman
Contributors:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
"""
createSoftForceField.py: Creates a force field XML file that is suitable
for removing clashes in very badly strained systems.
This is part of the OpenMM molecular simulation toolkit originating from
Simbios, the NIH National Center for Physics-Based Simulation of
Biological Structures at Stanford, funded under the NIH Roadmap for
Medical Research, grant U54 GM072970. See https://simtk.org.
Portions copyright (c) 2013 Stanford University and the Authors.
Authors: Peter Eastman
Contributors:
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
__author__ = "Peter Eastman"
__version__ = "1.0"
import simtk.openmm.app as app
import simtk.openmm.app.element as elem
import simtk.openmm.app.forcefield as ff
forcefield = app.ForceField('amber99sbildn.xml', 'tip3p.xml')
bondK = 10000.0
angleK = 10.0
# Create the new force field file.
print '<ForceField>'
# Print the atom types, while identifying types and classes to omit.
print ' <AtomTypes>'
omitTypes = set()
omitClasses = set()
for atomType in forcefield._atomTypes:
(atomClass, mass, element) = forcefield._atomTypes[atomType]
if element is None or element == elem.hydrogen:
omitTypes.add(atomType)
omitClasses.add(atomClass)
else:
print ' <Type name="%s" class="%s" element="%s" mass="%g"/>' % (atomType, atomClass, element.symbol, mass)
print ' </AtomTypes>'
# Print the residue templates.
print ' <Residues>'
for template in forcefield._templates.itervalues():
print ' <Residue name="%s">' % template.name
atomIndex = {}
for i, atom in enumerate(template.atoms):
if atom.type not in omitTypes:
print ' <Atom name="%s" type="%s"/>' % (atom.name, atom.type)
atomIndex[i] = len(atomIndex)
for (a1, a2) in template.bonds:
if a1 in atomIndex and a2 in atomIndex:
print ' <Bond from="%d" to="%d"/>' % (atomIndex[a1], atomIndex[a2])
for atom in template.externalBonds:
if atom in atomIndex:
print ' <ExternalBond from="%d"/>' % atomIndex[atom]
print ' </Residue>'
print ' </Residues>'
# Print the harmonic bonds.
print ' <HarmonicBondForce>'
bonds = [f for f in forcefield._forces if isinstance(f, ff.HarmonicBondGenerator)][0]
for i in range(len(bonds.types1)):
type1 = iter(bonds.types1[i]).next()
type2 = iter(bonds.types2[i]).next()
if type1 not in omitTypes and type2 not in omitTypes:
class1 = forcefield._atomTypes[type1][0]
class2 = forcefield._atomTypes[type2][0]
print ' <Bond class1="%s" class2="%s" length="%g" k="%g"/>' % (class1, class2, bonds.length[i], bondK)
print ' </HarmonicBondForce>'
# Print the harmonic angles.
print ' <HarmonicAngleForce>'
angles = [f for f in forcefield._forces if isinstance(f, ff.HarmonicAngleGenerator)][0]
for i in range(len(angles.types1)):
type1 = iter(angles.types1[i]).next()
type2 = iter(angles.types2[i]).next()
type3 = iter(angles.types3[i]).next()
if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes:
class1 = forcefield._atomTypes[type1][0]
class2 = forcefield._atomTypes[type2][0]
class3 = forcefield._atomTypes[type3][0]
print ' <Angle class1="%s" class2="%s" class3="%s" angle="%g" k="%g"/>' % (class1, class2, class3, angles.angle[i], angleK)
print ' </HarmonicAngleForce>'
# Print the periodic torsions.
print ' <PeriodicTorsionForce>'
torsions = [f for f in forcefield._forces if isinstance(f, ff.PeriodicTorsionGenerator)][0]
for torsion in torsions.proper:
type1 = iter(torsion.types1).next()
type2 = iter(torsion.types2).next()
type3 = iter(torsion.types3).next()
type4= iter(torsion.types4).next()
if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes and type4 not in omitTypes:
class1 = forcefield._atomTypes[type1][0]
class2 = forcefield._atomTypes[type2][0]
class3 = forcefield._atomTypes[type3][0]
class4 = forcefield._atomTypes[type4][0]
print ' <Proper class1="%s" class2="%s" class3="%s" class4="%s"' % (class1, class2, class3, class4),
for i in range(len(torsion.k)):
print ' periodicity%d="%d" phase%d="%g" k%d="%g"' % (i+1, torsion.periodicity[i], i+1, torsion.phase[i], i+1, torsion.k[i]),
print '/>'
for torsion in torsions.improper:
type1 = iter(torsion.types1).next()
type2 = iter(torsion.types2).next()
type3 = iter(torsion.types3).next()
type4= iter(torsion.types4).next()
if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes and type4 not in omitTypes:
class1 = forcefield._atomTypes[type1][0]
class2 = forcefield._atomTypes[type2][0]
class3 = forcefield._atomTypes[type3][0]
class4 = forcefield._atomTypes[type4][0]
print ' <Improper class1="%s" class2="%s" class3="%s" class4="%s"' % (class1, class2, class3, class4),
for i in range(len(torsion.k)):
print ' periodicity%d="%d" phase%d="%g" k%d="%g"' % (i+1, torsion.periodicity[i], i+1, torsion.phase[i], i+1, torsion.k[i]),
print '/>'
print ' </PeriodicTorsionForce>'
# Print the script to add the soft-core nonbonded force.
print ' <Script>'
print """import simtk.openmm as mm
nb = mm.CustomNonbondedForce('1/((r/0.2)^4+1)')
sys.addForce(nb)
for i in range(sys.getNumParticles()):
nb.addParticle([])
for bond in data.bonds:
nb.addExclusion(bond.atom1, bond.atom2)
for angle in data.angles:
nb.addExclusion(angle[0], angle[2])"""
print ' </Script>'
print '</ForceField>'
\ No newline at end of file
"""
pdbfixer.py: Fixes problems in PDB files
This is part of the OpenMM molecular simulation toolkit originating from
Simbios, the NIH National Center for Physics-Based Simulation of
Biological Structures at Stanford, funded under the NIH Roadmap for
Medical Research, grant U54 GM072970. See https://simtk.org.
Portions copyright (c) 2013 Stanford University and the Authors.
Authors: Peter Eastman
Contributors:
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
__author__ = "Peter Eastman"
__version__ = "1.0"
import simtk.openmm as mm
import simtk.openmm.app as app
import simtk.unit as unit
from simtk.openmm.app.element import hydrogen, oxygen
import numpy as np
import numpy.linalg as lin
import sys
import os
import os.path
import math
def overlayPoints(points1, points2):
"""Given two sets of points, determine the translation and rotation that matches them as closely as possible.
This is based on W. Kabsch, Acta Cryst., A34, pp. 828-829 (1978)."""
if len(points1) == 0:
return (Vec3(0, 0, 0), np.identity(3), Vec3(0, 0, 0))
if len(points1) == 1:
return (points1[0], np.identity(3), -points2[0])
# Compute centroids.
center1 = unit.sum(points1)/float(len(points1))
center2 = unit.sum(points2)/float(len(points2))
# Compute R matrix.
R = np.zeros((3, 3))
for p1, p2 in zip(points1, points2):
x = p1-center1
y = p2-center2
for i in range(3):
for j in range(3):
R[i][j] += y[i]*x[j]
# Use an SVD to compute the rotation matrix.
(u, s, v) = lin.svd(R)
return (-1*center2, np.dot(u, v).transpose(), center1)
# Load the PDB file.
pdb = app.PDBFile(sys.argv[1])
# Load the templates.
templates = {}
for file in os.listdir('templates'):
templatePdb = app.PDBFile(os.path.join('templates', file))
name = templatePdb.topology.residues().next().name
templates[name] = templatePdb
# Loop over residues to see which ones have missing heavy atoms.
missingAtoms = {}
for residue in pdb.topology.residues():
if residue.name in templates:
template = templates[residue.name]
atomNames = set(atom.name for atom in residue.atoms())
missing = []
for atom in template.topology.atoms():
if atom.name not in atomNames:
missing.append(atom)
if len(missing) > 0:
missingAtoms[residue] = missing
# Create the new Topology.
newTopology = app.Topology()
newPositions = []*unit.nanometer
existingAtomMap = {}
addedAtomMap = {}
addedOXT = []
for chain in pdb.topology.chains():
newChain = newTopology.addChain()
chainResidues = list(chain.residues())
for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain)
# Add the existing heavy atoms.
for atom in residue.atoms():
if atom.element is not None and atom.element != hydrogen:
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue)
existingAtomMap[atom] = newAtom
newPositions.append(pdb.positions[atom.index])
if residue in missingAtoms:
# Find corresponding atoms in the residue and the template.
template = templates[residue.name]
atomPositions = dict((atom.name, pdb.positions[atom.index]) for atom in residue.atoms())
points1 = []
points2 = []
for atom in template.topology.atoms():
if atom.name in atomPositions:
points1.append(atomPositions[atom.name].value_in_unit(unit.nanometer))
points2.append(template.positions[atom.index].value_in_unit(unit.nanometer))
# Compute the optimal transform to overlay them.
(translate2, rotate, translate1) = overlayPoints(points1, points2)
# Add the missing atoms.
addedAtomMap[residue] = {}
for atom in missingAtoms[residue]:
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue)
addedAtomMap[residue][atom] = newAtom
templatePosition = template.positions[atom.index].value_in_unit(unit.nanometer)
newPositions.append((mm.Vec3(*np.dot(rotate, templatePosition+translate2))+translate1)*unit.nanometer)
# If a terminal OXT is missing, add it.
if residue == chainResidues[-1] and residue.name in templates:
atomPositions = dict((atom.name, pdb.positions[atom.index].value_in_unit(unit.nanometer)) for atom in residue.atoms())
if 'OXT' not in atomPositions and all(name in atomPositions for name in ['C', 'O', 'CA']):
newAtom = newTopology.addAtom('OXT', oxygen, newResidue)
addedOXT.append(newAtom)
d_ca_o = atomPositions['O']-atomPositions['CA']
d_ca_c = atomPositions['C']-atomPositions['CA']
d_ca_c /= unit.sqrt(unit.dot(d_ca_c, d_ca_c))
v = d_ca_o - d_ca_c*unit.dot(d_ca_c, d_ca_o)
newPositions.append((atomPositions['O']+2*v)*unit.nanometer)
# Add bonds from the original Topology.
for atom1, atom2 in pdb.topology.bonds():
if atom1 in existingAtomMap and atom2 in existingAtomMap:
newTopology.addBond(existingAtomMap[atom1], existingAtomMap[atom2])
# Add bonds that connect to new atoms.
for residue in missingAtoms:
template = templates[residue.name]
atomsByName = dict((atom.name, atom) for atom in residue.atoms())
addedAtoms = addedAtomMap[residue]
for atom1, atom2 in template.topology.bonds():
if atom1 in addedAtoms or atom2 in addedAtoms:
if atom1 in addedAtoms:
bondAtom1 = addedAtoms[atom1]
else:
bondAtom1 = existingAtomMap[atomsByName[atom1.name]]
if atom2 in addedAtoms:
bondAtom2 = addedAtoms[atom2]
else:
bondAtom2 = existingAtomMap[atomsByName[atom2.name]]
newTopology.addBond(bondAtom1, bondAtom2)
for atom1 in addedOXT:
atom2 = [atom for atom in atom1.residue.atoms() if atom.name == 'C'][0]
newTopology.addBond(atom1, atom2)
app.PDBFile.writeFile(newTopology, newPositions, open('output.pdb', 'w'))
forcefield = app.ForceField('soft.xml')
forcefield.createSystem(newTopology)
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
ATOM 1 N ALA A 1 -1.444 -0.596 0.968 1.00 0.00
ATOM 2 CA ALA A 1 -0.194 -0.546 0.198 1.00 0.00
ATOM 3 CB ALA A 1 -0.584 -0.626 -1.282 1.00 0.00
ATOM 4 C ALA A 1 0.716 0.684 0.478 1.00 0.00
ATOM 5 O ALA A 1 1.506 1.084 -0.362 1.00 0.00
TER 6 ALA A 1
END
ATOM 1 N ARG A 1 -0.592 -1.491 -3.605 1.00 0.00
ATOM 2 CA ARG A 1 -0.082 -1.191 -2.255 1.00 0.00
ATOM 3 CB ARG A 1 -1.242 -0.801 -1.315 1.00 0.00
ATOM 4 CG ARG A 1 -0.782 -0.301 0.075 1.00 0.00
ATOM 5 CD ARG A 1 -0.102 1.079 0.035 1.00 0.00
ATOM 6 NE ARG A 1 0.598 1.429 1.295 1.00 0.00
ATOM 7 CZ ARG A 1 0.068 1.769 2.455 1.00 0.00
ATOM 8 NH1 ARG A 1 -1.212 1.659 2.695 1.00 0.00
ATOM 9 NH2 ARG A 1 0.808 2.279 3.405 1.00 0.00
ATOM 10 C ARG A 1 0.748 -2.351 -1.695 1.00 0.00
ATOM 11 O ARG A 1 1.788 -2.081 -1.095 1.00 0.00
TER 12 ARG A 1
END
ATOM 1 N ASN A 1 -0.065 -1.086 -1.454 1.00 0.00
ATOM 2 CA ASN A 1 0.635 -0.556 -0.284 1.00 0.00
ATOM 3 CB ASN A 1 -0.375 0.064 0.696 1.00 0.00
ATOM 4 CG ASN A 1 -1.175 1.204 0.086 1.00 0.00
ATOM 5 OD1 ASN A 1 -0.665 2.274 -0.194 1.00 0.00
ATOM 6 ND2 ASN A 1 -2.455 1.024 -0.124 1.00 0.00
ATOM 7 C ASN A 1 1.495 -1.616 0.426 1.00 0.00
ATOM 8 O ASN A 1 2.605 -1.306 0.846 1.00 0.00
TER 9 ASN A 1
END
ATOM 1 N ASP A 1 -0.296 1.560 1.112 1.00 0.00
ATOM 2 CA ASP A 1 0.554 0.380 1.103 1.00 0.00
ATOM 3 CB ASP A 1 -0.246 -0.830 0.562 1.00 0.00
ATOM 4 CG ASP A 1 -1.176 -0.590 -0.648 1.00 0.00
ATOM 5 OD1 ASP A 1 -0.926 0.310 -1.478 1.00 0.00
ATOM 6 OD2 ASP A 1 -2.206 -1.310 -0.667 1.00 0.00
ATOM 7 C ASP A 1 1.894 0.660 0.383 1.00 0.00
ATOM 8 O ASP A 1 2.404 -0.180 -0.368 1.00 0.00
TER 9 ASP A 1
END
ATOM 1 N CYS A 1 0.155 0.347 1.678 1.00 0.00
ATOM 2 CA CYS A 1 -0.145 0.107 0.268 1.00 0.00
ATOM 3 CB CYS A 1 1.135 0.017 -0.562 1.00 0.00
ATOM 4 SG CYS A 1 1.895 1.667 -0.722 1.00 0.00
ATOM 5 C CYS A 1 -1.045 -1.123 0.048 1.00 0.00
ATOM 6 O CYS A 1 -1.995 -1.013 -0.712 1.00 0.00
TER 7 CYS A 1
END
ATOM 1 N GLN A 1 -0.269 -2.647 0.620 1.00 0.00
ATOM 2 CA GLN A 1 0.731 -1.587 0.440 1.00 0.00
ATOM 3 CB GLN A 1 0.271 -0.507 -0.570 1.00 0.00
ATOM 4 CG GLN A 1 -0.889 0.383 -0.120 1.00 0.00
ATOM 5 CD GLN A 1 -1.129 1.583 -1.050 1.00 0.00
ATOM 6 OE1 GLN A 1 -1.969 1.563 -1.940 1.00 0.00
ATOM 7 NE2 GLN A 1 -0.409 2.673 -0.880 1.00 0.00
ATOM 8 C GLN A 1 1.271 -0.987 1.750 1.00 0.00
ATOM 9 O GLN A 1 2.391 -0.477 1.750 1.00 0.00
TER 10 GLN A 1
END
ATOM 1 N GLU A 1 -1.989 -1.946 0.778 1.00 0.00
ATOM 2 CA GLU A 1 -0.599 -1.546 0.468 1.00 0.00
ATOM 3 CB GLU A 1 -0.599 -0.126 -0.142 1.00 0.00
ATOM 4 CG GLU A 1 0.761 0.324 -0.712 1.00 0.00
ATOM 5 CD GLU A 1 0.731 1.684 -1.442 1.00 0.00
ATOM 6 OE1 GLU A 1 1.141 2.704 -0.822 1.00 0.00
ATOM 7 OE2 GLU A 1 0.371 1.724 -2.642 1.00 0.00
ATOM 8 C GLU A 1 0.301 -1.656 1.718 1.00 0.00
ATOM 9 O GLU A 1 -0.119 -1.166 2.798 1.00 0.00
TER 10 GLU A 1
END
ATOM 1 N GLY A 1 -1.452 -0.970 -0.205 1.00 0.00
ATOM 2 CA GLY A 1 -0.522 0.060 -0.665 1.00 0.00
ATOM 3 C GLY A 1 0.388 0.570 0.455 1.00 0.00
ATOM 4 O GLY A 1 1.587 0.340 0.415 1.00 0.00
TER 5 GLY A 1
END
ATOM 1 N HIS A 1 -0.532 -1.545 -1.177 1.00 0.00
ATOM 2 CA HIS A 1 0.668 -0.725 -1.257 1.00 0.00
ATOM 3 CB HIS A 1 0.958 -0.235 0.173 1.00 0.00
ATOM 4 CG HIS A 1 -0.222 0.485 0.783 1.00 0.00
ATOM 5 ND1 HIS A 1 -1.102 -0.065 1.713 1.00 0.00
ATOM 6 CE1 HIS A 1 -2.082 0.835 1.883 1.00 0.00
ATOM 7 NE2 HIS A 1 -1.862 1.915 1.113 1.00 0.00
ATOM 8 CD2 HIS A 1 -0.682 1.725 0.413 1.00 0.00
ATOM 9 C HIS A 1 1.868 -1.425 -1.927 1.00 0.00
ATOM 10 O HIS A 1 2.988 -0.965 -1.717 1.00 0.00
TER 11 HIS A 1
END
ATOM 1 N ILE A 1 -0.264 1.893 -0.670 1.00 0.00
ATOM 2 CA ILE A 1 0.446 0.733 -0.110 1.00 0.00
ATOM 3 CB ILE A 1 -0.494 -0.498 -0.030 1.00 0.00
ATOM 4 CG2 ILE A 1 0.276 -1.757 0.420 1.00 0.00
ATOM 5 CG1 ILE A 1 -1.674 -0.238 0.930 1.00 0.00
ATOM 6 CD1 ILE A 1 -2.864 -1.177 0.730 1.00 0.00
ATOM 7 C ILE A 1 1.736 0.483 -0.910 1.00 0.00
ATOM 8 O ILE A 1 2.836 0.562 -0.360 1.00 0.00
TER 9 ILE A 1
END
ATOM 1 N LEU A 1 0.876 0.196 -1.980 1.00 0.00
ATOM 2 CA LEU A 1 0.876 -0.194 -0.560 1.00 0.00
ATOM 3 CB LEU A 1 -0.574 -0.304 -0.040 1.00 0.00
ATOM 4 CG LEU A 1 -1.294 1.036 0.190 1.00 0.00
ATOM 5 CD1 LEU A 1 -2.774 0.796 0.500 1.00 0.00
ATOM 6 CD2 LEU A 1 -0.694 1.786 1.380 1.00 0.00
ATOM 7 C LEU A 1 1.616 -1.514 -0.320 1.00 0.00
ATOM 8 O LEU A 1 1.966 -1.804 0.830 1.00 0.00
TER 9 LEU A 1
END
ATOM 1 N LYS A 1 -0.320 -2.683 0.169 1.00 0.00
ATOM 2 CA LYS A 1 0.500 -1.623 0.779 1.00 0.00
ATOM 3 CB LYS A 1 -0.150 -0.253 0.479 1.00 0.00
ATOM 4 CG LYS A 1 -0.110 0.217 -0.971 1.00 0.00
ATOM 5 CD LYS A 1 -0.990 1.467 -1.121 1.00 0.00
ATOM 6 CE LYS A 1 -0.730 2.197 -2.431 1.00 0.00
ATOM 7 NZ LYS A 1 0.120 3.387 -2.231 1.00 0.00
ATOM 8 C LYS A 1 0.640 -1.813 2.309 1.00 0.00
ATOM 9 O LYS A 1 1.040 -0.893 3.019 1.00 0.00
TER 10 LYS A 1
END
ATOM 1 N MET A 1 -0.356 2.184 0.403 1.00 0.00
ATOM 2 CA MET A 1 0.594 1.064 0.333 1.00 0.00
ATOM 3 CB MET A 1 -0.076 -0.216 -0.208 1.00 0.00
ATOM 4 CG MET A 1 -1.146 -0.756 0.753 1.00 0.00
ATOM 5 SD MET A 1 -1.606 -2.486 0.483 1.00 0.00
ATOM 6 CE MET A 1 -2.216 -2.456 -1.228 1.00 0.00
ATOM 7 C MET A 1 1.844 1.434 -0.497 1.00 0.00
ATOM 8 O MET A 1 2.964 1.234 -0.038 1.00 0.00
TER 9 MET A 1
END
ATOM 1 N PHE A 1 0.069 -0.545 3.506 1.00 0.00
ATOM 2 CA PHE A 1 -0.321 -0.545 2.096 1.00 0.00
ATOM 3 CB PHE A 1 0.809 0.085 1.266 1.00 0.00
ATOM 4 CG PHE A 1 0.519 0.445 -0.194 1.00 0.00
ATOM 5 CD1 PHE A 1 -0.791 0.565 -0.704 1.00 0.00
ATOM 6 CE1 PHE A 1 -1.001 0.935 -2.044 1.00 0.00
ATOM 7 CZ PHE A 1 0.099 1.185 -2.884 1.00 0.00
ATOM 8 CE2 PHE A 1 1.399 1.085 -2.374 1.00 0.00
ATOM 9 CD2 PHE A 1 1.609 0.715 -1.044 1.00 0.00
ATOM 10 C PHE A 1 -0.721 -1.925 1.566 1.00 0.00
ATOM 11 O PHE A 1 -1.671 -1.995 0.806 1.00 0.00
TER 12 PHE A 1
END
ATOM 1 N PRO A 1 1.094 0.154 -0.780 1.00 0.00
ATOM 2 CD PRO A 1 1.964 0.224 0.390 1.00 0.00
ATOM 3 CG PRO A 1 1.284 -0.636 1.450 1.00 0.00
ATOM 4 CB PRO A 1 -0.196 -0.386 1.170 1.00 0.00
ATOM 5 CA PRO A 1 -0.256 -0.246 -0.350 1.00 0.00
ATOM 6 C PRO A 1 -1.406 0.684 -0.790 1.00 0.00
ATOM 7 O PRO A 1 -2.486 0.204 -1.090 1.00 0.00
TER 8 PRO A 1
END
ATOM 1 N SER A 1 -1.192 -0.063 1.270 1.00 0.00
ATOM 2 CA SER A 1 -0.052 -0.153 0.330 1.00 0.00
ATOM 3 CB SER A 1 -0.512 -0.243 -1.130 1.00 0.00
ATOM 4 OG SER A 1 -1.332 -1.373 -1.370 1.00 0.00
ATOM 5 C SER A 1 0.938 1.017 0.460 1.00 0.00
ATOM 6 O SER A 1 2.148 0.817 0.440 1.00 0.00
TER 7 SER A 1
END
ATOM 1 N THR A 1 -1.233 0.087 1.536 1.00 0.00
ATOM 2 CA THR A 1 -0.113 -0.063 0.586 1.00 0.00
ATOM 3 CB THR A 1 -0.633 -0.183 -0.854 1.00 0.00
ATOM 4 CG2 THR A 1 0.457 -0.443 -1.884 1.00 0.00
ATOM 5 OG1 THR A 1 -1.493 -1.293 -0.954 1.00 0.00
ATOM 6 C THR A 1 0.907 1.067 0.716 1.00 0.00
ATOM 7 O THR A 1 2.107 0.827 0.856 1.00 0.00
TER 8 THR A 1
END
ATOM 1 N TRP A 1 -3.024 2.758 -0.150 1.00 0.00
ATOM 2 CA TRP A 1 -1.774 2.098 0.230 1.00 0.00
ATOM 3 CB TRP A 1 -2.034 0.618 0.560 1.00 0.00
ATOM 4 CG TRP A 1 -0.784 -0.142 0.880 1.00 0.00
ATOM 5 CD1 TRP A 1 -0.224 -0.292 2.100 1.00 0.00
ATOM 6 NE1 TRP A 1 0.956 -0.992 1.970 1.00 0.00
ATOM 7 CE2 TRP A 1 1.226 -1.312 0.660 1.00 0.00
ATOM 8 CZ2 TRP A 1 2.296 -1.972 0.040 1.00 0.00
ATOM 9 CH2 TRP A 1 2.276 -2.122 -1.360 1.00 0.00
ATOM 10 CZ3 TRP A 1 1.156 -1.712 -2.090 1.00 0.00
ATOM 11 CE3 TRP A 1 0.066 -1.102 -1.440 1.00 0.00
ATOM 12 CD2 TRP A 1 0.096 -0.842 -0.060 1.00 0.00
ATOM 13 C TRP A 1 -0.664 2.278 -0.830 1.00 0.00
ATOM 14 O TRP A 1 0.436 2.738 -0.510 1.00 0.00
TER 15 TRP A 1
END
ATOM 1 N TYR A 1 -0.321 1.973 1.264 1.00 0.00
ATOM 2 CA TYR A 1 0.479 0.923 1.914 1.00 0.00
ATOM 3 CB TYR A 1 1.359 0.233 0.854 1.00 0.00
ATOM 4 CG TYR A 1 0.529 -0.277 -0.306 1.00 0.00
ATOM 5 CD1 TYR A 1 0.519 0.423 -1.536 1.00 0.00
ATOM 6 CE1 TYR A 1 -0.411 0.063 -2.526 1.00 0.00
ATOM 7 CZ TYR A 1 -1.331 -0.977 -2.286 1.00 0.00
ATOM 8 OH TYR A 1 -2.311 -1.267 -3.176 1.00 0.00
ATOM 9 CE2 TYR A 1 -1.271 -1.727 -1.096 1.00 0.00
ATOM 10 CD2 TYR A 1 -0.341 -1.367 -0.106 1.00 0.00
ATOM 11 C TYR A 1 1.329 1.403 3.094 1.00 0.00
ATOM 12 O TYR A 1 1.769 0.593 3.904 1.00 0.00
TER 13 TYR A 1
END
ATOM 1 N VAL A 1 -0.890 1.753 -0.437 1.00 0.00
ATOM 2 CA VAL A 1 -0.040 0.623 -0.007 1.00 0.00
ATOM 3 CB VAL A 1 -0.830 -0.697 0.103 1.00 0.00
ATOM 4 CG1 VAL A 1 0.060 -1.927 0.323 1.00 0.00
ATOM 5 CG2 VAL A 1 -1.820 -0.647 1.273 1.00 0.00
ATOM 6 C VAL A 1 1.210 0.483 -0.897 1.00 0.00
ATOM 7 O VAL A 1 2.310 0.413 -0.357 1.00 0.00
TER 8 VAL A 1
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