about summary refs log tree commit diff
path: root/gn3/db
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2021-07-28 09:42:13 +0300
committerBonfaceKilz2021-07-29 15:24:51 +0300
commit02791f15d6b4940ae8be07fe9d4f8487d8291c78 (patch)
treeeefc9ac07fedfa8ab5ae53098b666942de8b9876 /gn3/db
parentbf4e211ea1e639a6a50046ec598e2b4aed40b0ca (diff)
downloadgenenetwork3-02791f15d6b4940ae8be07fe9d4f8487d8291c78.tar.gz
Retrieve 'ProbeSet' trait name
Issue:
https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/clustering.gmi

* gn3/db/traits.py: new function (retrieve_probeset_trait_name)
* tests/unit/db/test_traits.py: test(s) for new function

  Add a function to retrieve the name of a 'ProbeSet' trait in a manner
  similar to genenetwork1's retrieval of the same, as implemented here
  https://github.com/genenetwork/genenetwork1/blob/master/web/webqtl/base/webqtlDataset.py#L140-154

  Unlike in genenetwork1, we do not mutate an object, instead, we return the
  values as retrieved from the database, and the caller will deal with the
  returned values as appropriate.
Diffstat (limited to 'gn3/db')
-rw-r--r--gn3/db/traits.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/gn3/db/traits.py b/gn3/db/traits.py
index 4860a07..37b111e 100644
--- a/gn3/db/traits.py
+++ b/gn3/db/traits.py
@@ -90,3 +90,21 @@ def insert_publication(pubmed_id: int, publication: Optional[Dict],
                          ", ".join(['%s'] * len(publication))))
         with conn.cursor() as cursor:
             cursor.execute(insert_query, tuple(publication.values()))
+
+def retrieve_probeset_trait_name(threshold, name, connection):
+    """
+    Retrieve the name for a Probeset trait
+
+    This is extracted from the `webqtlDataset.retrieveName` function,
+    specifically the section dealing with 'ProbeSet' type traits
+    https://github.com/genenetwork/genenetwork1/blob/master/web/webqtl/base/webqtlDataset.py#L140-154"""
+    query = (
+        'SELECT Id, Name, FullName, ShortName, DataScale '
+        'FROM ProbeSetFreeze '
+        'WHERE '
+        'public > %(threshold)s '
+        'AND '
+        '(Name = %(name)s OR FullName = %(name)s OR ShortName = %(name)s)')
+    with connection.cursor() as cursor:
+        cursor.execute(query, {"threshold": threshold, "name": name})
+        return cursor.fetchone()