def test_1(self): # just need to install libcpptraj with openmp # that's it # export OMP_NUM_THREADS=1 # python ./test_openmp_0.py # export OMP_NUM_THREADS=8 # python ./test_openmp_0.py dslist = DatasetList() dflist = DataFileList() traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) dslist.add("coords", "test_traj") dslist[0].top = traj.top for i in range(45): dslist[0].load(traj.filename) act = Analysis_Rms2d() with Timer() as t: act("crdset test_traj rmsout ./output/_test_2drms_CRDtest.openmp.dat", dslist=dslist, dflist=dflist) # make sure to reproduce cpptraj to avoif false-impression :D import numpy as np matout = dslist[-1].get_full_matrix() tmp = np.loadtxt("./data/test_openmp.Tc5b.n_threads_1.dat", skiprows=1, usecols=range(1, dslist[0].size + 1)) cpp_save = tmp.flatten() # use decimal = 3 to mathc cpptraj's format here assert_almost_equal(cpp_save, matout, decimal=3)
def test_0(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") itertraj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") for idx, (f0, f1) in enumerate(izip(traj, itertraj)): assert_almost_equal(f0.xyz, f1.xyz) assert idx == traj.n_frames - 1
def test_1(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") i = 0 for farray in traj.iterchunk(chunksize=4, stop=8): i += 1 assert i == 2 i = 0 for farray in traj.iterchunk(chunksize=4): i += 1 assert i == 3 i = 0 for farray in traj.iterchunk(chunksize=2): i += 1 assert i == 5 i = 0 for farray in traj.iterchunk(start=3, chunksize=4, stop=8): i += 1 assert i == 2 # action on chunk_iter pt.calc_distance( [traj.iterchunk(), traj.iterchunk(), traj[0]], '@CA @CB', top=traj.top) rmsd0 = pt.rmsd(traj.iterchunk(3), ref=traj[-1], top=traj.top) rmsd1 = pt.rmsd(traj, ref=-1) assert_almost_equal(rmsd0, rmsd1)
def test_1(self): traj = mdio.iterload(fn('Tc5b.x'), fn('Tc5b.top')) i = 0 for farray in traj.iterchunk(chunksize=4, stop=8): i += 1 assert i == 2 i = 0 for farray in traj.iterchunk(chunksize=4): i += 1 assert i == 3 i = 0 for farray in traj.iterchunk(chunksize=2): i += 1 assert i == 5 i = 0 for farray in traj.iterchunk(start=3, chunksize=4, stop=8): i += 1 assert i == 2 # action on chunk_iter pt.calc_distance( [traj.iterchunk(), traj.iterchunk(), traj[0]], '@CA @CB', top=traj.top) rmsd0 = pt.rmsd(traj.iterchunk(3), ref=traj[-1], top=traj.top) rmsd1 = pt.rmsd(traj, ref=-1) assert_almost_equal(rmsd0, rmsd1)
def test_IterWithMask(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) farray = traj[:] for frame in farray(mask='@CA'): pass f0 = traj[-1] f0.strip(traj.top('!@CA')) assert_almost_equal(f0.xyz, frame.xyz)
def test_IterWithMask(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") farray = traj[:] for frame in farray(mask='@CA'): pass f0 = traj[-1] f0.strip(traj.top('!@CA')) assert_almost_equal(f0.xyz, frame.xyz)
def test_0(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") top = traj.top mlist = [] for atom in top: mlist.append(atom.mass) mlist = array('d', mlist) assert_almost_equal(top.mass, mlist)
def test_1(self): # why Trajectory is here? because I am lazy to move mask = "@CA" # creat Trajectory ( [:] ) traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))[:] traj.top atm = traj.top(mask) newtraj = traj[atm] newtraj2 = traj[mask + ' :frame'] assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten())
def test_1(self): # why Trajectory is here? because I am lazy to move mask = "@CA" # creat Trajectory ( [:] ) traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")[:] top = traj.top atm = traj.top(mask) newtraj = traj[atm] newtraj2 = traj[mask + ' :frame'] assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten())
def test_2(self): from pytraj import iterframe_master as frame_iter traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) farray = traj[:] count = 0 for frame in frame_iter(traj): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz) count = 0 for frame in frame_iter(farray): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz)
def test_2(self): from pytraj import iterframe_master as frame_iter traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") farray = traj[:] count = 0 for frame in frame_iter(traj): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz) count = 0 for frame in frame_iter(farray): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz)
def test_0(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) farray = traj[:] traj0_CA = traj[:] traj0_CA.strip("!@CA") # test TrajectoryIterator for idx, f0 in enumerate(traj(mask='@CA')): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test TrajectoryIterator with indices as mask indices = traj.top("@CA").indices for idx, f0 in enumerate(traj(mask=indices)): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test Trajectory for idx, f0 in enumerate(farray(mask='@CA')): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test Trajectory with indices for idx, f0 in enumerate(farray(mask=indices)): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) assert idx + 1 == traj0_CA.n_frames
def test_0(self): traj = mdio.iterload("data/Tc5b.x", "data/Tc5b.top") farray = traj[:] traj0_CA = traj[:] traj0_CA.strip("!@CA") # test TrajectoryIterator for idx, f0 in enumerate(traj(mask='@CA')): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test TrajectoryIterator with indices as mask indices = traj.top("@CA").indices for idx, f0 in enumerate(traj(mask=indices)): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test Trajectory for idx, f0 in enumerate(farray(mask='@CA')): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) # test Trajectory with indices for idx, f0 in enumerate(farray(mask=indices)): f1 = traj0_CA[idx] assert_almost_equal(f0.xyz, f1.xyz) assert idx + 1 == traj0_CA.n_frames
def test_0(self): dslist = CpptrajDatasetList() traj = mdio.iterload(fn('Tc5b.x'), fn('Tc5b.top')) calc_distance = adict['distance'] act = calc_distance act.read_input(":2@CA :10@CA", traj.top, dslist=dslist) act.setup(traj.top) act.compute((traj.iterchunk(2), )) assert dslist.size == 1 assert dslist[0].size == traj.n_frames cppout = np.loadtxt( fn('CAres2_CAres10.Tc5b.dat'), skiprows=1).transpose()[1] assert_almost_equal(dslist[0][:], cppout) act.compute((traj.iterchunk(chunksize=4, stop=8), ))
def test_0(self): dslist = DatasetList() traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") calc_distance = adict['distance'] act = calc_distance act.read_input(":2@CA :10@CA", traj.top, dslist=dslist) act.check_topology(traj.top) act.compute((traj.iterchunk(2), )) assert dslist.size == 1 assert dslist[0].size == traj.n_frames cppout = np.loadtxt("./data/CAres2_CAres10.Tc5b.dat", skiprows=1).transpose()[1] assert_almost_equal(dslist[0][:], cppout) act.compute((traj.iterchunk(chunksize=4, stop=8), ))
def test_0(self): mask = "@CA" traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) traj.top atm = traj.top(mask) n_selected_atoms = atm.n_atoms newtraj = traj[atm] newtraj2 = traj[mask + ' :frame'] assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert (newtraj.xyz.shape == (traj.n_frames, n_selected_atoms, 3)) # check if there is segmentation fault i = 0 for frame in traj: i += 1
def test_0(self): mask = "@CA" traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") top = traj.top atm = traj.top(mask) n_selected_atoms = atm.n_atoms newtraj = traj[atm] newtraj2 = traj[mask + ' :frame'] assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert_almost_equal(newtraj2.xyz.flatten(), newtraj.xyz.flatten()) assert (newtraj.xyz.shape == (traj.n_frames, n_selected_atoms, 3)) # check if there is segmentation fault i = 0 for frame in traj: i += 1
def get_frames_same_T(): # create a list of all remd trajs flist = glob("../tests/data/Test_RemdTraj/rem.nc.*") # make a list of TrajReadOnly instances trajlist = [] for fh in flist: topfile = "../tests/data/Test_RemdTraj/ala2.99sb.mbondi2.parm7" # load trajectory and append to trajlist trajlist.append(mdio.load(fh, topfile)) # make Trajectory instance that holds 492.2 T frames # we need to reserve n_frames to hold the data f4922 = Trajectory(n_frames=trajlist[0].n_frames) assert f4922.n_frames == trajlist[0].n_frames f4922.top = trajlist[0].top.copy() # extract frames having T = 492.2 # use iteration for nested loops for traj in trajlist: for idx, frame in enumerate(traj): if frame.temperature == 492.2: # we don't use `append` method since we want to make sure # frames are in the order of simulation time f4922[idx] = frame # make sure f4922 only hold frames having T = 492.2 K arr0 = array( 'd', [492.2, 492.2, 492.2, 492.2, 492.2, 492.2, 492.2, 492.2, 492.2, 492.2]) assert f4922.temperatures == arr0 # make sure we reproduce cpptraj output cpptraj = mdio.load("../tests/data/Test_RemdTraj/temp0.crd.492.20", topfile) print(f4922[5].coords[:10]) print(cpptraj[5].coords[:10]) for idx, framepy in enumerate(f4922): assert_almost_equal(framepy.coords, cpptraj[idx].coords) print("rmsd between pytraj Frame and cpptraj Frame = %s " % framepy.rmsd(cpptraj[idx])) # FIXME: `rmsd` do the fitting in the fly # coords of frame would be changed print("YES, we can reproduce cpptraj output")
def test_0(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") frame = traj[0].copy() frame.set_mass(traj.top) arr0 = [] for f0 in traj: f0.set_mass(traj.top) arr0.append(frame.rmsd(f0, use_mass=True)) # load cpptraj output rmsd_save = np.loadtxt("./data/rmsd_allatoms_to_1st.Tc5b.use_mass.dat", skiprows=1) rmsd_save = rmsd_save.transpose() assert_almost_equal(arr0, rmsd_save[1])
def test_0(self): traj = mdio.iterload(fn('Tc5b.x'), fn('Tc5b.top')) frame = traj[0].copy() frame.set_mass(traj.top) arr0 = [] for f0 in traj: f0.set_mass(traj.top) arr0.append(frame.rmsd(f0, use_mass=True)) # load cpptraj output rmsd_save = np.loadtxt(fn("rmsd_allatoms_to_1st.Tc5b.use_mass.dat"), skiprows=1) rmsd_save = rmsd_save.transpose() assert_almost_equal(arr0, rmsd_save[1])
def test_1(self): # just need to install libcpptraj with openmp # that's it # export OMP_NUM_THREADS=1 # python ./test_openmp_0.py # export OMP_NUM_THREADS=8 # python ./test_openmp_0.py dslist = DatasetList() dflist = DataFileList() trajin = "./data/Tc5b.x" traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") dslist.add(dtype="coords", name="test_traj") dslist[0].top = traj.top for i in range(45): dslist[0].load(traj.filename) act = Analysis_Rms2d() @Timer() def test_time(): act("crdset test_traj rmsout ./output/_test_2drms_CRDtest.openmp.dat", dslist=dslist, dflist=dflist) test_time() # make sure to reproduce cpptraj to avoif false-impression :D import numpy as np matout = dslist[-1].get_full_matrix() tmp = np.loadtxt("./data/test_openmp.Tc5b.n_threads_1.dat", skiprows=1, usecols=range(1, dslist[0].size + 1)) cpp_save = tmp.flatten() assert_almost_equal(cpp_save, matout, decimal=3)
def test_4(self): from array import array atm = AtomMask() indices = array('i', range(100)) atm.add_selected_indices(indices) assert_almost_equal(indices, atm.selected_indices()) assert_almost_equal(indices, atm.indices) # test list atm2 = AtomMask(list(indices)) assert_almost_equal(indices, atm2.indices) # test range range(100) atm3 = AtomMask(range(100)) assert_almost_equal(indices, atm3.indices)
def test_4(self): from array import array atm = AtomMask() indices = array('i', range(100)) atm.add_selected_indices(indices) assert_almost_equal(indices, atm.selected_indices()) assert_almost_equal(indices, atm.indices) # test list atm2 = AtomMask(list(indices)) assert_almost_equal(indices, atm2.indices) # test range r100 = range(100) atm3 = AtomMask(range(100)) assert_almost_equal(indices, atm3.indices)
def test_1(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") top2 = traj.top.copy() for frame in traj(mask='@CA'): pass top2.strip("!@CA") assert frame.n_atoms == top2.n_atoms for frame in traj(): pass assert frame.n_atoms == traj[0].n_atoms for frame in traj[:](mask='@CA'): pass f0 = traj[-1] f0.strip(traj.top('!@CA')) assert_almost_equal(f0.xyz, frame.xyz) assert frame.n_atoms == top2.n_atoms for frame in traj[:](): pass assert frame.n_atoms == traj[0].n_atoms
def test_0(self): flist = glob("./data/Test_RemdTraj/rem.nc.*") trajlist = [] for fh in flist: topfile = "./data/Test_RemdTraj/ala2.99sb.mbondi2.parm7" trajlist.append(mdio.iterload(fh, topfile)) Tset = set([]) f4922 = Trajectory() f4922._allocate(trajlist[0].n_frames, trajlist[0].n_atoms) f4922.top = trajlist[0].top.copy() for traj in trajlist: for idx, frame in enumerate(traj): if frame.temperature == 492.2: f4922[idx] = frame # make sure we reproduce cpptraj output cpptraj = mdio.iterload("./data/Test_RemdTraj/temp0.crd.492.20", topfile) for idx, framepy in enumerate(f4922): assert_almost_equal(framepy.xyz, cpptraj[idx].xyz, decimal=3)
def test_1(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) top2 = traj.top.copy() for frame in traj(mask='@CA'): pass top2.strip("!@CA") assert frame.n_atoms == top2.n_atoms for frame in traj(): pass assert frame.n_atoms == traj[0].n_atoms for frame in traj[:](mask='@CA'): pass f0 = traj[-1] f0.strip(traj.top('!@CA')) assert_almost_equal(f0.xyz, frame.xyz) assert frame.n_atoms == top2.n_atoms for frame in traj[:](): pass assert frame.n_atoms == traj[0].n_atoms
def test_0(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") farray = traj[:] xyz_save = farray[0].xyz.copy() farray[9].xyz[:] = farray[0].xyz assert_almost_equal(farray[9].xyz, farray[0].xyz) assert_almost_equal(farray[9].xyz, xyz_save.flatten()) f0 = Frame(traj.n_atoms) f0.xyz[:] = farray[0].xyz f1 = Frame() f1.append_xyz(farray[0].xyz) assert_almost_equal(f1.xyz, farray[0].xyz)
def test_0(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) farray = traj[:] xyz_save = farray[0].xyz.copy() farray[9].xyz[:] = farray[0].xyz assert_almost_equal(farray[9].xyz, farray[0].xyz) assert_almost_equal(farray[9].xyz, xyz_save.flatten()) f0 = Frame(traj.n_atoms) f0.xyz[:] = farray[0].xyz f1 = Frame() f1.append_xyz(farray[0].xyz) assert_almost_equal(f1.xyz, farray[0].xyz)
def test_3(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) count = 0 for frame in traj.iterframe(): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz) count = 0 for frame in traj.iterframe(2, 8, 2): count += 1 assert count == 3 assert_almost_equal(frame.xyz, traj[6].xyz) count = 0 for frame in traj[:].iterframe(): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz)
def test_3(self): from pytraj import iterframe_master as frame_iter traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") count = 0 for frame in traj.iterframe(): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz) count = 0 for frame in traj.iterframe(2, 8, 2): count += 1 assert count == 3 assert_almost_equal(frame.xyz, traj[6].xyz) count = 0 for frame in traj[:].iterframe(): count += 1 assert_almost_equal(frame.xyz, traj[-1].xyz)
def test_0(self): traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top") farray = traj[:] for i, f0 in enumerate(traj): for j, x in enumerate(f0.xyz): if np.all(np.abs(x - 5.707) < 1E-3): pass for frame in traj.iterframe(): pass for frame0 in farray.iterframe(): pass i = 0 for frame0 in farray.iterframe(start=0, step=1): i += 1 assert_almost_equal(traj[-1].xyz, frame0.xyz) start, stop, step = 2, 8, 4 indices = list(range(start, stop, step)) for idx, frame0, f in zip(indices, farray.iterframe(start, stop, step), traj[indices]): aa_eq(frame0.xyz, f.xyz) assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in farray.iterframe(start=2, step=2): pass assert_almost_equal(traj[8].xyz, frame0.xyz) arr0 = traj[6][0] for frame0 in traj.iterframe(start=2, step=4, stop=8): pass for frame0 in traj.iterframe(start=2, step=4, stop=8): pass assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in traj.iterframe(start=2, step=2): pass assert_almost_equal(traj[8].xyz, frame0.xyz) count = 0 for frame0 in traj.iterframe(start=2): count += 1 assert_almost_equal(traj[-1].xyz, frame0.xyz) count = 0 for frame0 in traj.iterframe(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in traj.iterframe(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in farray.iterframe(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in traj(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in farray(): pass assert_almost_equal(farray[-1].xyz, frame0.xyz) count = 0 for frame0 in traj(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(2, 7, 1): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(2, 7, 2): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz)
def test_0(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) farray = traj[:] for i, f0 in enumerate(traj): for j, x in enumerate(f0.xyz): if np.all(np.abs(x - 5.707) < 1E-3): pass for frame in traj.iterframe(): pass for frame0 in farray.iterframe(): pass i = 0 for frame0 in farray.iterframe(start=0, step=1): i += 1 assert_almost_equal(traj[-1].xyz, frame0.xyz) start, stop, step = 2, 8, 4 indices = list(range(start, stop, step)) for idx, frame0, f in zip(indices, farray.iterframe(start, stop, step), traj[indices]): aa_eq(frame0.xyz, f.xyz) assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in farray.iterframe(start=2, step=2): pass assert_almost_equal(traj[8].xyz, frame0.xyz) traj[6][0] for frame0 in traj.iterframe(start=2, step=4, stop=8): pass for frame0 in traj.iterframe(start=2, step=4, stop=8): pass assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in traj.iterframe(start=2, step=2): pass assert_almost_equal(traj[8].xyz, frame0.xyz) count = 0 for frame0 in traj.iterframe(start=2): count += 1 assert_almost_equal(traj[-1].xyz, frame0.xyz) count = 0 for frame0 in traj.iterframe(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) for frame0 in traj.iterframe(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in farray.iterframe(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in traj(): pass assert_almost_equal(traj[-1].xyz, frame0.xyz) for frame0 in farray(): pass assert_almost_equal(farray[-1].xyz, frame0.xyz) count = 0 for frame0 in traj(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(start=2, stop=7): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(2, 7, 1): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz) count = 0 for frame0 in farray(2, 7, 2): count += 1 assert_almost_equal(traj[6].xyz, frame0.xyz)