예제 #1
0
    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)
예제 #2
0
    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'))
예제 #3
0
    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')