From 67d78a858143a33e1d4643efff488b244afbe6f7 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Tue, 17 Sep 2019 14:02:35 +0200 Subject: [PATCH] some convenience --- database.py | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/database.py b/database.py index 5a328ea..f5f99b9 100644 --- a/database.py +++ b/database.py @@ -65,6 +65,7 @@ class Dataset(dj.Manual): @property def cells(self, restrictions:dict=None): + cs = (Cell & (CellDatasetMap & self) & restrictions).fetch() return cs @@ -112,11 +113,29 @@ class Subject(dj.Manual): def subjects(species=None): subjs = [] if species: - subjs = (Subject & "species like '\%%s\%'"%species).fetch() + subjs = (Subject & "species like '%{0:s}%'".format(species)).fetch() else: subjs = (Subject & True).fetch() return subjs + @staticmethod + def unique_species(): + all_species = (Subject &True).fetch("species") + return np.unique(all_species) + + @property + def cells(self): + cs = Cell & self + return cs + + @property + def properties(self): + return (SubjectProperties & self).fetch1() + + #@property + #def datasets(self): + # retrun + @schema class SubjectDatasetMap(dj.Manual): definition = """ @@ -174,6 +193,25 @@ class Cell(dj.Manual): return d return tup + @property + def subject(self): + return Subject & self + + @staticmethod + def celltypes(): + return np.unique(Cell.fetch("cell_type")) + + @staticmethod + def cells(celltype=None, species=None, quality="good"): + cs = Cell * CellDatasetMap * Dataset * Subject + if celltype: + cs = cs & "cell_type like '{0:s}'".format(celltype) + if species: + cs = cs & "species like '%{0:s}%'".format(species) + if quality: + cs = cs & "quality like '{0:s}'".format(quality) + return cs + @schema class CellDatasetMap(dj.Manual):