add quality to find_repros

This commit is contained in:
Jan Grewe 2019-09-19 11:08:12 +02:00
parent 34d71d537e
commit 0453253bf3

View File

@ -1,6 +1,6 @@
from .database.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros from .database.database import Cells, Datasets, CellDatasetMap, Subjects, SubjectProperties, SubjectDatasetMap, Stimuli, Repros
import numpy as np import numpy as np
from IPython import embed
def _safe_get_val(dictionary:dict, key, default=None): def _safe_get_val(dictionary:dict, key, default=None):
return dictionary[key] if key in dictionary.keys() else default return dictionary[key] if key in dictionary.keys() else default
@ -58,7 +58,7 @@ class Cell:
return [RePro(tuple=r) for r in repros] return [RePro(tuple=r) for r in repros]
@staticmethod @staticmethod
def celltypes(): def unique_cell_types():
return np.unique(Cells.fetch("cell_type")) return np.unique(Cells.fetch("cell_type"))
@staticmethod @staticmethod
@ -198,31 +198,34 @@ class RePro:
return [Stimulus(tuple=s) for s in stims] return [Stimulus(tuple=s) for s in stims]
@staticmethod @staticmethod
def find_repros(repro_name=None, cell_id=None, cell_type=None, species=None, settings=None): def find_repros(name=None, cell_id=None, cell_type=None, species=None, settings=None, quality=None):
""" """
Cell type and species are ignored, if cell_id is provided Cell type, quality, and species are ignored, if cell_id is provided
:param repro_name: :param repro_name:
:param cell_id: :param cell_id:
:param cell_type: :param cell_type:
:param species: :param species:
:param settings: :param settings:
:param quality:
:return: :return:
""" """
repros = Repros & True repros = Repros & True
if repro_name: if name:
repros = repros & "repro_name like '%{0:s}%'".format(repro_name) repros = repros & "repro_name like '%{0:s}%'".format(name)
if settings: if settings:
repros = repros & "settings like '%{0:s}%'".format(settings) repros = repros & "settings like '%{0:s}%'".format(settings)
if cell_id: if cell_id:
repros = repros & "cell_id = '{0:s}'".format(cell_id) repros = repros & "cell_id = '{0:s}'".format(cell_id)
if not cell_id and (cell_type or species): if not cell_id and (cell_type or species or quality):
cells = Cells * Subjects cells = (Cells * CellDatasetMap * Datasets) * Subjects
if cell_type: if cell_type:
cells = cells & "cell_type like '%{0:s}%'".format(cell_type) cells = cells & "cell_type like '%{0:s}%'".format(cell_type)
if species: if species:
cells = cells & "species like '%{0:s}%'".format(species) cells = cells & "species like '%{0:s}%'".format(species)
repros = repros * cells if quality:
repros.proj("repro_id", "repro_name", "settings", "run", "cell_id", "start", "duration").fetch(as_dict=True) cells = cells & "quality like '{0:s}'".format(quality)
p = cells.proj("quality", "experimenter")
repros = repros & p
return [RePro(tuple=r) for r in repros] return [RePro(tuple=r) for r in repros]