diff --git a/fishbook/baseline_data.py b/fishbook/baseline_data.py index f09dc4f..da865a5 100644 --- a/fishbook/baseline_data.py +++ b/fishbook/baseline_data.py @@ -1,14 +1,17 @@ -__package__ = "fishbook" -from fishbook.fishbook import Dataset +from fishbook.fishbook import Dataset, RePro +import numpy as np +import nixio as nix +import os from IPython import embed + class BaselineData(object): def __init__(self, dataset:Dataset): self.__data = [] self.__dataset = dataset - self.__cell = dataset.cells[0] + self.__cell = dataset.cells[0] # Beware: Assumption that there is only a single cell self._get_data() def _get_data(self): @@ -16,12 +19,12 @@ class BaselineData(object): self.__data = [] self.__data = [] - repros = (Repros & self.__dataset & "repro_name like 'BaselineActivity%'") + repros = RePro.find_repros("BaselineActivity", cell_id=self.__cell.cell_id) for r in repros: self.__data.append(self.__read_data(r)) - def __read_data(self, r:Repros): - if self.__dataset["has_nix"]: + def __read_data(self, r:RePro): + if self.__dataset.has_nix: return self.__read_data_from_nix(r) else: return self.__read_data_from_directory(r) @@ -30,7 +33,6 @@ class BaselineData(object): def dataset(self): return self.__dataset - @property def data(self, index:int=0): return self.__data[0] if len(self.__data) >= index else None @@ -39,16 +41,16 @@ class BaselineData(object): return len(self.__data) def __str__(self): - str = "Baseline data of %s " % self.__dataset + str = "Baseline data of cell %s " % self.__cell.cell_id - def __read_data_from_nix(self, r)->np.ndarray: - data_source = os.path.join(self.__dataset["data_source"], self.__dataset["dataset_id"] + ".nix") + def __read_data_from_nix(self, r:RePro)->np.ndarray: + data_source = os.path.join(self.__dataset.data_source, self.__dataset.dataset_id + ".nix") if not os.path.exists(data_source): - print("Data not found! Trying from folder") + print("Data not found! Trying from directory") return self.__read_data_from_directory(r) f = nix.File.open(data_source, nix.FileMode.ReadOnly) b = f.blocks[0] - t = b.tags[r["repro_id"]] + t = b.tags[r.repro_id] if not t: print("Tag not found!") data = t.retrieve_data("Spikes-1")[:] @@ -57,7 +59,7 @@ class BaselineData(object): def __read_data_from_directory(self, r)->np.ndarray: data = [] - data_source = os.path.join(self.__dataset["data_source"], "basespikes1.dat") + data_source = os.path.join(self.__dataset.data_source, "basespikes1.dat") if os.path.exists(data_source): found_run = False with open(data_source, 'r') as f: @@ -65,11 +67,12 @@ class BaselineData(object): while l: if "index" in l: index = int(l.strip("#").strip().split(":")[-1]) - found_run = index == r["run"] + found_run = index == r.run if l.startswith("#Key") and found_run: data = self.__do_read(f) break l = f.readline() + embed() return data def __do_read(self, f)->np.ndarray: @@ -83,11 +86,8 @@ class BaselineData(object): return np.asarray(data) -#if __name__ == "__main__": -print("Test") -embed() -exit() - -dataset = Dataset(tuple=(Datasets & "dataset_id like '2018-11-09-aa-%'").fetch(limit=1, as_dict=True)) -baseline = BaselineData(dataset) -embed() \ No newline at end of file +if __name__ == "__main__": + dataset = Dataset(dataset_id='2011-06-14-ag') + # dataset = Dataset(dataset_id='2018-11-09-aa-invivo-1') + baseline = BaselineData(dataset) + embed() \ No newline at end of file