def extractspec (dat, fmax=40.0): global ntrial #print('extractspec',dat.shape) lspec = [] tvec = dat[:,0] dt = tvec[1] - tvec[0] tstop = tvec[-1] prm = {'f_max_spec':fmax,'dt':dt,'tstop':tstop} if dat.shape[1] > 2: for col in range(1,dat.shape[1],1): ms = MorletSpec(tvec,dat[:,col],None,None,prm) lspec.append(ms) else: ms = MorletSpec(tvec,dat[:,1],None,None,prm) lspec.append(ms) ntrial = len(lspec) if ntrial > 1: avgdipole = np.mean(dat[:,1:-1],axis=1) else: avgdipole = dat[:,1] avgspec = MorletSpec(tvec,avgdipole,None,None,prm) # !!should fix to average of individual spectrograms!! ltfr = [ms.TFR for ms in lspec] npspec = np.array(ltfr) avgspec.TFR = np.mean(npspec,axis=0)#,axis=0) return ms.f, lspec, avgdipole, avgspec
def extractpsd(dat, fmax=120.0): print('extractpsd', dat.shape) lpsd = [] tvec = dat[:, 0] dt = tvec[1] - tvec[0] tstop = tvec[-1] prm = {'f_max_spec': fmax, 'dt': dt, 'tstop': tstop} for col in range(1, dat.shape[1], 1): ms = MorletSpec(tvec, dat[:, col], None, None, prm) lpsd.append(np.mean(ms.TFR, axis=1)) return ms.f, np.array(lpsd)
sampr = 1e3 / (tvec[1] - tvec[0]) if laminar: print('getting CSD') ddat['CSD'] = getCSD(ddat['lfp'], sampr) if ntrial > 1: ddat['avgCSD'] = np.zeros(ddat['CSD'][1].shape) for i in range(ntrial): ddat['avgCSD'] += ddat['CSD'][i] ddat['avgCSD'] /= float(ntrial) print('Extracting Wavelet spectrogram(s).') for i in range(maxlfp + 1): for trial in range(ntrial): ddat['spec'][(trial, i)] = MorletSpec(tvec, ddat['lfp'][(trial, i)][:, 1], None, None, waveprm, minwavet) if ntrial > 1: if debug: print('here') davglfp = {} davgspec = {} for i in range(maxlfp + 1): if debug: print(i, maxlfp, list(ddat['lfp'].keys())[0]) davglfp[i] = np.zeros( len(ddat['lfp'][list(ddat['lfp'].keys())[0]]), ) try: ms = ddat['spec'][(0, 0)] if debug: print('shape', ms.TFR.shape, ms.tmin, ms.f[0], ms.f[-1]) davgspec[i] = [np.zeros(ms.TFR.shape), ms.tmin, ms.f] except: print('err in davgspec[i]=')