separate front and backend classes, decrease safety settings
This commit is contained in:
parent
374020e0ae
commit
ace17d8f7c
124
database.py
124
database.py
@ -65,16 +65,76 @@ class Datasets(dj.Manual):
|
|||||||
sane = False
|
sane = False
|
||||||
return sane
|
return sane
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def datasets(min_duration=None, experimenter=None, quality=None):
|
||||||
|
dsets = Datasets
|
||||||
|
if min_duration:
|
||||||
|
dsets = dsets & "duration > %.2f" % min_duration
|
||||||
|
if experimenter:
|
||||||
|
dsets = dsets & dict(experimenter=experimenter)
|
||||||
|
if quality:
|
||||||
|
dsets = dsets & "quality like '{0:s}'".format(quality)
|
||||||
|
return [Dataset(tuple=d) for d in dsets]
|
||||||
|
|
||||||
|
|
||||||
|
class Dataset:
|
||||||
|
def __init__(self, dataset_id=None, exact=False, tuple=None):
|
||||||
|
if tuple:
|
||||||
|
self.__tuple = tuple
|
||||||
|
elif dataset_id:
|
||||||
|
wildcard = "%" if not exact else ""
|
||||||
|
pattern = "dataset_id like '{0:s}{0:s}{0:s}'".format(wildcard, dataset_id, wildcard)
|
||||||
|
dsets = (Datasets & pattern)
|
||||||
|
assert(len(dsets) == 1), "Dataset name is not unique!"
|
||||||
|
self.__tuple = dsets.fetch(limit=1)[0]
|
||||||
|
else:
|
||||||
|
print("Empty dataset, not linked to any database entry!")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cells(self, restrictions:dict=None):
|
def dataset_id(self):
|
||||||
|
return self.__tuple["dataset_id"]
|
||||||
|
|
||||||
cs = (Cells & (CellDatasetMap & self) & restrictions).fetch()
|
@property
|
||||||
return cs
|
def experimenter(self):
|
||||||
|
return self.__tuple["experimenter"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def recording_date(self):
|
||||||
|
return self.__tuple["recording_date"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def recording_duration(self):
|
||||||
|
return self.__tuple["duration"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def quality(self):
|
||||||
|
return self.__tuple["quality"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def has_nix(self):
|
||||||
|
return self.__tuple["has_nix"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def comment(self):
|
||||||
|
return self.__tuple["comment"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data_source(self):
|
||||||
|
return self.__tuple["data_source"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def setup(self):
|
||||||
|
return self.__tuple["setup"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cells(self):
|
||||||
|
cs = (Cells * (CellDatasetMap & self.__tuple))
|
||||||
|
return [Cell(tuple=c) for c in cs]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def subjects(self, restrictions:dict=None):
|
def subjects(self):
|
||||||
subjs = (Subjects & (SubjectDatasetMap & self) & restrictions).fetch()
|
subjs = (Subjects * (SubjectDatasetMap & self.__tuple))
|
||||||
return subjs
|
return [Subject(tuple=s) for s in subjs]
|
||||||
|
|
||||||
|
|
||||||
@schema
|
@schema
|
||||||
@ -115,21 +175,16 @@ class Subjects(dj.Manual):
|
|||||||
def subjects(species=None):
|
def subjects(species=None):
|
||||||
subjs = []
|
subjs = []
|
||||||
if species:
|
if species:
|
||||||
subjs = (Subjects & "species like '%{0:s}%'".format(species)).fetch()
|
subjs = (Subjects & "species like '%{0:s}%'".format(species))
|
||||||
else:
|
else:
|
||||||
subjs = (Subjects & True).fetch()
|
subjs = (Subjects & True)
|
||||||
return subjs
|
return [Subject(tuple=s for s in subjs]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def unique_species():
|
def unique_species():
|
||||||
all_species = (Subjects & True).fetch("species")
|
all_species = (Subjects & True).fetch("species")
|
||||||
return np.unique(all_species)
|
return np.unique(all_species)
|
||||||
|
|
||||||
@property
|
|
||||||
def cells(self):
|
|
||||||
cs = Cells & self
|
|
||||||
return cs
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def properties(self):
|
def properties(self):
|
||||||
return (SubjectProperties & self).fetch1()
|
return (SubjectProperties & self).fetch1()
|
||||||
@ -139,6 +194,31 @@ class Subjects(dj.Manual):
|
|||||||
# retrun
|
# retrun
|
||||||
|
|
||||||
|
|
||||||
|
class Subject:
|
||||||
|
__tuple = {}
|
||||||
|
|
||||||
|
def __init__(self, subject_id=None, tuple=None):
|
||||||
|
if tuple:
|
||||||
|
self.__tuple = tuple
|
||||||
|
elif subject_id:
|
||||||
|
self.__tuple = Subjects & "subject_id like '{0:s}'".format(subject_id).fetch()[0]
|
||||||
|
else:
|
||||||
|
print("Empty Subject, not linked to any database entry!")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def subject_id(self):
|
||||||
|
return self.__tuple["subject_id"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def species(self):
|
||||||
|
return self.__tuple["species"]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cells(self):
|
||||||
|
cs = Cells & self.__tuple
|
||||||
|
return [Cell(tuple=c) for c in cs]
|
||||||
|
|
||||||
|
|
||||||
@schema
|
@schema
|
||||||
class SubjectDatasetMap(dj.Manual):
|
class SubjectDatasetMap(dj.Manual):
|
||||||
definition = """
|
definition = """
|
||||||
@ -215,6 +295,22 @@ class Cells(dj.Manual):
|
|||||||
cs = cs & "quality like '{0:s}'".format(quality)
|
cs = cs & "quality like '{0:s}'".format(quality)
|
||||||
return cs
|
return cs
|
||||||
|
|
||||||
|
class Cell:
|
||||||
|
def __init__(self, cell_id=None, tuple=None):
|
||||||
|
if tuple:
|
||||||
|
self.__tuple = tuple
|
||||||
|
elif cell_id:
|
||||||
|
pattern = "cell_id like '{0:s}'".format(cell_id)
|
||||||
|
cells = (Cells & pattern)
|
||||||
|
assert (len(cells) == 1), "Cell id is not unique!"
|
||||||
|
self.__tuple = cells.fetch(as_dict=True)[0]
|
||||||
|
else:
|
||||||
|
print("Empty Cell, not linke to any database entry!")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cell_id(self):
|
||||||
|
return self.__tuple["cell_id"] if "cell_id" in self.__tuple.keys() else ""
|
||||||
|
|
||||||
|
|
||||||
@schema
|
@schema
|
||||||
class CellDatasetMap(dj.Manual):
|
class CellDatasetMap(dj.Manual):
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"loglevel": "DEBUG",
|
"loglevel": "DEBUG",
|
||||||
"display.width": 14,
|
"display.width": 14,
|
||||||
"display.limit": 7,
|
"display.limit": 7,
|
||||||
"safemode": true,
|
"safemode": false,
|
||||||
"database.user": "dj",
|
"database.user": "dj",
|
||||||
"connection.init_function": null
|
"connection.init_function": null
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user