diff options
| author | Frederick Muriuki Muriithi | 2026-01-30 13:10:02 -0600 |
|---|---|---|
| committer | Frederick Muriuki Muriithi | 2026-01-30 13:10:02 -0600 |
| commit | f1b68d153fa9b2f97aed55e9eeab6c295e0bea21 (patch) | |
| tree | 4a95389546f275eebf41ced0f76f98a075357e60 /uploader | |
| parent | b9f20e035a00f55848c5ef4f46ba1928c557f300 (diff) | |
| download | gn-uploader-f1b68d153fa9b2f97aed55e9eeab6c295e0bea21.tar.gz | |
Narrow selection if cross-reference IDs are provided.
Diffstat (limited to 'uploader')
| -rw-r--r-- | uploader/phenotypes/models.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/uploader/phenotypes/models.py b/uploader/phenotypes/models.py index b9841aa..06c417f 100644 --- a/uploader/phenotypes/models.py +++ b/uploader/phenotypes/models.py @@ -87,11 +87,14 @@ def phenotype_publication_data(conn, phenotype_id) -> Optional[dict]: return dict(res) -def dataset_phenotypes(conn: Connection, - population_id: int, - dataset_id: int, - offset: int = 0, - limit: Optional[int] = None) -> tuple[dict, ...]: +def dataset_phenotypes( + conn: Connection, + population_id: int, + dataset_id: int, + offset: int = 0, + limit: Optional[int] = None, + xref_ids: tuple[int, ...] = tuple() +) -> tuple[dict, ...]: """Fetch the actual phenotypes.""" _query = ( "SELECT pheno.*, pxr.Id AS xref_id, pxr.InbredSetId, ist.InbredSetCode " @@ -100,9 +103,11 @@ def dataset_phenotypes(conn: Connection, "INNER JOIN PublishFreeze AS pf ON pxr.InbredSetId=pf.InbredSetId " "INNER JOIN InbredSet AS ist ON pf.InbredSetId=ist.Id " "WHERE pxr.InbredSetId=%s AND pf.Id=%s") + ( + f" AND pxr.Id IN ({', '.join(['%s'] * len(xref_ids))})" + if len(xref_ids) > 0 else "") + ( f" LIMIT {limit} OFFSET {offset}" if bool(limit) else "") with conn.cursor(cursorclass=DictCursor) as cursor: - cursor.execute(_query, (population_id, dataset_id)) + cursor.execute(_query, (population_id, dataset_id) + xref_ids) debug_query(cursor, logger) return tuple(dict(row) for row in cursor.fetchall()) |
