def integrate(fpath, poly): fnames = os.listdir(fpath) fnames = np.sort(fnames) description = [('video_ts',np.float32), ('x', np.float32), ('y', np.float32)] for i, fname in enumerate(fnames): session_file = os.path.join(fpath,fname) with open(session_file) as file: sid = int(fname[:-4]) data = np.genfromtxt(file, dtype=description, delimiter=',', names=None) se_ts = (data['video_ts'] - poly[i][1]) / poly[i][0] se_ts = np.around(se_ts) se_ts = se_ts.astype(np.int) data = append_field(data, 'se_ts', se_ts) data = append_field(data, 'session_id', sid) if i == 0: naksu_data = data else: naksu_data = rowstack((naksu_data, data)) #naksu_data = np.vstack((naksu_data, data)) return naksu_data
def integrate_manual(fpath): sid_paths = os.listdir(fpath) sid_paths = np.sort(sid_paths) description = [('video_ts',np.float32), ('x', np.float32), ('y', np.float32), ('se_ts', np.int), ('session_id', np.int)] naksu_data = np.array([], dtype=description) for sid in sid_paths: bend_paths = os.listdir(os.path.join(fpath,sid)) for b in bend_paths: print sid, b lap_paths = os.listdir(os.path.join(fpath, sid, b)) for l in lap_paths: files = os.listdir(os.path.join(fpath, sid, b, l)) files = [os.path.join(fpath, sid, b, l, x) for x in files if x.lower().endswith('.mrk')] for f in files: with open(f) as file: fdata = np.genfromtxt(file, dtype=[('point', np.int), ('x', np.float), ('y', np.float)]) if np.size(fdata) == 0: continue fdata = fdata if np.size(fdata['x']) == 1 else fdata[0] impath = f[:-4] + ".jpg" img = Image.open(impath) imstr = StringIO() pos, size = (3, 24), (80, 24) img = img.crop((pos[0], pos[1], pos[0]+size[0], pos[1]+size[1])) img = ImageOps.invert(img) img.save(imstr, format="PPM") imstr = imstr.getvalue() cmd = "gocr -C 0-9. -" proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) timestamp = proc.communicate(imstr)[0] timestamp = timestamp.strip() timestamp = timestamp.strip('_') try: timestamp = float(timestamp) except ValueError: continue d = np.array((0, fdata['x'], fdata['y'], timestamp, sid), dtype=description) naksu_data = rowstack((naksu_data, d)) naksu_data.sort(order=['session_id', 'se_ts']) return naksu_data
def get_merged_data(): # this is not needed unless TP location is an issue! # cdata, h5file = get_cleaned_data(DATA_FILE) cdata, h5file = get_uncleaned_data(DATA_FILE) naksu_raw = h5file.root.ramppi11.naksu_data.read() merged = [] for d in foreach(cdata, ["session_id", "lap"]): naksu_x, naksu_y, lap_d = get_interp_naksu(d, naksu_raw) naksu_d = np.rec.fromarrays((naksu_x, naksu_y), names="naksu_x,naksu_y") merged.append(colstack(lap_d, naksu_d)) merged = rowstack(merged) return merged