def klusters_files(table,basename): CluFileName,FetFileName,ResFileName,SpkFileName,XMLFileName = (basename + ext for ext in [".clu.1",".fet.1",".res.1",".spk.1",".xml"]) output.write_clu(table.cols.clu[:],CluFileName) output.write_fet(to2d(table.cols.fet[:]),FetFileName,samples=table.cols.time[:]) output.write_res(table.cols.time[:],ResFileName) output.write_spk(table.cols.wave[:],SpkFileName) output.write_xml(n_ch=N_CH,n_samp=S_TOTAL,n_feat=N_CH*FPC,sample_rate=SAMPLE_RATE,filepath=XMLFileName)
def klusters_files(table, basename): CluFileName, FetFileName, ResFileName, SpkFileName, XMLFileName = ( basename + ext for ext in [".clu.1", ".fet.1", ".res.1", ".spk.1", ".xml"]) output.write_clu(table.cols.clu[:], CluFileName) output.write_fet(to2d(table.cols.fet[:]), FetFileName, samples=table.cols.time[:]) output.write_res(table.cols.time[:], ResFileName) output.write_spk(table.cols.wave[:], SpkFileName) output.write_xml(n_ch=N_CH, n_samp=S_TOTAL, n_feat=N_CH * FPC, sample_rate=SAMPLE_RATE, filepath=XMLFileName)
def extract_intra_spikes(DatFileName,IntraChannel,output_dir=None,ExtraChannels=None): """extracts spikes times from intracellular data""" THRESH_FRAC = .5 DatFileName = os.path.abspath(DatFileName) DatDir = os.path.dirname(DatFileName) basename = intra_basename(DatFileName) OutDir = join(output_dir,basename) if output_dir else join(DatDir,basename) with indir(OutDir): SpkFileName = basename+'.spk.1' n_ch_dat,sample_rate = get_dat_pars(DatFileName) global N_CH N_CH = 1 if ExtraChannels is None else 1 + len(ExtraChannels) set_globals_samples(sample_rate) print("extracting intracellular spikes from %s"%DatFileName) n_samples = num_samples(DatFileName,n_ch_dat,n_bytes=np.nbytes[DTYPE]) AllDataArr = np.memmap(DatFileName,dtype=np.int16,shape=(n_samples,n_ch_dat),mode='r') b,a = signal.butter(3,100./(SAMPLE_RATE/2),'high') #filter at 100 Hz IntraArr = AllDataArr[:,IntraChannel].copy() IntraArr = signal.filtfilt(b,a,IntraArr) Thresh = IntraArr.max()*THRESH_FRAC Segs = contig_segs(np.flatnonzero(IntraArr > Thresh),padding=2) TmList = map(lambda Seg: Seg[IntraArr[Seg].argmax()],Segs) CluList = np.ones(len(TmList),dtype=np.int) FetList = np.zeros((len(TmList),1),dtype=np.int) SpkList = [get_padded(IntraArr,PeakSample-S_BEFORE,PeakSample+S_AFTER) for PeakSample in TmList] SpkArr = np.array(SpkList)[:,:,np.newaxis] if ExtraChannels is not None: ExtraArr = AllDataArr[:,ExtraChannels].copy() #b,a = signal.butter(BUTTER_ORDER,(F_LOW/(SAMPLE_RATE/2),.95),'pass') ExtraArr = filtfilt2d(b,a,ExtraArr) ExtraSpkList = [get_padded(ExtraArr,PeakSample-S_BEFORE,PeakSample+S_AFTER) for PeakSample in TmList] ExtraSpkArr = np.array(ExtraSpkList) SpkArr *= ExtraSpkArr[0].max()/SpkArr[0].max() SpkArr = np.concatenate((np.array(ExtraSpkList),SpkArr),axis=2) output.write_spk(np.array(SpkArr),SpkFileName) write_files(basename,CluList,TmList,FetList,[])
def extract_intra_spikes(DatFileName, IntraChannel, output_dir=None, ExtraChannels=None): """extracts spikes times from intracellular data""" THRESH_FRAC = .5 DatFileName = os.path.abspath(DatFileName) DatDir = os.path.dirname(DatFileName) basename = intra_basename(DatFileName) OutDir = join(output_dir, basename) if output_dir else join( DatDir, basename) with indir(OutDir): SpkFileName = basename + '.spk.1' n_ch_dat, sample_rate = get_dat_pars(DatFileName) global N_CH N_CH = 1 if ExtraChannels is None else 1 + len(ExtraChannels) set_globals_samples(sample_rate) print("extracting intracellular spikes from %s" % DatFileName) n_samples = num_samples(DatFileName, n_ch_dat, n_bytes=np.nbytes[DTYPE]) AllDataArr = np.memmap(DatFileName, dtype=np.int16, shape=(n_samples, n_ch_dat), mode='r') b, a = signal.butter(3, 100. / (SAMPLE_RATE / 2), 'high') #filter at 100 Hz IntraArr = AllDataArr[:, IntraChannel].copy() IntraArr = signal.filtfilt(b, a, IntraArr) Thresh = IntraArr.max() * THRESH_FRAC Segs = contig_segs(np.flatnonzero(IntraArr > Thresh), padding=2) TmList = map(lambda Seg: Seg[IntraArr[Seg].argmax()], Segs) CluList = np.ones(len(TmList), dtype=np.int) FetList = np.zeros((len(TmList), 1), dtype=np.int) SpkList = [ get_padded(IntraArr, PeakSample - S_BEFORE, PeakSample + S_AFTER) for PeakSample in TmList ] SpkArr = np.array(SpkList)[:, :, np.newaxis] if ExtraChannels is not None: ExtraArr = AllDataArr[:, ExtraChannels].copy() #b,a = signal.butter(BUTTER_ORDER,(F_LOW/(SAMPLE_RATE/2),.95),'pass') ExtraArr = filtfilt2d(b, a, ExtraArr) ExtraSpkList = [ get_padded(ExtraArr, PeakSample - S_BEFORE, PeakSample + S_AFTER) for PeakSample in TmList ] ExtraSpkArr = np.array(ExtraSpkList) SpkArr *= ExtraSpkArr[0].max() / SpkArr[0].max() SpkArr = np.concatenate((np.array(ExtraSpkList), SpkArr), axis=2) output.write_spk(np.array(SpkArr), SpkFileName) write_files(basename, CluList, TmList, FetList, [])