def setUp(self):
     self.universe = MMTK.InfiniteUniverse(HarmonicForceField())
     self.universe.peptide = Protein('bala1')
     self.emodes = NormalModes.EnergeticModes(self.universe)
     self.rm = RigidMotionSubspace(self.universe,
                                   self.universe.peptide.residues())
     self.pd = PairDistanceSubspace(self.universe, [
         (self.universe.peptide[0][0].O, self.universe.peptide[0][-1].CH3)
     ])
 def test_projections(self):
     universe = MMTK.InfiniteUniverse()
     universe.m1 = MMTK.Molecule('water', position=MMTK.Vector(0., 0., 0.))
     universe.m2 = MMTK.Molecule('water', position=MMTK.Vector(1., 0., 0.))
     rbs = [universe.m1, MMTK.Collection([universe.m2.H1, universe.m2.H2])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s), 11)
     basis = s.getBasis()
     self.assertEqual(len(basis), 11)
     complement = s.complement()
     complement_basis = complement.getBasis()
     self.assertEqual(len(complement_basis),
                      universe.degreesOfFreedom() - 11)
     for rb in rbs:
         for t in [
                 Translation(MMTK.Vector(0.1, -0.2, 1.5)),
                 Rotation(MMTK.Vector(0.3, 1.2, -2.3), 0.001)
         ]:
             d = rb.displacementUnderTransformation(t)
             self.assert_((s.projectionOf(d) - d).norm() < 1.e-7)
             self.assert_(s.projectionComplementOf(d).norm() < 1.e-7)
 def setUp(self):
     self.universe = MMTK.InfiniteUniverse(Amber99ForceField())
     self.universe.peptide = Protein('bala1')
     self.subspace = RigidMotionSubspace(self.universe,
                                         self.universe.peptide.residues())
示例#4
0
from MMTK.Minimization import ConjugateGradientMinimizer
from MMTK.Trajectory import StandardLogOutput

from Scientific import N

# Construct system
universe = InfiniteUniverse(Amber94ForceField())
universe.protein = Protein('bala1')

# Minimize
minimizer = ConjugateGradientMinimizer(universe,
                                       actions=[StandardLogOutput(50)])
minimizer(convergence=1.e-3, steps=10000)

# Set up the subspace: rigid-body translation and rotation for each residue
subspace = RigidMotionSubspace(universe, universe.protein.residues())

# Calculate normal modes
modes = VibrationalModes(universe, subspace=subspace)

# Calculate full  modes for comparison
full_modes = VibrationalModes(universe, subspace=None)

# Compare the modes. For each reduced mode, find the full mode with
# the most similar displacement vector. Print both frequencies and
# the overlap of the displacement vectors.
masses = universe.masses()
for i in range(6, len(modes)):
    m1 = modes[i]
    overlap = []
    for m2 in full_modes:
 def test_lrb(self):
     universe = MMTK.InfiniteUniverse()
     for p in [
             MMTK.Vector(0., 0., 0.),
             MMTK.Vector(1., 0., 0.),
             MMTK.Vector(0., 1., 1.),
             MMTK.Vector(0., 1., 0.),
             MMTK.Vector(1., 0., 1.),
             MMTK.Vector(0., 0., 1.),
             MMTK.Vector(1., 1., 0.),
             MMTK.Vector(1., 1., 1.)
     ]:
         universe.addObject(MMTK.Atom('C', position=p))
     atoms = universe.atomList()
     # all atoms independent
     s = RigidMotionSubspace(universe, atoms)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 3 * len(atoms))
     # 1 rb, four free atoms
     rbs = [MMTK.Collection(atoms[:4])] + atoms[4:]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 6 + 4 * 3)
     # 2 independent rbs with > 2 atoms
     rbs = [MMTK.Collection(atoms[:4]), MMTK.Collection(atoms[4:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 12)
     # 2 independent rbs, one 2 atoms, one 6 atoms
     rbs = [MMTK.Collection(atoms[:6]), MMTK.Collection(atoms[6:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 11)
     # 2 rbs > 2 atoms each, one atom in common
     rbs = [MMTK.Collection(atoms[:5]), MMTK.Collection(atoms[4:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 9)
     # 2 rbs > 2 atoms each, two atoms in common
     rbs = [MMTK.Collection(atoms[:5]), MMTK.Collection(atoms[3:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 7)
     # 2 rbs > 2 atoms each, three atoms in common
     rbs = [MMTK.Collection(atoms[:5]), MMTK.Collection(atoms[2:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 6)
     # 2 rbs with 2 and 7 atoms, one atom in common
     rbs = [MMTK.Collection(atoms[:2]), MMTK.Collection(atoms[1:])]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 8)
     # 3 rbs > 2 atoms each, one atom in common between rb[n] and rb[n+1]
     rbs = [
         MMTK.Collection(atoms[:3]),
         MMTK.Collection(atoms[2:6]),
         MMTK.Collection(atoms[5:])
     ]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 12)
     # 3 rbs > 2 atoms each, one atom in common for each pair
     # (chain of 3 rbs)
     rbs = [
         MMTK.Collection(atoms[:3] + atoms[7:]),
         MMTK.Collection(atoms[2:6]),
         MMTK.Collection(atoms[5:])
     ]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 10)
     # 2 rbs > 2 atoms each, linked by a rigid bond
     rbs = [
         MMTK.Collection(atoms[:4]),
         MMTK.Collection(atoms[3:5]),
         MMTK.Collection(atoms[4:])
     ]
     s = RigidMotionSubspace(universe, rbs)
     self.checkOrthonormality(s)
     self.assertEqual(len(s.getBasis()), 11)
class PeptideNormalModeTest(unittest.TestCase):
    """
    Test mode projections on a subspace
    """
    def setUp(self):
        self.universe = MMTK.InfiniteUniverse(HarmonicForceField())
        self.universe.peptide = Protein('bala1')
        self.emodes = NormalModes.EnergeticModes(self.universe)
        self.rm = RigidMotionSubspace(self.universe,
                                      self.universe.peptide.residues())
        self.pd = PairDistanceSubspace(self.universe, [
            (self.universe.peptide[0][0].O, self.universe.peptide[0][-1].CH3)
        ])

    def test_rmProjections(self):
        p = self.rm.projectionOf(self.emodes.rawMode(6)).norm()
        self.assertAlmostEqual(p, 0.932906130224)
        p = self.rm.projectionOf(self.emodes.rawMode(7)).norm()
        self.assertAlmostEqual(p, 0.946620894164)
        p = self.rm.projectionOf(self.emodes.rawMode(8)).norm()
        self.assertAlmostEqual(p, 0.918711763134)
        p = self.rm.projectionOf(self.emodes.rawMode(9)).norm()
        self.assertAlmostEqual(p, 0.914888590566)
        p = self.rm.projectionOf(self.emodes.rawMode(10)).norm()
        self.assertAlmostEqual(p, 0.954987614764)
        p = self.rm.projectionOf(self.emodes.rawMode(11)).norm()
        self.assertAlmostEqual(p, 0.490550926574)
        p = self.rm.projectionOf(self.emodes.rawMode(12)).norm()
        self.assertAlmostEqual(p, 0.974543149457)
        p = self.rm.projectionOf(self.emodes.rawMode(13)).norm()
        self.assertAlmostEqual(p, 0.902492405825)
        p = self.rm.projectionOf(self.emodes.rawMode(14)).norm()
        self.assertAlmostEqual(p, 0.873380594746)
        p = self.rm.projectionOf(self.emodes.rawMode(15)).norm()
        self.assertAlmostEqual(p, 0.772133237884)
        p = self.rm.projectionOf(self.emodes.rawMode(16)).norm()
        self.assertAlmostEqual(p, 0.883756751312)
        p = self.rm.projectionOf(self.emodes.rawMode(17)).norm()
        self.assertAlmostEqual(p, 0.577569822435)
        p = self.rm.projectionOf(self.emodes.rawMode(18)).norm()
        self.assertAlmostEqual(p, 0.703601140498)
        p = self.rm.projectionOf(self.emodes.rawMode(19)).norm()
        self.assertAlmostEqual(p, 0.341866735125)
        p = self.rm.projectionOf(self.emodes.rawMode(20)).norm()
        self.assertAlmostEqual(p, 0.590049489902)
        p = self.rm.projectionOf(self.emodes.rawMode(21)).norm()
        self.assertAlmostEqual(p, 0.432251617574)
        p = self.rm.projectionOf(self.emodes.rawMode(22)).norm()
        self.assertAlmostEqual(p, 0.245304052688)
        p = self.rm.projectionOf(self.emodes.rawMode(23)).norm()
        self.assertAlmostEqual(p, 0.211381043933)
        p = self.rm.projectionOf(self.emodes.rawMode(24)).norm()
        self.assertAlmostEqual(p, 0.401154809528)
        p = self.rm.projectionOf(self.emodes.rawMode(25)).norm()
        self.assertAlmostEqual(p, 0.161820108479)
        p = self.rm.projectionOf(self.emodes.rawMode(26)).norm()
        self.assertAlmostEqual(p, 0.208594682213)
        p = self.rm.projectionOf(self.emodes.rawMode(27)).norm()
        self.assertAlmostEqual(p, 0.329444853782)
        p = self.rm.projectionOf(self.emodes.rawMode(28)).norm()
        self.assertAlmostEqual(p, 0.335842626795)
        p = self.rm.projectionOf(self.emodes.rawMode(29)).norm()
        self.assertAlmostEqual(p, 0.246955423968)
        p = self.rm.projectionOf(self.emodes.rawMode(30)).norm()
        self.assertAlmostEqual(p, 0.102801852182)
        p = self.rm.projectionOf(self.emodes.rawMode(31)).norm()
        self.assertAlmostEqual(p, 0.0445276342964)
        p = self.rm.projectionOf(self.emodes.rawMode(32)).norm()
        self.assertAlmostEqual(p, 0.0810509154227)
        p = self.rm.projectionOf(self.emodes.rawMode(33)).norm()
        self.assertAlmostEqual(p, 0.166723733735)
        p = self.rm.projectionOf(self.emodes.rawMode(34)).norm()
        self.assertAlmostEqual(p, 0.254081370404)
        p = self.rm.projectionOf(self.emodes.rawMode(35)).norm()
        self.assertAlmostEqual(p, 0.221723386921)
        p = self.rm.projectionOf(self.emodes.rawMode(36)).norm()
        self.assertAlmostEqual(p, 0.133163531911)
        p = self.rm.projectionOf(self.emodes.rawMode(37)).norm()
        self.assertAlmostEqual(p, 0.0662977755488)
        p = self.rm.projectionOf(self.emodes.rawMode(38)).norm()
        self.assertAlmostEqual(p, 0.156961937663)
        p = self.rm.projectionOf(self.emodes.rawMode(39)).norm()
        self.assertAlmostEqual(p, 0.310640400206)
        p = self.rm.projectionOf(self.emodes.rawMode(40)).norm()
        self.assertAlmostEqual(p, 0.424586976986)
        p = self.rm.projectionOf(self.emodes.rawMode(41)).norm()
        self.assertAlmostEqual(p, 0.439565895727)
        p = self.rm.projectionOf(self.emodes.rawMode(42)).norm()
        self.assertAlmostEqual(p, 0.220029858675)
        p = self.rm.projectionOf(self.emodes.rawMode(43)).norm()
        self.assertAlmostEqual(p, 0.26737834485)
        p = self.rm.projectionOf(self.emodes.rawMode(44)).norm()
        self.assertAlmostEqual(p, 0.367708993752)
        p = self.rm.projectionOf(self.emodes.rawMode(45)).norm()
        self.assertAlmostEqual(p, 0.40324227143)
        p = self.rm.projectionOf(self.emodes.rawMode(46)).norm()
        self.assertAlmostEqual(p, 0.192735085639)
        p = self.rm.projectionOf(self.emodes.rawMode(47)).norm()
        self.assertAlmostEqual(p, 0.0840421758091)
        p = self.rm.projectionOf(self.emodes.rawMode(48)).norm()
        self.assertAlmostEqual(p, 0.15035662682)
        p = self.rm.projectionOf(self.emodes.rawMode(49)).norm()
        self.assertAlmostEqual(p, 0.154260578723)
        p = self.rm.projectionOf(self.emodes.rawMode(50)).norm()
        self.assertAlmostEqual(p, 0.125542420544)
        p = self.rm.projectionOf(self.emodes.rawMode(51)).norm()
        self.assertAlmostEqual(p, 0.0451196639208)
        p = self.rm.projectionOf(self.emodes.rawMode(52)).norm()
        self.assertAlmostEqual(p, 0.0458762025086)
        p = self.rm.projectionOf(self.emodes.rawMode(53)).norm()
        self.assertAlmostEqual(p, 0.00887400641221)
        p = self.rm.projectionOf(self.emodes.rawMode(54)).norm()
        self.assertAlmostEqual(p, 0.017086967116)
        p = self.rm.projectionOf(self.emodes.rawMode(55)).norm()
        self.assertAlmostEqual(p, 0.0609002158356)
        p = self.rm.projectionOf(self.emodes.rawMode(56)).norm()
        self.assertAlmostEqual(p, 0.0343388857234)
        p = self.rm.projectionOf(self.emodes.rawMode(57)).norm()
        self.assertAlmostEqual(p, 0.0559503540031)
        p = self.rm.projectionOf(self.emodes.rawMode(58)).norm()
        self.assertAlmostEqual(p, 0.0332620617319)
        p = self.rm.projectionOf(self.emodes.rawMode(59)).norm()
        self.assertAlmostEqual(p, 0.0583023511826)
        p = self.rm.projectionOf(self.emodes.rawMode(60)).norm()
        self.assertAlmostEqual(p, 0.0663342593349)
        p = self.rm.projectionOf(self.emodes.rawMode(61)).norm()
        self.assertAlmostEqual(p, 0.0568833304731)
        p = self.rm.projectionOf(self.emodes.rawMode(62)).norm()
        self.assertAlmostEqual(p, 0.161627264195)
        p = self.rm.projectionOf(self.emodes.rawMode(63)).norm()
        self.assertAlmostEqual(p, 0.1722951381)
        p = self.rm.projectionOf(self.emodes.rawMode(64)).norm()
        self.assertAlmostEqual(p, 0.239075225836)
        p = self.rm.projectionOf(self.emodes.rawMode(65)).norm()
        self.assertAlmostEqual(p, 0.241338995808)

    def test_pdProjections(self):
        p = self.pd.projectionOf(self.emodes.rawMode(6)).norm()
        self.assertAlmostEqual(p, 0.0283570029711)
        p = self.pd.projectionOf(self.emodes.rawMode(7)).norm()
        self.assertAlmostEqual(p, 0.00570349238657)
        p = self.pd.projectionOf(self.emodes.rawMode(8)).norm()
        self.assertAlmostEqual(p, 0.132182279933)
        p = self.pd.projectionOf(self.emodes.rawMode(9)).norm()
        self.assertAlmostEqual(p, 0.372076699964)
        p = self.pd.projectionOf(self.emodes.rawMode(10)).norm()
        self.assertAlmostEqual(p, 0.294163776112)
        p = self.pd.projectionOf(self.emodes.rawMode(11)).norm()
        self.assertAlmostEqual(p, 0.183147528471)
        p = self.pd.projectionOf(self.emodes.rawMode(12)).norm()
        self.assertAlmostEqual(p, 0.0271240228062)
        p = self.pd.projectionOf(self.emodes.rawMode(13)).norm()
        self.assertAlmostEqual(p, 0.178665480086)
        p = self.pd.projectionOf(self.emodes.rawMode(14)).norm()
        self.assertAlmostEqual(p, 0.128834250691)
        p = self.pd.projectionOf(self.emodes.rawMode(15)).norm()
        self.assertAlmostEqual(p, 0.0591397692555)
        p = self.pd.projectionOf(self.emodes.rawMode(16)).norm()
        self.assertAlmostEqual(p, 0.198830357382)
        p = self.pd.projectionOf(self.emodes.rawMode(17)).norm()
        self.assertAlmostEqual(p, 0.0421877341135)
        p = self.pd.projectionOf(self.emodes.rawMode(18)).norm()
        self.assertAlmostEqual(p, 0.00971216016261)
        p = self.pd.projectionOf(self.emodes.rawMode(19)).norm()
        self.assertAlmostEqual(p, 0.0736856356204)
        p = self.pd.projectionOf(self.emodes.rawMode(20)).norm()
        self.assertAlmostEqual(p, 0.114536706027)
        p = self.pd.projectionOf(self.emodes.rawMode(21)).norm()
        self.assertAlmostEqual(p, 0.274928559325)
        p = self.pd.projectionOf(self.emodes.rawMode(22)).norm()
        self.assertAlmostEqual(p, 0.0686378784385)
        p = self.pd.projectionOf(self.emodes.rawMode(23)).norm()
        self.assertAlmostEqual(p, 0.0130940520067)
        p = self.pd.projectionOf(self.emodes.rawMode(24)).norm()
        self.assertAlmostEqual(p, 0.0281201750134)
        p = self.pd.projectionOf(self.emodes.rawMode(25)).norm()
        self.assertAlmostEqual(p, 0.196135377387)
        p = self.pd.projectionOf(self.emodes.rawMode(26)).norm()
        self.assertAlmostEqual(p, 0.0194536676741)
        p = self.pd.projectionOf(self.emodes.rawMode(27)).norm()
        self.assertAlmostEqual(p, 0.0120311581935)
        p = self.pd.projectionOf(self.emodes.rawMode(28)).norm()
        self.assertAlmostEqual(p, 0.0479444837967)
        p = self.pd.projectionOf(self.emodes.rawMode(29)).norm()
        self.assertAlmostEqual(p, 0.113826710408)
        p = self.pd.projectionOf(self.emodes.rawMode(30)).norm()
        self.assertAlmostEqual(p, 0.0346732822148)
        p = self.pd.projectionOf(self.emodes.rawMode(31)).norm()
        self.assertAlmostEqual(p, 0.0693022722289)
        p = self.pd.projectionOf(self.emodes.rawMode(32)).norm()
        self.assertAlmostEqual(p, 0.0427314320652)
        p = self.pd.projectionOf(self.emodes.rawMode(33)).norm()
        self.assertAlmostEqual(p, 0.0145340306202)
        p = self.pd.projectionOf(self.emodes.rawMode(34)).norm()
        self.assertAlmostEqual(p, 0.0655196353298)
        p = self.pd.projectionOf(self.emodes.rawMode(35)).norm()
        self.assertAlmostEqual(p, 0.0446686455027)
        p = self.pd.projectionOf(self.emodes.rawMode(36)).norm()
        self.assertAlmostEqual(p, 0.0447414683339)
        p = self.pd.projectionOf(self.emodes.rawMode(37)).norm()
        self.assertAlmostEqual(p, 0.105694607933)
        p = self.pd.projectionOf(self.emodes.rawMode(38)).norm()
        self.assertAlmostEqual(p, 0.0369811368042)
        p = self.pd.projectionOf(self.emodes.rawMode(39)).norm()
        self.assertAlmostEqual(p, 0.099422515813)
        p = self.pd.projectionOf(self.emodes.rawMode(40)).norm()
        self.assertAlmostEqual(p, 0.214824447562)
        p = self.pd.projectionOf(self.emodes.rawMode(41)).norm()
        self.assertAlmostEqual(p, 0.0113247783174)
        p = self.pd.projectionOf(self.emodes.rawMode(42)).norm()
        self.assertAlmostEqual(p, 0.0428190611544)
        p = self.pd.projectionOf(self.emodes.rawMode(43)).norm()
        self.assertAlmostEqual(p, 0.0395942495882)
        p = self.pd.projectionOf(self.emodes.rawMode(44)).norm()
        self.assertAlmostEqual(p, 0.184574456157)
        p = self.pd.projectionOf(self.emodes.rawMode(45)).norm()
        self.assertAlmostEqual(p, 0.0389662995269)
        p = self.pd.projectionOf(self.emodes.rawMode(46)).norm()
        self.assertAlmostEqual(p, 0.0443754728854)
        p = self.pd.projectionOf(self.emodes.rawMode(47)).norm()
        self.assertAlmostEqual(p, 0.0189823224475)
        p = self.pd.projectionOf(self.emodes.rawMode(48)).norm()
        self.assertAlmostEqual(p, 0.106332137903)
        p = self.pd.projectionOf(self.emodes.rawMode(49)).norm()
        self.assertAlmostEqual(p, 0.182336029271)
        p = self.pd.projectionOf(self.emodes.rawMode(50)).norm()
        self.assertAlmostEqual(p, 0.222418516151)
        p = self.pd.projectionOf(self.emodes.rawMode(51)).norm()
        self.assertAlmostEqual(p, 0.208379764186)
        p = self.pd.projectionOf(self.emodes.rawMode(52)).norm()
        self.assertAlmostEqual(p, 0.161707260103)
        p = self.pd.projectionOf(self.emodes.rawMode(53)).norm()
        self.assertAlmostEqual(p, 0.29786008418)
        p = self.pd.projectionOf(self.emodes.rawMode(54)).norm()
        self.assertAlmostEqual(p, 0.00783831845487)
        p = self.pd.projectionOf(self.emodes.rawMode(55)).norm()
        self.assertAlmostEqual(p, 0.0265930190584)
        p = self.pd.projectionOf(self.emodes.rawMode(56)).norm()
        self.assertAlmostEqual(p, 0.00543966569196)
        p = self.pd.projectionOf(self.emodes.rawMode(57)).norm()
        self.assertAlmostEqual(p, 0.00405705977917)
        p = self.pd.projectionOf(self.emodes.rawMode(58)).norm()
        self.assertAlmostEqual(p, 0.0622064557348)
        p = self.pd.projectionOf(self.emodes.rawMode(59)).norm()
        self.assertAlmostEqual(p, 0.0489324788794)
        p = self.pd.projectionOf(self.emodes.rawMode(60)).norm()
        self.assertAlmostEqual(p, 0.199110460545)
        p = self.pd.projectionOf(self.emodes.rawMode(61)).norm()
        self.assertAlmostEqual(p, 0.148263694589)
        p = self.pd.projectionOf(self.emodes.rawMode(62)).norm()
        self.assertAlmostEqual(p, 0.14306616768)
        p = self.pd.projectionOf(self.emodes.rawMode(63)).norm()
        self.assertAlmostEqual(p, 0.0798824699709)
        p = self.pd.projectionOf(self.emodes.rawMode(64)).norm()
        self.assertAlmostEqual(p, 0.021465578636)
        p = self.pd.projectionOf(self.emodes.rawMode(65)).norm()
        self.assertAlmostEqual(p, 0.0166782530763)