Example #1
0
 def test_two_particle_vsite(self):
     """ Tests assignment of 2-particle virtual site """
     struct = pmd.Structure()
     struct.add_atom(pmd.Atom(name='C', atomic_number=6), 'RES', 1)
     struct.add_atom(pmd.Atom(name='C', atomic_number=6), 'RES', 1)
     struct.add_atom(pmd.ExtraPoint(name='EP', atomic_number=0), 'RES', 1)
     struct.bond_types.append(pmd.BondType(10, 1.0))
     struct.bond_types.append(pmd.BondType(10, 0.5))
     struct.bond_types.claim()
     struct.bonds.append(pmd.Bond(struct[0], struct[1],
                                  type=struct.bond_types[0])
     )
     struct.bonds.append(pmd.Bond(struct[1], struct[2],
                                  type=struct.bond_types[1])
     )
     # This should be a two-particle virtual site
     struct.coordinates = [[0, 0, 0], [0, 0, 1], [0, 0, 1.5]]
     system = mm.System()
     system.addParticle(struct[0].mass)
     system.addParticle(struct[1].mass)
     system.addParticle(struct[2].mass)
     struct.omm_set_virtual_sites(system)
     # Make sure the third atom is a virtual site
     self.assertTrue(system.isVirtualSite(2))
     self.assertIsInstance(system.getVirtualSite(2), mm.TwoParticleAverageSite)
def createStructureFromResidue(residue):
    # Create ParmEd structure for residue.
    structure = parmed.Structure()
    for a in residue.atoms():
        if a.element is None:
            atom = parmed.ExtraPoint(name=a.name)
        else:
            atom = parmed.Atom(atomic_number=a.element.atomic_number, name=a.name, mass=a.element.mass)
        structure.add_atom(atom, residue.name, residue.index, 'A')
        atommap[a] = atom
    for a1, a2 in topology.bonds():
        structure.bonds.append(Bond(atommap[a1], atommap[a2]))

    return structure