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