def _check_session_sync(ses_path, channel): """ Resync the original cam pulses :param ses_path: :return: """ efiles = spikeglx.glob_ephys_files(ses_path, bin_exists=False) tprobe = [] tinterp = [] for ef in efiles: if not ef.get('ap'): continue sync_events = alf.io.load_object(ef.ap.parent, 'sync', short_keys=True) # the first step is to construct list arrays with probe sync sync_file = ef.ap.parent.joinpath(ef.ap.name.replace( '.ap.', '.sync.')).with_suffix('.npy') t = sync_events.times[sync_events.channels == channel] tsync = sync_probes.apply_sync(sync_file, t, forward=True) tprobe.append(t) tinterp.append(tsync) # the second step is to make sure sample / time_ref files match time / time_ref files ts_file = ef.ap.parent.joinpath( ef.ap.name.replace('.ap.', '.timestamps.')).with_suffix('.npy') fs = spikeglx._get_fs_from_meta( spikeglx.read_meta_data(ef.ap.with_suffix('.meta'))) tstamp = sync_probes.apply_sync(ts_file, t * fs, forward=True) assert (np.all(tstamp - tsync < 1e-12)) return tinterp[0] - tinterp[1]
def phy_model_from_ks2_path(ks2_path): params_file = ks2_path.joinpath('params.py') if params_file.exists(): m = model.load_model(params_file) else: meta_file = next(ks2_path.rglob('*.ap.meta'), None) if meta_file and meta_file.exists(): meta = spikeglx.read_meta_data(meta_file) fs = spikeglx._get_fs_from_meta(meta) nch = (spikeglx._get_nchannels_from_meta(meta) - len(spikeglx._get_sync_trace_indices_from_meta(meta))) else: fs = 30000 nch = 384 m = model.TemplateModel(dir_path=ks2_path, dat_path=[], sample_rate=fs, n_channels_dat=nch) return m
def phy_model_from_ks2_path(ks2_path, bin_path, bin_file=None): if not bin_file: bin_file = next(bin_path.rglob('*.ap.*bin'), None) meta_file = next(bin_path.rglob('*.ap.meta'), None) if meta_file and meta_file.exists(): meta = spikeglx.read_meta_data(meta_file) fs = spikeglx._get_fs_from_meta(meta) nch = (spikeglx._get_nchannels_from_meta(meta) - len(spikeglx._get_sync_trace_indices_from_meta(meta))) else: fs = 30000 nch = 384 m = model.TemplateModel(dir_path=ks2_path, dat_path=bin_file, # this assumes the raw data is in the same folder sample_rate=fs, n_channels_dat=nch, n_closest_channels=NCH_WAVEFORMS) m.depths = m.get_depths() return m
def _get_sr(ephys_file): meta = spikeglx.read_meta_data(ephys_file.ap.with_suffix('.meta')) return spikeglx._get_fs_from_meta(meta)
def _sr(ap_file): md = spikeglx.read_meta_data(ap_file.with_suffix('.meta')) return spikeglx._get_fs_from_meta(md)
def _sr(ap_file): # gets sampling rate from data md = spikeglx.read_meta_data(ap_file.with_suffix('.meta')) return spikeglx._get_fs_from_meta(md)