def test_get_virtual_site(self): """Test Topology.virtual_site function (get virtual site from index)""" topology = Topology() topology.add_molecule(self.ethane_from_smiles_w_vsites) assert topology.n_topology_virtual_sites == 2 topology.add_molecule(self.propane_from_smiles_w_vsites) assert topology.n_topology_virtual_sites == 4 with self.assertRaises(Exception) as context: topology_vsite = topology.virtual_site(-1) with self.assertRaises(Exception) as context: topology_vsite = topology.virtual_site(4) topology_vsite1 = topology.virtual_site(0) topology_vsite2 = topology.virtual_site(1) topology_vsite3 = topology.virtual_site(2) topology_vsite4 = topology.virtual_site(3) assert topology_vsite1.type == "BondChargeVirtualSite" assert topology_vsite2.type == "MonovalentLonePairVirtualSite" assert topology_vsite3.type == "MonovalentLonePairVirtualSite" assert topology_vsite4.type == "BondChargeVirtualSite" n_equal_atoms = 0 for topology_atom in topology.topology_atoms: for vsite in topology.topology_virtual_sites: for vsite_atom in vsite.atoms: if topology_atom == vsite_atom: n_equal_atoms += 1 # There are four virtual sites -- Two BondCharges with 2 atoms, and two MonovalentLonePairs with 3 atoms assert n_equal_atoms == 10
def test_topology_virtual_site_particle_start_index(self): topology = Topology() topology.add_molecule(self.propane_from_smiles_w_vsites) assert topology.virtual_site( 0).topology_virtual_particle_start_index == 11 assert topology.virtual_site( 1).topology_virtual_particle_start_index == 13
def test_topology_virtual_site_n_particles(self): """ Test if the virtual sites report the correct number of particles """ topology = Topology() topology.add_molecule(self.propane_from_smiles_w_vsites) assert topology.virtual_site(0).n_particles == 2 assert topology.virtual_site(1).n_particles == 1 topology = Topology() topology.add_molecule(self.tip5_water) assert topology.virtual_site(0).n_particles == 2