Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
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
Beispiel #4
0
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