diff options
author | Frederick Muriuki Muriithi | 2021-10-21 09:36:36 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2021-10-21 09:36:36 +0300 |
commit | 41936d0a486ef54bf4fc049c2b4d85dca43ab761 (patch) | |
tree | a7c757dfc40c21de7acdc9a32f89c1adf06ae26f | |
parent | cad4649d19001f62ef592dedf09f3ac53744962a (diff) | |
download | genenetwork3-41936d0a486ef54bf4fc049c2b4d85dca43ab761.tar.gz |
Implement `translate_to_mouse_gene_id` function
Issue:
https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/partial-correlations.gmi
* Migrate the `web.webqtl.correlation/CorrelationPage.translateToMouseGeneID`
function in GN1 to GN3.
This is a function that retrieves data from the database, and therefore uses
a system outside of our code, therefore, the function does not have a
corresponding unit test.
This kind of function will probably need to be tested at the integration or
system tests level, where we test that our code interacts correcly with any
and all external systems that it should.
-rw-r--r-- | gn3/db/species.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gn3/db/species.py b/gn3/db/species.py index 0deae4e..1e5015f 100644 --- a/gn3/db/species.py +++ b/gn3/db/species.py @@ -30,3 +30,34 @@ def get_chromosome(name: str, is_species: bool, conn: Any) -> Optional[Tuple]: with conn.cursor() as cursor: cursor.execute(_sql) return cursor.fetchall() + +def translate_to_mouse_gene_id(species: str, geneid: int, conn: Any) -> int: + """ + Translate rat or human geneid to mouse geneid + + This is a migration of the + `web.webqtl.correlation/CorrelationPage.translateToMouseGeneID` function in + GN1 + """ + assert species in ("rat", "mouse", "human"), "Invalid species" + if geneid is None: + return 0 + + if species == "mouse": + return geneid + + with conn.cursor as cursor: + if species == "rat": + cursor.execute( + "SELECT mouse FROM GeneIDXRef WHERE rat = %s", geneid) + rat_geneid = cursor.fetchone() + if rat_geneid: + return rat_geneid[0] + + cursor.execute( + "SELECT mouse FROM GeneIDXRef WHERE human = %s", geneid) + human_geneid = cursor.fetchone() + if human_geneid: + return human_geneid[0] + + return 0 # default if all else fails |