def worker(arguments): dbname, event_labels, Tpre, Tpost, freqs, normfun = arguments[:6] dtup = arguments[6:] print(dtup) lfp = load_and_preprocess(dbname, dtup) # get events evt = dbio.fetch(dbname, 'events', *dtup) evtdict = {} evtdict['stops'] = evt['banked'].dropna() evtdict['pops'] = evt['popped'].dropna() evtdict['starts'] = evt['start inflating'] if 'is_control' in evt.columns: evtdict['stops_free'] = evt.query('is_control == False')['banked'].dropna() evtdict['stops_control'] = evt.query('is_control == True')['banked'].dropna() evtdict['stops_rewarded'] = evt.query('trial_type != 4')['banked'].dropna() evtdict['stops_unrewarded'] = evt.query('trial_type == 4')['banked'].dropna() else: evtdict['stops_free'] = evtdict['stops'] evtdict['stops_control'] = None evtdict['stops_rewarded'] = evtdict['stops'] evtdict['stops_unrewarded'] = None this_spectra = [] this_labels = [] taxis = None faxis = None if evtdict[event_labels[0]] is None: print("Dataset {} has no events of type {}".format(dtup, event_labels[0])) elif evtdict[event_labels[1]] is None: print("Dataset {} has no events of type {}".format(dtup, event_labels[1])) else: this_spectra, this_labels, taxis, faxis = avg_time_freq_arrays(lfp, [evtdict[event_labels[0]], evtdict[event_labels[1]]], Tpre, Tpost, method='wav', normfun=normfun, freqs=freqs) return this_spectra, this_labels, taxis, faxis
lfpset = lfpset.decimate(5) # instantaneous power lfpset = lfpset.instpwr() # remove censored regions lfpset = lfpset.censor() # rolling smooth lfpset = lfpset.smooth(0.075) # convert to dB lfpset = lfpset.apply(lambda x: 10 * np.log10(x)) # get events evt = dbio.fetch(dbname, "events", *dtup[:-1]) t_evt = evt[["start inflating", "banked", "popped"]] # calculate duration of inflation didpop = ~np.isnan(t_evt["popped"]) stops = t_evt["banked"].copy() stops[didpop] = t_evt["popped"][didpop] t_evt["didpop"] = didpop t_evt["stop inflating"] = stops t_evt["inf_dur"] = t_evt["stop inflating"] - t_evt["start inflating"] max_inf = t_evt.inf_dur.max() # define pre and post time intervals Tpre = -1 Tpost = np.ceil(max_inf) + 1
# set a random seed np.random.seed(12345) # name of database to use dbname = os.path.expanduser("~/data/bartc/plexdata/bartc.hdf5") # first, get a list of lfp channels setlist = pd.read_hdf(dbname, "/meta/lfplist") # group by (patient, dataset) entries: groups = setlist.groupby(["patient", "dataset"]) # for name, grp in groups: name = (18, 1) print name print "Fetching LFP data..." lfp = dbio.fetch_all_such_LFP(dbname, *name) # fetch events evt = dbio.fetch(dbname, "events", *name) stops = evt[["stop inflating"]].dropna().values # prepare to do some plotting Tpre = -2 Tpost = 0 median_of_corr = corr_then_med(lfp, stops, Tpre, Tpost) corr_of_median = med_then_corr(lfp, stops, Tpre, Tpost)