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 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: