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 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:
|
||||
|
Loading…
Reference in New Issue
Block a user