示例#1
0
def test_timecorr():

    with tempfolder():
        # center of mass
        trajin = """
        parm {}
        trajin {}
        vector center v0
        timecorr vec1 v0
        """.format(tc5b_top, tc5b_trajin)

        state = pt.load_cpptraj_state(trajin)
        state.run()
        cpptraj_output = state.data

        traj = pt.iterload(tc5b_trajin, tc5b_top)
        dslist0 = pt.center_of_mass(traj)
        data = pt.timecorr(dslist0, dslist0)
        aa_eq(data, cpptraj_output[-1].values)

        # 2 vectors
        cm = """
        parm {}
        trajin {}
        vector v0 :2 :5
        vector v1 :3 :7
        timecorr vec1 v0 vec2 v1
        """.format(tc5b_top, tc5b_trajin)
        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.vector.vector(traj, [':2 :5', ':3 :7'])
        data = pt.timecorr(dslist0[0], dslist0[1])
        aa_eq(data, cpptraj_output[-1].values)

        # corrplane
        cm = """
        parm {}
        trajin {}
        vector v0 @2,@5,@9 corrplane
        vector v1 @3,@7,@20 corrplane
        timecorr vec1 v0 vec2 v1
        """.format(tc5b_top, tc5b_trajin)

        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.vector.vector(traj,
                                 ['@2,@5,@9 corrplane', '@3,@7,@20 corrplane'])
        dslist1 = pt.vector.corrplane(traj, ['@2,@5,@9', '@3,@7,@20'])
        data0 = pt.timecorr(dslist0[0], dslist0[1])
        data1 = pt.timecorr(dslist1[0], dslist1[1])
        aa_eq(data0, cpptraj_output[-1].values)
        aa_eq(data1, cpptraj_output[-1].values)
示例#2
0
    def test_superpose_different_mask_with_mass(self):
        traj_on_disk = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        traj_on_mem = pt.load(fn('Tc5b.x'), fn('Tc5b.top'))

        ref = pt.load(fn('tz2.nc'), fn('tz2.parm7'))[:1]

        mask = ':3-12@CA'
        ref_mask = ':1-10@CA'

        traj_on_disk.superpose(mask=mask, ref=ref, ref_mask=ref_mask)
        traj_on_mem.superpose(mask=mask, ref=ref, ref_mask=ref_mask)

        aa_eq(traj_on_disk.xyz, traj_on_mem.xyz)

        # cpptraj
        cm = """
        parm {parm_tc5b} [Tc5b]
        trajin {tc5b} parm [Tc5b]
        createcrd mycrd0
        parm {parm_tz2} [tz2]
        reference {tz2} 1 1 parm [tz2]
        align reference {mask} {refmask}
        createcrd mycrd
        """.format(parm_tc5b=tc5b_top,
                   parm_tz2=fn('tz2.parm7'),
                   tz2=fn('tz2.nc'),
                   tc5b=tc5b_trajin,
                   mask=mask,
                   refmask=ref_mask)

        state = pt.load_cpptraj_state(cm)
        state.run()

        cm2 = """
        parm {parm_tc5b} [Tc5b]
        trajin {tc5b} parm [Tc5b]
        createcrd mycrd0
        parm {parm_tz2} [tz2]
        reference {tz2} 1 1 parm [tz2]
        rms reference {mask} {refmask}
        createcrd mycrd
        """.format(parm_tc5b=tc5b_top,
                   parm_tz2=fn('tz2.parm7'),
                   tz2=fn('tz2.nc'),
                   tc5b=tc5b_trajin,
                   mask=mask,
                   refmask=ref_mask)

        state2 = pt.load_cpptraj_state(cm2)
        state2.run()

        aa_eq(state.data['mycrd'].xyz, state2.data['mycrd'].xyz)

        aa_eq(state.data['mycrd'].xyz, traj_on_disk.xyz)
        aa_eq(state.data['mycrd'].xyz, traj_on_mem.xyz)
示例#3
0
    def test_volmap(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")[:1]
        size = ''
        center = ''
        state = pt.load_cpptraj_state(txt.format(cm, size, center))
        state.run()
        cpp_data = state.data[-1].values

        traj = traj.superpose(mask=':1-13').center(':1-13 mass origin')
        ds = pt.volmap(traj,
                       mask=':WAT@O',
                       grid_spacing=(0.5, 0.5, 0.5),
                       buffer=2.0,
                       centermask='!:1-13',
                       radscale=1.36)

        aa_eq(cpp_data, ds)

        # assert
        self.assertRaises(AssertionError, lambda: pt.volmap(traj, mask=':WAT@O', grid_spacing='0.5 0.5 0.5'))
        self.assertRaises(AssertionError, lambda: pt.volmap(traj, mask=':WAT@O', grid_spacing=(0.5, 0.5)))
        self.assertRaises(ValueError, lambda: pt.volmap(traj, mask=':WAT@O', grid_spacing=(0.5, 0.5, 0.5), size='20 20 20'))

        # test size
        cm_no_buffer = cm.replace('buffer 2.0', '')
        state = pt.load_cpptraj_state(txt.format(cm_no_buffer, 'size 20,20,20', ''))
        state.run()
        cpp_data = state.data[-1].values
        ds = volmap(traj,
                    mask=':WAT@O',
                    grid_spacing=(0.5, 0.5, 0.5),
                    size=(20, 20, 20),
                    buffer=2.0,
                    centermask='!:1-13',
                    radscale=1.36)
        aa_eq(cpp_data, ds)

        # test center
        state = pt.load_cpptraj_state(txt.format(cm_no_buffer, 'size 20,20,20', 'center 0.5,0.5,0.5'))
        state.run()
        cpp_data = state.data[-1].values
        ds = volmap(traj,
                    mask=':WAT@O',
                    grid_spacing=(0.5, 0.5, 0.5),
                    size=(20, 20, 20),
                    center=(0.5, 0.5, 0.5),
                    buffer=2.0,
                    centermask='!:1-13',
                    radscale=1.36)
        aa_eq(cpp_data, ds)

        # raise RuntimeError
        dry_traj = pt.iterload('data/tz2.nc', 'data/tz2.parm7')
        self.assertRaises(RuntimeError, lambda: pt.volmap(dry_traj, mask=':WAT@O',
                                                          grid_spacing=(0.5, 0.5, 0.5)))
示例#4
0
    def test_0(self):

        # center of mass
        trajin = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector center v0
        timecorr vec1 v0
        """

        state = pt.load_cpptraj_state(trajin)
        state.run()
        cpptraj_output = state.data

        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        dslist0 = pt.center_of_mass(traj)
        data = pt.timecorr(dslist0, dslist0)
        aa_eq(data, cpptraj_output[-1].values)

        # 2 vectors
        cm = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector v0 :2 :5
        vector v1 :3 :7
        timecorr vec1 v0 vec2 v1
        """
        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.calc_vector(traj, [':2 :5', ':3 :7'])
        data = pt.timecorr(dslist0[0], dslist0[1])
        aa_eq(data, cpptraj_output[-1].values)

        # corrplane
        cm = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector v0 @2,@5,@9 corrplane
        vector v1 @3,@7,@20 corrplane
        timecorr vec1 v0 vec2 v1
        """

        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.calc_vector(traj,
                                 ['@2,@5,@9 corrplane', '@3,@7,@20 corrplane'])
        dslist1 = pt.vector.corrplane(traj, ['@2,@5,@9', '@3,@7,@20'])
        data0 = pt.timecorr(dslist0[0], dslist0[1])
        data1 = pt.timecorr(dslist1[0], dslist1[1])
        aa_eq(data0, cpptraj_output[-1].values)
        aa_eq(data1, cpptraj_output[-1].values)
示例#5
0
    def test_0(self):

        # center of mass
        trajin = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector center v0
        timecorr vec1 v0
        """

        state = pt.load_cpptraj_state(trajin)
        state.run()
        cpptraj_output = state.data

        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        dslist0 = pt.center_of_mass(traj)
        data = pt.timecorr(dslist0, dslist0)
        aa_eq(data, cpptraj_output[-1].values)

        # 2 vectors
        cm = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector v0 :2 :5
        vector v1 :3 :7
        timecorr vec1 v0 vec2 v1
        """
        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.calc_vector(traj, [':2 :5', ':3 :7'])
        data = pt.timecorr(dslist0[0], dslist0[1])
        aa_eq(data, cpptraj_output[-1].values)

        # corrplane
        cm = """
        parm data/Tc5b.top
        trajin data/Tc5b.x
        vector v0 @2,@5,@9 corrplane
        vector v1 @3,@7,@20 corrplane
        timecorr vec1 v0 vec2 v1
        """

        state = pt.load_cpptraj_state(cm)
        state.run()
        cpptraj_output = state.data

        dslist0 = pt.calc_vector(traj,
                                 ['@2,@5,@9 corrplane', '@3,@7,@20 corrplane'])
        dslist1 = pt.vector.corrplane(traj, ['@2,@5,@9', '@3,@7,@20'])
        data0 = pt.timecorr(dslist0[0], dslist0[1])
        data1 = pt.timecorr(dslist1[0], dslist1[1])
        aa_eq(data0, cpptraj_output[-1].values)
        aa_eq(data1, cpptraj_output[-1].values)
def test_pairdist():
    traj = pt.iterload(fn("tz2.crd"), fn("tz2.parm7"))

    for (mask, delta) in [('*', 0.1), ('@CA', '0.2')]:
        data = pt.pairdist(traj, delta=delta, mask=mask, dtype='ndarray')
        data0 = data[0].T
        data1 = data[1].T

        txt = '''
        parm {0}
        trajin {1}
        pairdist out test.out mask {2} delta {3}
        '''.format(fn('tz2.parm7'), fn('tz2.crd'), mask, delta)

        # take data, skip DatasetTopology
        state = pt.load_cpptraj_state(txt)
        with tempfolder():
            state.run()
        cpp_data = state.data[1:].values
        cpp_distance, cpp_Pr = cpp_data[0].T
        _, cpp_std = cpp_data[1].T

        aa_eq(data0[0], cpp_distance)  # distance
        aa_eq(data1[0], cpp_distance)  # distance
        aa_eq(data0[1], cpp_Pr, decimal=2)  # Pr
        aa_eq(data1[1], cpp_std, decimal=2)  # std
示例#7
0
def test_analyze_modes():

    for mask in ['@CA', '@N,CA', '@CA,H']:
        command = '''
        matrix mwcovar name tz2 {}
        diagmatrix tz2 name my_modes vecs 20
        modes fluct name my_modes
        '''.format(mask)

        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))

        # cpptraj
        state = pt.load_cpptraj_state(command, traj)
        # pt._verbose()
        state.run()
        pt._verbose(False)
        state.run()
        cpp_dict = state.data[1:].to_dict()
        c_dslist = state.data[1:]
        cpp_modes = c_dslist[1]

        # pytraj
        mat = pt.matrix.mwcovar(traj, mask)
        indices = traj.top.select(mask)
        dslist = pt.matrix.diagonalize(mat,
                                       n_vecs=20,
                                       scalar_type='mwcovar',
                                       mass=traj.top.mass[indices],
                                       dtype='dataset')
        evecs, evals = dslist[0].eigenvectors, dslist[0].eigenvalues
        aa_eq(cpp_dict['tz2'], mat)
        aa_eq(evals, cpp_modes.eigenvalues)
        aa_eq(evecs, cpp_modes.eigenvectors)

        with pytest.raises(AssertionError):
            # wrong mass
            dslist = pt.matrix.diagonalize(
                mat,
                n_vecs=20,
                scalar_type='mwcovar',
                mass=traj.top.mass[indices].tolist() + [1],
                dtype='dataset')
        with pytest.raises(AssertionError):
            # mass is None
            dslist = pt.matrix.diagonalize(mat,
                                           n_vecs=20,
                                           scalar_type='mwcovar',
                                           mass=None,
                                           dtype='dataset')

        # pt._verbose()
        fluct = pt.analyze_modes('fluct',
                                 evecs,
                                 evals,
                                 scalar_type='mwcovar',
                                 dtype='dataset')
        # pt._verbose(False)
        p_rms = fluct['FLUCT_00001[rms]'].values
        c_rms = c_dslist['FLUCT_00003[rms]'].values
        aa_eq(p_rms, c_rms)
示例#8
0
def test_gist():
    traj = pt.iterload(tz2_ortho_trajin, tz2_ortho_top, frame_slice=(0, 10))
    traj.autoimage('origin')

    command = "doorder doeij refdens 0.033422885325 gridcntr 1.44 0.67 0.29 \
                 griddim 10 12 10 gridspacn 2.0"

    data = pt.all_actions.gist(traj,
                               do_order=True,
                               do_eij=True,
                               reference_density=0.033422885325,
                               grid_center=(1.44, 0.67, 0.29),
                               grid_dim=(10, 12, 10),
                               grid_spacing=2.0,
                               dtype='cpptraj_dataset')

    state_command = """
    parm {}
    trajin {}
    autoimage origin
    gist {}
    """.format(tz2_ortho_top, tz2_ortho_trajin, command)
    state = pt.load_cpptraj_state(state_command)
    with capture_stdout() as (out, _):
        state.run()

    data_dict = data.to_dict()
    data_state_dict = state.data[1:].to_dict()

    for key, state_key in zip(sorted(data_dict.keys()),
                              sorted(data_state_dict.keys())):
        aa_eq(data_dict[key], data_state_dict[state_key])
def test_state():
    print('cpptraj')
    state = pt.load_cpptraj_state('''
    parm GAAC.parm7
    trajin GAAC3.1000frames.nc 1 1000
    {0}'''.format(cpp_mask))
    state.run()
示例#10
0
    def test_pca_with_ref_with_different_mask_from_matrix(self):
        '''test_pca_with_ref_with_different_mask_from_matrix
        has reference. Use !@H= for ref_mask and use * for covariance matrix  and projection

        from drroe: "You should be able to supply separate masks for fitting and creating the covariance matrix
        It is common enough for example to only perform rms-fitting on heavy atoms while still wanting all atoms in eigenvectors."

        pytraj: pt.pca(traj, mask=mask_matrix, n_vecs=2, ref=ref, ref_mask=mask_ref)
        '''

        command_ref_provided = '''
        parm {}
        trajin {} 1 3

        reference {}

        # only perform fitting on heavy atoms
        rms reference !@H=

        # all atoms
        matrix covar name MyMatrix *
        createcrd CRD1
        run

        # Step three. Diagonalize matrix.
        runanalysis diagmatrix MyMatrix vecs 2 name MyEvecs

        # Step four. Project saved fit coordinates along eigenvectors 1 and 2
        # all atoms
        crdaction CRD1 projection evecs MyEvecs * out project.dat beg 1 end 2
        '''.format(tz2_top, tz2_trajin, fn('tz2.rst7'))

        traj = pt.load(fn('tz2.nc'),
                       fn('tz2.parm7'),
                       frame_indices=range(0, 3))
        traj_on_disk = pt.iterload(fn('tz2.nc'),
                                   fn('tz2.parm7'),
                                   frame_slice=[(0, 3)])
        ref = pt.load(fn('tz2.rst7'), traj.top)

        state = pt.load_cpptraj_state(command_ref_provided)
        state.run()

        mask_ref = '!@H='
        mask_matrix = '*'

        data = pt.pca(traj,
                      mask=mask_matrix,
                      n_vecs=2,
                      ref=ref,
                      ref_mask=mask_ref)
        data2 = pt.pca(traj_on_disk,
                       mask=mask_matrix,
                       n_vecs=2,
                       ref=ref,
                       ref_mask=mask_ref)
        cpp_data = state.data[-2:].values
        # use absolute values
        aa_eq(np.abs(data[0]), np.abs(cpp_data), decimal=3)
        aa_eq(np.abs(data2[0]), np.abs(cpp_data), decimal=3)
示例#11
0
def test_state():
    print('cpptraj')
    state = pt.load_cpptraj_state('''
    parm GAAC.parm7
    trajin GAAC3.1000frames.nc 1 1000
    {0}'''.format(cpp_mask))
    state.run()
示例#12
0
    def test_symmrmsd(self):
        tyr_trajin = cpptraj_test_dir + '/Test_SymmRmsd/TYR.nc'
        tn = cpptraj_test_dir + '/Test_SymmRmsd/TYR.parm7'
        saved_traj = pt.iterload(
            cpptraj_test_dir + '/Test_SymmRmsd/TYR.remap.crd.save', tn)

        traj_on_disk = pt.iterload(tyr_trajin, tn)
        traj_on_mem = pt.load(tyr_trajin, tn)

        aa_eq(traj_on_disk.xyz, traj_on_mem.xyz)

        data = pt.symmrmsd(traj_on_mem, remap=True)

        cm = """
        parm {}
        trajin {}
        symmrmsd first remap myrmsd
        createcrd mycrd
        """.format(tn, tyr_trajin)

        state = pt.load_cpptraj_state(cm)
        with tempfolder():
            state.run()

        # rmsd
        aa_eq(state.data['myrmsd'].values, data)

        # coordinates
        aa_eq(state.data['mycrd'].xyz, saved_traj.xyz, decimal=3)
        aa_eq(state.data['mycrd'].xyz, traj_on_mem.xyz, decimal=3)
示例#13
0
def test_cluster_kmeans(tmpdir):

    kmeans = cluster.kmeans
    traj = pt.iterload(tz2_trajin, tz2_top)

    cm = 'cluster kmeans clusters 10 @CA rms randompoint kseed 2 {0} noinfo'

    for sieve in [2, 3, 4]:
        sieve_str = "sieve {0} sieveseed 12".format(sieve)
        command = cm.format(
            sieve_str) + ' cpopvtime cpptraj_cpopvtime.agr normframe'
        state = pt.load_cpptraj_state(command, traj)
        state.run()

        data = kmeans(traj,
                      n_clusters=10,
                      kseed=2,
                      random_point=True,
                      metric='rms',
                      mask='@CA',
                      options=sieve_str +
                      ' cpopvtime pytraj_cpopvtime.agr normframe')
        assert data.n_frames == traj.n_frames
        assert os.path.exists('cpptraj_cpopvtime.agr')
        # Make sure pytraj could write data file.
        assert os.path.exists('pytraj_cpopvtime.agr')
示例#14
0
    def test_volmap(self):
        traj = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))[:1]
        size = ''
        center = ''
        state = pt.load_cpptraj_state(
            txt.format(fn('tz2.ortho.parm7'), fn('tz2.ortho.nc'), cm, size,
                       center))
        state.run()
        cpp_data = state.data[-2].values  # last one is totalvolume

        traj = traj.superpose(mask=':1-13').center(':1-13 mass origin')
        ds = pt.volmap(traj,
                       mask=':WAT@O',
                       grid_spacing=(0.5, 0.5, 0.5),
                       buffer=2.0,
                       centermask='!:1-13',
                       radscale=1.36)

        aa_eq(cpp_data, ds)

        # assert
        self.assertRaises(
            AssertionError,
            lambda: pt.volmap(traj, mask=':WAT@O', grid_spacing='0.5 0.5 0.5'))
        self.assertRaises(
            AssertionError,
            lambda: pt.volmap(traj, mask=':WAT@O', grid_spacing=(0.5, 0.5)))
        self.assertRaises(
            ValueError, lambda: pt.volmap(traj,
                                          mask=':WAT@O',
                                          grid_spacing=(0.5, 0.5, 0.5),
                                          size='20 20 20'))
示例#15
0
    def testTwoTrajTypes(self):
        '''test different metrics with different traj objects
        '''
        funclist = [pt.iterload, pt.load]
        txt = '''
        parm {}
        trajin {}
        rms2d @CA metric_holder rmsout tmp.out
        '''.format(tc5b_top, tc5b_trajin)

        for func in funclist:
            traj = func(tc5b_trajin, tc5b_top)
            for metric in ['rms', 'nofit', 'dme']:
                d0 = pt.pairwise_rmsd(traj(mask='@CA'), metric=metric)
                d1 = pt.pairwise_rmsd(traj, mask='@CA', metric=metric)
                d2 = pt.pairwise_rmsd(traj(), mask='@CA', metric=metric)

                txt0 = txt.replace('metric_holder', metric)
                state = pt.load_cpptraj_state(txt0)
                with tempfolder():
                    state.run()
                d3 = state.data[-1].values

                aa_eq(d0, d1)
                aa_eq(d0, d2)
                aa_eq(d0, d3)
示例#16
0
    def test_closest_compared_to_cpptraj(self):
        trajin = fn('tz2.ortho.nc')
        parm = fn('tz2.ortho.parm7')
        traj = pt.iterload(trajin, parm, frame_slice=[
            (0, 2),
        ])
        state = pt.load_cpptraj_state('''
        parm {}
        trajin {} 1 2
        autoimage
        closest 100 :1-13
        createcrd mycrd'''.format(parm, trajin))
        state.run()

        fi, top = pt.closest(traj(autoimage=True),
                             mask=':1-13',
                             n_solvents=100)
        xyz = pt.get_coordinates(fi)
        t0 = pt.Trajectory(xyz=xyz, top=top)
        aa_eq(state.data['mycrd'].xyz, t0.xyz)

        # dtype = 'trajectory'
        t1 = pt.closest(traj(autoimage=True),
                        mask=':1-13',
                        n_solvents=100,
                        dtype='trajectory')
        aa_eq(state.data['mycrd'].xyz, t1.xyz)
示例#17
0
    def test_projection_with_None_average_coord(self):
        cm = '''
        matrix name correlmat {scalar_type} @CA 
        diagmatrix correlmat name evecs vecs 5 
        run 
        projection P1 modes evecs beg 1 end 2 @CA 
        '''

        scalar_type = 'covar'
        cm2 = cm.format(scalar_type=scalar_type)

        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
        state = pt.load_cpptraj_state(cm2, traj)
        state.run()

        mat = pt.matrix.covar(traj, '@CA')
        eigenvalues, eigenvectors = pt.matrix.diagonalize(mat,
                                                          2,
                                                          dtype='tuple')

        data = pt.all_actions.projection(traj,
                                         '@CA',
                                         eigenvalues,
                                         eigenvectors,
                                         scalar_type=scalar_type)
        aa_eq(np.abs(state.data['Mode1'].values), np.abs(data[0]))
        aa_eq(np.abs(state.data['Mode2'].values), np.abs(data[1]))
        assert data.shape == (2, traj.n_frames)
示例#18
0
    def test_hbonds_from_pdb(self):
        traj = pt.load(fn('1L2Y.pdb'))
        hb = pt.search_hbonds(traj)

        state = pt.load_cpptraj_state('''
        parm {pdb}
        trajin {pdb}
        hbond series
        '''.format(pdb=fn('1L2Y.pdb')))
        state.run()

        for data_p, data_cpp in zip(hb.data, state.data[1:]):
            assert len(
                data_p) == traj.n_frames == 38, 'size of dataset must be 38'
            aa_eq(data_p, data_cpp.values)

        # make sure distances are smaller than cutoff
        distance_cutoff = 2.5
        angle_cutoff = 135.
        hb = pt.search_hbonds(traj)
        distances = pt.distance(traj, hb.get_amber_mask()[0])
        angles = pt.angles(traj, hb.get_amber_mask()[1])
        dist_indices = np.where(distances > distance_cutoff)
        angle_indices = np.where(angles < angle_cutoff)

        saved_donor_acceptors = [
            'ASP9_OD2-ARG16_NH1-HH12', 'ASP9_OD2-ARG16_NH2-HH22',
            'ASP9_OD2-ARG16_NE-HE', 'ASP9_OD2-ARG16_NH2-HH21',
            'ASP9_OD2-ARG16_NH1-HH11'
        ]

        donor_acceptors = pt.search_hbonds(traj, ':9,16').donor_acceptor
        assert saved_donor_acceptors == donor_acceptors, 'saved_donor_acceptors'

        aa_eq(hb.total_solute_hbonds(), hb.data['total_solute_hbonds'])
示例#19
0
def test_distance_rmsd():
    traj = pt.iterload(tz2_trajin, tz2_top)
    txt = '''
    parm {}
    trajin {}
    drmsd drms_nofit out drmsd.dat
    rms rms_nofit out drmsd.dat nofit
    rms rms_fit out drmsd.dat
    drmsd drms_fit out drmsd.dat
    '''.format(tz2_top, tz2_trajin)

    state = pt.load_cpptraj_state(txt)
    with tempfolder():
        state.run()
    cpp_data = state.data[1:]

    # distance_rmsd
    data_drmsd = pt.distance_rmsd(traj)
    aa_eq(data_drmsd, cpp_data[0])
    aa_eq(pt.drmsd(traj), cpp_data[0])

    # rms_nofit
    aa_eq(cpp_data[1], pt.rmsd(traj, nofit=True))

    # rms_fit
    aa_eq(cpp_data[2], pt.rmsd(traj, nofit=False))

    # drmsd with rmsfit
    aa_eq(cpp_data[3], pt.distance_rmsd(traj(rmsfit=0), ref=traj[0]))
示例#20
0
    def test_makestructure_with_reference(self):
        tz2_parm7 = cpptraj_test_dir + '/tz2.parm7'
        ref_rst7 = cpptraj_test_dir + '/tz2.rst7'
        trajin_rst7 = cpptraj_test_dir + '/Test_MakeStructure/pp2.rst7.save'

        # cpptraj
        command = """
        parm {}
        reference {}
        trajin {}
        
        makestructure "ref:1-13:tz2.rst7"
        rmsd reference 
        createcrd mycrd
        """.format(tz2_parm7, ref_rst7, trajin_rst7)
        state = pt.load_cpptraj_state(command)
        state.run()
        cpp_traj = state.data['mycrd']

        # pytraj
        traj = pt.load(trajin_rst7, top=tz2_parm7)
        ref = pt.load(ref_rst7, top=tz2_parm7)
        pt.make_structure(traj, "ref:1-13:1-13", ref=ref)
        pt.rmsd(traj, ref=ref)
        aa_eq(traj.xyz, cpp_traj.xyz)
示例#21
0
def test_iterload_and_load_remd():
    # iterload_remd
    traj = pt.iterload_remd(fn("Test_RemdTraj/rem.nc.000"),
                            fn("Test_RemdTraj/ala2.99sb.mbondi2.parm7"),
                            T=300.0)
    for frame in traj:
        assert frame.temperature == 300.0, 'frame temperature must be 300.0 K'
    dist = pt.distance(traj, '@10 @20')

    trajin_text = '''
        parm  {}
        trajin {} remdtraj remdtrajtemp 300.
        distance @10 @20
    '''.format(fn('Test_RemdTraj/ala2.99sb.mbondi2.parm7'),
               fn('Test_RemdTraj/rem.nc.000 '))
    state = pt.load_cpptraj_state(trajin_text)
    state.run()
    aa_eq(dist, state.data[-1].values)

    # load_remd
    traj2 = pt.load_remd(fn("Test_RemdTraj/rem.nc.000"),
                         fn("Test_RemdTraj/ala2.99sb.mbondi2.parm7"),
                         T=300.0)
    aa_eq(traj.xyz, traj2.xyz)

    # with Topology
    traj2 = pt.iterload_remd(fn("Test_RemdTraj/rem.nc.000"),
                             top=traj.top,
                             T=300.0)
    aa_eq(traj.xyz, traj2.xyz)
示例#22
0
    def test_distance_to_point_or_reference(self):
        tz2_pdb = os.path.join(cpptraj_test_dir, 'tz2.pdb')
        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
        ref_traj = pt.load(tz2_pdb)
        ref = ref_traj[0]
        ref.top = ref_traj.top

        cmd = """
        parm {parm}
        reference {reference} name myref
        trajin {trajin}
        
        distance EndToEnd :1 :13
        distance ToRef @1 @1 reference
        distance Point :1 point 0.0 0.0 0.0
        """.format(parm=fn("tz2.parm7"),
                   reference=tz2_pdb,
                   trajin=fn("tz2.nc"))
        state = pt.load_cpptraj_state(cmd)
        state.run()

        # ensure same reference
        aa_eq(ref.xyz, state.data.to_dict()['myref:1'], decimal=3)

        dist_point = pt.distance_to_point(traj, ':1', point=[0., 0., 0.])
        aa_eq(dist_point, state.data['Point'])

        dist_ref = pt.distance_to_reference(traj, '@1 @1', ref=ref)
        aa_eq(dist_ref, state.data['ToRef'].values)
示例#23
0
    def test_crdframes(self):
        '''test crdframes in cpptraj
        '''
        max_frames = 50
        traj = pt.iterload('data/tz2.nc',
                           'data/tz2.parm7',
                           frame_slice=(0, max_frames, 2))

        state = pt.load_cpptraj_state('''
                parm {0}
                trajin {1} 1 {2} 2
                trajin {1} 1 {2} 2
                loadtraj name traj
                crdaction traj rms crdframes 1,10
                crdaction traj rms crdframes 1,30,2
                '''.format(traj.top.filename, traj.filename, max_frames))
        state.run()

        rmsd_0 = pt.rmsd(traj, ref=0, frame_indices=range(10))
        rmsd_crdframes = state.data[2].values
        aa_eq(rmsd_0, rmsd_crdframes)

        traj2 = traj.copy()
        assert traj2.n_frames == traj.n_frames, 'must have the same n_frames'
        traj2._load(traj.filename, frame_slice=(0, max_frames, 2))
        assert traj2.n_frames == 2 * traj.n_frames, 'n_frames must be doubled after reload'

        rmsd_1 = pt.rmsd(traj2, ref=0, frame_indices=range(0, 30, 2))
        rmsd_crdframes = state.data[3].values
        aa_eq(rmsd_1, rmsd_crdframes)
示例#24
0
    def test_crdframes(self):
        '''test crdframes in cpptraj
        '''
        max_frames = 50
        traj = pt.iterload(fn('tz2.nc'),
                           fn('tz2.parm7'),
                           frame_slice=(0, max_frames, 2))

        state = pt.load_cpptraj_state('''
                parm {0}
                trajin {1} 1 {2} 2
                trajin {1} 1 {2} 2
                loadtraj name traj
                crdaction traj rms crdframes 1,10
                crdaction traj rms crdframes 1,30,2
                '''.format(traj.top.filename, traj.filename, max_frames))
        state.run()

        rmsd_0 = pt.rmsd(traj, ref=0, frame_indices=range(10))
        rmsd_crdframes = state.data[2].values
        aa_eq(rmsd_0, rmsd_crdframes)

        traj2 = traj.copy()
        assert traj2.n_frames == traj.n_frames, 'must have the same n_frames'
        traj2._load(traj.filename, frame_slice=(0, max_frames, 2))
        assert traj2.n_frames == 2 * traj.n_frames, 'n_frames must be doubled after reload'

        rmsd_1 = pt.rmsd(traj2, ref=0, frame_indices=range(0, 30, 2))
        rmsd_crdframes = state.data[3].values
        aa_eq(rmsd_1, rmsd_crdframes)
示例#25
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)
示例#26
0
    def test_drmsd(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        txt = '''
        parm data/tz2.parm7
        trajin data/tz2.nc
        drmsd drms_nofit out drmsd.dat
        rms rms_nofit out drmsd.dat nofit
        rms rms_fit out drmsd.dat
        drmsd drms_fit out drmsd.dat
        '''

        state = pt.load_cpptraj_state(txt)
        state.run()
        cpp_data = state.data[1:]

        # distance_rmsd
        data_drmsd = pt.distance_rmsd(traj)
        aa_eq(data_drmsd, cpp_data[0])
        aa_eq(pt.drmsd(traj), cpp_data[0])

        # rms_nofit
        aa_eq(cpp_data[1], pt.rmsd(traj, nofit=True))

        # rms_fit
        aa_eq(cpp_data[2], pt.rmsd(traj, nofit=False))

        # drmsd with rmsfit
        aa_eq(cpp_data[3], pt.distance_rmsd(traj(rmsfit=0), ref=traj[0]))
示例#27
0
    def test_volume(self):
        traj = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
        state = pt.load_cpptraj_state('''
        volume''', traj)
        state.run()

        vol = pt.volume(traj)
        aa_eq(state.data[-1], vol)
示例#28
0
def test_radgyr_default():
    traj = pt.iterload(fn("tz2.truncoct.nc"), fn("tz2.truncoct.parm7"))
    state = pt.load_cpptraj_state("""
    radgyr :1-13
    """, traj)
    state.run()
    np.testing.assert_almost_equal(
        pt.radgyr(traj, ':1-13'), state.data['RoG_00001'].values)
示例#29
0
 def test_crank(self):
     traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
     dihedrals = pt.dihedral(traj, [':1@C :2@N :2@CA :2@C', ':2@C :3@N :3@CA :3@C'])
     state = pt.load_cpptraj_state(cm)
     state.run()
     # TODO: assert please
     # cpptraj does not dump data to Dataset
     pt.crank(dihedrals[0], dihedrals[1], mode='angle')
示例#30
0
    def test_volume(self):
        traj = pt.iterload("data/tz2.ortho.nc", "data/tz2.ortho.parm7")
        state = pt.load_cpptraj_state('''
        volume''', traj)
        state.run()

        vol = pt.volume(traj)
        aa_eq(state.data[-1], vol)
示例#31
0
def rms2d_():
    state = pt.load_cpptraj_state('''
            parm {0}
            loadcrd md.trj 0 {1} crd_
            #crdaction crd_ rms2d
            rms2d crdset crd_ out test.dat
            '''.format(traj.top.filename, str(n_frames)))
    state.run()
    return state
示例#32
0
 def test_crank(self):
     traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
     dihedrals = pt.dihedral(
         traj, [':1@C :2@N :2@CA :2@C', ':2@C :3@N :3@CA :3@C'])
     state = pt.load_cpptraj_state(cm)
     state.run()
     # TODO: assert please
     # cpptraj does not dump data to Dataset
     pt.crank(dihedrals[0], dihedrals[1], mode='angle')
示例#33
0
def rms2d_():
    state = pt.load_cpptraj_state('''
            parm {0}
            loadcrd md.trj 0 {1} crd_
            #crdaction crd_ rms2d
            rms2d crdset crd_ out test.dat
            '''.format(traj.top.filename, str(n_frames)))
    state.run()
    return state
示例#34
0
 def test_crank(self):
     traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
     dihedrals = pt.dihedral(
         traj, [':1@C :2@N :2@CA :2@C', ':2@C :3@N :3@CA :3@C'])
     state = pt.load_cpptraj_state(cm)
     with capture_stdout() as (out, _):
         state.run()
     data = pt.crank(dihedrals[0], dihedrals[1], mode='angle')
     assert out.read() == data
示例#35
0
    def test_density(self):
        rst7 = fn('DOPC.rst7')
        tn = fn('DOPC.parm7')

        traj = pt.load(fn('DOPC.rst7'), fn('DOPC.parm7'))

        delta = '0.25'
        masks = [":PC@P31", ":PC@N31", ":PC@C2", ":PC | :OL | :OL2"]

        keys_no_space = [''.join(m.split()) for m in masks]

        mask_str = ' '.join(['"' + m + '"' for m in masks])
        density_types = ['number', 'mass', 'charge', 'electron']

        state_data_dict = dict()
        for density_type in density_types:
            command = """
            parm {parm}
            trajin {trajin}

            center ":PC | :OL | :OL2" origin
            density {density_type} delta {delta} {mask}
            """.format(
                parm=tn,
                trajin=rst7,
                delta=delta,
                mask=mask_str,
                density_type=density_type)

            state = pt.load_cpptraj_state(command)
            state.run()

            state_data_dict[density_type] = state.data[1:].to_dict()

        pt.center(traj, '":PC | :OL | :OL2" origin')
        density_dict = {}
        for density_type in density_types:
            density_data = pt.density(
                traj, mask=masks, delta=delta, density_type=density_type)
            density_dict[density_type] = density_data

        # compate to cpptraj
        for density_type in density_types:
            for key in keys_no_space:
                aa_eq(state_data_dict[density_type][key],
                      density_dict[density_type][key])

        # assert raise: wrong density_type
        def func():
            pt.density(traj, mask=':WAT', density_type='hello')

        with pytest.raises(AssertionError):
            func()

        # test 'z' value
        saved_z_values = np.linspace(-24.1250, 23.8750, 193)
        aa_eq(density_data['z'], saved_z_values)
示例#36
0
    def test_matrix(self):
        import numpy as np
        from pytraj import ArgList
        from pytraj import matrix as ma

        traj = pt.iterload(crd_file, top_file)

        with tempfolder():
            state = pt.load_cpptraj_state(all_commands)
            state.run()

            state_byres = pt.load_cpptraj_state(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(".")
                arg.get_next_mask()
                ".".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, 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)
示例#37
0
    def test_rotdif(self):
        traj = pt.load(trajin, parm)
        ref = pt.load(reference, parm)

        mat = pt.rotation_matrix(traj, ref=ref, mask='@CA,C,N,O')
        data = pt.all_actions.rotdif(mat, short_cm)
        state = pt.load_cpptraj_state(cm)
        with capture_stdout() as (out, _):
            state.run()

        assert data == out.read()
示例#38
0
def test_check_structure():
    traj = pt.iterload(fn('DPDP.nc'), fn('DPDP.parm7'))
    out_dict = pt.check_chirality(traj)

    state = pt.load_cpptraj_state(cm)
    state.run()
    cpp_out_dict = state.data[1:].to_dict()

    for ((key, value), (cpp_key, cpp_value)) in zip(out_dict.items(),
                                                    cpp_out_dict.items()):
        aa_eq(value, cpp_value)
示例#39
0
    def test_vs_cpptraj(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        txt = '''
        parm ./data/tz2.ortho.parm7
        trajin ./data/tz2.ortho.nc
        replicatecell name test all
        '''

        t0 = pt.replicate_cell(traj, direction='all')
        state = pt.load_cpptraj_state(txt)
        state.run()
        saved_t0 = state.data[1]
        aa_eq(saved_t0.xyz, t0.xyz)
示例#40
0
    def test_combine_nofit_mass_nomod(self):
        cm = '''
        parm data/tz2.parm7
        trajin data/tz2.nc
        rms @CA nofit mass nomod
        '''
        state = pt.load_cpptraj_state(cm)
        state.run()

        unmut_traj = pt.iterload('data/tz2.nc', 'data/tz2.parm7')
        mut_traj = unmut_traj[:]

        data = pt.rmsd(mut_traj, mask='@CA', mass=True, nofit=True, update_coordinate=False)
        aa_eq(data, state.data[-1])
示例#41
0
    def test_align_principal_axis(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        t0 = traj[:]
        t1 = traj[:]
        aa_eq(t0.align_principal_axis().xyz, pt.align_principal_axis(t1).xyz)

        # compare to cpptraj
        cm = '''
        principal dorotation
        createcrd mycrd
        '''
        state = pt.load_cpptraj_state(cm, traj)
        state.run()
        aa_eq(state.data['mycrd'].xyz, t1.xyz)
示例#42
0
    def test_closest_compared_to_cpptraj(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        state = pt.load_cpptraj_state('''
        autoimage
        closest 100 :1-13
        createcrd mycrd''', traj)
        state.run()

        fi, top = pt.closest(traj(autoimage=True), mask=':1-13', n_solvents=100)
        xyz = pt.get_coordinates(fi)
        t0 = pt.Trajectory(xyz=xyz, top=top)
        aa_eq(state.data['mycrd'].xyz, t0.xyz)

        # dtype = 'trajectory'
        t1 = pt.closest(traj(autoimage=True), mask=':1-13', n_solvents=100, dtype='trajectory')
        aa_eq(state.data['mycrd'].xyz, t1.xyz)
示例#43
0
    def test_reference(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")

        text = '''
        parm {0}
        trajin {1}
        reference {1} 3 3 [ref0]
        reference {1} 2 2 [ref1]
        rms ref [ref0]  @CA
        rms ref [ref1]  @CA
        '''.format(traj.top.filename, traj.filename)

        state = pt.load_cpptraj_state(text)
        state.run()

        rmsd_0 = pt.rmsd(traj, ref=2, mask='@CA')
示例#44
0
    def test_ired_need_lapack_cpptraj(self):
        state = pt.load_cpptraj_state(txt)
        state.run()
        xyz = state.data['CRD1'].xyz
        top = state.data['CRD1'].top
        traj = pt.Trajectory(xyz=xyz, top=top)
        state_vecs = state.data[1:-3].values

        h_indices = pt.select_atoms('@H', traj.top)
        n_indices = pt.select_atoms('@H', traj.top) - 1
        nh_indices = list(zip(n_indices, h_indices))
        mat_ired = pt.ired_vector_and_matrix(traj,
                                             mask=nh_indices,
                                             order=2)[-1]
        mat_ired /= mat_ired[0, 0]

        # matired: make sure to reproduce cpptraj output
        aa_eq(mat_ired, state.data['matired'].values)

        # get modes
        modes = state.data[-2]
        cpp_eigenvalues = modes.eigenvalues
        cpp_eigenvectors = modes.eigenvectors
        evals, evecs = np.linalg.eigh(mat_ired)

        # need to sort a bit
        evals = evals[::-1]
        # cpptraj's eigvenvalues
        aa_eq(evals, cpp_eigenvalues)

        # cpptraj's eigvenvectors
        # use absolute values to avoid flipped sign
        # from Dan Roe
        # In practice, the "sign" of an eigenvector depends on the math library used to calculate it.
        # This is in fact why the modes command displacement test is disabled for cpptraj.
        # I bet if you use a different math library (e.g. use your system BLAS/LAPACK instead of the one bundled with Amber
        # or vice versa) you will get different signs.
        # Bottom line is that eigenvector sign doesn't matter.

        aa_eq(np.abs(evecs[:, ::-1].T), np.abs(cpp_eigenvectors), decimal=4)
        data = _ired(state_vecs, modes=(cpp_eigenvalues, cpp_eigenvectors))
        order_s2 = data['IRED_00127[S2]']

        # load cpptraj's output and compare to pytraj' values for S2 order paramters
        cpp_order_s2 = np.loadtxt(os.path.join(cpptraj_test_dir, 'Test_IRED',
                                               'orderparam.save')).T[-1]
        aa_eq(order_s2, cpp_order_s2, decimal=5)
示例#45
0
    def test_calc_atomicfluct_with_unitcell(self):
        # use iterload for load_batch
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        state = pt.load_cpptraj_state('''
        distance :3 :7
        atomicfluct @CA out output/test.agr
        distance :3 :7''', traj)
        state.run()

        # use `load` method
        t0 = pt.load("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        data = pt.atomicfluct(traj, '@CA')
        aa_eq(data, state.data[-2].values)
        # make sure that traj's coordinates were not altered
        # https://github.com/Amber-MD/pytraj/issues/1166
        aa_eq(pt.distance(t0, ':3 :7'), state.data[-1])
        aa_eq(traj.xyz, t0.xyz)
示例#46
0
    def test_pca_with_ref_with_different_mask_from_matrix(self):
        '''has reference. Use !@H= for ref_mask and use * for covariance matrix  and projection

        from drroe: "You should be able to supply separate masks for fitting and creating the covariance matrix
        It is common enough for example to only perform rms-fitting on heavy atoms while still wanting all atoms in eigenvectors."

        pytraj: pt.pca(traj, mask=mask_matrix, n_vecs=2, ref=ref, ref_mask=mask_ref)
        '''

        command_ref_provided = '''
        parm data/tz2.parm7
        trajin data/tz2.nc

        reference data/tz2.rst7

        # only perform fitting on heavy atoms
        rms reference !@H=

        # all atoms
        matrix covar name MyMatrix *
        createcrd CRD1
        run

        # Step three. Diagonalize matrix.
        runanalysis diagmatrix MyMatrix vecs 2 name MyEvecs

        # Step four. Project saved fit coordinates along eigenvectors 1 and 2
        # all atoms
        crdaction CRD1 projection evecs MyEvecs * out project.dat beg 1 end 2
        '''

        traj = pt.load("data/tz2.nc", "data/tz2.parm7")
        ref = pt.load('data/tz2.rst7', traj.top)

        state = pt.load_cpptraj_state(command_ref_provided)
        state.run()

        mask_ref = '!@H='
        mask_matrix = '*'

        data = pt.pca(traj, mask=mask_matrix, n_vecs=2, ref=ref, ref_mask=mask_ref)
        cpp_data = state.data[-2:].values
        # use absolute values
        aa_eq(np.abs(data[0]), np.abs(cpp_data), decimal=3)
示例#47
0
    def test_reference_with_different_topology_basic(self):
        traj1 = pt.iterload(filename="./data/Tc5b.x",
                           top="./data/Tc5b.top")
        traj2 = pt.iterload('data/tz2.nc', 'data/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 data/Tc5b.top [tc5b]
        trajin data/Tc5b.x [tc5b]
        parm data/tz2.parm7 [tz2]
        reference data/tz2.nc parm [tz2] 1 [myref]
        rms myrmsd ref [myref] @1-10 @11-20
        '''
        state = pt.load_cpptraj_state(cm)
        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)
示例#48
0
    def test_pca_noref(self):
        '''no reference
        
        pytraj: pt.pca(traj, mask, n_vecs=2) 
        '''

        command = '''
        # Step one. Generate average structure.
        # RMS-Fit to first frame to remove global translation/rotation.
        parm data/tz2.parm7
        trajin data/tz2.nc

        rms first !@H=
        average crdset AVG
        run

        # Step two. RMS-Fit to average structure. Calculate covariance matrix.
        # Save the fit coordinates.
        rms ref AVG !@H=
        matrix covar name MyMatrix !@H=
        createcrd CRD1
        run

        # Step three. Diagonalize matrix.
        runanalysis diagmatrix MyMatrix vecs 2 name MyEvecs

        # Step four. Project saved fit coordinates along eigenvectors 1 and 2
        crdaction CRD1 projection evecs MyEvecs !@H= out project.dat beg 1 end 2
        '''

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

        # no reference
        state = pt.load_cpptraj_state(command)
        state.run()

        mask = '!@H='

        data = pt.pca(traj, mask, n_vecs=2)
        cpp_data = state.data[-2:].values
        # use absolute values
        aa_eq(np.abs(data[0]), np.abs(cpp_data), decimal=3)
示例#49
0
    def test_dihedral(self):
        import numpy as np
        traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        fa = traj[:]
        mask = ':2@CA :14@CA :15@CA :16@CA'
        txt = '''
        parm ./data/Tc5b.top
        trajin ./data/Tc5b.x
        dihedral %s
        ''' % mask
        d0 = pt.dihedral(traj, mask, dtype='dataset').to_ndarray()
        d1 = pt.dihedral(traj, mask)
        d2 = pt.calc_dihedral(fa, mask)
        state = pt.load_cpptraj_state(txt)
        state.run()
        dcpp = state.data[1:].values

        aa_eq(d0, d1)
        aa_eq(d0, d2)
        aa_eq(d0, dcpp)

        Nsize = 10
        np.random.seed(1)
        arr = np.random.randint(0, 300, size=Nsize * 4).reshape(Nsize, 4)
        d3 = pt.calc_dihedral(fa, arr)
        d4 = pt.dihedral(traj, arr)
        d5 = pt.dihedral(traj, arr)
        d6 = pt.dihedral(fa, arr)
        d7 = pt.dihedral([fa, traj], arr, n_frames=2 * fa.n_frames)
        aa_eq(d3, d4)
        aa_eq(d3, d5)
        aa_eq(d3, d6)
        aa_eq(d3.T, d7.T[:fa.n_frames])
        aa_eq(d3.T, d7.T[fa.n_frames:])

        d8 = pt.dihedral(traj, mask, dtype='dataset')
        d9 = pt.tools.dict_to_ndarray(pt.dihedral(traj, mask, dtype='dict'))
        aa_eq(d0, d8.values)
        aa_eq(d0, d9)

        # raise
        self.assertRaises(ValueError, lambda: pt.dihedrals(traj, [[0, 3, 2]]))
    def test_do_rotation(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")

        cm = '''
        principal * dorotation mass name pout
        createcrd myname
        '''
        state = pt.load_cpptraj_state(cm, traj)
        state.run()

        mut_traj_0 = traj[:]
        mut_traj_1 = traj[:]

        data = pt.principal_axes(mut_traj_0, mask='*', dorotation=True, mass=True)
        pt.align_principal_axis(mut_traj_1, mask='*', mass=True)

        aa_eq(data[0], state.data[1].values)
        aa_eq(data[1], state.data[2].values)
        aa_eq(state.data[-1].xyz, mut_traj_0.xyz)
        aa_eq(state.data[-1].xyz, mut_traj_1.xyz)
示例#51
0
    def test_nupars(self):
        fn = "./data/Test_NAstruct/adh026.3.pdb"
        traj = pt.iterload(fn, fn)
        data = pt.nastruct(traj)

        # default
        text = '''
        parm "./data/Test_NAstruct/adh026.3.pdb"
        trajin "./data/Test_NAstruct/adh026.3.pdb"
        nastruct groovecalc 3dna
        '''

        state = pt.load_cpptraj_state(text)
        state.run()

        for key in ['major', 'minor', 'twist']:
            cpp_data = np.array([x.values for x in state.data if x.aspect ==
                                 key])
            # need to transpose to get shape=(n_frames, n_pairs)
            cpp_data = cpp_data.T
            aa_eq(data[key][1], cpp_data)

        # TODO: assert
        data._summary(np.mean, indices=None)
        data._summary(np.mean, indices=[1, ])
        data._summary(np.mean, keys=['major', 'twist'], indices=[1, ])
        data._summary(np.mean, keys='major', indices=[1, ])
        data._summary(np.std, indices=[1, ])
        data._summary([np.std, np.mean], indices=[1, ])
        data._explain()
        dir(data)

        # pickle
        pt.to_pickle(data, 'data/na.pk')
        na2 = pt.read_pickle('data/na.pk')

        for key in data.keys():
            aa_eq(data[key][1], na2[key][1])

        # raise
        self.assertRaises(ValueError, lambda: pt.nastruct(traj, dtype='ndarray'))
示例#52
0
    def test_pca_with_ref(self):
        '''has reference

        from drroe: "If the user provides their own reference structure, do not create an average structure"

        pytraj: pt.pca(traj, mask, n_vecs=2, ref=ref)
        '''

        command_ref_provided = '''
        parm data/tz2.parm7
        trajin data/tz2.nc
        reference data/tz2.rst7

        rms reference !@H=

        matrix covar name MyMatrix !@H=
        createcrd CRD1
        run

        # Step three. Diagonalize matrix.
        runanalysis diagmatrix MyMatrix vecs 2 name MyEvecs

        # Step four. Project saved fit coordinates along eigenvectors 1 and 2
        crdaction CRD1 projection evecs MyEvecs !@H= out project.dat beg 1 end 2
        '''

        traj = pt.load("data/tz2.nc", "data/tz2.parm7")
        ref = pt.load('data/tz2.rst7', traj.top)

        state = pt.load_cpptraj_state(command_ref_provided)
        state.run()

        mask = '!@H='

        data = pt.pca(traj, mask, n_vecs=2, ref=ref)
        cpp_data = state.data[-2:].values

        # use absolute values
        aa_eq(np.abs(data[0]), np.abs(cpp_data), decimal=3)
示例#53
0
    def test_pca_noref_nofit(self):
        '''no reference and do not do fitting
        
        from drroe: " Also, not fitting at all should be considered a legitimate option - 
        you may want to include global rotational and translational motion in your eigenvectors."

        pytraj: pt.pca(traj, mask, n_vecs=2, fit=False)
        '''

        command = '''
        parm data/tz2.parm7
        trajin data/tz2.nc

        matrix covar name MyMatrix !@H=
        createcrd CRD1
        run

        # Step three. Diagonalize matrix.
        runanalysis diagmatrix MyMatrix vecs 2 name MyEvecs

        # Step four. Project saved fit coordinates along eigenvectors 1 and 2
        crdaction CRD1 projection evecs MyEvecs !@H= out project.dat beg 1 end 2
        '''

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

        # no reference
        state = pt.load_cpptraj_state(command)
        state.run()

        mask = '!@H='

        data = pt.pca(traj, mask, n_vecs=2, fit=False)
        data_ref = pt.pca(traj, mask, n_vecs=2, fit=False, ref=3, ref_mask='@CA')
        cpp_data = state.data[-2:].values
        # use absolute values
        aa_eq(np.abs(data[0]), np.abs(cpp_data), decimal=3)
        # if fit=True, ref will be ignored
        aa_eq(np.abs(data_ref[0]), np.abs(cpp_data), decimal=3)
    def test_dihcovar(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        txt = '''
        parm data/tz2.parm7
        trajin data/tz2.nc

        # Generation of phi/psi dihedral data
        multidihedral BB phi psi resrange 2

        run
        # Calculate dihedral covariance matrix and obtain eigenvectors
        matrix dihcovar dihedrals BB[*] name DIH

        diagmatrix DIH vecs 4 name DIHMODES
        run
        # Project along eigenvectors
        projection evecs DIHMODES beg 1 end 4 dihedrals BB[*]
        '''

        state = pt.load_cpptraj_state(txt)
        state.run()

        modes = state.data['DIHMODES']
示例#55
0
    def test_projection_with_None_average_coord(self):
        cm = '''
        matrix name correlmat {scalar_type} @CA 
        diagmatrix correlmat name evecs vecs 5 
        run 
        projection P1 modes evecs beg 1 end 2 @CA 
        '''

        scalar_type = 'covar'
        cm2 = cm.format(scalar_type=scalar_type)
        
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
        state = pt.load_cpptraj_state(cm2, traj)
        state.run()

        mat = pt.matrix.covar(traj, '@CA')
        eigenvalues, eigenvectors = pt.matrix.diagonalize(mat, 2, dtype='tuple')

        data = pt.all_actions.projection(traj, '@CA', eigenvalues, eigenvectors,
                                          scalar_type=scalar_type)
        aa_eq(np.abs(state.data['Mode1'].values), np.abs(data[0]))
        aa_eq(np.abs(state.data['Mode2'].values), np.abs(data[1]))
        assert data.shape == (2, traj.n_frames)
示例#56
0
    def test_hbonds_from_pdb(self):
        traj = pt.load('data/1L2Y.pdb')
        hb = pt.search_hbonds(traj)

        state = pt.load_cpptraj_state('''
        parm data/1L2Y.pdb
        trajin data/1L2Y.pdb
        hbond series
        ''')
        state.run()

        for data_p, data_cpp in zip(hb.data, state.data[1:]):
            assert len(
                data_p) == traj.n_frames == 38, 'size of dataset must be 38'
            aa_eq(data_p, data_cpp)

        # make sure distances are smaller than cutoff
        distance_cutoff = 2.5
        angle_cutoff = 135.
        hb = pt.search_hbonds(traj)
        distances = pt.distance(traj, hb.get_amber_mask()[0])
        angles = pt.angles(traj, hb.get_amber_mask()[1])
        dist_indices = np.where(distances > distance_cutoff)
        angle_indices = np.where(angles < angle_cutoff)
        print('FILL ME', dist_indices, angle_indices)

        saved_donor_acceptors = ['ASP9_OD2-ARG16_NH1-HH12',
                                'ASP9_OD2-ARG16_NH2-HH22',
                                'ASP9_OD2-ARG16_NE-HE',
                                'ASP9_OD2-ARG16_NH2-HH21',
                                'ASP9_OD2-ARG16_NH1-HH11']

        donor_acceptors = pt.search_hbonds(traj, ':9,16').donor_acceptor
        assert saved_donor_acceptors == donor_acceptors, 'saved_donor_acceptors'

        aa_eq(hb.total_solute_hbonds(), hb.data['total_solute_hbonds'])
示例#57
0
    def test_iterload_and_load_remd(self):
        # iterload_remd
        traj = pt.iterload_remd("data/Test_RemdTraj/rem.nc.000",
                                "data/Test_RemdTraj/ala2.99sb.mbondi2.parm7",
                                T=300.0)
        for frame in traj:
            assert frame.temperature == 300.0, 'frame temperature must be 300.0 K'
        dist = pt.distance(traj, '@10 @20')

        state = pt.load_cpptraj_state(self.trajin_text)
        state.run()
        aa_eq(dist, state.data[-1])

        # load_remd
        traj2 = pt.load_remd("data/Test_RemdTraj/rem.nc.000",
                             "data/Test_RemdTraj/ala2.99sb.mbondi2.parm7",
                             T=300.0)
        aa_eq(traj.xyz, traj2.xyz)

        # with Topology
        traj2 = pt.iterload_remd("data/Test_RemdTraj/rem.nc.000",
                                 top=traj.top,
                                 T=300.0)
        aa_eq(traj.xyz, traj2.xyz)
示例#58
0
    def test_load_cpptraj_state_from_text(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        text = '''
        parm  data/Test_RemdTraj/ala2.99sb.mbondi2.parm7
        trajin data/Test_RemdTraj/rem.nc.000 remdtraj remdtrajtemp 300.
        distance @10 @20
        '''

        input_file = 'data/Test_RemdTraj/traj.in'

        state_from_file = pt.load_cpptraj_state(input_file)
        state_from_file.run()
        # remove DatasetTopology
        data = state_from_file.data
        data.remove_set(data[0])

        data_0 = state_from_file.data.values

        state_from_text = pt.datafiles.load_cpptraj_state(text)
        state_from_text.run()
        data = state_from_text.data
        data.remove_set(data[0])
        data_1 = state_from_text.data.values
        aa_eq(data_0, data_1)