def test_set_distance_noadjust(four_particle_45_twist): mol = four_particle_45_twist origpos = mol.positions.copy() olddist = mdt.distance(mol.atoms[1], mol.atoms[2]) mdt.set_distance(mol.atoms[1], mol.atoms[2], 2.0 * olddist, adjustmol=False) assert abs(mdt.distance(mol.atoms[1], mol.atoms[2]) - 2.0 * olddist) <= 1e-9 * u.angstrom assert (origpos[0] == mol.positions[0]).all() and (origpos[-1] == mol.positions[-1]).all()
def test_atomic_distance_measures_are_consistent(objkey, request): mol = request.getfuncargvalue(objkey) distance_array = mol.calc_distance_array() for i, j in itertools.product(xrange(3), xrange(3)): ai, aj = mol.atoms[i], mol.atoms[j] assert ai.distance(aj) == distance_array[i, j] assert mdt.distance(ai, aj) == distance_array[i, j] np.testing.assert_almost_equal(np.sum((ai.position - aj.position)**2).defunits_value(), (distance_array[i, j]**2).defunits_value(), decimal=10)
def test_set_distance_and_adjust(four_particle_45_twist): mol = four_particle_45_twist origpos = mol.positions.copy() distance = mdt.DistanceMonitor(mol.atoms[1], mol.atoms[2]) olddist = distance.value distance.value *= 2.0 displacement = np.sqrt(((origpos[0] - mol.positions[0])**2).sum()) + \ np.sqrt(((origpos[-1] - mol.positions[-1])**2).sum()) assert abs(mdt.distance(mol.atoms[1], mol.atoms[2]) - 2.0 * olddist) <= 1e-9 * u.angstrom assert abs(displacement - olddist) < 1.0e-9 * u.angstrom
def test_atomic_distance_measures_are_consistent(objkey, request): mol = request.getfixturevalue(objkey) distance_array = mol.calc_distance_array() for i, j in itertools.product(range(3), range(3)): ai, aj = mol.atoms[i], mol.atoms[j] assert ai.distance(aj) == distance_array[i, j] assert mdt.distance(ai, aj) == distance_array[i, j] np.testing.assert_almost_equal(np.sum( (ai.position - aj.position)**2).defunits_value(), (distance_array[i, j]**2).defunits_value(), decimal=10)
def distance(self, a1, a2): a1, a2 = list(map(self._get_traj_atom, (a1, a2))) return mdt.distance(a1, a2)