Commit 31f09353 authored by Jason Swails's avatar Jason Swails
Browse files

Add a couple unittests for CHARMM files. Good thing, too, because they helped

pick up some bugs that were not caught in my initial test following the port
from ParmEd.

All 4 tests pass right now, although no periodic systems are being tested.
Currently CHARMM, XPLOR, and VMD tests are all being run (for the same ala-3
system).

Disable implicit solvent tests, since there is no robust radii assignment
routine yet (the radii are stored in the Amber topology file).  I will port my
assignment routine from ParmEd here shortly and then re-enable the GB tests.
parent 4087eae3
...@@ -13,7 +13,7 @@ from simtk.openmm.app.charmm.topologyobjects import (AtomType, BondType, ...@@ -13,7 +13,7 @@ from simtk.openmm.app.charmm.topologyobjects import (AtomType, BondType,
UreyBradleyType, NoUreyBradley) UreyBradleyType, NoUreyBradley)
from simtk.openmm.app.charmm.exceptions import CharmmFileError from simtk.openmm.app.charmm.exceptions import CharmmFileError
from simtk.openmm.app.element import Element, get_by_symbol from simtk.openmm.app.element import Element, get_by_symbol
from simtk.unit import daltons import simtk.unit as u
import warnings import warnings
class ParameterSet(object): class ParameterSet(object):
...@@ -512,7 +512,7 @@ def element_by_mass(mass): ...@@ -512,7 +512,7 @@ def element_by_mass(mass):
for key in Element._elements_by_atomic_number: for key in Element._elements_by_atomic_number:
element = Element._elements_by_atomic_number[key] element = Element._elements_by_atomic_number[key]
massdiff = abs(element.mass.value_in_unit(daltons) - mass) massdiff = abs(element.mass.value_in_unit(u.daltons) - mass)
if massdiff < diff: if massdiff < diff:
best_guess = element best_guess = element
diff = massdiff diff = massdiff
......
...@@ -112,6 +112,7 @@ class ProteinStructure(object): ...@@ -112,6 +112,7 @@ class ProteinStructure(object):
self.group_list = groups self.group_list = groups
self.title = title self.title = title
self.flags = flags self.flags = flags
self.box_vectors = None
@staticmethod @staticmethod
def _convert(string, type, message): def _convert(string, type, message):
...@@ -728,7 +729,7 @@ class ProteinStructure(object): ...@@ -728,7 +729,7 @@ class ProteinStructure(object):
self.positions = positions self.positions = positions
def set_box(self, box): def set_box(self, lengths, angles=None):
""" """
Sets the periodic box boundary conditions. Sets the periodic box boundary conditions.
...@@ -743,15 +744,16 @@ class ProteinStructure(object): ...@@ -743,15 +744,16 @@ class ProteinStructure(object):
The box here is copied via slicing, so changing the box that was The box here is copied via slicing, so changing the box that was
passed in will have no effect after set_box is called. passed in will have no effect after set_box is called.
""" """
if box is None: if len(lengths) != 3:
self.box = None raise ValueError('set_box requires 3 box lengths')
elif len(box) == 6: if angles is not None and len(angles) != 3:
self.box = list(box[:]) raise ValueError('set_box requires 3 box angles')
elif len(box) == 3: if angles is None:
self.box = list(box[:]) + [90.0, 90.0, 90.0] angles = [90.0, 90.0, 90.0] * u.degrees
else: self.box_vectors = _box_vectors_from_lengths_angles(
raise ValueError('set_box requires 3 box lengths, 3 box lengths ' lengths[0], lengths[1], lengths[2],
'and 3 angles, or None for no box') angles[0], angles[1], angles[2],
)
# If we already have a _topology instance, then we have possibly changed # If we already have a _topology instance, then we have possibly changed
# the existence of box information (whether or not this is a periodic # the existence of box information (whether or not this is a periodic
# system), so delete any cached reference to a topology so it's # system), so delete any cached reference to a topology so it's
...@@ -792,8 +794,8 @@ class ProteinStructure(object): ...@@ -792,8 +794,8 @@ class ProteinStructure(object):
topology.addBond(atoms[bond.atom1.idx], atoms[bond.atom2.idx]) topology.addBond(atoms[bond.atom1.idx], atoms[bond.atom2.idx])
# Add the periodic box if there is one # Add the periodic box if there is one
if hasattr(self, 'box') and self.box is not None: if self.box_vectors is not None:
topology.setUnitCellDimensions(self.box[:3] * u.angstroms) topology.setUnitCellDimensions(self.box_lengths)
return topology return topology
...@@ -1372,28 +1374,13 @@ class ProteinStructure(object): ...@@ -1372,28 +1374,13 @@ class ProteinStructure(object):
for a in self.atom_list]) * (u.angstroms/u.picosecond) for a in self.atom_list]) * (u.angstroms/u.picosecond)
return self._velocities return self._velocities
@property
def box_vectors(self):
""" Return tuple of box vectors """
if hasattr(self, 'rst7'):
box = [x*u.angstrom for x in self.rst7.box[:3]]
ang = [self.rst7.box[3], self.rst7.box[4], self.rst7.box[5]]
return _box_vectors_from_lengths_angles(box[0], box[1], box[2],
ang[0], ang[1], ang[2])
else:
box = [x*u.angstrom for x in self.parm_data['BOX_DIMENSIONS'][1:]]
ang = [self.parm_data['BOX_DIMENSIONS'][0]] * 3
return _box_vectors_from_lengths_angles(box[0], box[1], box[2],
ang[0], ang[1], ang[2])
@property @property
def box_lengths(self): def box_lengths(self):
""" Return tuple of 3 units """ """ Return tuple of 3 units """
if hasattr(self, 'rst7'): if self.box_vectors is not None:
box = [x*u.angstrom for x in self.rst7.box[:3]] return (self.box_vectors[0][0], self.box_vectors[0][1],
else: self.box_vectors[0][2])
box = [x*u.angstrom for x in self.parm_data['BOX_DIMENSIONS'][1:]] return None
return tuple(box)
def _box_vectors_from_lengths_angles(a, b, c, alpha, beta, gamma): def _box_vectors_from_lengths_angles(a, b, c, alpha, beta, gamma):
""" """
......
...@@ -8,6 +8,7 @@ Date: April 9, 2014 ...@@ -8,6 +8,7 @@ Date: April 9, 2014
""" """
from simtk.openmm.app.charmm.exceptions import (SplitResidueWarning, BondError, from simtk.openmm.app.charmm.exceptions import (SplitResidueWarning, BondError,
ResidueError, CmapError, MissingParameter) ResidueError, CmapError, MissingParameter)
import simtk.unit as u
import warnings import warnings
TINY = 1e-8 TINY = 1e-8
...@@ -61,7 +62,7 @@ class AtomType(object): ...@@ -61,7 +62,7 @@ class AtomType(object):
else: else:
self.name = name self.name = name
self.number = int(number) self.number = int(number)
self.mass = mass self.mass = mass * u.daltons
self.atomic_number = atomic_number self.atomic_number = atomic_number
# We have no LJ parameters as of yet # We have no LJ parameters as of yet
self.epsilon = self.rmin = self.epsilon_14 = self.rmin_14 = None self.epsilon = self.rmin = self.epsilon_14 = self.rmin_14 = None
...@@ -179,7 +180,7 @@ class Atom(object): ...@@ -179,7 +180,7 @@ class Atom(object):
self.attype = attype self.attype = attype
self.type = None self.type = None
self.charge = charge self.charge = charge
self.mass = mass self.mass = mass * u.daltons
self.idx = -1 self.idx = -1
self.props = props self.props = props
self.system = system self.system = system
......
import unittest
from validateConstraints import *
from simtk.openmm.app import *
from simtk.openmm import *
from simtk.unit import *
import simtk.openmm.app.element as elem
class TestCharmmFiles(unittest.TestCase):
"""Test the GromacsTopFile.createSystem() method."""
def setUp(self):
"""Set up the tests by loading the input files."""
# alanine tripeptide; no waters
self.psf_c = CharmmPSF.load_from_psf('systems/ala_ala_ala.psf')
self.psf_x = CharmmPSF.load_from_psf('systems/ala_ala_ala.xpsf')
self.psf_v = CharmmPSF.load_from_psf('systems/ala_ala_ala.vpsf')
params = CharmmParameterSet.load_set(
tfile='systems/charmm22.rtf',
pfile='systems/charmm22.par',
).condense()
self.pdb = PDBFile('systems/ala_ala_ala.pdb')
# Load parameters
self.psf_c.load_parameters(params)
self.psf_x.load_parameters(params)
self.psf_v.load_parameters(params)
def test_NonbondedMethod(self):
"""Test both non-periodic methods for the systems"""
methodMap = {NoCutoff:NonbondedForce.NoCutoff,
CutoffNonPeriodic:NonbondedForce.CutoffNonPeriodic}
for top in (self.psf_c, self.psf_x, self.psf_v):
for method in methodMap:
system = top.createSystem(nonbondedMethod=method)
forces = system.getForces()
self.assertTrue(any(isinstance(f, NonbondedForce) and
f.getNonbondedMethod()==methodMap[method]
for f in forces))
def test_Cutoff(self):
"""Test to make sure the nonbondedCutoff parameter is passed correctly."""
for top in (self.psf_c, self.psf_x, self.psf_v):
for method in [CutoffNonPeriodic]:
system = top.createSystem(nonbondedMethod=method,
nonbondedCutoff=2*nanometer,
constraints=HBonds)
cutoff_distance = 0.0*nanometer
cutoff_check = 2.0*nanometer
for force in system.getForces():
if isinstance(force, NonbondedForce):
cutoff_distance = force.getCutoffDistance()
self.assertEqual(cutoff_distance, cutoff_check)
def test_RemoveCMMotion(self):
"""Test both options (True and False) for the removeCMMotion parameter."""
for b in [True, False]:
system = self.psf_c.createSystem(removeCMMotion=b)
self.assertEqual(any(isinstance(f, CMMotionRemover) for f in system.getForces()), b)
# def test_ImplicitSolvent(self):
# """Test implicit solvent using the implicitSolvent parameter.
# """
# system = self.psf_v.createSystem(implicitSolvent=OBC2)
# self.assertTrue(any(isinstance(f, CustomGBForce) for f in system.getForces()))
# def test_ImplicitSolventParameters(self):
# """Test that solventDielectric and soluteDielectric are passed correctly.
# """
# system = self.psf_x.createSystem(implicitSolvent=GBn,
# solventDielectric=50.0,
# soluteDielectric = 0.9)
# found_matching_solvent_dielectric=False
# found_matching_solute_dielectric=False
# for force in system.getForces():
# if isinstance(force, CustomGBForce):
# if force.getSolventDielectric() == 50.0:
# found_matching_solvent_dielectric = True
# if force.getSoluteDielectric() == 0.9:
# found_matching_solute_dielectric = True
# if isinstance(force, NonbondedForce):
# self.assertEqual(force.getReactionFieldDielectric(), 1.0)
# self.assertTrue(found_matching_solvent_dielectric and
# found_matching_solute_dielectric)
def test_HydrogenMass(self):
"""Test that altering the mass of hydrogens works correctly."""
topology = self.psf_v.topology
hydrogenMass = 4*amu
system1 = self.psf_v.createSystem()
system2 = self.psf_v.createSystem(hydrogenMass=hydrogenMass)
for atom in topology.atoms():
if atom.element == elem.hydrogen:
self.assertNotEqual(hydrogenMass, system1.getParticleMass(atom.index))
self.assertEqual(hydrogenMass, system2.getParticleMass(atom.index))
totalMass1 = sum([system1.getParticleMass(i) for i in range(system1.getNumParticles())]).value_in_unit(amu)
totalMass2 = sum([system2.getParticleMass(i) for i in range(system2.getNumParticles())]).value_in_unit(amu)
self.assertAlmostEqual(totalMass1, totalMass2)
if __name__ == '__main__':
unittest.main()
REMARK original generated coordinate pdb file
ATOM 1 N ALA X 1 0.024 -0.103 -0.101 1.00 0.00 P1 N
ATOM 2 HT1 ALA X 1 0.027 -1.132 -0.239 1.00 0.00 P1 H
ATOM 3 HT2 ALA X 1 -0.805 0.163 0.471 1.00 0.00 P1 H
ATOM 4 HT3 ALA X 1 -0.059 0.384 -1.019 1.00 0.00 P1 H
ATOM 5 CA ALA X 1 1.247 0.375 0.636 1.00 0.00 P1 C
ATOM 6 HA ALA X 1 0.814 0.861 1.495 1.00 0.00 P1 H
ATOM 7 CB ALA X 1 2.057 -0.772 1.289 1.00 0.00 P1 C
ATOM 8 HB1 ALA X 1 3.136 -0.752 1.032 1.00 0.00 P1 H
ATOM 9 HB2 ALA X 1 1.990 -0.641 2.395 1.00 0.00 P1 H
ATOM 10 HB3 ALA X 1 1.656 -1.782 1.063 1.00 0.00 P1 H
ATOM 11 C ALA X 1 1.956 1.579 0.036 1.00 0.00 P1 C
ATOM 12 O ALA X 1 1.219 2.525 -0.201 1.00 0.00 P1 O
ATOM 13 N ALA X 2 3.289 1.631 -0.202 1.00 0.00 P1 N
ATOM 14 HN ALA X 2 3.939 0.868 -0.174 1.00 0.00 P1 H
ATOM 15 CA ALA X 2 3.990 2.909 -0.215 1.00 0.00 P1 C
ATOM 16 HA ALA X 2 3.742 3.440 0.695 1.00 0.00 P1 H
ATOM 17 CB ALA X 2 3.662 3.802 -1.434 1.00 0.00 P1 C
ATOM 18 HB1 ALA X 2 4.192 4.778 -1.358 1.00 0.00 P1 H
ATOM 19 HB2 ALA X 2 3.956 3.311 -2.382 1.00 0.00 P1 H
ATOM 20 HB3 ALA X 2 2.577 4.027 -1.467 1.00 0.00 P1 H
ATOM 21 C ALA X 2 5.487 2.654 -0.128 1.00 0.00 P1 C
ATOM 22 O ALA X 2 5.889 1.489 -0.137 1.00 0.00 P1 O
ATOM 23 C ALA X 3 8.018 5.323 0.136 1.00 0.00 P1 C
ATOM 24 OT1 ALA X 3 7.032 6.119 0.127 1.00 0.00 P1 O
ATOM 25 OT2 ALA X 3 9.219 5.692 0.188 1.00 0.00 P1 O
ATOM 26 N ALA X 3 6.275 3.733 -0.037 1.00 0.00 P1 N
ATOM 27 HN ALA X 3 5.963 4.691 -0.028 1.00 0.00 P1 H
ATOM 28 CA ALA X 3 7.707 3.802 0.068 1.00 0.00 P1 C
ATOM 29 HA ALA X 3 8.160 3.418 -0.833 1.00 0.00 P1 H
ATOM 30 CB ALA X 3 8.233 3.093 1.333 1.00 0.00 P1 C
ATOM 31 HB1 ALA X 3 9.342 3.149 1.356 1.00 0.00 P1 H
ATOM 32 HB2 ALA X 3 7.835 3.593 2.240 1.00 0.00 P1 H
ATOM 33 HB3 ALA X 3 7.923 2.030 1.332 1.00 0.00 P1 H
END
PSF CMAP CHEQ
2 !NTITLE
**
* DATE: 8/ 5/ 9 14:44:19 CREATED BY USER: mjw
33 !NATOM
1 AAL 1 ALA N 56 -0.300000 14.0070 0 0.00000 -0.301140E-02
2 AAL 1 ALA HT1 2 0.330000 1.00800 0 0.00000 -0.301140E-02
3 AAL 1 ALA HT2 2 0.330000 1.00800 0 0.00000 -0.301140E-02
4 AAL 1 ALA HT3 2 0.330000 1.00800 0 0.00000 -0.301140E-02
5 AAL 1 ALA CA 22 0.210000 12.0110 0 0.00000 -0.301140E-02
6 AAL 1 ALA HA 6 0.100000 1.00800 0 0.00000 -0.301140E-02
7 AAL 1 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
8 AAL 1 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
9 AAL 1 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
10 AAL 1 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
11 AAL 1 ALA C 20 0.510000 12.0110 0 0.00000 -0.301140E-02
12 AAL 1 ALA O 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
13 AAL 2 ALA N 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
14 AAL 2 ALA HN 1 0.310000 1.00800 0 0.00000 -0.301140E-02
15 AAL 2 ALA CA 22 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
16 AAL 2 ALA HA 6 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
17 AAL 2 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
18 AAL 2 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
19 AAL 2 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
20 AAL 2 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
21 AAL 2 ALA C 20 0.510000 12.0110 0 0.00000 -0.301140E-02
22 AAL 2 ALA O 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
23 AAL 3 ALA N 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
24 AAL 3 ALA HN 1 0.310000 1.00800 0 0.00000 -0.301140E-02
25 AAL 3 ALA CA 22 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
26 AAL 3 ALA HA 6 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
27 AAL 3 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
28 AAL 3 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
29 AAL 3 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
30 AAL 3 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
31 AAL 3 ALA C 32 0.340000 12.0110 0 0.00000 -0.301140E-02
32 AAL 3 ALA OT1 72 -0.670000 15.9990 0 0.00000 -0.301140E-02
33 AAL 3 ALA OT2 72 -0.670000 15.9990 0 0.00000 -0.301140E-02
32 !NBOND: bonds
2 1 3 1 4 1 7 5
1 5 11 5 11 13 5 6
7 8 7 9 7 10 12 11
17 15 13 14 13 15 21 15
21 23 15 16 17 18 17 19
17 20 22 21 27 25 23 24
23 25 31 25 25 26 27 28
27 29 27 30 31 33 31 32
57 !NTHETA: angles
2 1 3 2 1 4 2 1 5
3 1 4 3 1 5 4 1 5
1 5 6 1 5 7 1 5 11
6 5 7 6 5 11 7 5 11
5 7 8 5 7 9 5 7 10
8 7 9 8 7 10 9 7 10
5 11 12 5 11 13 12 11 13
11 13 14 11 13 15 14 13 15
13 15 16 13 15 17 13 15 21
16 15 17 16 15 21 17 15 21
15 17 18 15 17 19 15 17 20
18 17 19 18 17 20 19 17 20
15 21 22 15 21 23 22 21 23
21 23 24 21 23 25 24 23 25
23 25 26 23 25 27 23 25 31
26 25 27 26 25 31 27 25 31
25 27 28 25 27 29 25 27 30
28 27 29 28 27 30 29 27 30
25 31 32 25 31 33 32 31 33
74 !NPHI: dihedrals
1 5 7 8 1 5 7 9
1 5 7 10 1 5 11 12
1 5 11 13 2 1 5 6
2 1 5 7 2 1 5 11
3 1 5 6 3 1 5 7
3 1 5 11 4 1 5 6
4 1 5 7 4 1 5 11
5 11 13 14 5 11 13 15
6 5 7 8 6 5 7 9
6 5 7 10 6 5 11 12
6 5 11 13 7 5 11 12
7 5 11 13 8 7 5 11
9 7 5 11 10 7 5 11
11 13 15 16 11 13 15 17
11 13 15 21 12 11 13 14
12 11 13 15 13 15 17 18
13 15 17 19 13 15 17 20
13 15 21 22 13 15 21 23
14 13 15 16 14 13 15 17
14 13 15 21 15 21 23 24
15 21 23 25 16 15 17 18
16 15 17 19 16 15 17 20
16 15 21 22 16 15 21 23
17 15 21 22 17 15 21 23
18 17 15 21 19 17 15 21
20 17 15 21 21 23 25 26
21 23 25 27 21 23 25 31
22 21 23 24 22 21 23 25
23 25 27 28 23 25 27 29
23 25 27 30 23 25 31 32
23 25 31 33 24 23 25 26
24 23 25 27 24 23 25 31
26 25 27 28 26 25 27 29
26 25 27 30 26 25 31 32
26 25 31 33 27 25 31 32
27 25 31 33 28 27 25 31
29 27 25 31 30 27 25 31
5 !NIMPHI: impropers
11 5 13 12 13 11 15 14
21 15 23 22 23 21 25 24
31 25 33 32
5 !NDON: donors
1 2 1 3 1 4 13 14
23 24
4 !NACC: acceptors
12 11 22 21 32 31 33 31
0 !NNB
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0
9 0 !NGRP NST2
0 2 0 6 1 0 10 1 0
12 1 0 16 1 0 20 1 0
22 1 0 26 1 0 30 2 0
1 !MOLNT
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1
0 0 !NUMLP NUMLPH
1 !NCRTERM: cross-terms
11 13 15 21 13 15 21 23
PSF CMAP
6 !NTITLE
REMARKS original generated structure x-plor psf file
REMARKS 2 patches were applied to the molecule.
REMARKS topology ala_ala_ala_autopsf-temp.top
REMARKS segment P1 { first NTER; last CTER; auto angles dihedrals }
REMARKS patch NTER P1:1
REMARKS patch CTER P1:3
33 !NATOM
1 P1 1 ALA N NH3 -0.300000 14.0070 0
2 P1 1 ALA HT1 HC 0.330000 1.0080 0
3 P1 1 ALA HT2 HC 0.330000 1.0080 0
4 P1 1 ALA HT3 HC 0.330000 1.0080 0
5 P1 1 ALA CA CT1 0.210000 12.0110 0
6 P1 1 ALA HA HB 0.100000 1.0080 0
7 P1 1 ALA CB CT3 -0.270000 12.0110 0
8 P1 1 ALA HB1 HA 0.090000 1.0080 0
9 P1 1 ALA HB2 HA 0.090000 1.0080 0
10 P1 1 ALA HB3 HA 0.090000 1.0080 0
11 P1 1 ALA C C 0.510000 12.0110 0
12 P1 1 ALA O O -0.510000 15.9990 0
13 P1 2 ALA N NH1 -0.470000 14.0070 0
14 P1 2 ALA HN H 0.310000 1.0080 0
15 P1 2 ALA CA CT1 0.070000 12.0110 0
16 P1 2 ALA HA HB 0.090000 1.0080 0
17 P1 2 ALA CB CT3 -0.270000 12.0110 0
18 P1 2 ALA HB1 HA 0.090000 1.0080 0
19 P1 2 ALA HB2 HA 0.090000 1.0080 0
20 P1 2 ALA HB3 HA 0.090000 1.0080 0
21 P1 2 ALA C C 0.510000 12.0110 0
22 P1 2 ALA O O -0.510000 15.9990 0
23 P1 3 ALA C CC 0.340000 12.0110 0
24 P1 3 ALA OT1 OC -0.670000 15.9990 0
25 P1 3 ALA OT2 OC -0.670000 15.9990 0
26 P1 3 ALA N NH1 -0.470000 14.0070 0
27 P1 3 ALA HN H 0.310000 1.0080 0
28 P1 3 ALA CA CT1 0.070000 12.0110 0
29 P1 3 ALA HA HB 0.090000 1.0080 0
30 P1 3 ALA CB CT3 -0.270000 12.0110 0
31 P1 3 ALA HB1 HA 0.090000 1.0080 0
32 P1 3 ALA HB2 HA 0.090000 1.0080 0
33 P1 3 ALA HB3 HA 0.090000 1.0080 0
32 !NBOND: bonds
1 5 2 1 3 1 4 1
5 6 7 5 7 8 7 9
7 10 11 5 11 13 12 11
13 14 13 15 15 16 17 15
17 18 17 19 17 20 21 15
21 26 22 21 23 25 23 24
23 28 26 27 26 28 28 29
30 28 30 31 30 32 30 33
57 !NTHETA: angles
1 5 6 1 5 11 2 1 5
2 1 4 2 1 3 3 1 5
3 1 4 4 1 5 5 11 12
5 11 13 5 7 10 5 7 9
5 7 8 7 5 6 7 5 11
7 5 1 8 7 10 8 7 9
9 7 10 11 5 6 13 15 16
13 15 21 13 11 12 14 13 11
14 13 15 15 21 22 15 21 26
15 17 20 15 17 19 15 17 18
15 13 11 17 15 16 17 15 21
17 15 13 18 17 20 18 17 19
19 17 20 21 15 16 23 28 29
24 23 28 25 23 28 25 23 24
26 28 29 26 28 23 26 21 22
27 26 21 27 26 28 28 30 33
28 30 32 28 30 31 28 26 21
30 28 29 30 28 23 30 28 26
31 30 33 31 30 32 32 30 33
74 !NPHI: dihedrals
1 5 7 8 1 5 7 9
1 5 7 10 1 5 11 13
1 5 11 12 2 1 5 7
2 1 5 11 2 1 5 6
3 1 5 7 3 1 5 11
3 1 5 6 4 1 5 7
4 1 5 11 4 1 5 6
5 11 13 14 5 11 13 15
6 5 7 8 6 5 7 9
6 5 7 10 6 5 11 13
6 5 11 12 7 5 11 13
7 5 11 12 8 7 5 11
9 7 5 11 10 7 5 11
11 13 15 17 11 13 15 21
11 13 15 16 12 11 13 14
12 11 13 15 13 15 17 18
13 15 17 19 13 15 17 20
13 15 21 26 13 15 21 22
14 13 15 17 14 13 15 21
14 13 15 16 15 21 26 27
15 21 26 28 16 15 17 18
16 15 17 19 16 15 17 20
16 15 21 26 16 15 21 22
17 15 21 26 17 15 21 22
18 17 15 21 19 17 15 21
20 17 15 21 21 26 28 30
21 26 28 23 21 26 28 29
22 21 26 27 22 21 26 28
23 28 30 31 23 28 30 32
23 28 30 33 23 28 26 27
24 23 28 30 24 23 28 26
24 23 28 29 25 23 28 30
25 23 28 26 25 23 28 29
26 28 30 31 26 28 30 32
26 28 30 33 27 26 28 30
27 26 28 29 29 28 30 31
29 28 30 32 29 28 30 33
5 !NIMPHI: impropers
11 5 13 12 13 11 15 14
21 15 26 22 23 28 25 24
26 21 28 27
0 !NDON: donors
0 !NACC: acceptors
0 !NNB
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0
1 0 !NGRP
0 0 0
1 !NCRTERM: cross-terms
11 13 15 21 13 15 21 26
PSF CMAP CHEQ
2 !NTITLE
**
* DATE: 3/ 8/11 16:15:19 CREATED BY USER: crowley
33 !NATOM
1 AAL 1 ALA N NH3 -0.300000 14.0070 0 0.00000 -0.301140E-02
2 AAL 1 ALA HT1 HC 0.330000 1.00800 0 0.00000 -0.301140E-02
3 AAL 1 ALA HT2 HC 0.330000 1.00800 0 0.00000 -0.301140E-02
4 AAL 1 ALA HT3 HC 0.330000 1.00800 0 0.00000 -0.301140E-02
5 AAL 1 ALA CA CT1 0.210000 12.0110 0 0.00000 -0.301140E-02
6 AAL 1 ALA HA HB 0.100000 1.00800 0 0.00000 -0.301140E-02
7 AAL 1 ALA CB CT3 -0.270000 12.0110 0 0.00000 -0.301140E-02
8 AAL 1 ALA HB1 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
9 AAL 1 ALA HB2 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
10 AAL 1 ALA HB3 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
11 AAL 1 ALA C C 0.510000 12.0110 0 0.00000 -0.301140E-02
12 AAL 1 ALA O O -0.510000 15.9990 0 0.00000 -0.301140E-02
13 AAL 2 ALA N NH1 -0.470000 14.0070 0 0.00000 -0.301140E-02
14 AAL 2 ALA HN H 0.310000 1.00800 0 0.00000 -0.301140E-02
15 AAL 2 ALA CA CT1 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
16 AAL 2 ALA HA HB 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
17 AAL 2 ALA CB CT3 -0.270000 12.0110 0 0.00000 -0.301140E-02
18 AAL 2 ALA HB1 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
19 AAL 2 ALA HB2 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
20 AAL 2 ALA HB3 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
21 AAL 2 ALA C C 0.510000 12.0110 0 0.00000 -0.301140E-02
22 AAL 2 ALA O O -0.510000 15.9990 0 0.00000 -0.301140E-02
23 AAL 3 ALA N NH1 -0.470000 14.0070 0 0.00000 -0.301140E-02
24 AAL 3 ALA HN H 0.310000 1.00800 0 0.00000 -0.301140E-02
25 AAL 3 ALA CA CT1 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
26 AAL 3 ALA HA HB 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
27 AAL 3 ALA CB CT3 -0.270000 12.0110 0 0.00000 -0.301140E-02
28 AAL 3 ALA HB1 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
29 AAL 3 ALA HB2 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
30 AAL 3 ALA HB3 HA 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
31 AAL 3 ALA C CC 0.340000 12.0110 0 0.00000 -0.301140E-02
32 AAL 3 ALA OT1 OC -0.670000 15.9990 0 0.00000 -0.301140E-02
33 AAL 3 ALA OT2 OC -0.670000 15.9990 0 0.00000 -0.301140E-02
32 !NBOND: bonds
2 1 3 1 4 1 7 5
1 5 11 5 11 13 5 6
7 8 7 9 7 10 12 11
17 15 13 14 13 15 21 15
21 23 15 16 17 18 17 19
17 20 22 21 27 25 23 24
23 25 31 25 25 26 27 28
27 29 27 30 31 33 31 32
57 !NTHETA: angles
2 1 3 2 1 4 2 1 5
3 1 4 3 1 5 4 1 5
1 5 6 1 5 7 1 5 11
6 5 7 6 5 11 7 5 11
5 7 8 5 7 9 5 7 10
8 7 9 8 7 10 9 7 10
5 11 12 5 11 13 12 11 13
11 13 14 11 13 15 14 13 15
13 15 16 13 15 17 13 15 21
16 15 17 16 15 21 17 15 21
15 17 18 15 17 19 15 17 20
18 17 19 18 17 20 19 17 20
15 21 22 15 21 23 22 21 23
21 23 24 21 23 25 24 23 25
23 25 26 23 25 27 23 25 31
26 25 27 26 25 31 27 25 31
25 27 28 25 27 29 25 27 30
28 27 29 28 27 30 29 27 30
25 31 32 25 31 33 32 31 33
74 !NPHI: dihedrals
1 5 7 8 1 5 7 9
1 5 7 10 1 5 11 12
1 5 11 13 2 1 5 6
2 1 5 7 2 1 5 11
3 1 5 6 3 1 5 7
3 1 5 11 4 1 5 6
4 1 5 7 4 1 5 11
5 11 13 14 5 11 13 15
6 5 7 8 6 5 7 9
6 5 7 10 6 5 11 12
6 5 11 13 7 5 11 12
7 5 11 13 8 7 5 11
9 7 5 11 10 7 5 11
11 13 15 16 11 13 15 17
11 13 15 21 12 11 13 14
12 11 13 15 13 15 17 18
13 15 17 19 13 15 17 20
13 15 21 22 13 15 21 23
14 13 15 16 14 13 15 17
14 13 15 21 15 21 23 24
15 21 23 25 16 15 17 18
16 15 17 19 16 15 17 20
16 15 21 22 16 15 21 23
17 15 21 22 17 15 21 23
18 17 15 21 19 17 15 21
20 17 15 21 21 23 25 26
21 23 25 27 21 23 25 31
22 21 23 24 22 21 23 25
23 25 27 28 23 25 27 29
23 25 27 30 23 25 31 32
23 25 31 33 24 23 25 26
24 23 25 27 24 23 25 31
26 25 27 28 26 25 27 29
26 25 27 30 26 25 31 32
26 25 31 33 27 25 31 32
27 25 31 33 28 27 25 31
29 27 25 31 30 27 25 31
5 !NIMPHI: impropers
11 5 13 12 13 11 15 14
21 15 23 22 23 21 25 24
31 25 33 32
5 !NDON: donors
1 2 1 3 1 4 13 14
23 24
4 !NACC: acceptors
12 11 22 21 32 31 33 31
0 !NNB
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0
9 0 !NGRP NST2
0 2 0 6 1 0 10 1 0
12 1 0 16 1 0 20 1 0
22 1 0 26 1 0 30 2 0
1 !MOLNT
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1
0 0 !NUMLP NUMLPH
1 !NCRTERM: cross-terms
11 13 15 21 13 15 21 23
This diff is collapsed.
This diff is collapsed.
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