def get_vecs(mol, frame_funs=None, frame_index=None, mode='full', n=100, nr=10, dt=None): "Get the set of frame functions" if frame_funs is None: if mol._vf is not None: frame_funs = mol._vf if frame_index is None: frame_index = mol._frame_info['frame_index'] else: print('No frame functions provided') return traj = mol.mda_object.trajectory index = trunc_t_axis(traj.n_frames, n, nr) if dt is None: dt = traj.dt / 1e3 vec0 = ini_vec_load(traj, frame_funs, frame_index, index, dt) if mode.lower() == 'both': vecs, avgs, tensors = applyFrame(vec0, mode='full') vecs_z, _, _ = applyFrame(vec0, mode='z') return vecs, vecs_z, avgs, tensors else: vecs, avgs, tensors = applyFrame(vec0) return vecs, avgs, tensors
def frames2Ct(mol, mode='separate', n=10, nr=10, dt=None): """ Sets up calculation of a correlation function from a molecule object. In 'full' mode or 'P2' mode, this will simply return the correlation functions otherwise found in a data object (use frames2data). However, if the separated correlation functions are desired, then one must use this function for setup since the array dimensionality is incompatible with the 'data' object. ct,avgs,tensors = frames2Ct(mol,mode='separate',n=10,nr=10,dt=None) or for just the correlation functions (no frame index will be applied) ct=frames2Ct(frame_funs,mode='separate',n=10,nr=10,dt=None) """ if dt is None: dt = mol.mda_object.trajectory.dt / 1e3 index = trunc_t_axis(mol.mda_object.trajectory.n_frames, n, nr) vecs,avgs,tensors=get_vecs(mol=mol,frame_funs=mol._vf,frame_index=mol._frame_info['frame_index'],\ mode=mode,n=n,nr=nr,dt=dt) ct = list() for v in vecs: if 'vX' in v.keys(): ct.append( Ct(vZ=v['vZ'], vX=v['vX'], vY=v['vY'], mode='separate', index=index, avgs=None, dt=dt)) else: ct.append(Ct(vZ=v['vZ'], index=index, dt=dt)) return ct, avgs, tensors
def get_vecs(mol,frame_funs=None,frame_index=None,ffavg='direction',n=100,nr=10,**kwargs): "Get the set of frame functions" if frame_funs is None: if mol._vf is not None: frame_funs=mol._vf if frame_index is None: frame_index=mol._frame_info['frame_index'] else: print('No frame functions provided') return traj=mol.mda_object.trajectory index=trunc_t_axis(traj.n_frames,n,nr) dt=[kwargs['dt'] if 'dt' in kwargs else traj.dt/1e3] vec0=ini_vec_load(traj,frame_funs,frame_index,index,dt) if ffavg=='eta': vecs,avgs,tensors=applyFrame2(vec0,return_avgs=True,tensor_avgs=True) else: vecs,avgs,tensors=applyFrame(vec0,ffavg,return_avgs=True,tensor_avgs=True) return vecs,avgs,tensors