def prepare_data(arena, path, smoothstr, smooth): dat = json.load(open(path)) fly_data = dat['data'] bpath = dat.get('_base',os.path.abspath(os.path.dirname(path))) pooled_on = {k:[] for k in "axbhwq"} pooled_off = {k:[] for k in "axbhwq"} pooled_lon = {k:[] for k in "axbhwq"} for exp in fly_data: geom, dfs = madplot.load_bagfile( madplot.get_path(path,dat,exp["bag"]), arena, smooth=smooth) l_df = dfs["targeted"] t_df = dfs["tracked"] h_df = dfs["ttm"] #find when the laser was on l_on = l_df[l_df['laser_power'] > 0] #time of first laser on l_on0 = l_df.index[0] + datetime.timedelta(seconds=30) #t_off = t_df.head(3000) #t_on = t_df.tail(3000) #fig = plt.figure() #ax = fig.gca() #t_df.plot(ax=ax) #fig.savefig("%s_%s.png" % (exp["bag"],exp["type"]), bbox_inches='tight') #the laser was off at the start and on at the end #tracking data when the laser was on t_on = t_df[l_on0:] #tracking data when the laser was off t_off = t_df[:l_on0] pooled_on[exp["type"]].append(t_on) pooled_off[exp["type"]].append(t_off) pooled_lon[exp["type"]].append(l_on) cPickle.dump(pooled_on, open(os.path.join(bpath,'pooled_on_%s_%s.pkl' % (arena.unit,smoothstr)),'wb'), -1) cPickle.dump(pooled_off, open(os.path.join(bpath,'pooled_off_%s_%s.pkl' % (arena.unit,smoothstr)),'wb'), -1) cPickle.dump(pooled_lon, open(os.path.join(bpath,'pooled_lon_%s_%s.pkl' % (arena.unit,smoothstr)),'wb'), -1) return pooled_on, pooled_off, pooled_lon
def prepare_data(path): if os.path.isdir(path): path = path + "/" dat = {"coupled": []} for trialn, b in enumerate( sorted(glob.glob(os.path.join(path, "*.bag")))): dat["coupled"].append({ "bag": os.path.basename(b), "label": "trial %d" % trialn }) with open(os.path.join(path, "example.json"), "w") as f: json.dump(dat, f) fname = "example" else: dat = json.load(open(path)) fname = os.path.splitext(os.path.basename(path))[0] jobs = {} pool = multiprocessing.Pool() for k in dat: if k.startswith("_"): continue for trialn, trials in enumerate(dat[k]): bags = trials["bag"] if not isinstance(bags, list): bags = [bags] else: if not "label" in trials: print "WARNING: Trial missing label" for bname in bags: bpath = madplot.get_path(path, dat, bname) jobs[bname] = pool.apply_async(madplot.load_bagfile, (bpath, arena), {'smooth': smooth_trajectories}) pool.close() pool.join() for k in dat: if k.startswith("_"): continue for trialn, trials in enumerate(dat[k]): bags = trials["bag"] if not isinstance(bags, list): bags = [bags] data = [] for bname in bags: print "merge", bname, "to trial", trialn bdat = jobs[bname].get() data.append(bdat) # dt = bdat[1]['t_dt'].values # print "\tdt",dt.mean(),"+/-",dt.std() # ax = plt.figure(bname).add_subplot(1,1,1) # ax.plot(dt) # ax = plt.figure(bname+"hist").add_subplot(1,1,1) # ax.hist(dt,bins=20) # plt.show(block=False) trials["data"] = madplot.merge_bagfiles( data, dat.get('_geom_must_intersect', True)) with open(madplot.get_path(path, dat, "%s_%s.pkl" % (fname, unit_ext)), 'wb') as f: cPickle.dump(dat, f, -1) return dat
def load_data(path): dat = json.load(open(path)) fname = os.path.splitext(os.path.basename(path))[0] with open(madplot.get_path(path, dat, "%s_%s.pkl" % (fname, unit_ext)), 'rb') as f: return cPickle.load(f)
def prepare_data(arena, path, smoothstr, smooth): dat = json.load(open(path)) fly_data = dat['data'] bpath = dat.get('_base', os.path.abspath(os.path.dirname(path))) pooled_on = {k: [] for k in "axbhwq"} pooled_off = {k: [] for k in "axbhwq"} pooled_lon = {k: [] for k in "axbhwq"} for exp in fly_data: geom, dfs = madplot.load_bagfile(madplot.get_path( path, dat, exp["bag"]), arena, smooth=smooth) l_df = dfs["targeted"] t_df = dfs["tracked"] h_df = dfs["ttm"] #find when the laser was on l_on = l_df[l_df['laser_power'] > 0] #time of first laser on l_on0 = l_df.index[0] + datetime.timedelta(seconds=30) #t_off = t_df.head(3000) #t_on = t_df.tail(3000) #fig = plt.figure() #ax = fig.gca() #t_df.plot(ax=ax) #fig.savefig("%s_%s.png" % (exp["bag"],exp["type"]), bbox_inches='tight') #the laser was off at the start and on at the end #tracking data when the laser was on t_on = t_df[l_on0:] #tracking data when the laser was off t_off = t_df[:l_on0] pooled_on[exp["type"]].append(t_on) pooled_off[exp["type"]].append(t_off) pooled_lon[exp["type"]].append(l_on) cPickle.dump( pooled_on, open( os.path.join(bpath, 'pooled_on_%s_%s.pkl' % (arena.unit, smoothstr)), 'wb'), -1) cPickle.dump( pooled_off, open( os.path.join(bpath, 'pooled_off_%s_%s.pkl' % (arena.unit, smoothstr)), 'wb'), -1) cPickle.dump( pooled_lon, open( os.path.join(bpath, 'pooled_lon_%s_%s.pkl' % (arena.unit, smoothstr)), 'wb'), -1) return pooled_on, pooled_off, pooled_lon
def load_data(path): dat = json.load(open(path)) fname = os.path.splitext(os.path.basename(path))[0] with open(madplot.get_path(path, dat, "%s_%s.pkl" % (fname,unit_ext)), 'rb') as f: return cPickle.load(f)
def prepare_data(path): if os.path.isdir(path): path = path + "/" dat = {"coupled":[]} for trialn,b in enumerate(sorted(glob.glob(os.path.join(path,"*.bag")))): dat["coupled"].append({"bag":os.path.basename(b), "label":"trial %d" % trialn} ) with open(os.path.join(path,"example.json"), "w") as f: json.dump(dat, f) fname = "example" else: dat = json.load(open(path)) fname = os.path.splitext(os.path.basename(path))[0] jobs = {} pool = multiprocessing.Pool() for k in dat: if k.startswith("_"): continue for trialn,trials in enumerate(dat[k]): bags = trials["bag"] if not isinstance(bags,list): bags = [bags] else: if not "label" in trials: print "WARNING: Trial missing label" for bname in bags: bpath = madplot.get_path(path, dat, bname) jobs[bname] = pool.apply_async( madplot.load_bagfile, (bpath, arena), {'smooth':smooth_trajectories}) pool.close() pool.join() for k in dat: if k.startswith("_"): continue for trialn,trials in enumerate(dat[k]): bags = trials["bag"] if not isinstance(bags,list): bags = [bags] data = [] for bname in bags: print "merge", bname, "to trial", trialn bdat = jobs[bname].get() data.append( bdat ) # dt = bdat[1]['t_dt'].values # print "\tdt",dt.mean(),"+/-",dt.std() # ax = plt.figure(bname).add_subplot(1,1,1) # ax.plot(dt) # ax = plt.figure(bname+"hist").add_subplot(1,1,1) # ax.hist(dt,bins=20) # plt.show(block=False) trials["data"] = madplot.merge_bagfiles( data, dat.get('_geom_must_intersect', True)) with open(madplot.get_path(path, dat, "%s_%s.pkl" % (fname,unit_ext)), 'wb') as f: cPickle.dump(dat, f, -1) return dat