Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
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