def test_one(xyz_fn, checks, reorder=False): mol = Molecule.from_file(xyz_fn) mol.set_default_graph() zmat_gen = ZMatrixGenerator(mol.graph) if reorder is False: self.assertArraysEqual(zmat_gen.new_index, numpy.arange(mol.size)) self.assertArraysEqual(zmat_gen.old_index, numpy.arange(mol.size)) zmat0 = zmat_gen.cart_to_zmat(mol.coordinates) for field, index, value in checks: self.assertAlmostEqual(zmat0[field][index], value, 2, "%s:%i %f!=%f" % (field,index,zmat0[field][index],value)) numbers0, coordinates0 = zmat_to_cart(zmat0) mol0 = Molecule(numbers0, coordinates0) mol0.write_to_file("output/zmat_%s" % os.path.basename(xyz_fn)) mol0.set_default_graph() zmat_gen0 = ZMatrixGenerator(mol0.graph) self.assertArraysEqual(zmat_gen0.new_index, numpy.arange(mol.size)) self.assertArraysEqual(zmat_gen0.old_index, numpy.arange(mol.size)) zmat1 = zmat_gen0.cart_to_zmat(mol0.coordinates) for field, index, value in checks: self.assertAlmostEqual(zmat1[field][index], value, 2, "%s:%i %f!=%f" % (field,index,zmat1[field][index],value)) numbers1, coordinates1 = zmat_to_cart(zmat1) self.assertArraysEqual(numbers0, numbers1) self.assertArraysAlmostEqual(coordinates0, coordinates1, 1e-5)
def test_one(xyz_fn, checks, reorder=False): mol = XYZFile(xyz_fn).get_molecule() graph = MolecularGraph.from_geometry(mol) zmat_gen = ZMatrixGenerator(graph) if reorder is False: self.assertArraysEqual(zmat_gen.new_index, numpy.arange(mol.size)) self.assertArraysEqual(zmat_gen.old_index, numpy.arange(mol.size)) zmat0 = zmat_gen.cart_to_zmat(mol.coordinates) for field, index, value in checks: self.assertAlmostEqual(zmat0[field][index], value, 2, "%s:%i %f!=%f" % (field,index,zmat0[field][index],value)) numbers0, coordinates0 = zmat_to_cart(zmat0) mol0 = Molecule(numbers0, coordinates0) mol0.write_to_file("output/zmat_%s" % os.path.basename(xyz_fn)) graph0 = MolecularGraph.from_geometry(mol0) zmat_gen0 = ZMatrixGenerator(graph0) self.assertArraysEqual(zmat_gen0.new_index, numpy.arange(mol.size)) self.assertArraysEqual(zmat_gen0.old_index, numpy.arange(mol.size)) zmat1 = zmat_gen0.cart_to_zmat(mol0.coordinates) for field, index, value in checks: self.assertAlmostEqual(zmat1[field][index], value, 2, "%s:%i %f!=%f" % (field,index,zmat1[field][index],value)) numbers1, coordinates1 = zmat_to_cart(zmat1) self.assertArraysEqual(numbers0, numbers1) self.assertArraysAlmostEqual(coordinates0, coordinates1, 1e-5)