fixes and docstring stubs

This commit is contained in:
Jan Grewe 2020-07-22 10:17:46 +02:00
parent 537162be00
commit b86c1b2653

View File

@ -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 nixio as nix
import os import os
import numpy as np import numpy as np
@ -57,7 +57,7 @@ class Cell:
@property @property
def datasets(self): 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 @property
def repro_runs(self): def repro_runs(self):
@ -90,7 +90,15 @@ class Cell:
class Dataset: class Dataset:
"""[summary]
"""
def __init__(self, dataset_id=None, tuple=None): 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 self.__samplerate = 0.0
if tuple: if tuple:
self.__tuple = tuple self.__tuple = tuple
@ -106,10 +114,20 @@ class Dataset:
@property @property
def id(self): def id(self):
"""The id of the dataset.
Returns:
str: the id
"""
return self.__tuple["dataset_id"] return self.__tuple["dataset_id"]
@property @property
def experimenter(self): def experimenter(self):
"""The person who recording the dataset.
Returns:
str: The experimenter
"""
return self.__tuple["experimenter"] return self.__tuple["experimenter"]
@property @property
@ -142,13 +160,13 @@ class Dataset:
@property @property
def cells(self): def cells(self):
cs = (Cells * (CellDatasetMap & self.__tuple)) cell_list = (Cells * (CellDatasetMap & self.__tuple))
return [Cell(tuple=c) for c in cs] return [Cell(tuple=c) for c in cell_list]
@property @property
def subjects(self): def subjects(self):
subjs = (Subjects * (SubjectDatasetMap & self.__tuple)) subject_list = (Subjects * (SubjectDatasetMap & self.__tuple))
return [Subject(tuple=s) for s in subjs] return [Subject(tuple=s) for s in subject_list]
@property @property
def samplerate(self): def samplerate(self):
@ -156,14 +174,14 @@ class Dataset:
@staticmethod @staticmethod
def find(min_duration=None, experimenter=None, quality=None): def find(min_duration=None, experimenter=None, quality=None):
dsets = Datasets dataset_list = Datasets
if min_duration: if min_duration:
dsets = dsets & "duration > %.2f" % min_duration dataset_list = dataset_list & "duration > %.2f" % min_duration
if experimenter: if experimenter:
dsets = dsets & "experimenter like '%{0:s}%'".format(experimenter) dataset_list = dataset_list & "experimenter like '%{0:s}%'".format(experimenter)
if quality: if quality:
dsets = dsets & "quality like '{0:s}'".format(quality) dataset_list = dataset_list & "quality like '{0:s}'".format(quality)
return [Dataset(tuple=d) for d in dsets] return [Dataset(tuple=d) for d in dataset_list]
def __find_samplerate(self, trace_name="V-1"): 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')): 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: if trace.dimensions[0].dimension_type == nix.DimensionType.Sample:
self.__samplerate = 1./trace.dimensions[0].sampling_interval self.__samplerate = 1./trace.dimensions[0].sampling_interval
else: else:
print("Requested trace %s has no sampled dimension!" % s) print("Requested trace %s has no sampled dimension!" % trace_name)
else: else:
print("Requested trace %s was not found!" % s) print("Requested trace %s was not found!" % trace_name)
f.close() f.close()
else: else:
stim_file = os.path.join(self.data_source , 'stimuli.dat') stimulus_file = os.path.join(self.data_source , 'stimuli.dat')
if not os.path.exists(stim_file): if not os.path.exists(stimulus_file):
return return
lines = None lines = None
with open(stim_file, 'r') as f: with open(stimulus_file, 'r') as f:
lines = f.readlines() lines = f.readlines()
for l in lines: for l in lines:
if "sample interval1" in l: if "sample interval1" in l:
@ -290,13 +308,16 @@ class RePro:
class Stimulus: 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): def __init__(self, stimulus_id=None, tuple=None):
if tuple: if tuple:
self.__tuple = tuple self.__tuple = tuple
elif stimulus_id: elif stimulus_id:
stims = Stimuli & "stimulus_id = '%s'" %stimulus_id stimuli = Stimuli & "stimulus_id = '%s'" %stimulus_id
_results_check(stims, stimulus_id, "Stimulus ID") _results_check(stimuli, stimulus_id, "Stimulus ID")
self.__tuple = stims.fetch(limit=1, as_dict=True)[0] self.__tuple = stimuli.fetch(limit=1, as_dict=True)[0]
else: else:
print("Empty RePro, not linked to any database entry!") print("Empty RePro, not linked to any database entry!")
@ -339,10 +360,6 @@ class Stimulus:
def multi_tag_id(self): def multi_tag_id(self):
return self.__tuple["mtag_id"] return self.__tuple["mtag_id"]
@property
def settings(self):
return self.__tuple["settings"]
@property @property
def run(self): def run(self):
return self.__tuple["run"] return self.__tuple["run"]
@ -351,7 +368,6 @@ class Stimulus:
def index(self): def index(self):
return self.__tuple["stimulus_index"] return self.__tuple["stimulus_index"]
@property @property
def settings(self): def settings(self):
return _safe_get_val(self.__tuple, "settings", "") return _safe_get_val(self.__tuple, "settings", "")
@ -362,14 +378,25 @@ class Stimulus:
@staticmethod @staticmethod
def find(cell_id=None, repro_id=None, settings=None): 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: if cell_id:
stims = stims & "cell_id = '{0:s}'".format(cell_id) stimuli = stimuli & "cell_id = '{0:s}'".format(cell_id)
if repro_id: if repro_id:
stims = stims & "repro_id = '{0:s}'".format(repro_id) stimuli = stimuli & "repro_id = '{0:s}'".format(repro_id)
if settings: if settings:
stims = stims & "settings like '%{0:s}%'".format(settings) stimuli = stimuli & "settings like '%{0:s}%'".format(settings)
return [Stimulus(tuple=s) for s in stims] return [Stimulus(tuple=s) for s in stimuli]
class Subject: class Subject: