Пример #1
0
    def test_iterframe_from_array(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")

        # no mass
        fi = pt.iterframe_from_array(traj.xyz, traj.n_atoms,
                                     range(traj.n_frames))
        for f_traj, f_fi in zip(traj, fi):
            aa_eq(f_traj.xyz, f_fi.xyz)
            # f_fi mass must be [1.0, ...]
            aa_eq(f_fi.mass, [1.0 for _ in range(traj.n_atoms)])

        # mass from Topology
        fi = pt.iterframe_from_array(traj.xyz, traj.n_atoms,
                                     range(traj.n_frames), traj.top)
        for f_traj, f_fi in zip(traj, fi):
            aa_eq(f_traj.xyz, f_fi.xyz)
            aa_eq(f_fi.mass, f_traj.mass)
            aa_eq(f_fi.mass, traj.top.mass)

        # mass from array
        fi = pt.iterframe_from_array(traj.xyz,
                                     traj.n_atoms,
                                     range(traj.n_frames),
                                     mass=traj.top.mass)
        for f_traj, f_fi in zip(traj, fi):
            aa_eq(f_traj.xyz, f_fi.xyz)
            aa_eq(f_fi.mass, f_traj.mass)
            aa_eq(f_fi.mass, traj.top.mass)
Пример #2
0
    def test_real_box(self):
        traj = pt.load("./data/tz2.ortho.nc", "data/tz2.ortho.parm7")
        trajiter = pt.iterload("./data/tz2.ortho.nc", "data/tz2.ortho.parm7")
        saved_box = Box([3.94559740E+01, 4.68215170E+01, 4.04695410E+01, 90.,
                         90., 90.])
        aa_eq(traj.top.box.values, saved_box.values)
        for frame in traj:
            assert frame.box.type == 'ortho'
            aa_eq(frame.box.values,
                  [
                      35.2627796623, 41.8455476799, 36.168629529, 90.0, 90.0,
                      90.0
                  ],
                  decimal=1)

        arr0 = traj.unitcells
        arr1 = trajiter.unitcells

        for b0, b1, frame in zip(arr0, arr1, trajiter):
            box = frame.box
            # FIXME:
            # python3)
            b2 = box.values
            aa_eq(b0, b1)
            aa_eq(b0, b2)

        # test assign Box with list/tuple
        b = Box(saved_box.values)
        b2 = Box((t for t in saved_box.values))
        aa_eq(b.values, saved_box.values, decimal=7)
        aa_eq(b2.values, saved_box.values, decimal=7)
        # assign frame.box with list/tuple
        frame.box = b.values
        b3 = frame.box
        aa_eq(b3.values, saved_box.values, decimal=7)
Пример #3
0
    def test_convert_to_dict_and_rebuild(self):
        '''test_convert_to_dict_and_rebuild
        '''
        top = self.traj.top
        d = top.to_dict()

        new_top = pt.Topology()

        MOLNUM = 0

        for idx, (aname, atype, charge, mass, resid, resname,
                  mol_number) in enumerate(zip(d['atom_name'], d[
                      'atom_type'], d['atom_charge'], d['atom_mass'], d[
                          'resid'], d['resname'], d['mol_number'])):
            atom = pt.core.Atom(name=aname,
                                type=atype,
                                charge=charge,
                                mass=mass,
                                resid=resid)
            atom.set_mol(mol_number)
            residue = pt.core.Residue(resname, resid)
            if idx == 0:
                new_top.start_new_mol()
            if mol_number > MOLNUM:
                new_top.start_new_mol()
                MOLNUM += 1
            new_top.add_atom(atom, residue)

        new_top.add_bonds(d['bond_index'])
        new_top.add_dihedrals(d['dihedral_index'])
        new_top.box = Box(top.box.values)

        assert_equal_topology(top, new_top, self.traj)
Пример #4
0
    def test_real_box(self):
        traj = pt.load("./data/tz2.ortho.nc", "data/tz2.ortho.parm7")
        trajiter = pt.iterload("./data/tz2.ortho.nc", "data/tz2.ortho.parm7")
        saved_box = Box(
            [3.94559740E+01, 4.68215170E+01, 4.04695410E+01, 90., 90., 90.])
        aa_eq(traj.top.box.values, saved_box.values)
        for frame in traj:
            assert frame.box.type == 'ortho'
            aa_eq(
                frame.box.values,
                [35.2627796623, 41.8455476799, 36.168629529, 90.0, 90.0, 90.0],
                decimal=1)

        arr0 = traj.unitcells
        arr1 = trajiter.unitcells

        for b0, b1, frame in zip(arr0, arr1, trajiter):
            box = frame.box
            # FIXME:
            # python3)
            b2 = box.values
            aa_eq(b0, b1)
            aa_eq(b0, b2)

        # test assign Box with list/tuple
        b = Box(saved_box.values)
        b2 = Box((t for t in saved_box.values))
        aa_eq(b.values, saved_box.values, decimal=7)
        aa_eq(b2.values, saved_box.values, decimal=7)
        # assign frame.box with list/tuple
        frame.box = b.values
        b3 = frame.box
        aa_eq(b3.values, saved_box.values, decimal=7)
Пример #5
0
    def test_convert_to_dict_and_rebuild(self):
        '''test_convert_to_dict_and_rebuild
        '''
        top = self.traj.top
        d = top.to_dict()

        new_top = pt.Topology()

        MOLNUM = 0

        for idx, (aname, atype, charge, mass, resid, resname,
                  mol_number) in enumerate(
                      zip(d['atom_name'], d['atom_type'], d['atom_charge'],
                          d['atom_mass'], d['resid'], d['resname'],
                          d['mol_number'])):
            atom = pt.core.Atom(name=aname,
                                type=atype,
                                charge=charge,
                                mass=mass,
                                resid=resid)
            atom.set_mol(mol_number)
            residue = pt.core.Residue(resname, resid)
            if idx == 0:
                new_top.start_new_mol()
            if mol_number > MOLNUM:
                new_top.start_new_mol()
                MOLNUM += 1
            new_top.add_atom(atom, residue)

        new_top.add_bonds(d['bond_index'])
        new_top.add_dihedrals(d['dihedral_index'])
        new_top.box = Box(top.box.values)

        assert_equal_topology(top, new_top, self.traj)
Пример #6
0
    def test_0_trajiter(self):
        traj = io.load_sample_data("tz2")
        from pytraj.compat import zip

        for idx, (f0, f1) in enumerate(zip(traj, traj)):
            pass
        assert idx > 0

        # tee
        ilist = it.tee(traj, 2)
        for idx, (f0, f1) in enumerate(zip(ilist[0], ilist[1])):
            assert f0.rmsd(f1) < 1E-5

        assert idx == traj.n_frames - 1

        # product
        it.product(traj, repeat=2)
Пример #7
0
    def test_0_trajiter(self):
        traj = io.load_sample_data("tz2")
        from pytraj.compat import zip

        for idx, (f0, f1) in enumerate(zip(traj, traj)):
            pass
        assert idx > 0

        # tee
        ilist = it.tee(traj, 2)
        for idx, (f0, f1) in enumerate(zip(ilist[0], ilist[1])):
            assert f0.rmsd(f1) < 1E-5

        assert idx == traj.n_frames - 1

        # product
        it.product(traj, repeat=2)
Пример #8
0
    def test_simplifed_topology(self):
        '''simplify'''
        top = pt.load_topology("./data/Tc5b.top")
        sim_top = top.simplify()

        for atom, sim_atom in zip(top.atoms, sim_top.atoms):
            assert atom.resname == sim_atom.resname, 'equal resname'
            assert atom.name == sim_atom.name, 'equal resname'
            assert atom.type == sim_atom.type, 'equal resname'
            assert atom.charge == sim_atom.charge, 'equal resname'
            assert atom.mass == sim_atom.mass, 'equal resname'
Пример #9
0
    def test_simplifed_topology(self):
        '''simplify'''
        top = pt.load_topology("./data/Tc5b.top")
        sim_top = top.simplify()

        for atom, sim_atom in zip(top.atoms, sim_top.atoms):
            assert atom.resname == sim_atom.resname, 'equal resname'
            assert atom.name == sim_atom.name, 'equal resname'
            assert atom.type == sim_atom.type, 'equal resname'
            assert atom.charge == sim_atom.charge, 'equal resname'
            assert atom.mass == sim_atom.mass, 'equal resname'
Пример #10
0
    def test_simple_for_coverage(self):
        '''
        '''
        traj = pt.iterload(traj_dir, parm_dir)
        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))
        vecs_and_mat = pt.ired_vector_and_matrix(traj, nh_indices, dtype='tuple')
        vecs_and_mat = pt.ired_vector_and_matrix(traj, nh_indices, dtype='tuple')
        state_vecs = vecs_and_mat[0]
        mat_ired = vecs_and_mat[1]

        # get eigenvalues and eigenvectors
        modes = pt.matrix.diagonalize(mat_ired, n_vecs=len(state_vecs))
        evals, evecs = modes

        data_0 = _ired(state_vecs,
                       modes=(evals, evecs),
                       NHbond=True,
                       tcorr=10000,
                       tstep=1.)

        data_1 = _ired(state_vecs,
                       modes=modes,
                       NHbond=True,
                       tcorr=10000,
                       tstep=1)

        for d0, d1 in zip(data_0, data_1):
            if d0.dtype not in ['modes', ]:
                aa_eq(d0.values, d1.values)
            else:
                # modes
                # values: tuple
                aa_eq(d0.values[0], d1.values[0])
                aa_eq(d0.values[1], d1.values[1])

        # try different dtype
        out_try_new_dtype = pt.ired_vector_and_matrix(traj, nh_indices, dtype='cpptraj_dataset')
    def test_0(self):
        traj = mdio.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")

        fa1 = traj[:]

        # do inplace-autoimage for Trajectory
        fa1.autoimage()

        # fa2 will store frame when iterating `traj` (TrajectoryIterator)
        fa2 = Trajectory()
        fa2.top = traj.top.copy()

        # frame_iter
        for frame in traj(autoimage=True):
            fa2.append(frame)

        aa_eq(fa1.xyz, fa2.xyz)

        # frame_iter with mask and autoimage
        fa3 = fa2.copy()
        # fa3 is a copy of autoimaged fa2. then we strip all but CA atoms
        # just want to make sure we can use `mask`
        fa3.strip("!@CA")
        fa4 = Trajectory()
        fa4.top = fa3.top.copy()

        for frame in traj(mask='@CA', autoimage=True):
            fa4.append(frame)

        aa_eq(fa3.xyz, fa4.xyz)

        # frame_iter with mask and autoimage, and rmsfit
        # fa3 is a copy of autoimaged fa2. then we strip all but CA atoms
        # just want to make sure we can use `mask`

        fa3 = traj[:]
        fa3.autoimage()
        fa3.rmsfit(ref=5, mask='@CB')
        fa3.strip("!@CA")

        fa4 = Trajectory()
        fa4.top = fa3.top.copy()

        ref1 = traj[5].copy()
        for frame in traj(mask='@CA', autoimage=True, rmsfit=(ref1, '@CB')):
            fa4.append(frame)

        aa_eq(fa3.xyz, fa4.xyz)
        for f0, f1 in zip(fa3, fa4):
            assert f0.rmsd_nofit(f1) < 1E-7
    def test_0(self):
        traj = mdio.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")

        fa1 = traj[:]

        # do inplace-autoimage for Trajectory
        fa1.autoimage()

        # fa2 will store frame when iterating `traj` (TrajectoryIterator)
        fa2 = Trajectory()
        fa2.top = traj.top.copy()

        # frame_iter
        for frame in traj(autoimage=True):
            fa2.append(frame)

        aa_eq(fa1.xyz, fa2.xyz)

        # frame_iter with mask and autoimage
        fa3 = fa2.copy()
        # fa3 is a copy of autoimaged fa2. then we strip all but CA atoms
        # just want to make sure we can use `mask`
        fa3.strip("!@CA")
        fa4 = Trajectory()
        fa4.top = fa3.top.copy()

        for frame in traj(mask='@CA', autoimage=True):
            fa4.append(frame)

        aa_eq(fa3.xyz, fa4.xyz)

        # frame_iter with mask and autoimage, and rmsfit
        # fa3 is a copy of autoimaged fa2. then we strip all but CA atoms
        # just want to make sure we can use `mask`

        fa3 = traj[:]
        fa3.autoimage()
        fa3.rmsfit(ref=5, mask='@CB')
        fa3.strip("!@CA")

        fa4 = Trajectory()
        fa4.top = fa3.top.copy()

        ref1 = traj[5].copy()
        for frame in traj(mask='@CA', autoimage=True, rmsfit=(ref1, '@CB')):
            fa4.append(frame)

        aa_eq(fa3.xyz, fa4.xyz)
        for f0, f1 in zip(fa3, fa4):
            assert f0.rmsd_nofit(f1) < 1E-7
    def test_radgyr(self):
        traj = pt.iterload(top="./data/Tc5b.top",
                           filename='data/Tc5b.x', )
        txt = '''
        parm ./data/Tc5b.top
        trajin ./data/Tc5b.x
        radgyr @CA nomax
        radgyr nomax
        radgyr !@H= nomax
        '''

        # exclude DatasetTopology
        data = pt.datafiles.load_cpptraj_output(txt)[1:]
        for mask, out in zip(['@CA', '', '!@H='], data):
            aa_eq(pt.radgyr(traj, mask), out)
Пример #14
0
    def test_0(self):
        # TrajectoryIterrator
        # status: failed
        from pytraj.compat import zip
        traj = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        pt.write_traj("./output/tz2.autoimage_with_rmsfit.nc",
                      traj(autoimage=True,
                           rmsfit=(0, '@CA,C,N')),
                      overwrite=True)

        saved_traj = pt.load('data/tz2.autoimage_with_rmsfit.nc', traj.top)
        p_traj = pt.load('./output/tz2.autoimage_with_rmsfit.nc', traj.top)

        aa_eq(saved_traj.xyz, p_traj.xyz)
        for f1, f2 in zip(p_traj, saved_traj):
            pass
Пример #15
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)
    def test_radgyr(self):
        traj = pt.iterload(
            top="./data/Tc5b.top",
            filename='data/Tc5b.x',
        )
        txt = '''
        parm ./data/Tc5b.top
        trajin ./data/Tc5b.x
        radgyr @CA nomax
        radgyr nomax
        radgyr !@H= nomax
        '''

        # exclude DatasetTopology
        data = pt.datafiles.load_cpptraj_output(txt)[1:]
        for mask, out in zip(['@CA', '', '!@H='], data):
            aa_eq(pt.radgyr(traj, mask), out)
Пример #17
0
    def test_ired_lapack_in_numpy(self):
        parmfile = parm_dir
        trajfile = traj_dir

        # load to TrajectoryIterator
        traj = pt.iterload(trajfile, parmfile)

        # create N-H vectors
        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))

        # compute N-H vectors and ired matrix
        vecs_and_mat = pt.ired_vector_and_matrix(traj,
                                                 mask=nh_indices,
                                                 order=2)
        state_vecs = vecs_and_mat[:-1].values
        mat_ired = vecs_and_mat[-1]
        mat_ired /= mat_ired[0, 0]

        # cpptraj
        data_cpp = pt.matrix.diagonalize(mat_ired, n_vecs=len(state_vecs))[0]
        print(data_cpp.eigenvectors)

        # numpy
        data_np = pt.matrix._diag_np(mat_ired, n_vecs=len(state_vecs))

        def order_(modes):
            data = _ired(state_vecs, modes=modes)
            order_s2_v0 = data['IRED_00127[S2]']
            # make sure the S2 values is 1st array

            # 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_v0.values, cpp_order_s2, decimal=4)

        order_(data_cpp.values)

        def plot_(x, y):
            import seaborn as sb
            sb.heatmap(x - y)
            pt.show()

        print((data_cpp.values[1] - data_np[1]).shape)
Пример #18
0
def merge_frame_from_trajs(trajlist):
    """
    Examples
    --------
    >>> import numpy as np
    >>> import pytraj as pt
    >>> traj0 = pt.load_sample_data('tz2')[:3]
    >>> traj1 = pt.load_sample_data('tz2')[3:6]
    >>> traj2 = pt.load_sample_data('tz2')[6:9]
    >>> print(traj0.n_atoms, traj1.n_atoms, traj2.n_atoms)
    5293 5293 5293
    >>> for frame in pt.tools.merge_frame_from_trajs((traj0, traj1, traj2)): print(frame)
    <Frame with 15879 atoms>
    <Frame with 15879 atoms>
    <Frame with 15879 atoms>
   """
    for iterables in zip(*trajlist):
        yield merge_frames(iterables)
Пример #19
0
def merge_frame_from_trajs(trajlist):
    """
    Examples
    --------
    >>> import numpy as np
    >>> import pytraj as pt
    >>> traj0 = pt.load_sample_data('tz2')[:3]
    >>> traj1 = pt.load_sample_data('tz2')[3:6]
    >>> traj2 = pt.load_sample_data('tz2')[6:9]
    >>> print(traj0.n_atoms, traj1.n_atoms, traj2.n_atoms)
    5293 5293 5293
    >>> for frame in pt.tools.merge_frame_from_trajs((traj0, traj1, traj2)): print(frame)
    <Frame with 15879 atoms>
    <Frame with 15879 atoms>
    <Frame with 15879 atoms>
   """
    for iterables in zip(*trajlist):
        yield merge_frames(iterables)
Пример #20
0
    def test_0(self):
        from pytraj.compat import zip
        from pytraj import Trajectory, TrajectoryIterator
        # TrajectoryIterator object
        traj0 = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        assert isinstance(traj0, TrajectoryIterator)

        # Trajectory object
        traj1 = traj0[:]
        assert isinstance(traj1, Trajectory)

        # check same coords
        ref = traj0[0]

        for f0, f1 in zip(traj0(autoimage=True, rmsfit=(ref, '@CA,C,N')),
                          traj1(autoimage=True, rmsfit=(ref, '@CA,C,N'))):
            aa_eq(f0.xyz, f1.xyz)
            assert f0.rmsd_nofit(f1) == 0.
    def test_0(self):
        from pytraj.compat import zip
        from pytraj import Trajectory, TrajectoryIterator
        # TrajectoryIterator object
        traj0 = pt.iterload("./data/tz2.ortho.nc", "./data/tz2.ortho.parm7")
        assert isinstance(traj0, TrajectoryIterator)

        # Trajectory object
        traj1 = traj0[:]
        assert isinstance(traj1, Trajectory)

        # check same coords
        ref = traj0[0]

        for f0, f1 in zip(
                traj0(autoimage=True,
                      rmsfit=(ref, '@CA,C,N')),
                traj1(autoimage=True,
                      rmsfit=(ref, '@CA,C,N'))):
            aa_eq(f0.xyz, f1.xyz)
            assert f0.rmsd_nofit(f1) == 0.
Пример #22
0
def n_grams(a, n):
    """n_grams

    Parameters
    ----------
    a : sequence
    n : number of elements
    asarray : bool, default False
        if False: return an iterator
        if True: return a numpy array

    Examples
    --------
    >>> list(n_grams([2, 3, 4 ,5], 2))
    [(2, 3), (3, 4), (4, 5)]

    Notes
    -----
    adapted from: http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html
    """

    z = (islice(a, i, None) for i in range(n))
    return zip(*z)
Пример #23
0
    def test_basic(self):
        '''slicing, select'''
        top = pt.load_topology("./data/Tc5b.top")

        #
        assert isinstance(top[0], Atom)
        assert isinstance(top[:2], pt.Topology)
        assert isinstance(top[:1], pt.Topology)
        assert isinstance(top[range(10)], pt.Topology)
        assert isinstance(top[list(range(10))], pt.Topology)
        assert isinstance(top[np.array(range(10))], pt.Topology)
        assert top[0].name == top['@1'][0].name

        # mask, AtomMask, python array, list
        atm = top("@CA")
        indices = atm.indices
        for a1, a2, a3, a4 in zip(top['@CA'], top[atm], top[indices],
                                  top[list(indices)]):
            assert a1.name == a2.name == a3.name == a4.name == 'CA'

        # check len
        assert len(top[:]) == top.n_atoms
        assert len(top[:10]) == 10
Пример #24
0
def n_grams(a, n):
    """n_grams

    Parameters
    ----------
    a : sequence
    n : number of elements
    asarray : bool, default False
        if False: return an iterator
        if True: return a numpy array

    Examples
    --------
    >>> list(n_grams([2, 3, 4 ,5], 2))
    [(2, 3), (3, 4), (4, 5)]

    Notes
    -----
    adapted from: http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html
    """

    z = (islice(a, i, None) for i in range(n))
    return zip(*z)
Пример #25
0
    def test_basic(self):
        '''slicing, select'''
        top = pt.load_topology("./data/Tc5b.top")

        #
        assert isinstance(top[0], Atom)
        assert isinstance(top[:2], pt.Topology)
        assert isinstance(top[:1], pt.Topology)
        assert isinstance(top[range(10)], pt.Topology)
        assert isinstance(top[list(range(10))], pt.Topology)
        assert isinstance(top[np.array(range(10))], pt.Topology)
        assert top[0].name == top['@1'][0].name

        # mask, AtomMask, python array, list
        atm = top("@CA")
        indices = atm.indices
        for a1, a2, a3, a4 in zip(top['@CA'], top[atm], top[indices],
                                  top[list(indices)]):
            assert a1.name == a2.name == a3.name == a4.name == 'CA'

        # check len
        assert len(top[:]) == top.n_atoms
        assert len(top[:10]) == 10
Пример #26
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'])
Пример #27
0
def merge_trajs(traj1, traj2, start_new_mol=True, n_frames=None):
    """

    Examples
    --------
    >>> import pytraj as pt
    >>> import numpy as np
    >>> traj1 = pt.load_sample_data('ala3')[:1]
    >>> traj2 = pt.load_sample_data('tz2')[:1]
    >>> traj3 = merge_trajs(traj1, traj2)
    >>> # from frame_iter for saving memory
    >>> traj3 = merge_trajs((traj1(0, 10, 2), traj1.top), (traj2(100, 110, 2), traj2.top), n_frames=6)

    >>> # raise error if not having the same n_frames
    >>> traj4 = pt.load_sample_data('tz2')[:]
    >>> traj4.n_frames
    10
    >>> traj1.n_frames
    1
    >>> merge_trajs(traj1, traj4)
    Traceback (most recent call last):
        ...
    ValueError: must have the same n_frames


    Notes
    -----
    Code might be changed
    """
    from pytraj.compat import zip
    from pytraj import Trajectory
    import numpy as np

    if isinstance(traj1, (list, tuple)):
        n_frames_1 = n_frames
        top1 = traj1[1]
        _traj1 = traj1[0]
    else:
        n_frames_1 = traj1.n_frames
        top1 = traj1.top
        _traj1 = traj1

    if isinstance(traj2, (list, tuple)):
        n_frames_2 = n_frames
        top2 = traj2[1]  # example: (traj(0, 5), traj.top)
        _traj2 = traj2[0]
    else:
        n_frames_2 = traj2.n_frames
        top2 = traj2.top
        _traj2 = traj2

    if n_frames_1 != n_frames_2:
        raise ValueError("must have the same n_frames")

    traj = Trajectory()
    traj._allocate(n_frames_1, top1.n_atoms + top2.n_atoms)

    # merge Topology
    top = top1.copy()
    if start_new_mol:
        top.start_new_mol()
    top.join(top2)
    traj.top = top

    # update coords
    for f1, f2, frame in zip(_traj1, _traj2, traj):
        frame.xyz = np.vstack((f1.xyz, f2.xyz))

    return traj
Пример #28
0
def merge_trajs(traj1, traj2, start_new_mol=True, n_frames=None):
    """

    Examples
    --------
    >>> import pytraj as pt
    >>> import numpy as np
    >>> traj1 = pt.load_sample_data('ala3')[:1]
    >>> traj2 = pt.load_sample_data('tz2')[:1]
    >>> traj3 = merge_trajs(traj1, traj2)
    >>> # from frame_iter for saving memory
    >>> traj3 = merge_trajs((traj1(0, 10, 2), traj1.top), (traj2(100, 110, 2), traj2.top), n_frames=6)

    >>> # raise error if not having the same n_frames
    >>> traj4 = pt.load_sample_data('tz2')[:]
    >>> traj4.n_frames
    10
    >>> traj1.n_frames
    1
    >>> merge_trajs(traj1, traj4)
    Traceback (most recent call last):
        ...
    ValueError: must have the same n_frames


    Notes
    -----
    Code might be changed
    """
    from pytraj.compat import zip
    from pytraj import Trajectory
    import numpy as np

    if isinstance(traj1, (list, tuple)):
        n_frames_1 = n_frames
        top1 = traj1[1]
        _traj1 = traj1[0]
    else:
        n_frames_1 = traj1.n_frames
        top1 = traj1.top
        _traj1 = traj1

    if isinstance(traj2, (list, tuple)):
        n_frames_2 = n_frames
        top2 = traj2[1]  # example: (traj(0, 5), traj.top)
        _traj2 = traj2[0]
    else:
        n_frames_2 = traj2.n_frames
        top2 = traj2.top
        _traj2 = traj2

    if n_frames_1 != n_frames_2:
        raise ValueError("must have the same n_frames")

    traj = Trajectory()
    traj._allocate(n_frames_1, top1.n_atoms + top2.n_atoms)

    # merge Topology
    top = top1.copy()
    if start_new_mol:
        top.start_new_mol()
    top.join(top2)
    traj.top = top

    # update coords
    for f1, f2, frame in zip(_traj1, _traj2, traj):
        frame.xyz = np.vstack((f1.xyz, f2.xyz))

    return traj
Пример #29
0
    def test_0(self):
        traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        farray = traj[:]

        for i, f0 in enumerate(traj):
            for j, x in enumerate(f0.xyz):
                if np.all(np.abs(x - 5.707) < 1E-3):
                    pass

        for frame in traj.iterframe():
            pass

        for frame0 in farray.iterframe():
            pass

        i = 0
        for frame0 in farray.iterframe(start=0, step=1):
            i += 1

        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        start, stop, step = 2, 8, 4
        indices = list(range(start, stop, step))

        for idx, frame0, f in zip(indices, farray.iterframe(start, stop, step),
                                  traj[indices]):
            aa_eq(frame0.xyz, f.xyz)
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in farray.iterframe(start=2, step=2):
            pass
        assert_almost_equal(traj[8].xyz, frame0.xyz)

        arr0 = traj[6][0]
        for frame0 in traj.iterframe(start=2, step=4, stop=8):
            pass

        for frame0 in traj.iterframe(start=2, step=4, stop=8):
            pass
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in traj.iterframe(start=2, step=2):
            pass
        assert_almost_equal(traj[8].xyz, frame0.xyz)

        count = 0
        for frame0 in traj.iterframe(start=2):
            count += 1
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        count = 0
        for frame0 in traj.iterframe(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in traj.iterframe():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in farray.iterframe():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in traj():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in farray():
            pass
        assert_almost_equal(farray[-1].xyz, frame0.xyz)

        count = 0
        for frame0 in traj(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(2, 7, 1):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(2, 7, 2):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)
Пример #30
0
    def test_0(self):
        traj = mdio.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        farray = traj[:]

        for i, f0 in enumerate(traj):
            for j, x in enumerate(f0.xyz):
                if np.all(np.abs(x - 5.707) < 1E-3):
                    pass

        for frame in traj.iterframe():
            pass

        for frame0 in farray.iterframe():
            pass

        i = 0
        for frame0 in farray.iterframe(start=0, step=1):
            i += 1

        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        start, stop, step = 2, 8, 4
        indices = list(range(start, stop, step))

        for idx, frame0, f in zip(indices, farray.iterframe(start, stop, step),
                                  traj[indices]):
            aa_eq(frame0.xyz, f.xyz)
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in farray.iterframe(start=2, step=2):
            pass
        assert_almost_equal(traj[8].xyz, frame0.xyz)

        arr0 = traj[6][0]
        for frame0 in traj.iterframe(start=2, step=4, stop=8):
            pass

        for frame0 in traj.iterframe(start=2, step=4, stop=8):
            pass
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in traj.iterframe(start=2, step=2):
            pass
        assert_almost_equal(traj[8].xyz, frame0.xyz)

        count = 0
        for frame0 in traj.iterframe(start=2):
            count += 1
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        count = 0
        for frame0 in traj.iterframe(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        for frame0 in traj.iterframe():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in farray.iterframe():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in traj():
            pass
        assert_almost_equal(traj[-1].xyz, frame0.xyz)

        for frame0 in farray():
            pass
        assert_almost_equal(farray[-1].xyz, frame0.xyz)

        count = 0
        for frame0 in traj(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(start=2, stop=7):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(2, 7, 1):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)

        count = 0
        for frame0 in farray(2, 7, 2):
            count += 1
        assert_almost_equal(traj[6].xyz, frame0.xyz)
Пример #31
0
    def test_assert(self):
        traj = pt.iterload("./data/Tc5b.x", "./data/Tc5b.top")
        fa = Trajectory.from_iterable(iterframe_master(traj), top=traj.top)

        for f0, f1 in zip(fa, traj):
            aa_eq(f0.xyz, f1.xyz)
Пример #32
0
    def test_4_trajiter(self):
        traj = pt.load_sample_data("tz2")
        from pytraj.compat import zip

        for idx, (f0, f1) in enumerate(zip(traj, traj)):
            f0.rmsd(f1)