def test_issue_172_cpptraj(self): '''Internal Error: Attempting to assign to Frame with external memory ''' traj = pt.iterload(fn('tz2.nc'), fn('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_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_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)
def test_atomiccorr(self): traj = pt.iterload(fn('tz2.nc'), fn('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)
def test_frame_indices_for_function(self): traj = self.traj pdict = pt.__dict__ funclist = list( set(pdict[key] for key in dir(pt) if hasattr(pdict[key], '_issuper_dispatched'))) frame_indices = [0, 2] # remove 'calc_jcoupling' since does not have kfile on travis # remove energy_decomposition since does not have sander # remove center, why? # remove search_neighbors, why? (got messup with Frame memory owner) excluded_fn = [ jcoupling, volmap, center, search_neighbors, atomiccorr, autoimage, closest, volume, superpose, randomize_ions, check_structure, align_principal_axis, ] func_nu = [ calc_epsilon, calc_alpha, calc_zeta, calc_beta, calc_nu1, calc_nu2, calc_delta, calc_chin, calc_gamma, ] # default mask, default ref for func in funclist: if func not in excluded_fn: if func is pt.calc_multivector: data_0 = func( traj, resrange='1-6', names='C N', frame_indices=frame_indices) data_1 = func( traj[frame_indices], resrange='1-6', names='C N') elif func is pt.volmap: # use water data_0 = func( self.traj_ortho, mask=':WAT@O', grid_spacing=(0.2, 0.2, 0.2), centermask='!:1-13', frame_indices=frame_indices) data_1 = func( self.traj_ortho[frame_indices], mask=':WAT@O', centermask='!:1-13', grid_spacing=(0.2, 0.2, 0.2)) elif func in func_nu: data_0 = func(self.traj_nu, frame_indices=frame_indices) data_1 = func(self.traj_nu[frame_indices]) else: data_0 = func(traj, frame_indices=frame_indices) data_1 = func(traj[frame_indices]) if isinstance(data_0, np.ndarray): aa_eq(data_0, data_1) elif isinstance(data_0, pt.DatasetList): for arr0, arr1 in zip(data_0, data_1): # do each element in case we can not convert DatasetList to # ndarray if not isinstance(arr0[0], string_types): aa_eq(arr0.values, arr1.values) elif isinstance(data_0, DatasetHBond): aa_eq(data_0.data.values, data_1.data.values) elif isinstance(data_0, (list, tuple)): # dssp aa_eq(data_0[-1].values, data_1[-1].values) else: raise RuntimeError( 'must return ndarray or DatasetList or DatasetHBond') # test excluded fns aa_eq( pt.atomiccorr(traj[frame_indices], '@CA'), pt.atomiccorr(traj, '@CA', frame_indices=frame_indices)) # align_principal_axis indices = [0, 3, 7] t0 = self.traj[:] t1 = self.traj[indices] pt.align_principal_axis(t0, frame_indices=indices) pt.align_principal_axis(t1) aa_eq(t0[indices].xyz, t1.xyz) # make sure that other frames are not affected other_indices = list(set(range(10)) - set(indices)) aa_eq(self.traj[other_indices].xyz, t0[other_indices].xyz)
def test_frame_indices_for_function(self): traj = self.traj pdict = pt.__dict__ funclist = list(set(pdict[key] for key in dir(pt) if hasattr(pdict[key], '_issuper_dispatched'))) frame_indices = [0, 2] # remove 'calc_jcoupling' since does not have kfile on travis # remove energy_decomposition since does not have sander # remove center, why? # remove search_neighbors, why? (got messup with Frame memory owner) excluded_fn = [calc_jcoupling, calc_volmap, energy_decomposition, center, search_neighbors, calc_atomiccorr, autoimage, closest, calc_volume, superpose, randomize_ions, check_structure, align_principal_axis, ] func_nu = [ calc_epsilon, calc_alpha, calc_zeta, calc_beta, calc_nu1, calc_nu2, calc_delta, calc_chin, calc_gamma, ] # default mask, default ref for func in funclist: if func not in excluded_fn: if func is pt.calc_multivector: data_0 = func(traj, resrange='1-6', names='C N', frame_indices=frame_indices) data_1 = func(traj[frame_indices], resrange='1-6', names='C N') elif func is pt.volmap: # use water data_0 = func(self.traj_ortho, mask=':WAT@O', grid_spacing=(0.2, 0.2, 0.2), centermask='!:1-13', frame_indices=frame_indices) data_1 = func(self.traj_ortho[frame_indices], mask=':WAT@O', centermask='!:1-13', grid_spacing=(0.2, 0.2, 0.2)) elif func in func_nu: data_0 = func(self.traj_nu, frame_indices=frame_indices) data_1 = func(self.traj_nu[frame_indices]) else: data_0 = func(traj, frame_indices=frame_indices) data_1 = func(traj[frame_indices]) if isinstance(data_0, np.ndarray): aa_eq(data_0, data_1) elif isinstance(data_0, pt.DatasetList): for arr0, arr1 in zip(data_0, data_1): # do each element in case we can not convert DatasetList to # ndarray if not isinstance(arr0[0], string_types): aa_eq(arr0.values, arr1.values) elif isinstance(data_0, DatasetHBond): aa_eq(data_0.data.values, data_1.data.values) elif isinstance(data_0, (list, tuple)): # dssp aa_eq(data_0[-1].values, data_1[-1].values) else: raise RuntimeError( 'must return ndarray or DatasetList or DatasetHBond') # test excluded fns aa_eq(pt.atomiccorr(traj[frame_indices], '@CA'), pt.atomiccorr(traj, '@CA', frame_indices=frame_indices)) # align_principal_axis indices = [0, 3, 7] t0 = self.traj[:] t1 = self.traj[indices] pt.align_principal_axis(t0, frame_indices=indices) pt.align_principal_axis(t1) aa_eq(t0[indices].xyz, t1.xyz) # make sure that other frames are not affected other_indices = list(set(range(10)) - set(indices)) aa_eq(self.traj[other_indices].xyz, t0[other_indices].xyz)