def testReadChannelGainNIDQ(self): for meta_data_file in self.meta_files: if meta_data_file.name.split('.')[-2] not in ['nidq']: continue md = spikeglx.read_meta_data(meta_data_file) nc = spikeglx._get_nchannels_from_meta(md) cg = spikeglx._conversion_sample2v_from_meta(md) i2v = md.get('niAiRangeMax') / 32768 self.assertTrue(np.all(cg['nidq'][slice(0, int(np.sum(md.acqMnMaXaDw[:3])))] == i2v)) self.assertTrue(np.all(cg['nidq'][slice(int(np.sum(md.acqMnMaXaDw[-1])), None)] == 1.)) self.assertTrue(len(cg['nidq']) == nc)
def testReadChannelGainAPLF(self): for meta_data_file in self.meta_files: if meta_data_file.name.split('.')[-2] not in ['lf', 'ap']: continue md = spikeglx.read_meta_data(meta_data_file) cg = spikeglx._conversion_sample2mv_from_meta(md) i2v = md.get('imAiRangeMax') / 512 self.assertTrue(np.all(cg['lf'][0:-1] == i2v / 250)) self.assertTrue(np.all(cg['ap'][0:-1] == i2v / 500)) # also test consistent dimension with nchannels nc = spikeglx._get_nchannels_from_meta(md) self.assertTrue(len(cg['ap']) == len(cg['lf']) == nc)
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