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
Esempio n. 3
0
# 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)