Skip to content

Instantly share code, notes, and snippets.

@matham
Created October 13, 2016 16:57
Show Gist options
  • Save matham/ecef207139ac4258c28c56913c86823b to your computer and use it in GitHub Desktop.
Save matham/ecef207139ac4258c28c56913c86823b to your computer and use it in GitHub Desktop.
from os import listdir
from os.path import join, splitext
from re import match
import re
import numpy as np
import operator
from glitter.logger import DataLogger
filename_pat = re.compile('Carvone Trial([0-9]+) +([0-9]+)_updated_\\.h5')
def update_files(root):
logger = DataLogger()
for fname in listdir(root):
src = join(root, fname)
dest = '{}_updated_{}'.format(*splitext(src))
logger.upgrade_legacy_file(src, dest)
def get_dig_latency(root, pat=filename_pat):
data = {}
logger = DataLogger()
for fname in listdir(root):
fname_full = join(root, fname)
m = match(pat, fname)
if m is None:
continue
day, rat = m.groups()
logger.open_file(fname_full)
s = logger.t_h5.TrialStart_0
d = logger.t_h5.DigStart_1
pts = logger.pts_h5
vals = []
for item in (pts, s, d):
vals.append(np.concatenate(item._f_list_nodes()))
if len(vals[0]) != len(vals[1]) or len(vals[1]) != len(vals[2]):
raise Exception('Unequal data sizes')
pts, s, d = vals
st, dt = pts[s], pts[d]
if len(st) != len(dt):
print(
"{}: The number of trial start times and digging start times "
"doesn't match; {}, {}".format(fname, len(st), len(dt)))
continue
latency = dt - st
if not all(map(lambda x: x >= 0, latency)):
raise Exception('Not all latencies are non-negative')
data[(fname, day, rat)] = latency
logger.close_file()
return data
if __name__ == '__main__':
root = r'C:\kivy-glitter-build\erin'
update_files(root)
data = get_dig_latency(root)
print('Name,Day,Rat,Count,Trial,Latency')
for (fname, day, rat), latency in data.items():
for i, val in enumerate(latency):
print('{},{},{},{},{},{}'.format(fname, day, rat, len(latency), i + 1, val))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment