def test_rmsfit_with_autoimage_compared_to_cpptraj(self):
        # assert to cpptraj: need to set mass
        traj = self.traj.copy()

        txt = '''
        parm {0}
        trajin {1}
        autoimage
        rms first {2} mass
        trajout tmp.nc
        '''.format(traj.top.filename, traj.filename, self.mask)

        with tempfolder():
            state = pt.datafiles.load_cpptraj_output(txt, dtype='state')
            state.run()
            # need to load to memory (not iterload)
            saved_traj = pt.load('tmp.nc', traj.top)

        fa1 = traj[:]
        fa1.autoimage()
        pt.superpose(fa1, ref=0, mask=self.mask, mass=True)

        aa_eq(fa1.xyz, saved_traj.xyz)

        fa_saved_nowat = saved_traj['!:WAT']
        fa1_nowat = fa1['!:WAT']
        aa_eq(fa_saved_nowat.xyz, fa1_nowat.xyz)
Exemple #2
0
    def test_frame_indices(self):
        # load frames to immutable traj
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
        # convert to numpy traj

        frame_indices = [0, 3, 5]

        t00 = traj[:]
        t01 = traj[:]
        t10 = traj[frame_indices]
        t11 = traj[frame_indices]
        aa_eq(t00[frame_indices].xyz, t11.xyz)

        ref = traj[-1]
        t00.superpose(ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        pt.superpose(t01, ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        t10.superpose(ref=ref)

        ref = traj[-1]
        pt.superpose(t11, ref=ref, frame_indices=frame_indices)

        aa_eq(t00.xyz, t01.xyz)
        aa_eq(t10.xyz, t11.xyz)
        aa_eq(t00[frame_indices].xyz, t10.xyz)
Exemple #3
0
 def test_fit_and_then_nofit(self):
     traj = pt.iterload(tc5b_trajin, tc5b_top)
     t0 = traj[:]
     pt.superpose(t0, ref=traj[3], mask='@CA')
     rmsd_0 = pt.rmsd_nofit(traj, ref=traj[3], mask='@CB')
     rmsd_1 = pt.rmsd(traj, ref=traj[3], mask='@CB', nofit=True)
     aa_eq(rmsd_1, rmsd_0)
    def test_rmsfit_with_autoimage_compared_to_cpptraj(self):
        # assert to cpptraj: need to set mass
        traj = self.traj.copy()

        txt = '''
        parm {0}
        trajin {1}
        autoimage
        rms first {2} mass
        trajout tmp.nc
        '''.format(traj.top.filename, traj.filename, self.mask)

        with tempfolder():
            state = pt.datafiles.load_cpptraj_output(txt, dtype='state')
            state.run()
            # need to load to memory (not iterload)
            saved_traj = pt.load('tmp.nc', traj.top)

        fa1 = traj[:]
        fa1.autoimage()
        pt.superpose(fa1, ref=0, mask=self.mask, mass=True)

        aa_eq(fa1.xyz, saved_traj.xyz)

        fa_saved_nowat = saved_traj['!:WAT']
        fa1_nowat = fa1['!:WAT']
        aa_eq(fa_saved_nowat.xyz, fa1_nowat.xyz)
Exemple #5
0
    def test_frame_indices(self):
        # load frames to immutable traj
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
        # convert to numpy traj

        frame_indices = [0, 3, 5]

        t00 = traj[:]
        t01 = traj[:]
        t10 = traj[frame_indices]
        t11 = traj[frame_indices]
        aa_eq(t00[frame_indices].xyz, t11.xyz)

        ref = traj[-1]
        t00.superpose(ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        pt.superpose(t01, ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        t10.superpose(ref=ref)

        ref = traj[-1]
        pt.superpose(t11, ref=ref, frame_indices=frame_indices)

        aa_eq(t00.xyz, t01.xyz)
        aa_eq(t10.xyz, t11.xyz)
        aa_eq(t00[frame_indices].xyz, t10.xyz)
Exemple #6
0
 def test_fit_and_then_nofit(self):
     traj = pt.iterload("data/Tc5b.x", "data/Tc5b.top")
     t0 = traj[:]
     pt.superpose(t0, ref=traj[3], mask='@CA')
     rmsd_0 = pt.rmsd_nofit(traj, ref=traj[3], mask='@CB')
     rmsd_1 = pt.rmsd(traj, ref=traj[3], mask='@CB', nofit=True)
     aa_eq(rmsd_1, rmsd_0)
    def test_projection_for_pca(self):
        traj = pt.load("./data/tz2.nc", "./data/tz2.parm7")

        state = pt.load_cpptraj_state(command)
        state.run()
        cpp_modes = state.data['MyEvecs']
        cpp_arr_crd = np.array(cpp_modes._get_avg_crd())
        cpp_arr_crd = cpp_arr_crd.reshape(117, 3)

        mask = '!@H='
        pt.superpose(traj, mask=mask)
        avg = pt.mean_structure(traj)
        atom_indices = traj.top(mask).indices
        strip_avg_coords = avg.xyz[atom_indices]
        pt.superpose(traj, mask=mask, ref=avg)
        avg2 = pt.mean_structure(traj, mask=mask)

        mat = pt.matrix.covar(traj, mask)
        modes = pt.matrix.diagonalize(mat, n_vecs=2, dtype='dataset')[0]

        aa_eq(cpp_arr_crd, avg2.xyz)

        aa_eq(np.abs(modes.eigenvalues), np.abs(state.data['MyEvecs'].eigenvalues))
        aa_eq(np.abs(modes.eigenvectors), np.abs(state.data['MyEvecs'].eigenvectors))

        projection_data = pt.all_actions.projection(traj, mask=mask, average_coords=avg2.xyz,
                                                     eigenvalues=modes.eigenvalues,
                                                     eigenvectors=modes.eigenvectors,
                                                     scalar_type='covar')
        aa_eq(np.abs(projection_data), np.abs(state.data[-2:].values), decimal=3)
Exemple #8
0
 def testsuperpose_vs_rmsd(self):
     # load frames to immutable traj
     traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
     t0 = traj[:]
     t1 = traj[:]
     pt.rmsd(t0, ref=traj[0], mask='@CA')
     pt.superpose(t1, ref=traj[0], mask='@CA')
     aa_eq(t0.xyz, t1.xyz)
Exemple #9
0
 def testsuperpose_vs_rmsd(self):
     # load frames to immutable traj
     traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
     t0 = traj[:]
     t1 = traj[:]
     pt.rmsd(t0, ref=traj[0], mask='@CA')
     pt.superpose(t1, ref=traj[0], mask='@CA')
     aa_eq(t0.xyz, t1.xyz)
Exemple #10
0
    def test_center_autoimagesuperpose(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        t0 = traj[:]
        t1 = traj[:]

        pt.center(t0)
        pt.autoimage(t0)
        pt.superpose(t0)

        aa_eq(pt.center(t1).autoimage().superpose().xyz, t0.xyz)
Exemple #11
0
    def test_center_autoimagesuperpose(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        t0 = traj[:]
        t1 = traj[:]

        pt.center(t0)
        pt.autoimage(t0)
        pt.superpose(t0)

        aa_eq(pt.center(t1).autoimage().superpose().xyz, t0.xyz)
Exemple #12
0
    def test_center_autoimagesuperpose(self):
        traj = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
        t0 = traj[:]
        t1 = traj[:]

        pt.center(t0)
        pt.autoimage(t0)
        pt.superpose(t0)

        aa_eq(pt.center(t1).autoimage().superpose().xyz, t0.xyz)
Exemple #13
0
 def _update(event):
     start = time.time()
     while time.time() - start <= timeout and not event.is_set():
         time.sleep(every)
         traj = pt.load(self.restart, top=self.top)
         if callback is not None:
             callback(traj)
         else:
             mask = '@C,N,O,CA,P'
             pt.superpose(traj, mask=mask, ref=self.reference_traj)
         self._update_coordinates(traj[0].xyz)
Exemple #14
0
 def _update(event):
     start = time.time()
     while time.time() - start <= timeout and not event.is_set():
         time.sleep(every)
         traj = pt.load(self.restart, top=self.top)
         if callback is not None:
             callback(traj)
         else:
             mask = '@C,N,O,CA,P'
             pt.superpose(traj, mask=mask, ref=self.reference_traj)
         self._update_coordinates(traj[0].xyz)
    def testget_common_objects(self):
        # raises
        # raise if try to index traj()
        with pytest.raises(TypeError):
            get_reference(self.traj(), 3)
        with pytest.raises(TypeError):
            get_reference(self.traj(), None)

        # specify wrong mask
        with pytest.raises(TypeError):
            pt.superpose(self.traj[:], 3)
    def test_RMSF(self):
        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))

        state = pt.load_batch(traj, '''
        rms first
        average crdset MyAvg
        run
        rms ref MyAvg
        atomicfluct out fluct.agr''')
        state.run()

        t0 = traj[:]
        pt.superpose(t0, ref=0)
        avg = pt.mean_structure(t0)
        pt.superpose(t0, ref=avg)
        data = pt.rmsf(t0)
        aa_eq(data, state.data[-1].values)
Exemple #17
0
    def testget_common_objects(self):
        # raises
        # raise if try to index traj()
        self.assertRaises(TypeError, lambda: get_reference(self.traj(), 3))
        self.assertRaises(TypeError, lambda: get_reference(self.traj(), None))

        # specify wrong mask
        self.assertRaises(TypeError, lambda: pt.superpose(self.traj[:], 3))
    def test_RMSF(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")

        state = pt.load_batch(traj, '''
        rms first
        average crdset MyAvg
        run
        rms ref MyAvg
        atomicfluct out fluct.agr''')
        state.run()

        t0 = traj[:]
        pt.superpose(t0, ref=0)
        avg = pt.mean_structure(t0)
        pt.superpose(t0, ref=avg)
        data = pt.rmsf(t0)
        aa_eq(data, state.data[-1].values)
    def testget_common_objects(self):
        from pytraj.get_common_objects import get_reference
        # raises
        # raise if try to index traj()
        self.assertRaises(TypeError, lambda: get_reference(self.traj(), 3))
        self.assertRaises(TypeError, lambda: get_reference(self.traj(), None))

        # specify wrong mask
        self.assertRaises(TypeError, lambda: pt.superpose(self.traj[:], 3))
Exemple #20
0
    def test_action_bounds(self):
        # creat mutable trajectory
        traj = pt.load(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
        pt.autoimage(traj)
        pt.superpose(traj, ref=0, mask=':1-13&!@H=', mass=True)
        grid_data = pt._grid(traj, mask=':1-13', grid_spacing=[0.5, 0., 0.])

        text = '''
        parm {}
        trajin {}
        autoimage
        rms first :1-13&!@H= mass
        bounds :1-13 dx .5 name MyGrid
        '''.format(fn('tz2.ortho.parm7'), fn('tz2.ortho.nc'))

        state = pt.load_cpptraj_state(text)
        state.run()
        cpp_grid = state.data['MyGrid'].values
        aa_eq(cpp_grid, grid_data)
Exemple #21
0
    def test_frame_indices(self):
        # load frames to immutable traj
        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
        # convert to numpy traj

        frame_indices = [0, 3, 5]

        t00 = traj[:]
        t01 = traj[:]
        t10 = traj[frame_indices].copy()

        ref = traj[-1]
        t00.superpose(ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        pt.superpose(t01, ref=ref, frame_indices=frame_indices)

        ref = traj[-1]
        t10.superpose(ref=ref)

        aa_eq(t00.xyz, t01.xyz)
        aa_eq(t00[frame_indices].xyz, t10.xyz)
    def test_projection_for_pca(self):
        traj = pt.load(fn('tz2.nc'), fn('tz2.parm7'))

        state = pt.load_cpptraj_state(command)
        state.run()
        cpp_modes = state.data['MyEvecs']
        cpp_arr_crd = np.array(cpp_modes._get_avg_crd())
        cpp_arr_crd = cpp_arr_crd.reshape(117, 3)

        mask = '!@H='
        pt.superpose(traj, mask=mask)
        avg = pt.mean_structure(traj)
        atom_indices = traj.top(mask).indices
        avg.xyz[atom_indices]
        pt.superpose(traj, mask=mask, ref=avg)
        avg2 = pt.mean_structure(traj, mask=mask)

        mat = pt.matrix.covar(traj, mask)
        modes = pt.matrix.diagonalize(mat, n_vecs=2, dtype='dataset')[0]

        aa_eq(cpp_arr_crd, avg2.xyz)

        aa_eq(np.abs(modes.eigenvalues),
              np.abs(state.data['MyEvecs'].eigenvalues))
        aa_eq(np.abs(modes.eigenvectors),
              np.abs(state.data['MyEvecs'].eigenvectors))

        projection_data = pt.all_actions.projection(
            traj,
            mask=mask,
            average_coords=avg2.xyz,
            eigenvalues=modes.eigenvalues,
            eigenvectors=modes.eigenvectors,
            scalar_type='covar')
        aa_eq(np.abs(projection_data),
              np.abs(state.data[-2:].values),
              decimal=3)
Exemple #23
0
    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)
Exemple #24
0
it=501 # First index of the short MD simulation folder (e.g. it=0 for P0)
en=1027 # Last index of the short MD simulation folder (e.g. it=6000 for P6000)
frq=1 # frequencing of the folder index, e.g. frq=10 if your folders are P0, P10, ... P5990, P6000
iit=1 # first replica in the above P* folder
ien=10 # last replica  in the above P* folder

#################################################################################################
######### Don Not Change Anything After This Line Unless You Know What You Are Doing ############
#################################################################################################

# Step 1: load metadynamics trajectory (to perform PCA)
traj = pt.load(TRAJ, TOP)

# Step 2: superpose the protein to a reference structure, provided as refpdb
refpdb = pt.iterload(PDB )
pt.superpose(traj, ref=refpdb, mask=mask)


# Step 3: read the metadynamics trajectory into memory by chunk
print("Loading metadynamics trajectories")
nframe = traj.n_frames
chunksize = min([200, nframe])
nchunk = int(np.floor(nframe/chunksize))+1 if nframe%chunksize !=0 else int(np.floor(nframe/chunksize))
pile = []
for i in range(nchunk):
    tmp = traj[i*chunksize:min((i+1)*chunksize, nframe)][pca_sel_rule[0]][pca_sel_rule[1]]
    pile.append(tmp.xyz.reshape(tmp.n_frames, tmp.n_atoms*3))


# Step 3: Standardize data (Cartesian coordinates of selected atoms) for PCA
proteinUNK_2d = np.concatenate(pile,axis=0)[:4700]
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['savefig.dpi'] = 2 * matplotlib.rcParams['savefig.dpi']  # larger image

from sklearn.decomposition import PCA
import pytraj as pt

# we use `load` method to load all data to memory. This is good for small data size.
# use `pytraj.iterload` for out-of-core traj.

traj = pt.load('../tests/data/tz2.nc', '../tests/data/tz2.parm7')

pca = PCA(n_components=2)

# superpose to 1st frame
pt.superpose(traj, ref=0, mask='!@H=')

# create average structure
avg = pt.mean_structure(traj)

# superpose all structures to average frame
pt.superpose(traj, ref=avg, mask='!@H=')

# perform PCA calculation and get transformed coords
# we need to reshape 3D traj.xyz array to 2D to make sklearn happy
# make a new traj by stripping all H atoms
traj_new = traj['!@H=']
xyz_2d = traj_new.xyz.reshape(traj_new.n_frames, traj_new.n_atoms * 3)
print(xyz_2d.shape)  # (n_frames, n_dimensions)

reduced_cartesian = pca.fit_transform(xyz_2d)
import matplotlib.pyplot as plt
matplotlib.rcParams['savefig.dpi'] = 2 * matplotlib.rcParams[
    'savefig.dpi']  # larger image

from sklearn.decomposition import PCA
import pytraj as pt

# we use `load` method to load all data to memory. This is good for small data size.
# use `pytraj.iterload` for out-of-core traj.

traj = pt.load('../tests/data/tz2.nc', '../tests/data/tz2.parm7')

pca = PCA(n_components=2)

# superpose to 1st frame
pt.superpose(traj, ref=0, mask='!@H=')

# create average structure
avg = pt.mean_structure(traj)

# superpose all structures to average frame
pt.superpose(traj, ref=avg, mask='!@H=')

# perform PCA calculation and get transformed coords
# we need to reshape 3D traj.xyz array to 2D to make sklearn happy
# make a new traj by stripping all H atoms
traj_new = traj['!@H=']
xyz_2d = traj_new.xyz.reshape(traj_new.n_frames, traj_new.n_atoms * 3)
print(xyz_2d.shape)  # (n_frames, n_dimensions)

reduced_cartesian = pca.fit_transform(xyz_2d)