diff --git a/fishbook/__init__.py b/fishbook/__init__.py index a8e8131..8f487ec 100644 --- a/fishbook/__init__.py +++ b/fishbook/__init__.py @@ -1,4 +1,4 @@ -from .fishbook import Cell, Subject, Stimulus, Dataset, RePro -import fishbook.reproclasses as repros -import fishbook.database as database -__all__ = ['fishbook', 'database'] +from fishbook.frontend.frontend_classes import Cell, Subject, Stimulus, Dataset, RePro +#import fishbook.reproclasses as repros +#import fishbook.database as database +__all__ = ['', ''] diff --git a/fishbook/backend/__init__.py b/fishbook/backend/__init__.py index ee8efb1..403351e 100644 --- a/fishbook/backend/__init__.py +++ b/fishbook/backend/__init__.py @@ -1,3 +1,2 @@ -from .database import * - -__all__ = ['database'] \ No newline at end of file +from .database import Cells, Datasets, Stimuli, Repros, Subjects, SubjectDatasetMap, CellDatasetMap +__all__ = ['database'] diff --git a/fishbook/frontend/__init__.py b/fishbook/frontend/__init__.py new file mode 100644 index 0000000..8c0f3e8 --- /dev/null +++ b/fishbook/frontend/__init__.py @@ -0,0 +1 @@ +# __all__ = ["fronten_classes", "reproclasses"] diff --git a/fishbook/frontend/fishbook.py b/fishbook/frontend/frontend_classes.py similarity index 89% rename from fishbook/frontend/fishbook.py rename to fishbook/frontend/frontend_classes.py index 8dd4fcd..f84d08e 100644 --- a/fishbook/frontend/fishbook.py +++ b/fishbook/frontend/frontend_classes.py @@ -1,21 +1,11 @@ -from fishbook.database.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros +from fishbook.backend.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros +from .util import safe_get_val, results_check import nixio as nix import os import numpy as np from IPython import embed -def _safe_get_val(dictionary:dict, key, default=None): - return dictionary[key] if key in dictionary.keys() else default - - -def _results_check(results, id, text="ID"): - if len(results) == 0: - raise ValueError("%s %s does not exist!" % (text, id)) - elif len(results) > 1: - raise ValueError("%s %s is not unique!" % (text, id)) - - class Cell: def __init__(self, cell_id=None, tuple=None): if tuple: @@ -23,7 +13,7 @@ class Cell: elif cell_id: pattern = "cell_id like '{0:s}'".format(cell_id) cells = (Cells & pattern) - _results_check(cells, cell_id, "Cell ID") + results_check(cells, cell_id, "Cell ID") self.__tuple = cells.fetch(as_dict=True)[0] else: print("Empty Cell, not linked to any database entry!") @@ -105,7 +95,7 @@ class Dataset: elif dataset_id: pattern = "dataset_id like '{0:s}'".format(dataset_id) dsets = (Datasets & pattern) - _results_check(dsets, dataset_id, "Dataset ID") + results_check(dsets, dataset_id, "Dataset ID") self.__tuple = dsets.fetch(limit=1, as_dict=True)[0] else: print("Empty dataset, not linked to any database entry!") @@ -220,7 +210,7 @@ class RePro: self.__tuple = tuple elif repro_id: repros = (RePro & "repro_id like '{0:s}'".format(repro_id)) - _results_check(repros, repro_id, "RePro ID") + results_check(repros, repro_id, "RePro ID") self.__tuple = repros.fetch(limit=1, as_dict=True)[0] else: self.__tuple = {} @@ -228,15 +218,15 @@ class RePro: @property def id(self): - return _safe_get_val(self.__tuple, "repro_id", "") + return safe_get_val(self.__tuple, "repro_id", "") @property def run(self): - return _safe_get_val(self.__tuple, "run", -1) + return safe_get_val(self.__tuple, "run", -1) @property def cell_id(self): - return _safe_get_val(self.__tuple, "cell_id", "") + return safe_get_val(self.__tuple, "cell_id", "") @property def cell(self): @@ -252,19 +242,19 @@ class RePro: @property def name(self): - return _safe_get_val(self.__tuple, "repro_name", "") + return safe_get_val(self.__tuple, "repro_name", "") @property def settings(self): - return _safe_get_val(self.__tuple, "settings", "") + return safe_get_val(self.__tuple, "settings", "") @property def start(self): - return _safe_get_val(self.__tuple, "start", 0.0) + return safe_get_val(self.__tuple, "start", 0.0) @property def duration(self): - return _safe_get_val(self.__tuple, "duration", 0.0) + return safe_get_val(self.__tuple, "duration", 0.0) @property def stimuli(self): @@ -316,16 +306,16 @@ class Stimulus: self.__tuple = tuple elif stimulus_id: stimuli = Stimuli & "stimulus_id = '%s'" %stimulus_id - _results_check(stimuli, stimulus_id, "Stimulus ID") + results_check(stimuli, stimulus_id, "Stimulus ID") self.__tuple = stimuli.fetch(limit=1, as_dict=True)[0] else: print("Empty RePro, not linked to any database entry!") def __str__(self): - str = "Stimulus %s: " % _safe_get_val(self.__tuple, "stimulus_id", "") - str += "\nStart time/index: %0.4f/%i, duration: %.3f" % (_safe_get_val(self.__tuple, "start_time", 0.0), - _safe_get_val(self.__tuple, "start_index", -1), - _safe_get_val(self.__tuple, "duration", 0.0)) + str = "Stimulus %s: " % safe_get_val(self.__tuple, "stimulus_id", "") + str += "\nStart time/index: %0.4f/%i, duration: %.3f" % (safe_get_val(self.__tuple, "start_time", 0.0), + safe_get_val(self.__tuple, "start_index", -1), + safe_get_val(self.__tuple, "duration", 0.0)) return str @property @@ -370,7 +360,7 @@ class Stimulus: @property def settings(self): - return _safe_get_val(self.__tuple, "settings", "") + return safe_get_val(self.__tuple, "settings", "") @property def _tuple(self): @@ -405,7 +395,7 @@ class Subject: self.__tuple = tuple elif subject_id: subjects = Subjects & "subject_id like '{0:s}'".format(subject_id) - _results_check(subjects, subject_id, "Subject ID") + results_check(subjects, subject_id, "Subject ID") self.__tuple = subjects.fetch()[0] else: self.__tuple = {} diff --git a/fishbook/frontend/reproclasses.py b/fishbook/frontend/relacs_classes.py similarity index 100% rename from fishbook/frontend/reproclasses.py rename to fishbook/frontend/relacs_classes.py diff --git a/fishbook/frontend/util.py b/fishbook/frontend/util.py new file mode 100644 index 0000000..0b0f477 --- /dev/null +++ b/fishbook/frontend/util.py @@ -0,0 +1,9 @@ +def safe_get_val(dictionary:dict, key, default=None): + return dictionary[key] if key in dictionary.keys() else default + + +def results_check(results, id, text="ID"): + if len(results) == 0: + raise ValueError("%s %s does not exist!" % (text, id)) + elif len(results) > 1: + raise ValueError("%s %s is not unique!" % (text, id))