def test_nupars(self): pdb_fn = fn('Test_NAstruct/adh026.3.pdb') traj = pt.iterload(pdb_fn, pdb_fn) data = pt.nastruct(traj) # default text = ''' parm {} trajin {} nastruct groovecalc 3dna '''.format(fn('Test_NAstruct/adh026.3.pdb'), fn('Test_NAstruct/adh026.3.pdb')) state = pt.load_cpptraj_state(text) state.run() for key in ['major', 'minor', 'twist']: cpp_data = np.array( [x.values for x in state.data if x.aspect == key]) # need to transpose to get shape=(n_frames, n_pairs) cpp_data = cpp_data.T aa_eq(data[key][1], cpp_data) # TODO: assert data._summary(np.mean, indices=None) data._summary(np.mean, indices=[ 1, ]) data._summary(np.mean, keys=['major', 'twist'], indices=[ 1, ]) data._summary(np.mean, keys='major', indices=[ 1, ]) data._summary(np.std, indices=[ 1, ]) data._summary([np.std, np.mean], indices=[ 1, ]) data._explain() dir(data) # pickle pt.to_pickle(data, 'na.pk') na2 = pt.read_pickle('na.pk') for key in data.keys(): aa_eq(data[key][1], na2[key][1]) # raise self.assertRaises(ValueError, lambda: pt.nastruct(traj, dtype='ndarray'))
def test_baseref(self): pdb_fn = fn('Test_NAstruct/adh026.3.pdb') baseref_fn = fn('Test_NAstruct/Atomic_G.pdb.nastruct') traj = pt.iterload(pdb_fn, pdb_fn) data = pt.nastruct(traj, baseref=baseref_fn) saved_data = """ # major minor 3 frames 19.9015, 15.8085, 20.7510, 15.8180, 19.9822, 15.4856, 19.5528, 15.9407, 20.6965, 16.2324, 19.6335, 16.3369, 19.2871, 15.9514, 21.2010, 16.7085, 19.9055, 16.6283 """ aa_eq(data.major[1][0], [19.9015, 20.7510, 19.9822], decimal=3) aa_eq(data.major[1][1], [19.5528, 20.6965, 19.6335], decimal=3) aa_eq(data.major[1][2], [19.2871, 21.2010, 19.9055], decimal=3) aa_eq(data.minor[1][0], [15.8085, 15.8180, 15.4856], decimal=3)
def test_nab_arna(): with tempfolder(): filename = 'nuc.pdb' traj = builder.build_arna('AAAAAAAAAA') nu = pt.nastruct(traj) aa_eq(np.mean(nu.major[1]), [15.183,], decimal=3) aa_eq(np.mean(nu.minor[1]), [18.804,], decimal=3)
def _compute_major_groove(builder): with tempfolder(): pdb_out = 'out.pdb' builder.write_pdb(pdb_out) traj = pytraj.load(pdb_out) data = pytraj.nastruct(traj) return data.major[1][0]
def test_nupars(self): fn = "./data/Test_NAstruct/adh026.3.pdb" traj = pt.iterload(fn, fn) data = pt.nastruct(traj) # default text = ''' parm "./data/Test_NAstruct/adh026.3.pdb" trajin "./data/Test_NAstruct/adh026.3.pdb" nastruct groovecalc 3dna ''' state = pt.load_cpptraj_state(text) state.run() for key in ['major', 'minor', 'twist']: cpp_data = np.array([x.values for x in state.data if x.aspect == key]) # need to transpose to get shape=(n_frames, n_pairs) cpp_data = cpp_data.T aa_eq(data[key][1], cpp_data) # TODO: assert data._summary(np.mean, indices=None) data._summary(np.mean, indices=[1, ]) data._summary(np.mean, keys=['major', 'twist'], indices=[1, ]) data._summary(np.mean, keys='major', indices=[1, ]) data._summary(np.std, indices=[1, ]) data._summary([np.std, np.mean], indices=[1, ]) data._explain() dir(data) # pickle pt.to_pickle(data, 'data/na.pk') na2 = pt.read_pickle('data/na.pk') for key in data.keys(): aa_eq(data[key][1], na2[key][1]) # raise self.assertRaises(ValueError, lambda: pt.nastruct(traj, dtype='ndarray'))
def test_nupars_vs_x3dna(self): traj = pt.iterload(fn('Test_NAstruct/x3dna/rna.pdb')) ref = pt.iterload(fn('Test_NAstruct/x3dna/rna_nab.pdb')) nu = pt.nastruct(traj, ref=ref, groove_3dna=True) root = fn('Test_NAstruct/x3dna/') # helical pars saved_helical_pars = np.loadtxt(root + 'bp_helical.par', skiprows=3, usecols=range(1, 13)).T aa_eq(nu.shear[1][0], saved_helical_pars[0], decimal=3) aa_eq(nu.stretch[1][0], saved_helical_pars[1], decimal=3) aa_eq(nu.stagger[1][0], saved_helical_pars[2], decimal=3) aa_eq(nu.buckle[1][0], saved_helical_pars[3], decimal=3) aa_eq(nu.prop[1][0], saved_helical_pars[4], decimal=3) aa_eq(nu.open[1][0], saved_helical_pars[5], decimal=3) aa_eq(nu.xdisp[1][0], saved_helical_pars[6][1:], decimal=3) aa_eq(nu.ydisp[1][0], saved_helical_pars[7][1:], decimal=3) aa_eq(nu.hrise[1][0], saved_helical_pars[8][1:], decimal=3) aa_eq(nu.incl[1][0], saved_helical_pars[9][1:], decimal=3) aa_eq(nu.tip[1][0], saved_helical_pars[10][1:], decimal=3) aa_eq(nu.htwist[1][0], saved_helical_pars[11][1:], decimal=3) # bp_step saved_helical_pars = np.loadtxt(root + 'bp_step.par', skiprows=3, usecols=range(1, 13)).T aa_eq(nu.shift[1][0], saved_helical_pars[6][1:], decimal=3) aa_eq(nu.slide[1][0], saved_helical_pars[7][1:], decimal=3) aa_eq(nu.tilt[1][0], saved_helical_pars[9][1:], decimal=3) aa_eq(nu.roll[1][0], saved_helical_pars[10][1:], decimal=3) aa_eq(nu.twist[1][0], saved_helical_pars[11][1:], decimal=3) # grove aa_eq(nu.minor[1][0], [15.8, 15.8, 15.5], decimal=1) aa_eq(nu.major[1][0], [19.9, 20.8, 20.0], decimal=1)
def test_nupars_vs_x3dna(self): traj = pt.iterload('data/Test_NAstruct/x3dna/rna.pdb') ref = pt.iterload('data/Test_NAstruct/x3dna/rna_nab.pdb') nu = pt.nastruct(traj, ref=ref, groove_3dna=True) root = 'data/Test_NAstruct/x3dna/' # helical pars saved_helical_pars = np.loadtxt(root + 'bp_helical.par', skiprows=3, usecols=range(1, 13)).T aa_eq(nu.shear[1], saved_helical_pars[0], decimal=3) aa_eq(nu.stretch[1], saved_helical_pars[1], decimal=3) aa_eq(nu.stagger[1], saved_helical_pars[2], decimal=3) aa_eq(nu.buckle[1], saved_helical_pars[3], decimal=3) aa_eq(nu.prop[1], saved_helical_pars[4], decimal=3) aa_eq(nu.open[1], saved_helical_pars[5], decimal=3) aa_eq(nu.xdisp[1], saved_helical_pars[6][1:], decimal=3) aa_eq(nu.ydisp[1], saved_helical_pars[7][1:], decimal=3) aa_eq(nu.hrise[1], saved_helical_pars[8][1:], decimal=3) aa_eq(nu.incl[1], saved_helical_pars[9][1:], decimal=3) aa_eq(nu.tip[1], saved_helical_pars[10][1:], decimal=3) aa_eq(nu.htwist[1], saved_helical_pars[11][1:], decimal=3) # bp_step saved_helical_pars = np.loadtxt(root + 'bp_step.par', skiprows=3, usecols=range(1, 13)).T aa_eq(nu.shift[1], saved_helical_pars[6][1:], decimal=3) aa_eq(nu.slide[1], saved_helical_pars[7][1:], decimal=3) aa_eq(nu.tilt[1], saved_helical_pars[9][1:], decimal=3) aa_eq(nu.roll[1], saved_helical_pars[10][1:], decimal=3) aa_eq(nu.twist[1], saved_helical_pars[11][1:], decimal=3) # grove aa_eq(nu.minor[1][0], [15.8, 15.8, 15.5], decimal=1) aa_eq(nu.major[1][0], [19.9, 20.8, 20.0], decimal=1)
def worker(rank, frame, traj): pt.nastruct(traj, ref=frame)
import pytraj as pt from jamber.builder import build_bdna seq = 'AAAAAAAAAA' traj = build_bdna(seq) nupar = pt.nastruct(traj) print('major groove width', nupar.major[1]) print('minor groove width', nupar.minor[1])
def test_nab_bdna(): with tempfolder(): traj = builder.build_bdna('AAAAAAAAAA') nu = pt.nastruct(traj) aa_eq(np.mean(nu.major[1]), [17.246,], decimal=3) aa_eq(np.mean(nu.minor[1]), [11.459,], decimal=3)
import pytraj as pt fn = "../tests/data/Test_NAstruct/adh026.3.pdb" traj = pt.load(fn, fn) d = pt.nastruct(traj) print(d) # get major groove print(d.major) # get minor groove print(d.minor) print(d.minor[1].mean(axis=0)) # get inclination print(d.incl) # get all supported keys print(d.keys())