示例#1
0
    def test_matrix_module(self):
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")

        for n_cores in [2, 3]:
            for func in [matrix.dist, matrix.idea]:
                x = pt.pmap(func, traj, '@CA', n_cores=n_cores)
                aa_eq(x, func(traj, '@CA'))
示例#2
0
    def test_xyz(self):
        traj = pt.datafiles.load_tz2_ortho()
        t0 = traj[:]

        def set_xyz_not_c_contiguous():
            t0.xyz = np.asfortranarray(traj.xyz)

        def append_2d():
            pt.load_sample_data('ala3')

        def set_xyz_not_same_n_atoms():
            traj1 = pt.load_sample_data('ala3')
            t0.xyz = traj1.xyz

        def append_2d():
            pt.load_sample_data('ala3')
            t0.append_xyz(pt.tools.as_2darray(traj))

        # fortran order, autoconvert
        # make sure there is no TypeError
        set_xyz_not_c_contiguous()

        self.assertRaises(ValueError, lambda: set_xyz_not_same_n_atoms())
        self.assertRaises(ValueError, lambda: append_2d())

        # make sure to autoconvert from f4 to f8
        xyz_f4 = np.array(traj.xyz, dtype='f4')
        assert xyz_f4.itemsize == 4, 'must be f4'
        t0.xyz = xyz_f4
        aa_eq(t0.xyz, xyz_f4)
        assert t0.xyz.itemsize == 8, 'must be converted from f4 to f8'
    def test_0(self):
        traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        f0 = traj[0]

        pt.io.to_pickle(f0, './output/frame_pk.pk')
        f1 = pt.io.read_pickle('./output/frame_pk.pk')
        aa_eq(f0.xyz, f1.xyz)
示例#4
0
 def test_antechamber(self):
     fn = 'data/cro.ac'
     traj = pt.io.load_antechamber(fn)
     assert traj.n_atoms == 40
     assert traj.top.n_residues == 1
     aa_eq([atom.charge for atom in traj.top.atoms][:3], [-0.895800, 0.113200, 0.11110])
     aa_eq([atom.charge for atom in traj.top.atoms][-3:], [0.146500, 0.146500, 0.42300])
示例#5
0
    def test_0(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        f0 = traj[0]

        pt.io.to_pickle(f0, './output/frame_pk.pk')
        f1 = pt.io.read_pickle('./output/frame_pk.pk')
        aa_eq(f0.xyz, f1.xyz)
示例#6
0
def test_read_gaussian_output():
    filename = "./data/gaussian/GF2.log"
    gau = cclib.parser.Gaussian(filename)
    go = gau.parse()

    traj = pt.tools.read_gaussian_output(filename, "./data/gaussian/GF2.pdb")
    aa_eq(traj.xyz, go.atomcoords)
示例#7
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)
示例#8
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)
示例#9
0
    def test_iterframe(self):
        '''test iterframe for both Trajectory and TrajectoryIterator
        '''

        orig_traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        # iterframe (already in doctest), just throwing raise to increase coverage score

        for traj in [orig_traj, orig_traj[:]]:
            self.assertRaises(ValueError,
                              lambda: traj.iterframe(rmsfit='crazy'))

            # rmsfit is an int
            t0 = orig_traj[:].rmsfit(ref=3)
            aa_eq(
                pt.rmsd_nofit(
                    traj(rmsfit=3),
                    ref=orig_traj[-1]),
                pt.rmsd_nofit(t0, ref=orig_traj[-1]))

        # test TypeError if not has n_frames info
        t0 = orig_traj[:]

        def int_gen(k):
            for i in range(k):
                yield i

        fi = pt.iterframe(t0, frame_indices=int_gen(3))
        aa_eq(pt.radgyr(fi, top=traj.top), pt.radgyr(orig_traj[:3]))
示例#10
0
    def test_0(self):
        _ds1 = pt.calc_dssp(traj[:5], dtype='dataset')
        ds1 = _ds1.grep('LYS')
        _ds2 = pt.calc_dssp(traj[5:], dtype='dataset')
        ds2 = _ds2.grep('LYS')

        dstack = stack((ds1, ds2))
        _d12 = pt.calc_dssp(traj, dtype='dataset')
        d12 = _d12.grep("LYS")

        dstack_dict = dstack.to_dict()
        d12_dict = d12.to_dict()
        assert sorted(dstack_dict.keys()) == sorted(d12_dict)

        for key in dstack_dict.keys():
            arr0 = dstack_dict[key]
            arr1 = d12_dict[key]
            if np.any(arr0 == arr1) == False:
                pass

        arr1 = ds1.to_ndarray()
        ds2.to_ndarray()
        arrstack = dstack.to_ndarray()
        arr12 = d12.to_ndarray()

        aa_eq(arrstack.flatten(), arr12.flatten())
    def test_mass(self):
        traj = self.traj
        # cpptraj output
        cm = '''
        reference avg.pdb
        rms R0 reference @CA,C,N,O savematrices mass
        '''

        state = pt.load_batch(traj, cm)
        state.run()
        saved_mat = state.data[-1].values

        # pytraj output
        avg = pt.mean_structure(traj)
        mat = pt.calc_rotation_matrix(
            traj, ref=avg, mask='@CA,C,N,O', mass=True)
        assert mat.shape == (traj.n_frames, 3, 3), 'mat shape'
        aa_eq(mat.flatten(), saved_mat.flatten())

        # with rmsd
        avg = pt.mean_structure(traj)
        mat2, rmsd_ = pt.calc_rotation_matrix(
            traj, ref=avg, mask='@CA,C,N,O', mass=True, with_rmsd=True)
        aa_eq(mat2.flatten(), saved_mat.flatten())
        assert pt.tools.rmsd(rmsd_, state.data['R0']) < 1E-3
示例#12
0
    def test_volmap(self):
        traj = pt.iterload("data/tz2.ortho.nc", "data/tz2.ortho.parm7")

        # raise if does not provide size
        self.assertRaises(
            AssertionError, lambda: pt.pmap(pt.volmap,
                                            traj,
                                            mask=':WAT@O',
                                            grid_spacing=(0.5, 0.5, 0.5),
                                            n_cores=2))

        mask = ':WAT@O'
        grid_spacing = (0.5, 0.5, 0.5)

        for n_cores in [1, 2, 3]:
            for size in [(20, 20, 20), (20, 40, 60)]:
                serial_out = pt.volmap(traj,
                                       mask=mask,
                                       grid_spacing=grid_spacing,
                                       size=size)
                parallel_out = pt.pmap(pt.volmap,
                                       traj,
                                       mask=mask,
                                       grid_spacing=grid_spacing,
                                       size=size,
                                       n_cores=n_cores)
                self.assertEqual(serial_out.shape, tuple(2 * x for x in size))
                aa_eq(serial_out, parallel_out)
    def test_nomass(self):
        traj = self.traj
        # cpptraj output
        cm = '''
        reference avg.pdb
        rms R0 reference @CA,C,N,O savematrices
        '''

        state = pt.load_batch(traj, cm)
        state.run()
        saved_mat = state.data[-1].values

        # pytraj output
        avg = pt.mean_structure(traj)
        mat = pt.calc_rotation_matrix(traj, ref=avg, mask='@CA,C,N,O')
        assert mat.shape == (traj.n_frames, 3, 3), 'mat shape'
        aa_eq(mat.flatten(), saved_mat.flatten())

        # not specify reference
        cm = '''
        rms R0 @CA,C,N,O savematrices
        '''
        state = pt.load_batch(traj, cm)
        state.run()
        saved_mat = state.data[-1].values
        mat = pt.calc_rotation_matrix(traj, mask='@CA,C,N,O')
        aa_eq(mat.flatten(), saved_mat.flatten())
示例#14
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)
示例#15
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)
示例#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_get_velocity(self):
        traj = pt.iterload(fn('issue807/trunc.nc'),
                           fn("issue807/system.prmtop"))

        traj[0]

        # no mask, no frame_indices
        vels = pt.get_velocity(traj)
        assert vels.shape == (traj.n_frames, traj.n_atoms, 3), 'vels.shape'

        # string mask
        vels = pt.get_velocity(traj, '@O', frame_indices=[0, 2])
        fi = traj(frame_indices=[0, 2], mask='@O')
        assert vels.shape == (fi.n_frames, fi.top.n_atoms, 3), 'vels.shape'

        # atom indices
        atm_indices = pt.select_atoms('@O', traj.top)
        vels_ = pt.get_velocity(traj, atm_indices, frame_indices=[0, 2])
        fi = traj(frame_indices=[0, 2], mask='@O')
        assert vels_.shape == (fi.n_frames, fi.top.n_atoms, 3), 'vels.shape'
        aa_eq(vels, vels_)

        # raise if not having velocity
        traj2 = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
        with pytest.raises(ValueError):
            pt.get_velocity(traj2)
示例#18
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]))
示例#19
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)
示例#20
0
    def test_0(self):
        import numpy as np
        from pytraj.datasetlist import stack as stack
        _ds1 = pt.calc_dssp(traj[:5], dtype='dataset')
        ds1 = _ds1.grep('LYS')
        _ds2 = pt.calc_dssp(traj[5:], dtype='dataset')
        ds2 = _ds2.grep('LYS')

        dstack = stack((ds1, ds2))
        _d12 = pt.calc_dssp(traj, dtype='dataset')
        d12 = _d12.grep("LYS")

        dstack_dict = dstack.to_dict()
        d12_dict = d12.to_dict()
        assert sorted(dstack_dict.keys()) == sorted(d12_dict)

        for key in dstack_dict.keys():
            arr0 = dstack_dict[key]
            arr1 = d12_dict[key]
            if np.any(arr0 == arr1) == False:
                pass

        arr1 = ds1.to_ndarray()
        arr2 = ds2.to_ndarray()
        arrstack = dstack.to_ndarray()
        arr12 = d12.to_ndarray()

        aa_eq(arrstack.flatten(), arr12.flatten())
示例#21
0
    def test_multiple_cores(self):
        from multiprocessing import Pool
        traj = pt.iterload('data/tz2.nc', 'data/tz2.parm7')
        for _ in range(10):
            traj._load(traj.filelist)
        saved_angle = pt.angle(traj, ':3 :10 :11')
        saved_dist = pt.distance(traj, ':3 :10')

        for n_cores in [2, 3]:
            lines = ['angle :3 :10 :11', 'distance :3 :10']
            pfuncs = partial(worker_state,
                             n_cores=n_cores,
                             traj=traj,
                             dtype='dict',
                             lines=lines)
            p = Pool(n_cores)
            data_list = p.map(pfuncs, [rank for rank in range(n_cores)])
            p.close()
            p.join()
            data_list_sorted_rank = (data[1]
                                     for data in sorted(data_list,
                                                        key=lambda x: x[0]))
            final_data = concat_dict(data_list_sorted_rank)
            aa_eq(final_data['Ang_00002'], saved_angle)
            aa_eq(final_data['Dis_00003'], saved_dist)
def test_progress_log():
    """test_progress_log: simple test, just to make sure it is runnable
    """
    traj = pt.datafiles.load_tz2()

    p = ProgressBarTrajectory(traj, style='basic', every=20)
    pt.molsurf(p)

    p = ProgressBarTrajectory(traj, style='bar', every=20)
    pt.molsurf(p)

    p = ProgressBarTrajectory(traj, style='circle', every=20)
    pt.molsurf(p)

    # need to run on Jupyter notebook
    if tqdm is not None:
        p = ProgressBarTrajectory(traj, style='tqdm')
        pt.molsurf(p)

        try:
            p = ProgressBarTrajectory(traj, style=tqdm_notebook)
            pt.molsurf(p)
        except traitlets.traitlets.TraitError:
            pass

    # make sure not loading all coordinates from TrajectoryIterator

    traj2 = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
    traj2._size_limit_in_GB = traj2._estimated_GB - 0.001

    with pytest.raises(MemoryError):
        traj2.xyz

    p2 = ProgressBarTrajectory(traj2)
    aa_eq(pt.rmsd(p2), pt.rmsd(traj2))
示例#23
0
    def test_center(self):
        traj = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
        pt.load(fn("tz2.center_mass.nc"), traj.top)

        fa = traj[:]
        fa2 = traj[:].copy()
        pt.center(fa, mask=':1', mass=True)
        aa_eq(fa.xyz, fa.xyz, decimal=5)

        # raise if center not in 'origin', 'box'
        self.assertRaises(ValueError, lambda: pt.center(fa, center='oh'))

        # center to point

        pt.center(fa, ':1', center=[0, 1, 2], mass=True)
        aa_eq(pt.center_of_mass(fa, ':1')[0], [0, 1, 2])

        pt.center(fa, ':1', center=[0, 1, 2], mass=False)
        aa_eq(pt.center_of_geometry(fa, ':1')[0], [0, 1, 2])

        fa2.center(':1', center=[0, 1, 2], mass=False)
        aa_eq(pt.center_of_geometry(fa2, ':1')[0], [0, 1, 2])

        # on_disk
        traj_on_disk = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
        pt.center(traj_on_disk, ':1', center=[0, 1, 2], mass=True)
        aa_eq(pt.center_of_mass(traj_on_disk, ':1')[0], [0, 1, 2])
示例#24
0
    def test_velocity(self):
        traj = pt.iterload("./data/issue807/trunc.nc",
                           "data/issue807/system.prmtop")

        f = traj[0]

        # no mask, no frame_indices
        vels = pt.get_velocity(traj)
        assert vels.shape == (traj.n_frames, traj.n_atoms, 3), 'vels.shape'

        # string mask
        vels = pt.get_velocity(traj, '@O', frame_indices=[0, 2])
        fi = traj(frame_indices=[0, 2], mask='@O')
        assert vels.shape == (fi.n_frames, fi.top.n_atoms, 3), 'vels.shape'

        # atom indices
        atm_indices = pt.select_atoms('@O', traj.top)
        vels_ = pt.get_velocity(traj, atm_indices, frame_indices=[0, 2])
        fi = traj(frame_indices=[0, 2], mask='@O')
        assert vels_.shape == (fi.n_frames, fi.top.n_atoms, 3), 'vels.shape'
        aa_eq(vels, vels_)

        # raise if not having velocity
        traj2 = pt.iterload('data/tz2.nc', 'data/tz2.parm7')
        self.assertRaises(ValueError, lambda: pt.get_velocity(traj2))
    def test_comprehensive(self):
        traj = pt.iterload("data/Test_RemdTraj/rem.nc.000",
                           "data/Test_RemdTraj/ala2.99sb.mbondi2.parm7")
        # temperature
        aa_eq(traj.temperatures, [300., 630.5, 630.5, 630.5, 630.5, 630.5,
                                  630.5, 630.5, 492.2, 384.3])

        # iterframe (already in doctest), just throwing raise to increase coverage score
        self.assertRaises(ValueError, lambda: traj.iterframe(rmsfit='crazy'))

        # raise
        # memory error if load larger than 1GB for xyz
        traj = pt.datafiles.load_tz2_ortho()
        for _ in range(11):
            traj._load(traj.filelist)

        self.assertRaises(MemoryError, lambda: traj.xyz)

        # can not find filename
        self.assertRaises(ValueError, lambda: traj._load(None))
        # has filename but does not have Topology
        self.assertRaises(
            ValueError,
            lambda: pt.TrajectoryIterator("data/Test_RemdTraj/rem.nc.000", top=None))
        self.assertRaises(
            ValueError,
            lambda: pt.TrajectoryIterator("data/Test_RemdTraj/rem.nc.000"))
        # empty Topology
        self.assertRaises(
            ValueError,
            lambda: pt.TrajectoryIterator("data/Test_RemdTraj/rem.nc.000", top=pt.Topology()))
        # weird Topology
        self.assertRaises(
            ValueError,
            lambda: pt.TrajectoryIterator("data/Test_RemdTraj/rem.nc.000", top=pt.Frame))
    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)
示例#27
0
    def test_general(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")

        # with mask
        saved_data = pt.radgyr(traj, '@CA')
        data = pt.pmap(pt.radgyr, traj, '@CA')
        data = pt.tools.dict_to_ndarray(data)
        aa_eq(saved_data, data)

        # with a series of functions
        func_list = [pt.radgyr, pt.molsurf, pt.rmsd]
        ref = traj[-3]

        for n_cores in [2, 3]:
            for func in func_list:
                if func in [pt.rmsd, ]:
                    pout = pt.tools.dict_to_ndarray(pt.pmap(func=func,
                                                            traj=traj,
                                                            ref=ref,
                                                            n_cores=n_cores))
                    serial_out = flatten(func(traj, ref=ref))
                else:
                    pout = pt.tools.dict_to_ndarray(pt.pmap(n_cores=n_cores,
                                                            func=func,
                                                            traj=traj))
                    serial_out = flatten(func(traj))
                aa_eq(pout[0], serial_out)

         # test worker
         # need to test this since coverages seems not recognize partial func
        from pytraj.parallel.multiprocessing_ import worker_byfunc
        data = worker_byfunc(rank=2, n_cores=8, func=pt.radgyr, traj=traj, args=(), kwd={'mask': '@CA'}, iter_options={})
        assert data[0] == 2, 'rank must be 2'
        assert data[2] == 1, 'n_frames for rank=2 should be 1 (only 10 frames in total)'
示例#28
0
    def test_combine_cpptraj_iterating_with_pytraj(self):
        traj = pt.iterload(fn("tz2.ortho.nc"), fn("tz2.ortho.parm7"))
        commands = [
            'autoimage',
            'rms',
        ]

        dslist = CpptrajDatasetList()
        actlist = ActionList(commands, top=traj.top, dslist=dslist)

        def get_fi(actlist, traj):
            '''create a frame iterator with pre-processed by cpptraj
            '''
            for frame in traj:
                actlist.compute(frame)
                yield frame

        ref = traj[3]
        pt.autoimage(ref, top=traj.top)
        fi = get_fi(actlist, traj)
        rmsd_nofit_after_fitting = pt.rmsd_nofit(fi, ref=ref, top=traj.top)

        t0 = traj[:].autoimage().superpose()
        saved_rmsd_ = pt.rmsd_nofit(t0, ref=ref)
        aa_eq(rmsd_nofit_after_fitting, saved_rmsd_)
    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)
示例#30
0
    def test_matrix_module(self):
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")

        for n_cores in [2, 3]:
            for func in [matrix.dist, matrix.idea]:
                x = pt.pmap(func, traj, '@CA', n_cores=n_cores)
                aa_eq(x, func(traj, '@CA'))
示例#31
0
    def test_combine_with_frame_iterator(self):
        traj = pt.iterload(fn("tz2.ortho.nc"), fn("tz2.ortho.parm7"))
        dslist = CpptrajDatasetList()

        commands = [
            'autoimage',
            'rms',
        ]

        actlist = ActionList(commands, top=traj.top, dslist=dslist)

        def get_frameiter(actlist, traj):
            for frame in traj:
                actlist.compute(frame)
                yield frame

        def do_extra(fi):
            a = []
            for frame in fi:
                frame.xyz = frame.xyz + 2.
                a.append(frame.copy())
            return a

        new_list = do_extra(get_frameiter(actlist, traj))
        t0 = traj[:].autoimage().superpose()
        t0.xyz += 2.
        aa_eq(np.array([frame.xyz for frame in new_list]), t0.xyz)
    def test_different_cores(self):
        # use different frame_slice with different n_cores to test
        REF_0 = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))[0]

        for frame_slice in [
            (0, 100),
            (10, 100, 3),
            (50, 80, 2),
            (51, 80, 3),
        ]:
            traj = pt.iterload(fn('tz2.nc'),
                               fn('tz2.parm7'),
                               frame_slice=frame_slice)
            saved_angle = pt.angle(traj, ':3 :7 :9')
            saved_dist = pt.distance(traj, ':2 :10')
            saved_rmsd = pt.rmsd(traj, ref=REF_0, mask='@CA')

            lines = ['angle :3 :7 :9', 'distance :2 :10']

            for n_cores in [2, 3]:
                data_list = [
                    worker_by_state(rank, n_cores, traj, lines)
                    for rank in range(n_cores)
                ]
                final_data = concat_dict([x[1] for x in data_list])
                aa_eq(final_data['Ang_00002'], saved_angle)
                aa_eq(final_data['Dis_00003'], saved_dist)
示例#33
0
    def test_tools(self):
        traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
        aa_eq(pt.tools.as_2darray(traj), pt.tools.as_2darray(traj.xyz))

        # as_2darray
        assert pt.tools.as_2darray(traj).ndim == 2, 'ndim must be 2'

        #
        self.assertRaises(
            ValueError,
            lambda: pt.tools.rmsd_1darray([3, 2], [[2, 3], [4, 6]]))
        self.assertRaises(
            ValueError,
            lambda: pt.tools.rmsd_1darray([[2, 3], [4, 6]], [2, 3]))

        # rmsd
        self.assertRaises(ValueError,
                          lambda: pt.tools.rmsd([[2, 3], [4, 6]], [2, 3]))
        self.assertRaises(
            ValueError, lambda: pt.tools.rmsd([[2, 3]], [2, 3], flatten=False))

        #
        for frame in pt.tools.split_traj_by_residues(traj, 0, 12):
            pass

        assert not [
            name for name in pt.tools.dir_(frame) if name.startswith('_')
        ]
示例#34
0
    def test_iterframe(self):
        '''test iterframe for both Trajectory and TrajectoryIterator
        '''

        orig_traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        # iterframe (already in doctest), just throwing raise to increase coverage score

        for traj in [orig_traj, orig_traj[:]]:
            self.assertRaises(ValueError,
                              lambda: traj.iterframe(rmsfit='crazy'))

            # rmsfit is an int
            t0 = orig_traj[:].rmsfit(ref=3)
            aa_eq(pt.rmsd_nofit(traj(rmsfit=3), ref=orig_traj[-1]),
                  pt.rmsd_nofit(t0, ref=orig_traj[-1]))

        # test TypeError if not has n_frames info
        t0 = orig_traj[:]

        def int_gen(k):
            for i in range(k):
                yield i

        fi = pt.iterframe(t0, frame_indices=int_gen(3))
        aa_eq(pt.radgyr(fi, top=traj.top), pt.radgyr(orig_traj[:3]))
示例#35
0
    def test_xyz(self):
        traj = pt.datafiles.load_tz2_ortho()
        t0 = traj[:]

        def set_xyz_not_c_contiguous():
            t0.xyz = np.asfortranarray(traj.xyz)

        def append_2d():
            traj1 = pt.load_sample_data('ala3')

        def set_xyz_not_same_n_atoms():
            traj1 = pt.load_sample_data('ala3')
            t0.xyz = traj1.xyz

        def append_2d():
            traj1 = pt.load_sample_data('ala3')
            t0.append_xyz(pt.tools.as_2darray(traj))

        # fortran order, autoconvert
        # make sure there is no TypeError
        set_xyz_not_c_contiguous()

        self.assertRaises(ValueError, lambda: set_xyz_not_same_n_atoms())
        self.assertRaises(ValueError, lambda: append_2d())

        # make sure to autoconvert from f4 to f8
        xyz_f4 = np.array(traj.xyz, dtype='f4')
        assert xyz_f4.itemsize == 4, 'must be f4'
        t0.xyz = xyz_f4
        aa_eq(t0.xyz, xyz_f4)
        assert t0.xyz.itemsize == 8, 'must be converted from f4 to f8'
    def test_1(self):
        traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        trajectory_t0 = Trajectory(traj)

        # __iter__
        for f in trajectory_t0:
            pass

        f.xyz[0, 0] = 10.
        assert f.xyz[0, 0] == 10.
        assert trajectory_t0.xyz[-1, 0, 0] == 10.

        # __getitem__
        # make a new copy
        trajectory_t0 = Trajectory(traj)
        f0 = trajectory_t0[0]
        f0.xyz[0, 0] = 200.
        assert trajectory_t0.xyz[0, 0, 0] == 200.

        # translate
        # make a new copy
        trajectory_t0 = Trajectory(traj)
        t0 = traj[:]
        pt.translate(trajectory_t0, 'x 1.2')
        pt.translate(t0, 'x 1.2')
        aa_eq(trajectory_t0.xyz, t0.xyz)

        try:
            pt.rmsd(t0, ref=0)
            pt.rmsd(trajectory_t0, ref=0)
        except ImportError:
            pass

        # test rmsfit
        trajectory_t0.rmsfit(ref=0)
示例#37
0
    def test_vs_list_tuple(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        traj0 = pt.replicate_cell(traj, direction='dir 001 dir 0-10')
        traj1 = pt.replicate_cell(traj, direction=('001', '0-10'))
        aa_eq(traj0.xyz, traj1.xyz)

        self.assertRaises(ValueError, lambda: pt.replicate_cell(traj, direction=traj[0]))
示例#38
0
    def test_pmap_average_structure(self):
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")
        saved_frame = pt.mean_structure(traj, '@CA')
        saved_xyz = saved_frame.xyz

        for n_cores in [2, 3, 4]:
            frame = pt.pmap(pt.mean_structure, traj, '@CA', n_cores=n_cores)
            aa_eq(frame.xyz, saved_xyz)
示例#39
0
    def test_pieline(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")

        fi = pt.pipe(traj, ['autoimage', ])
        aa_eq(pt.get_coordinates(fi), traj[:].autoimage().xyz)

        fi = pt.pipe(traj, ['autoimage', ], frame_indices=[3, 5])
        aa_eq(pt.get_coordinates(fi), traj[[3, 5]].autoimage().xyz)
示例#40
0
    def test_DatasetMatrix3x3(self):
        # test _append_from_array
        mat0 = pt.calc_rotation_matrix(self.traj, ref=0)

        shape2d = (mat0.shape[0], mat0.shape[1] * mat0.shape[2])
        dmat3x3 = c_datasets.DatasetMatrix3x3()
        dmat3x3._append_from_array(mat0.reshape(shape2d))
        aa_eq(mat0, dmat3x3.values)
示例#41
0
    def test_0(self):
        from pytraj.core import mass_atomic_number_dict, mass_element_dict
        top = mdio.load_topology("./data/tz2.parm7")
        mass_list = []

        for atom in top:
            mass_list.append(mass_atomic_number_dict[atom.atomic_number])
        aa_eq(mass_list, top.mass, 2)
    def test_0(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        from pytraj.utils import convert as cv
        arange = cv.array_to_cpptraj_range(range(7))

        a0 = pt.multidihedral(traj, resrange='1-7').values
        a1 = pt.multidihedral(traj, resrange=range(7)).values
        aa_eq(a0.flatten(), a1.flatten())
示例#43
0
    def test_read_gaussian_output(self):
        import cclib
        filename = "./data/gaussian/GF2.log"
        gau = cclib.parser.Gaussian(filename)
        go = gau.parse()

        traj = pt.tools.read_gaussian_output(filename, "./data/gaussian/GF2.pdb")
        aa_eq(traj.xyz, go.atomcoords)
示例#44
0
    def test_issue_172_cpptraj(self):
        '''Internal Error: Attempting to assign to Frame with external memory
        '''
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")

        arr_out_of_memory = pt.atomiccorr(traj(0, 8, 2), '@CA')
        arr_in_memory = pt.atomiccorr(traj[0: 8: 2], '@CA')
        aa_eq(arr_out_of_memory, arr_in_memory)
    def test_0(self):
        traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        from pytraj.utils import convert as cv
        cv.array_to_cpptraj_range(range(7))

        a0 = pt.multidihedral(traj, resrange='1-7').values
        a1 = pt.multidihedral(traj, resrange=range(7)).values
        aa_eq(a0.flatten(), a1.flatten())
示例#46
0
 def test_trajiter_with_actionlist(self):
     traj = pt.iterload(fn('tz2.ortho.nc'), fn('tz2.ortho.parm7'))
     traj.autoimage().center('origin').superpose('@CA')
     pk_fn = 'output/test.pk'
     pt.to_pickle(traj, pk_fn)
     traj2 = pt.read_pickle(pk_fn)
     print(traj2._transform_commands)
     aa_eq(traj.xyz, traj2.xyz)
示例#47
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)
示例#48
0
    def test_0(self):
        traj = pt.iterload("./data/Test_NAstruct/adh026.3.pdb")
        d = pt.calc_delta(traj, resrange='1').values

        d1 = pt.dihedral(traj, ":1@C5' :1@C4' :1@C3' :1@O3'")
        d2 = pt._dihedral_res(traj, ("C5'", "C4'", "C3'", "O3'"))

        aa_eq(d, d1)
        aa_eq(d, d2)
示例#49
0
    def test_fancy_save(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        traj[1:8].save("./output/test_fancy_save_frame1_7.x", overwrite=True)

        fanew = pt.iterload("./output/test_fancy_save_frame1_7.x", traj.top)

        for idx, f0 in enumerate(traj[1:8]):
            f0new = fanew[idx]
            aa_eq(f0.xyz, f0new.xyz)
示例#50
0
    def test_atomiccorr(self):
        traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7")
        state = pt.load_batch(traj, '''
        atomiccorr out test.dat :1-13 byres
        ''')
        state.run()

        data = pt.atomiccorr(traj, ':1-13', byres=True)
        aa_eq(data, state.data[1].values)
示例#51
0
    def test_6(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        mask_list = ('@CB @CA', '@CA @H')
        dslist = pt.calc_distance(traj, mask_list)
        dslist3_0 = pt.calc_distance(traj, mask_list[0])
        dslist3_1 = pt.calc_distance(traj, mask_list[1])

        aa_eq(dslist3_0, dslist[0])
        aa_eq(dslist3_1, dslist[1])
示例#52
0
 def test_sander_pmap_simple(self):
     traj = pt.iterload('./data/Tc5b.x', './data/Tc5b.top')
     fname = traj.top.filename
     serial = pt.energy_decomposition(traj, prmtop=fname)['dihedral']
     parallel = pt.pmap(n_cores=4,
                        func=pt.energy_decomposition,
                        traj=traj,
                        prmtop=fname)['dihedral']
     aa_eq(serial, parallel)
示例#53
0
    def test_allocate_frames(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        traj2 = pt.Trajectory()
        traj2._allocate(traj.n_frames, traj.n_atoms)
        assert (traj2.shape == traj.shape)

        traj2.top = traj.top.copy()
        traj2.xyz = traj.xyz[:]
        aa_eq(traj2.xyz, traj.xyz)
示例#54
0
    def test_center(self):
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        saved_traj = pt.load("./data/tz2.center_mass.nc", traj.top)

        fa = traj[:]
        pt.center(fa, mask=':1', mass=True)
        aa_eq(fa.xyz, fa.xyz, decimal=5)

        # raise if center not in 'origin', 'box'
        self.assertRaises(ValueError, lambda: pt.center(fa, center='oh'))
示例#55
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)
示例#56
0
    def test_dataset_coords_ref(self):
        traj = pt.iterload('data/tz2.nc', 'data/tz2.parm7')
        avg_frame = pt.mean_structure(traj(rmsfit=(0, '!@H=')))
        state = self.state

        # need to loop several times to make sure this does not fail
        # due to memory free
        for _ in range(20):
            cpp_ref = state.data['AVG'].get_frame()
            aa_eq(avg_frame.xyz, cpp_ref.xyz)
示例#57
0
    def test_DatasetDouble(self):
        dslist = CpptrajDatasetList()
        d = dslist.add_new(dtype='double')
        a = range(8)

        # append
        for i in a:
            d.append(i)
        aa_eq(a, d)
        assert int(d[2]) == a[2] == 2, 'must be equal'
示例#58
0
    def test_insert_new_function(self):
        traj = pt.iterload("data/tz2.nc", "data/tz2.parm7")

        # create mutable Trajectory
        t0 = traj[:]
        for frame in t0:
            frame.xyz[:10] += 1.

        data_parallel = pt.pmap(pt.radgyr, traj, n_cores=2, apply=change_10_atoms)
        data_serial = pt.radgyr(t0)
        aa_eq(data_parallel['RoG_00000'], data_serial)