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