def test_write_and_read_trivial_trajectories(self): """Ensure write and read trajectory files with single structures.""" # An open-shell single point calculation. data = ccopen("data/ORCA/basicORCA4.2/dvb_sp_un.out").parse() cclib2ase.write_trajectory("dvb_sp_un.traj", data) trajdata = cclib2ase.read_trajectory("dvb_sp_un.traj") assert np.allclose(trajdata.atomcoords, data.atomcoords) assert np.allclose(trajdata.scfenergies, data.scfenergies) # No grads here. assert np.allclose(trajdata.atomnos, data.atomnos) assert np.allclose(trajdata.atommasses, data.atommasses) assert np.allclose(trajdata.natom, data.natom) assert np.allclose(trajdata.charge, data.charge) assert np.allclose(trajdata.mult, data.mult) assert np.allclose(trajdata.moments, data.moments) # No temperature here. # No freeenergy here. assert np.allclose(trajdata.atomcharges["mulliken"], data.atomcharges["mulliken"]) assert np.allclose(trajdata.atomspins["mulliken"], data.atomspins["mulliken"]) # A closed-shell single structure frequency calculation. data = ccopen("data/ORCA/basicORCA4.2/dvb_ir.out").parse() cclib2ase.write_trajectory("dvb_ir.traj", data) trajdata = cclib2ase.read_trajectory("dvb_ir.traj") assert np.allclose(trajdata.atomcoords, data.atomcoords) assert np.allclose(trajdata.scfenergies, data.scfenergies) # No grads here. assert np.allclose(trajdata.atomnos, data.atomnos) assert np.allclose(trajdata.atommasses, data.atommasses) assert np.allclose(trajdata.natom, data.natom) assert np.allclose(trajdata.charge, data.charge, atol=1e-5) assert np.allclose(trajdata.mult, data.mult) assert np.allclose(trajdata.moments, data.moments) # No temperature here. # No freeenergy here. assert np.allclose(trajdata.atomcharges["mulliken"], data.atomcharges["mulliken"])
def test_read_ase_native_trajectory(self): """Ensure we can read ASE native trajectory files.""" trajdata = cclib2ase.read_trajectory("test/bridge/h2o.traj") assert np.allclose(len(trajdata.atomcoords), 7) assert np.allclose( # initial structure trajdata.atomcoords[0], [[0, 0, 0], [1, 0, 0], [0, 1, 0]]) assert np.allclose(trajdata.scfenergies[0], -324.61300863874163) assert np.allclose( # final structure trajdata.atomcoords[-1], [ [0.06884815, 0.06884815, -0.00000000], [1.00852115, -0.07736930, 0.00000000], [-0.07736930, 1.00852115, 0.00000000], ], ) assert np.allclose(trajdata.scfenergies[-1], -324.9073873170798) assert np.allclose(trajdata.atomnos, [8, 1, 1]) assert np.allclose(trajdata.atommasses, [15.999, 1.008, 1.008]) assert np.allclose(trajdata.natom, 3) assert np.allclose(trajdata.charge, 0) assert np.allclose(trajdata.mult, 1)
def test_write_and_read_opt_trajectories(self): """Ensure write and read trajectory files with optimizations.""" # Geometry optimization. data = ccopen("data/ORCA/basicORCA4.2/dvb_gopt.out").parse() cclib2ase.write_trajectory("dvb_gopt.traj", data) trajdata = cclib2ase.read_trajectory("dvb_gopt.traj") assert np.allclose(trajdata.atomcoords, data.atomcoords) assert np.allclose(trajdata.scfenergies, data.scfenergies) assert np.allclose(trajdata.grads, data.grads) assert np.allclose(trajdata.atomnos, data.atomnos) assert np.allclose(trajdata.atommasses, data.atommasses) assert np.allclose(trajdata.natom, data.natom) assert np.allclose(trajdata.charge, data.charge) assert np.allclose(trajdata.mult, data.mult) assert np.allclose(trajdata.moments, data.moments, atol=1e-5) # No temperature here. # No freeenergy here. assert np.allclose(trajdata.atomcharges["mulliken"], data.atomcharges["mulliken"])