def test_transform_trajectory_iterator(self): traj0 = pt.load(fn, tn) traj1 = pt.load(fn, tn) traj2 = pt.load(fn, tn) # Use ActionList for traj0 actlist = pt.ActionList(top=traj0.top) actlist.add("translate", "x 1.2") actlist.add("center", "origin") actlist.add("rotate", "x 45.") for frame in traj0: actlist.compute(frame) # use transformation itertraj = pt.transform( traj1, by=['translate x 1.2', 'center origin', 'rotate x 45.']) for frame in itertraj: pass aa_eq(traj0.xyz, traj1.xyz) # use API traj2.translate('x 1.2') traj2.center('origin') traj2.rotate('x 45.') aa_eq(traj0.xyz, traj2.xyz)
def test_unstrip(self): from pytraj.datasets import CpptrajDatasetList traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7')) dslist = CpptrajDatasetList() actlist = pt.ActionList(['strip !@CA', 'unstrip', 'radgyr nomax'], top=traj.top, dslist=dslist) actlist.compute(traj) # make sure that after stripping and unstrip the Frame coords are restored aa_eq(pt.radgyr(traj), dslist.values) dslist2 = CpptrajDatasetList() actlist2 = pt.ActionList(['strip !@CA', 'radgyr nomax'], top=traj.top, dslist=dslist2) actlist2.compute(traj) # make sure get correct radgyr after stripping all but CA atoms aa_eq(dslist2.values, pt.radgyr(traj, '@CA'))
def test_reference_with_different_topology_basic(self): traj1 = pt.iterload(filename=tc5b_trajin, top=tc5b_top) traj2 = pt.iterload(fn('tz2.nc'), fn('tz2.parm7')) # re-establish ActionList dslist = CpptrajDatasetList() dslist.add('reference', name='myref') dslist[0].top = traj2.top dslist[0].add_frame(traj2[0]) actlist = pt.ActionList(['rmsd @1-11 @CB ref myref'], top=traj1.top, dslist=dslist) for frame in traj1: actlist.compute(frame) # raise if ref_mask is given but not mask self.assertRaises(ValueError, lambda: pt.rmsd(traj1, ref=3, ref_mask='@CB')) self.assertRaises( ValueError, lambda: pt.rmsd(traj1, ref=traj2[:1], ref_mask='@CB')) # assert to cpptraj tc5b_traj = traj1[:] tz2_traj = traj2[:1] cm = ''' parm {} [tc5b] trajin {} parm {} [tz2] reference {} parm [tz2] 1 [myref] rms myrmsd ref [myref] @1-10 @11-20 '''.format(tc5b_top, tc5b_trajin, tz2_top, tz2_trajin) print(cm) state = pt.load_cpptraj_state(cm) with tempfolder(): state.run() expected_rmsd = state.data[-1].values rmsd_data = pt.rmsd(tc5b_traj, mask='@1-10', ref=tz2_traj, ref_mask='@11-20') aa_eq(expected_rmsd, rmsd_data)
import pytraj as pt from pytraj.testing import get_fn, aa_eq fn, tn = get_fn('tz2_dry') traj0 = pt.load(fn, tn) traj1 = pt.load(fn, tn) traj2 = pt.load(fn, tn) print(traj0.xyz[0, 0], traj1.xyz[0, 0], traj2.xyz[0, 0]) # Use ActionList for traj0 actlist = pt.ActionList(top=traj0.top) actlist.add("translate", "x 1.2") actlist.add("center", "origin") actlist.add("rotate", "x 45.") for frame in traj0: actlist.compute(frame) # use transformation itertraj = pt.transform( traj1, by=['translate x 1.2', 'center origin', 'rotate x 45.']) for frame in itertraj: pass aa_eq(traj0.xyz, traj1.xyz) print(traj0.xyz[0, 0], traj1.xyz[0, 0], traj2.xyz[0, 0]) # use API traj2.translate('x 1.2') traj2.center('origin')