fixes and docstring stubs
This commit is contained in:
parent
537162be00
commit
b86c1b2653
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user