From b86c1b2653cc824ae89d88a85402f41f664cbcc5 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Wed, 22 Jul 2020 10:17:46 +0200 Subject: [PATCH] fixes and docstring stubs --- fishbook/fishbook.py | 85 +++++++++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/fishbook/fishbook.py b/fishbook/fishbook.py index 73794f5..8dd4fcd 100644 --- a/fishbook/fishbook.py +++ b/fishbook/fishbook.py @@ -1,4 +1,4 @@ -from .database.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros +from fishbook.database.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros import nixio as nix import os import numpy as np @@ -57,7 +57,7 @@ class Cell: @property def datasets(self): - return [Dataset(tuple=d) for d in (Datasets & (CellDatasetMap & self.id)).fetch(as_dict=True)] + return [Dataset(tuple=d) for d in (Datasets & (CellDatasetMap & {"cell_id": self.id})).fetch(as_dict=True)] @property def repro_runs(self): @@ -90,7 +90,15 @@ class Cell: class Dataset: + """[summary] + """ def __init__(self, dataset_id=None, tuple=None): + """[summary] + + Args: + dataset_id ([type], optional): [description]. Defaults to None. + tuple ([type], optional): [description]. Defaults to None. + """ self.__samplerate = 0.0 if tuple: self.__tuple = tuple @@ -106,10 +114,20 @@ class Dataset: @property def id(self): + """The id of the dataset. + + Returns: + str: the id + """ return self.__tuple["dataset_id"] @property def experimenter(self): + """The person who recording the dataset. + + Returns: + str: The experimenter + """ return self.__tuple["experimenter"] @property @@ -142,13 +160,13 @@ class Dataset: @property def cells(self): - cs = (Cells * (CellDatasetMap & self.__tuple)) - return [Cell(tuple=c) for c in cs] + cell_list = (Cells * (CellDatasetMap & self.__tuple)) + return [Cell(tuple=c) for c in cell_list] @property def subjects(self): - subjs = (Subjects * (SubjectDatasetMap & self.__tuple)) - return [Subject(tuple=s) for s in subjs] + subject_list = (Subjects * (SubjectDatasetMap & self.__tuple)) + return [Subject(tuple=s) for s in subject_list] @property def samplerate(self): @@ -156,14 +174,14 @@ class Dataset: @staticmethod def find(min_duration=None, experimenter=None, quality=None): - dsets = Datasets + dataset_list = Datasets if min_duration: - dsets = dsets & "duration > %.2f" % min_duration + dataset_list = dataset_list & "duration > %.2f" % min_duration if experimenter: - dsets = dsets & "experimenter like '%{0:s}%'".format(experimenter) + dataset_list = dataset_list & "experimenter like '%{0:s}%'".format(experimenter) if quality: - dsets = dsets & "quality like '{0:s}'".format(quality) - return [Dataset(tuple=d) for d in dsets] + dataset_list = dataset_list & "quality like '{0:s}'".format(quality) + return [Dataset(tuple=d) for d in dataset_list] def __find_samplerate(self, trace_name="V-1"): if self.has_nix and os.path.exists(os.path.join(self.data_source, self.id, '.nix')): @@ -174,16 +192,16 @@ class Dataset: if trace.dimensions[0].dimension_type == nix.DimensionType.Sample: self.__samplerate = 1./trace.dimensions[0].sampling_interval else: - print("Requested trace %s has no sampled dimension!" % s) + print("Requested trace %s has no sampled dimension!" % trace_name) else: - print("Requested trace %s was not found!" % s) + print("Requested trace %s was not found!" % trace_name) f.close() else: - stim_file = os.path.join(self.data_source , 'stimuli.dat') - if not os.path.exists(stim_file): + stimulus_file = os.path.join(self.data_source , 'stimuli.dat') + if not os.path.exists(stimulus_file): return lines = None - with open(stim_file, 'r') as f: + with open(stimulus_file, 'r') as f: lines = f.readlines() for l in lines: if "sample interval1" in l: @@ -290,13 +308,16 @@ class RePro: class Stimulus: + """The stimulus class represents a Stimulus that was presented. A Stimulus has several properties + such as the start time, the duarion + """ def __init__(self, stimulus_id=None, tuple=None): if tuple: self.__tuple = tuple elif stimulus_id: - stims = Stimuli & "stimulus_id = '%s'" %stimulus_id - _results_check(stims, stimulus_id, "Stimulus ID") - self.__tuple = stims.fetch(limit=1, as_dict=True)[0] + stimuli = Stimuli & "stimulus_id = '%s'" %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!") @@ -339,10 +360,6 @@ class Stimulus: def multi_tag_id(self): return self.__tuple["mtag_id"] - @property - def settings(self): - return self.__tuple["settings"] - @property def run(self): return self.__tuple["run"] @@ -351,7 +368,6 @@ class Stimulus: def index(self): return self.__tuple["stimulus_index"] - @property def settings(self): return _safe_get_val(self.__tuple, "settings", "") @@ -362,14 +378,25 @@ class Stimulus: @staticmethod def find(cell_id=None, repro_id=None, settings=None): - stims = Stimuli & True + """Find stimulus presentations that match in certain properties. + Examples: + + Args: + cell_id (str, optional): [description]. Defaults to None. + repro_id (str, optional): [description]. Defaults to None. + settings (str, optional): [description]. Defaults to None. + + Returns: + List: of matching Stimulus presentations + """ + stimuli = Stimuli & True if cell_id: - stims = stims & "cell_id = '{0:s}'".format(cell_id) + stimuli = stimuli & "cell_id = '{0:s}'".format(cell_id) if repro_id: - stims = stims & "repro_id = '{0:s}'".format(repro_id) + stimuli = stimuli & "repro_id = '{0:s}'".format(repro_id) if settings: - stims = stims & "settings like '%{0:s}%'".format(settings) - return [Stimulus(tuple=s) for s in stims] + stimuli = stimuli & "settings like '%{0:s}%'".format(settings) + return [Stimulus(tuple=s) for s in stimuli] class Subject: