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())
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())
def calculate_angles(traj, residues=[], angles='phi psi'): if residues: data = list( pt.multidihedral(traj, dihedral_types=angles, resrange=residues)) else: # get all residues numbers residues = [int(l[4:]) for l in list(pt.dssp(traj)[0])] data = pt.multidihedral(traj, dihedral_types=angles, resrange=residues) return data
def test(): fname = 'data/nogit/remd/remd.x.000' topname = 'data/nogit/remd/myparm.parm7' traj = pt.trajectory.Trajectory(fname, top=topname) print(traj.xyz.dtype) for f in traj: pass pt.radgyr(traj) pt.molsurf(traj, '@CA') pt.rmsd(traj, mask='@CA') pt.multidihedral(traj)
def getdihedrals(self, s='phi psi', stride=2): print('reading dihedral angles from trajectories....') self.dih = dict() for tt, t in enumerate(self.trajs): traj = pt.iterload(t, self.top, stride=stride) #read dihedral angles self.dih[tt] = pt.multidihedral(traj, s)
def test_multidihedral(): trajin = fn('Tc5b.x') topin = fn('Tc5b.top') traj = pt.iterload(trajin, top=topin) command = "resrange 2-19 phi psi" state = pt.load_cpptraj_state(''' parm {} trajin {} multidihedral resrange 2-19 phi psi '''.format(topin, trajin)) state.run() cpp_out = state.data[1:].to_dict() out = pt.multidihedral(traj, command, dtype='dict') for key, value in out.items(): aa_eq(value, cpp_out.get(key))
def calcS2(self, s='phi', stride=2): print('calculating order parameters of ' + s + ' angles....') S2 = dict() for tt, t in enumerate(self.trajs): traj = pt.iterload(t, self.top, stride=stride) #read dihedral angles dih = pt.multidihedral(traj, s) #get residues labels = dih.keys() residues = sorted([int(l[len(s) + 1:]) for l in labels]) S2[tt] = dict() for r in residues: lab = s + ':' + str(r) vals = np.array(dih[lab]) S2[tt][r] = (np.sum(np.cos(vals * np.pi / 180.))**2 + np.sum( np.sin(vals * np.pi / 180.))**2) / len(vals)**2 return S2
def test_extra_coverage(self): '''all kind of tests that do not belong to anywhere else ''' traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7')) # show_versions pt.show_versions() pt._verbose() pt._verbose(False) # info pt.info() pt.info('parallel') misc.parallel_info('pmap') misc.parallel_info('openmp') misc.parallel_info(None) eq([2, 3], [2, 3]) dslist = pt.multidihedral(traj) str(dslist[0])
def test_extra_coverage(self): '''all kind of tests that do not belong to anywhere else ''' traj = pt.iterload("./data/tz2.nc", "./data/tz2.parm7") # show_versions pt.show_versions() pt._verbose() pt._verbose(False) print(version) # info pt.info() pt.info('parallel') pt.misc.parallel_info('pmap') pt.misc.parallel_info('openmp') pt.misc.parallel_info(None) eq([2, 3], [2, 3]) # raise if comparing NaN self.assertRaises(ValueError, lambda: aa_eq(np.nan, np.nan)) dslist = pt.multidihedral(traj) string_ = str(dslist[0])
def test_pickle_datasetlist(self): traj = pt.iterload("data/Tc5b.x", "data/Tc5b.top") dslist = pt.multidihedral(traj) pt.to_pickle(dslist, 'output/ds.pk') dslist2 = pt.read_pickle('output/ds.pk') aa_eq(dslist.values, dslist2.values)
# require pytraj, pysander and parmed import pytraj as pt import numpy as np traj = pt.iterload("../tests/data/Ala3/Ala3.crd", "../tests/data/Ala3/Ala3.top") print(traj.n_atoms, traj.top.n_residues) print(pt.multidihedral(traj).to_dict()) t0 = traj[:1] deg_ene = [] flist = [] try: import sander import parmed # scan from -180 to 180, every 5 deg # calculate dihedral energy for each conformation # for deg in range(-180, 180, 5): pt.rotate_dihedral(t0, "custom:3:omega:" + str(deg)) flist.append(t0[0].copy()) en = pt.energy_decomposition(t0, igb=8, verbose=False, parm=traj.top.filename)['dihedral'][0]
import pytraj as pt # use `iterload` to save memory traj = pt.iterload("../tests/data/tz2.ortho.nc", "../tests/data/tz2.ortho.parm7") try: import pandas as pd # search all possible dihedral types supported by cpptraj dset = pt.multidihedral(traj, dtype='dataframe') print(dset) except ImportError: pass
import pytraj as pt from jamber.builder import build_protein seq = ' '.join(['ALA'] * 10) print(seq) traj = build_protein(seq, command=['alpha:1-10']) print(traj) print(pt.multidihedral(traj, dihedral_types='phi psi', dtype='dict'))
import pytraj as pt import numpy as np try: import sander traj = pt.iterload("./data/Ala3/Ala3.crd", "./data/Ala3/Ala3.top") print(traj.n_atoms, traj.top.n_residues) print(pt.multidihedral(traj).to_dict()) t0 = traj[:1] deg_ene = [] flist = [] for deg in range(-180, 180, 5): pt.rotate_dihedral(t0, "custom:3:omega:" + str(deg)) flist.append(t0[0].copy()) en = pt.energy_decomposition(t0, igb=8, prmtop=traj.top.filename)['dihedral'][0] deg_ene.append((deg, en)) arr = np.array(deg_ene).T pt.write_traj("test.pdb", flist, top=traj.top, overwrite=True, options='model')
def test_pickle_datasetlist(self): traj = pt.iterload(fn('Tc5b.x'), fn('Tc5b.top')) dslist = pt.multidihedral(traj) pt.to_pickle(dslist, 'ds.pk') dslist2 = pt.read_pickle('ds.pk') aa_eq(dslist.values, dslist2.values)
import pytraj as pt # use `iterload` to save memory traj = pt.iterload("../tests/data/tz2.ortho.nc", "../tests/data/tz2.ortho.parm7") # search all possible dihedral types supported by cpptraj dset = pt.multidihedral(traj) print(dset) # residue 3 to 7, skip every 2 dset2 = pt.multidihedral(traj, resrange='3-7') print(dset2) # residue 3 to 7, skip every 2 # use `range360` dset = pt.multidihedral(traj, resrange='3-7', range360=True) print(dset)