def testReadWrite(self): tfile = tempfile.NamedTemporaryFile() data = [{'a': 'thisisa', 'b': 1, 'c': [1, 2, 3]}, {'a': 'thisisb', 'b': 2, 'c': [2, 3, 4]}] jsonable.write(tfile.name, data) data2 = jsonable.read(tfile.name) self.assertEqual(data, data2) jsonable.append(tfile.name, data) data3 = jsonable.read(tfile.name) self.assertEqual(data + data, data3) tfile.close()
def load_file_content(fil): """ Returns content of files. Designed for very generic file formats: so far supported contents are `json`, `npy`, `csv`, `tsv`, `ssv`, `jsonable` :param fil: file to read :return:array/json/pandas dataframe depending on format """ if not fil: return fil = Path(fil) if fil.stat().st_size == 0: return if fil.suffix == '.csv': return pd.read_csv(fil) if fil.suffix == '.json': try: with open(fil) as _fil: return json.loads(_fil.read()) except Exception as e: _logger.error(e) return None if fil.suffix == '.jsonable': return jsonable.read(fil) if fil.suffix == '.npy': return np.load(file=fil) if fil.suffix == '.pqt': return parquet.load(fil) if fil.suffix == '.ssv': return pd.read_csv(fil, delimiter=' ') if fil.suffix == '.tsv': return pd.read_csv(fil, delimiter='\t') return Path(fil)
def load_data(session_path, time='absolute'): """ Load PyBpod data files (.jsonable). Bpod timestamps are in microseconds (µs) PyBpod timestamps are is seconds (s) :param session_path: Absolute path of session folder :type session_path: str :return: A list of len ntrials each trial being a dictionary :rtype: list of dicts """ if session_path is None: return path = Path(session_path).joinpath("raw_behavior_data") path = next(path.glob("_iblrig_taskData.raw*.jsonable"), None) if not path: return None data = jsonable.read(path) if time == 'absolute': data = [trial_times_to_times(t) for t in data] return data