Esempio n. 1
0
def test_write_pdb():
    # TODO: get absolute path so we can use `tempfolder`
    # if not: wrong dir if using TrajectoryIterator
    traj = pt.iterload(tc5b_trajin, tc5b_top)[:]
    TrajectoryWriter()

    # multiple pdb in multiple files, using `save` method in traj
    with tempfolder():
        basename = "test_pdb_files.pdb"
        traj.save(basename, overwrite=True, options="multi")
        for i in range(10):
            fname = basename + "." + str(i + 1)  # cpptraj use `1`
            frame = pt.iterload(fname, traj.top)[0]
            aa_eq(frame.xyz, traj[i].xyz)

    # multiple pdb in multiple files, using `pt.write_traj`
    with tempfolder():
        basename = "test_pdb_files_pt_write_traj.pdb"
        pt.write_traj(basename, traj, overwrite=True, options="multi")
        for i in range(10):
            fname = basename + "." + str(i + 1)  # cpptraj use `1`
            frame = pt.iterload(fname, traj.top)[0]
            aa_eq(frame.xyz, traj[i].xyz)

        with pytest.raises(IOError):
            # write files again, raise if file exists
            pt.write_traj(basename, traj, overwrite=False, options="multi")

    # keepext
    with tempfolder():
        basename = 'test_pdb_files_pt_write_traj.pdb'
        basename2 = 'test_pdb_files_pt_write_traj'
        pt.write_traj(basename, traj, overwrite=True, options="multi keepext")
        for i in range(10):
            fname = "{}.{}.pdb".format(basename2, i + 1)
            frame = pt.iterload(fname, traj.top)[0]
            aa_eq(frame.xyz, traj[i].xyz)

        with pytest.raises(IOError):
            pt.write_traj(basename,
                          traj,
                          overwrite=False,
                          options="multi keepext")

    # multiple pdb in SINGLE file
    with tempfolder():
        basename = "test_pdb_files.pdb"
        traj.save(basename, overwrite=True)
        traj2 = pt.load(basename, traj.top)
        aa_eq(traj.xyz, traj2.xyz)

    # multiple pdb in SINGLE file with `model` keyword
    # write to output so we can manually check
    basename = "test_pdb_files_model.pdb"
    with tempfolder():
        traj.save(basename, overwrite=True, options='model')
        traj3 = pt.load(basename, traj.top)
        aa_eq(traj.xyz, traj3.xyz)
Esempio n. 2
0
    def test_split_and_write_traj(self):
        traj = pt.iterload([fn('Tc5b.x'), fn('Tc5b.x')], fn('Tc5b.top'))
        # duplcate
        assert traj.n_frames == 20
        top = traj.top

        with tempfolder():
            # test TrajectoryIterator object
            pt.tools.split_and_write_traj(traj,
                                          n_chunks=4,
                                          root_name='trajiterx',
                                          overwrite=True)
            flist = sorted(glob("trajiterx*"))
            traj4 = pt.iterload(flist, top)
            aa_eq(traj4.xyz, traj.xyz)

            # dcd ext
            pt.tools.split_and_write_traj(traj,
                                          4,
                                          root_name='ts',
                                          ext='dcd',
                                          overwrite=True)
            flist = sorted(glob("ts.*.dcd"))
            traj4 = pt.iterload(flist, top)
            aa_eq(traj4.xyz, traj.xyz)
Esempio n. 3
0
 def test_write_xyz(self):
     xyz = self.traj.xyz
     fname = 'test_xyz.nc'
     with tempfolder():
         pt.write_traj(fname, xyz, top=self.traj.top, overwrite=True)
         t0 = pt.iterload(fname, top=self.traj.top)
         aa_eq(self.traj.xyz, t0.xyz)
Esempio n. 4
0
def test_trajectory_writer():
    traj = pt.iterload(tc5b_trajin, tc5b_top)
    with tempfolder():
        pt.write_traj("test_1.pdb", traj[0], top=traj.top, overwrite=True)
        pt.write_traj("test_1.dcd", traj[0], top=traj.top, overwrite=True)

        with TrajectoryWriter("test_1", overwrite=True) as trajout:
            trajout.write(traj[0])
Esempio n. 5
0
def test_write_CRYST1():
    traj = pt.datafiles.load_tz2_ortho()[:1]
    print(traj.unitcells)

    with tempfolder():
        fn = "test.pdb"
        traj.save(fn)
        traj2 = pt.load(fn)
        aa_eq(traj.unitcells, traj2.unitcells, decimal=3)
Esempio n. 6
0
def test_spam():
    # FIXME: assert?
    peaks_xyz = os.path.join(cpptraj_test_dir, 'Test_SPAM', 'peaks.xyz')
    command = """
    parm {}
    trajin {}
    autoimage
    spam {} name SPAM cut 12.0 info spam.info out spam.dat reorder \
         summary summary.dat
    trajout test.mdcrd onlyframes 1-2
    """.format(tz2_truncoct_top, tz2_truncoct_trajin, peaks_xyz)

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

    traj = pt.iterload(tz2_truncoct_trajin, tz2_truncoct_top)
    # cm = 'SPAM cut 12.0 info spam.info out spam.dat reorder summary summary.dat'
    cm = 'SPAM cut 12.0 reorder'
    with tempfolder():
        spam_out = pt.spam(traj, peak_file=peaks_xyz, command=cm)
Esempio n. 7
0
def example_write_pdb():
    traj = pt.iterload("../tests/data/Tc5b.x", "../tests/data/Tc5b.top")
    # multiple pdb in multiple files, using `save` method in traj
    with tempfolder():
        basename = "test_pdb_files.pdb"
        traj.save(basename, overwrite=True, options="multi")

    # multiple pdb in multiple files, using `pt.io.write_traj`
    with tempfolder():
        basename = "test_pdb_files_pt.io_write_traj.pdb"
        pt.io.write_traj(basename, traj, overwrite=True, options="multi")

    # multiple pdb in SINGLE file
    with tempfolder():
        basename = "test_pdb_files.pdb"
        traj.save(basename, overwrite=True)

    # multiple pdb in SINGLE file with `optionsl` keyword
    # write to output so we can manually check
    with tempfolder():
        basename = "test_pdb_files_model.pdb"
        traj.save(basename, overwrite=True, options='model')
Esempio n. 8
0
    def test_1(self):
        # TODO: get absolute path so we can use `tempfolder`
        # if not: wrong dir if using TrajectoryIterator
        traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")[:]
        trajout = TrajectoryWriter()

        # multiple pdb in multiple files, using `save` method in traj
        with tempfolder():
            basename = "test_pdb_files.pdb"
            traj.save(basename, overwrite=True, options="multi")
            for i in range(10):
                fname = basename + "." + str(i + 1)  # cpptraj use `1`
                frame = mdio.iterload(fname, traj.top)[0]
                aa_eq(frame.xyz, traj[i].xyz)

        # multiple pdb in multiple files, using `mdio.write_traj`
        with tempfolder():
            basename = "test_pdb_files_mdio_write_traj.pdb"
            mdio.write_traj(basename, traj, overwrite=True, options="multi")
            for i in range(10):
                fname = basename + "." + str(i + 1)  # cpptraj use `1`
                frame = pt.iterload(fname, traj.top)[0]
                aa_eq(frame.xyz, traj[i].xyz)

        # multiple pdb in SINGLE file
        with tempfolder():
            basename = "test_pdb_files.pdb"
            traj.save(basename, overwrite=True)
            traj2 = mdio.load(basename, traj.top)
            aa_eq(traj.xyz, traj2.xyz)

        # multiple pdb in SINGLE file with `model` keyword
        # write to output so we can manually check
        basename = "./output/test_pdb_files_model.pdb"
        traj.save(basename, overwrite=True, options='model')
        traj3 = mdio.load(basename, traj.top)
        aa_eq(traj.xyz, traj3.xyz)
    def test_1(self):
        # TODO: get absolute path so we can use `tempfolder`
        # if not: wrong dir if using TrajectoryIterator
        traj = mdio.iterload("../tests/data/Tc5b.x",
                             "../tests/data/Tc5b.top")[:]
        trajout = TrajectoryWriter()
        # multiple pdb in multiple files, using `save` method in traj
        with tempfolder():
            basename = "test_pdb_files.pdb"
            traj.save(basename, overwrite=True, options="multi")
            for i in range(10):
                fname = basename + "." + str(i + 1)  # cpptraj use `1`
                frame = mdio.iterload(fname, traj.top)[0]
                aa_eq(frame.xyz, traj[i].xyz)

        # multiple pdb in multiple files, using `mdio.write_traj`
        with tempfolder():
            basename = "test_pdb_files_mdio_write_traj.pdb"
            mdio.write_traj(basename, traj, overwrite=True, options="multi")
            for i in range(10):
                fname = basename + "." + str(i + 1)  # cpptraj use `1`
                frame = mdio.iterload(fname, traj.top)[0]
                aa_eq(frame.xyz, traj[i].xyz)

        # multiple pdb in SINGLE file
        with tempfolder():
            basename = "test_pdb_files.pdb"
            traj.save(basename, overwrite=True)
            traj2 = mdio.load(basename, traj.top)
            aa_eq(traj.xyz, traj2.xyz)

        # multiple pdb in SINGLE file with `optionsl` keyword
        # write to output so we can manually check
        basename = "./output/test_pdb_files_model.pdb"
        traj.save(basename, overwrite=True, options='model')
        traj3 = mdio.load(basename, traj.top)
        aa_eq(traj.xyz, traj3.xyz)
Esempio n. 10
0
def test_cluster_hieragglo():
    command = """
    parm {}
    trajin {}
    createcrd crd1
    cluster crdset crd1 C0 !@H hieragglo epsilon 0.8 averagelinkage
    """.format(tz2_top, tz2_trajin)

    with tempfolder():
        state = pt.load_cpptraj_state(command)
        with capture_stdout() as (cpp_out, _):
            state.run()
        traj = pt.iterload(tz2_trajin, tz2_top)
        data = pt.cluster.hieragglo(traj,
                                    mask='!@H=',
                                    options='epsilon 0.8 averagelinkage')
        aa_eq(state.data[-2], data.cluster_index)
Esempio n. 11
0
def test_cluster_dbscan():
    command = """
    parm {}
    trajin {}
    createcrd crd1
    cluster crdset crd1 C0 @CA dbscan epsilon 1.7 minpoints 5
    """.format(tz2_top, tz2_trajin)

    with tempfolder():
        state = pt.load_cpptraj_state(command)
        with capture_stdout() as (out, _):
            state.run()
        traj = pt.iterload(tz2_trajin, tz2_top)
        data = pt.cluster.dbscan(traj,
                                 mask='@CA',
                                 options='epsilon 1.7 minpoints 5')
        aa_eq(state.data[-2], data.cluster_index)
Esempio n. 12
0
    def test_matrix(self):
        import numpy as np
        from pytraj import ArgList
        from pytraj import matrix as ma
        from pytraj.externals.six import iteritems

        matrix_test_dir = cpptraj_test_dir + "/Test_Matrix/"
        top_file = matrix_test_dir + "/1rrb_vac.prmtop"
        crd_file = matrix_test_dir + "/1rrb_vac.mdcrd"
        traj = pt.iterload(crd_file, top_file)

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

            state_byres = pt.load_batch(traj, 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(".")
                mask = arg.get_next_mask()
                fname = ".".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.flatten(), 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)
Esempio n. 13
0
    def test_regular(self):
        traj = self.traj.copy()
        assert traj[0].has_box() == True

        with tempfolder():
            # write traj with nobox info
            fname = "traj_nobox.nc"
            pt.write_traj(fname, traj, options='nobox')
            t = pt.load(fname, traj.top)

            assert t[0].has_box() == False
            aa_eq(t.xyz, traj.xyz)

            # write from frame_iter, need to provide top
            fname = "traj_frame_iter.nc"
            # raise ValueError if there is no Topology
            pt.write_traj(fname, traj(), top=traj.top, overwrite=True)
            t = pt.iterload(fname, traj.top)
            aa_eq(t.xyz, traj.xyz)
Esempio n. 14
0
    def test_regular(self):
        traj = self.traj.copy()
        assert traj[0].has_box() == True

        with tempfolder():
            # write traj with nobox info
            fname = "traj_nobox.nc"
            pt.write_traj(fname, traj, options='nobox')
            t = pt.load(fname, traj.top)

            assert t[0].has_box() == False
            aa_eq(t.xyz, traj.xyz)

            # write from frame_iter, need to provide top
            fname = "traj_frame_iter.nc"
            # raise ValueError if there is no Topology
            pt.write_traj(fname, traj(), top=traj.top, overwrite=True)
            t = pt.iterload(fname, traj.top)
            aa_eq(t.xyz, traj.xyz)
Esempio n. 15
0
    def test_superpose_trajectory_iterator_pytraj_method(self):
        traj_on_disk = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        traj_on_disk2 = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top'))
        traj_on_mem = pt.load(fn('Tc5b.x'), fn('Tc5b.top'))

        ref = pt.iterload(fn("Tc5b.crd"), fn('Tc5b.top'))[0]
        pt.superpose(traj_on_mem, ref=ref, mask='@CA')
        pt.superpose(traj_on_disk, ref=ref, mask='@CA')
        assert traj_on_disk._being_transformed == True, '_being_transformed must be True'

        aa_eq(traj_on_mem.xyz, traj_on_disk.xyz)

        # test saving
        with tempfolder():
            traj_on_mem.save('t0.nc', overwrite=True)
            traj_on_disk.save('t1.nc', overwrite=True)

            aa_eq(
                pt.load('t0.nc', traj_on_mem.top).xyz,
                pt.load('t1.nc', traj_on_disk.top).xyz)

        # turn off superpose
        traj_on_disk._being_transformed = False
        aa_eq(traj_on_disk.xyz, traj_on_disk2.xyz)