def test_write_pdb(): # TODO: get absolute path so we can use `tempfolder` # if not: wrong dir if using TrajectoryIterator traj = pt.iterload(tc5b_trajin, tc5b_top)[:] TrajectoryWriter() # multiple pdb in multiple files, using `save` method in traj with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = pt.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) # multiple pdb in multiple files, using `pt.write_traj` with tempfolder(): basename = "test_pdb_files_pt_write_traj.pdb" pt.write_traj(basename, traj, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = pt.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) with pytest.raises(IOError): # write files again, raise if file exists pt.write_traj(basename, traj, overwrite=False, options="multi") # keepext with tempfolder(): basename = 'test_pdb_files_pt_write_traj.pdb' basename2 = 'test_pdb_files_pt_write_traj' pt.write_traj(basename, traj, overwrite=True, options="multi keepext") for i in range(10): fname = "{}.{}.pdb".format(basename2, i + 1) frame = pt.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) with pytest.raises(IOError): pt.write_traj(basename, traj, overwrite=False, options="multi keepext") # multiple pdb in SINGLE file with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True) traj2 = pt.load(basename, traj.top) aa_eq(traj.xyz, traj2.xyz) # multiple pdb in SINGLE file with `model` keyword # write to output so we can manually check basename = "test_pdb_files_model.pdb" with tempfolder(): traj.save(basename, overwrite=True, options='model') traj3 = pt.load(basename, traj.top) aa_eq(traj.xyz, traj3.xyz)
def test_split_and_write_traj(self): traj = pt.iterload([fn('Tc5b.x'), fn('Tc5b.x')], fn('Tc5b.top')) # duplcate assert traj.n_frames == 20 top = traj.top with tempfolder(): # test TrajectoryIterator object pt.tools.split_and_write_traj(traj, n_chunks=4, root_name='trajiterx', overwrite=True) flist = sorted(glob("trajiterx*")) traj4 = pt.iterload(flist, top) aa_eq(traj4.xyz, traj.xyz) # dcd ext pt.tools.split_and_write_traj(traj, 4, root_name='ts', ext='dcd', overwrite=True) flist = sorted(glob("ts.*.dcd")) traj4 = pt.iterload(flist, top) aa_eq(traj4.xyz, traj.xyz)
def test_write_xyz(self): xyz = self.traj.xyz fname = 'test_xyz.nc' with tempfolder(): pt.write_traj(fname, xyz, top=self.traj.top, overwrite=True) t0 = pt.iterload(fname, top=self.traj.top) aa_eq(self.traj.xyz, t0.xyz)
def test_trajectory_writer(): traj = pt.iterload(tc5b_trajin, tc5b_top) with tempfolder(): pt.write_traj("test_1.pdb", traj[0], top=traj.top, overwrite=True) pt.write_traj("test_1.dcd", traj[0], top=traj.top, overwrite=True) with TrajectoryWriter("test_1", overwrite=True) as trajout: trajout.write(traj[0])
def test_write_CRYST1(): traj = pt.datafiles.load_tz2_ortho()[:1] print(traj.unitcells) with tempfolder(): fn = "test.pdb" traj.save(fn) traj2 = pt.load(fn) aa_eq(traj.unitcells, traj2.unitcells, decimal=3)
def test_spam(): # FIXME: assert? peaks_xyz = os.path.join(cpptraj_test_dir, 'Test_SPAM', 'peaks.xyz') command = """ parm {} trajin {} autoimage spam {} name SPAM cut 12.0 info spam.info out spam.dat reorder \ summary summary.dat trajout test.mdcrd onlyframes 1-2 """.format(tz2_truncoct_top, tz2_truncoct_trajin, peaks_xyz) state = pt.load_cpptraj_state(command) with tempfolder(): state.run() traj = pt.iterload(tz2_truncoct_trajin, tz2_truncoct_top) # cm = 'SPAM cut 12.0 info spam.info out spam.dat reorder summary summary.dat' cm = 'SPAM cut 12.0 reorder' with tempfolder(): spam_out = pt.spam(traj, peak_file=peaks_xyz, command=cm)
def example_write_pdb(): traj = pt.iterload("../tests/data/Tc5b.x", "../tests/data/Tc5b.top") # multiple pdb in multiple files, using `save` method in traj with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True, options="multi") # multiple pdb in multiple files, using `pt.io.write_traj` with tempfolder(): basename = "test_pdb_files_pt.io_write_traj.pdb" pt.io.write_traj(basename, traj, overwrite=True, options="multi") # multiple pdb in SINGLE file with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True) # multiple pdb in SINGLE file with `optionsl` keyword # write to output so we can manually check with tempfolder(): basename = "test_pdb_files_model.pdb" traj.save(basename, overwrite=True, options='model')
def test_1(self): # TODO: get absolute path so we can use `tempfolder` # if not: wrong dir if using TrajectoryIterator traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")[:] trajout = TrajectoryWriter() # multiple pdb in multiple files, using `save` method in traj with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = mdio.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) # multiple pdb in multiple files, using `mdio.write_traj` with tempfolder(): basename = "test_pdb_files_mdio_write_traj.pdb" mdio.write_traj(basename, traj, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = pt.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) # multiple pdb in SINGLE file with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True) traj2 = mdio.load(basename, traj.top) aa_eq(traj.xyz, traj2.xyz) # multiple pdb in SINGLE file with `model` keyword # write to output so we can manually check basename = "./output/test_pdb_files_model.pdb" traj.save(basename, overwrite=True, options='model') traj3 = mdio.load(basename, traj.top) aa_eq(traj.xyz, traj3.xyz)
def test_1(self): # TODO: get absolute path so we can use `tempfolder` # if not: wrong dir if using TrajectoryIterator traj = mdio.iterload("../tests/data/Tc5b.x", "../tests/data/Tc5b.top")[:] trajout = TrajectoryWriter() # multiple pdb in multiple files, using `save` method in traj with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = mdio.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) # multiple pdb in multiple files, using `mdio.write_traj` with tempfolder(): basename = "test_pdb_files_mdio_write_traj.pdb" mdio.write_traj(basename, traj, overwrite=True, options="multi") for i in range(10): fname = basename + "." + str(i + 1) # cpptraj use `1` frame = mdio.iterload(fname, traj.top)[0] aa_eq(frame.xyz, traj[i].xyz) # multiple pdb in SINGLE file with tempfolder(): basename = "test_pdb_files.pdb" traj.save(basename, overwrite=True) traj2 = mdio.load(basename, traj.top) aa_eq(traj.xyz, traj2.xyz) # multiple pdb in SINGLE file with `optionsl` keyword # write to output so we can manually check basename = "./output/test_pdb_files_model.pdb" traj.save(basename, overwrite=True, options='model') traj3 = mdio.load(basename, traj.top) aa_eq(traj.xyz, traj3.xyz)
def test_cluster_hieragglo(): command = """ parm {} trajin {} createcrd crd1 cluster crdset crd1 C0 !@H hieragglo epsilon 0.8 averagelinkage """.format(tz2_top, tz2_trajin) with tempfolder(): state = pt.load_cpptraj_state(command) with capture_stdout() as (cpp_out, _): state.run() traj = pt.iterload(tz2_trajin, tz2_top) data = pt.cluster.hieragglo(traj, mask='!@H=', options='epsilon 0.8 averagelinkage') aa_eq(state.data[-2], data.cluster_index)
def test_cluster_dbscan(): command = """ parm {} trajin {} createcrd crd1 cluster crdset crd1 C0 @CA dbscan epsilon 1.7 minpoints 5 """.format(tz2_top, tz2_trajin) with tempfolder(): state = pt.load_cpptraj_state(command) with capture_stdout() as (out, _): state.run() traj = pt.iterload(tz2_trajin, tz2_top) data = pt.cluster.dbscan(traj, mask='@CA', options='epsilon 1.7 minpoints 5') aa_eq(state.data[-2], data.cluster_index)
def test_matrix(self): import numpy as np from pytraj import ArgList from pytraj import matrix as ma from pytraj.externals.six import iteritems matrix_test_dir = cpptraj_test_dir + "/Test_Matrix/" top_file = matrix_test_dir + "/1rrb_vac.prmtop" crd_file = matrix_test_dir + "/1rrb_vac.mdcrd" traj = pt.iterload(crd_file, top_file) with tempfolder(): state = pt.load_cpptraj_state(all_commands, traj) state.run() state_byres = pt.load_batch(traj, byres_cm) state_byres.run() byres_matlist = [] # no byres keyword for idx, line in enumerate(command_list): arg = ArgList(line) # get function act_key = arg.get_string_key("matrix") slist = arg.get_string_key('out').split(".") mask = arg.get_next_mask() fname = ".".join((slist[0], slist[-1], slist[1])) # get correct name func = ma.__dict__[act_key] # get command command = line.split(act_key)[1] matout = func(traj, command, dtype='ndarray') # cpptraj output has only 3 digits after decimal if 'byres' not in command: aa_eq(matout.flatten(), state.data[idx + 1].values) else: # save data for asserting later byres_matlist.append(matout) byres_arr = np.array(byres_matlist, dtype='f8') # only take byres datasets saved_matbyres = state_byres.data[[1, 3]].values aa_eq(byres_arr, saved_matbyres)
def test_regular(self): traj = self.traj.copy() assert traj[0].has_box() == True with tempfolder(): # write traj with nobox info fname = "traj_nobox.nc" pt.write_traj(fname, traj, options='nobox') t = pt.load(fname, traj.top) assert t[0].has_box() == False aa_eq(t.xyz, traj.xyz) # write from frame_iter, need to provide top fname = "traj_frame_iter.nc" # raise ValueError if there is no Topology pt.write_traj(fname, traj(), top=traj.top, overwrite=True) t = pt.iterload(fname, traj.top) aa_eq(t.xyz, traj.xyz)
def test_superpose_trajectory_iterator_pytraj_method(self): traj_on_disk = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) traj_on_disk2 = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) traj_on_mem = pt.load(fn('Tc5b.x'), fn('Tc5b.top')) ref = pt.iterload(fn("Tc5b.crd"), fn('Tc5b.top'))[0] pt.superpose(traj_on_mem, ref=ref, mask='@CA') pt.superpose(traj_on_disk, ref=ref, mask='@CA') assert traj_on_disk._being_transformed == True, '_being_transformed must be True' aa_eq(traj_on_mem.xyz, traj_on_disk.xyz) # test saving with tempfolder(): traj_on_mem.save('t0.nc', overwrite=True) traj_on_disk.save('t1.nc', overwrite=True) aa_eq( pt.load('t0.nc', traj_on_mem.top).xyz, pt.load('t1.nc', traj_on_disk.top).xyz) # turn off superpose traj_on_disk._being_transformed = False aa_eq(traj_on_disk.xyz, traj_on_disk2.xyz)