Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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