forked from jgrewe/fishbook
[frontend] support date restrictions in dataset, expose data_host to
user
This commit is contained in:
parent
b376edb342
commit
ec88c79e0f
@ -5,6 +5,7 @@ import os
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from IPython import embed
|
from IPython import embed
|
||||||
from fishbook.backend.util import progress
|
from fishbook.backend.util import progress
|
||||||
|
import datetime as dt
|
||||||
|
|
||||||
class Cell:
|
class Cell:
|
||||||
"""The Cell class represents a recorded cell. It is characterized by *id*, the cell *type*, the *firing_rate*, and the recording *location*.
|
"""The Cell class represents a recorded cell. It is characterized by *id*, the cell *type*, the *firing_rate*, and the recording *location*.
|
||||||
@ -242,6 +243,16 @@ class Dataset:
|
|||||||
"""
|
"""
|
||||||
return self.__tuple["data_source"]
|
return self.__tuple["data_source"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data_host(self):
|
||||||
|
"""Returns the fully qualified name of the host from which the data was imported. That is, where it
|
||||||
|
should be available.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: the fully qualified domain.
|
||||||
|
"""
|
||||||
|
return self.__tuple["data_host"]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def setup(self):
|
def setup(self):
|
||||||
"""The recording setup.
|
"""The recording setup.
|
||||||
@ -272,6 +283,16 @@ class Dataset:
|
|||||||
subject_list = (Subjects * (SubjectDatasetMap & self.__tuple))
|
subject_list = (Subjects * (SubjectDatasetMap & self.__tuple))
|
||||||
return [Subject(tuple=s) for s in subject_list]
|
return [Subject(tuple=s) for s in subject_list]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def repro_runs(self):
|
||||||
|
"""The repros that have been run in this dataset.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list of fishbook.RePro: list of repro runs
|
||||||
|
"""
|
||||||
|
repros = (Repros * Cells * (CellDatasetMap & self.__tuple))
|
||||||
|
return [RePro(tuple=r) for r in repros]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def samplerate(self):
|
def samplerate(self):
|
||||||
"""Get the samplerate of the data.
|
"""Get the samplerate of the data.
|
||||||
@ -291,13 +312,16 @@ class Dataset:
|
|||||||
return len(Datasets())
|
return len(Datasets())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def find(min_duration=None, experimenter=None, quality=None, test=False):
|
def find(min_duration=None, experimenter=None, quality=None, min_date=None, max_date=None, test=False):
|
||||||
"""Find dataset entries in the database. You may restrict the search by providing the following arguments.
|
"""Find dataset entries in the database. You may restrict the search by providing the following arguments. All restrictions are connected
|
||||||
|
with a logical AND.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
min_duration (float, optional): minimum duration of the recording session, if not given, any length datasets will be returned. Defaults to None.
|
min_duration (float, optional): minimum duration of the recording session, if not given, any length datasets will be returned. Defaults to None.
|
||||||
experimenter (str, optional): the name of the one who did the recording. The name does not need to be the full name. Defaults to None.
|
experimenter (str, optional): the name of the one who did the recording. The name does not need to be the full name. Defaults to None.
|
||||||
quality (str, optional): the quality assigned to the dataset during recording (e.g. good, fair, poor). Defaults to None.
|
quality (str, optional): the quality assigned to the dataset during recording (e.g. good, fair, poor). Defaults to None.
|
||||||
|
min_date (datetime, optional): the minimum recording date. Dates may be given as datetime objects or string of the format "2010.01.01" or "2010-01-01". Defaults to None.
|
||||||
|
max_date (datetime, optional): the maximum recording date. Defaults to None.
|
||||||
test (bool, optional): defines whether this is a test run and thus whether or not the search results should be fetched, which can take a while. Defaults to False.
|
test (bool, optional): defines whether this is a test run and thus whether or not the search results should be fetched, which can take a while. Defaults to False.
|
||||||
Returns:
|
Returns:
|
||||||
list: list of Dataset object matching the search criteria, empty if test==True
|
list: list of Dataset object matching the search criteria, empty if test==True
|
||||||
@ -310,7 +334,11 @@ class Dataset:
|
|||||||
dataset_list = dataset_list & "experimenter like '%{0:s}%'".format(experimenter)
|
dataset_list = dataset_list & "experimenter like '%{0:s}%'".format(experimenter)
|
||||||
if quality:
|
if quality:
|
||||||
dataset_list = dataset_list & "quality like '{0:s}'".format(quality)
|
dataset_list = dataset_list & "quality like '{0:s}'".format(quality)
|
||||||
|
if min_date and isinstance(min_date, (dt.date, str)):
|
||||||
|
dataset_list = dataset_list & "recording_date >= '%s'" % min_date
|
||||||
|
if max_date and isinstance(min_date, (dt.date, str)):
|
||||||
|
dataset_list = dataset_list & "recording_date < '%s'" % max_date
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
total = len(dataset_list)
|
total = len(dataset_list)
|
||||||
if not test:
|
if not test:
|
||||||
@ -353,6 +381,7 @@ class Dataset:
|
|||||||
str = "dataset id: %s\n" % self.id
|
str = "dataset id: %s\n" % self.id
|
||||||
str += "recorded: %s \t by: %s\n" % (self.recording_date, self.experimenter)
|
str += "recorded: %s \t by: %s\n" % (self.recording_date, self.experimenter)
|
||||||
str += "duration: %s min \t quality: %s\n" % (self.recording_duration, self.quality)
|
str += "duration: %s min \t quality: %s\n" % (self.recording_duration, self.quality)
|
||||||
|
str += "location: %s\t host:%s\n" % (self.data_source, self.data_host)
|
||||||
str += "comment: %s" % self.comment
|
str += "comment: %s" % self.comment
|
||||||
return str
|
return str
|
||||||
|
|
||||||
@ -653,7 +682,8 @@ class Subject:
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
str = "Subject: %s\n" % self.id
|
str = "Subject: %s\n" % self.id
|
||||||
str += ""
|
str += "Species: %s\n" % self.species
|
||||||
|
return str
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user