From d27c02614c574566cf2b296320fc5cba2c21f76b Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 19 Sep 2019 10:12:51 +0200 Subject: [PATCH] repro can find by celltype, species and name correctly --- fishbook/fishbook.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/fishbook/fishbook.py b/fishbook/fishbook.py index 44a36ed..11f3c77 100644 --- a/fishbook/fishbook.py +++ b/fishbook/fishbook.py @@ -198,14 +198,31 @@ class RePro: return [Stimulus(tuple=s) for s in stims] @staticmethod - def find_repros(repro_name=None, cell_id=None, settings=None): + def find_repros(repro_name=None, cell_id=None, cell_type=None, species=None, settings=None): + """ + Cell type and species are ignored, if cell_id is provided + :param repro_name: + :param cell_id: + :param cell_type: + :param species: + :param settings: + :return: + """ repros = Repros & True if repro_name: repros = repros & "repro_name like '%{0:s}%'".format(repro_name) - if cell_id: - repros = repros & "cell_id = '%s'" % cell_id 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 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) return [RePro(tuple=r) for r in repros]