about summary refs log tree commit diff
path: root/gn3/db
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2021-10-29 08:00:27 +0300
committerBonfaceKilz2021-11-04 12:45:57 +0300
commit773c0896ccbed12170be2b5aed4554ab86d923b5 (patch)
tree40bfffd02e4584e474ee52c0a25a9a4b5e1080ec /gn3/db
parent8e3628129cdb8b1663dd2d63ce6c012335d73236 (diff)
downloadgenenetwork3-773c0896ccbed12170be2b5aed4554ab86d923b5.tar.gz
Complete `build_temporary_tissue_correlations_table`
Issue:
https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/partial-correlations.gmi

* gn3/computations/partial_correlations.py: Remove comments after updating
  usage of the function at call point
* gn3/db/correlations.py: Complete the implementation of the
  `build_temporary_tissue_correlations_table` function
Diffstat (limited to 'gn3/db')
-rw-r--r--gn3/db/correlations.py36
1 files changed, 33 insertions, 3 deletions
diff --git a/gn3/db/correlations.py b/gn3/db/correlations.py
index 39ed499..28f050a 100644
--- a/gn3/db/correlations.py
+++ b/gn3/db/correlations.py
@@ -290,10 +290,40 @@ def build_temporary_tissue_correlations_table(
     This is a migration of the
     `web.webqtl.correlation.CorrelationPage.getTempTissueCorrTable` function in
     GeneNetwork1."""
+    # We should probably pass the `correlations_of_all_tissue_traits` function
+    # as an argument to this function and get rid of the two lines immediately
+    # following this comment.
+    from gn3.computations.partial_correlations import correlations_of_all_tissue_traits
     symbol_corr_dict, symbol_p_value_dict = correlations_of_all_tissue_traits(
-        trait_symbol, probeset_freeze_id, method, conn)
-    raise Exception("Unimplemented!!!")
-    return ""
+        fetch_gene_symbol_tissue_value_dict_for_trait(
+            (trait_symbol,), probeset_freeze_id, conn),
+        fetch_gene_symbol_tissue_value_dict_for_trait(
+            tuple(), probeset_freeze_id, conn),
+        method)
+
+    symbol_corr_list = sorted(
+        symbol_corr_dict.items(),
+        key=compare_tissue_correlation_absolute_values)
+
+    temp_table_name = f"TOPTISSUE{random_string(8)}"
+    create_query = (
+        "CREATE TEMPORARY TABLE {temp_table_name}"
+        "(Symbol varchar(100) PRIMARY KEY, Correlation float, PValue float)")
+    insert_query = (
+        f"INSERT INTO {temp_table_name}(Symbol, Correlation, PValue) "
+        " VALUES (%(symbol)s, %(correlation)s, %(pvalue)s)")
+
+    with conn.cursor() as cursor:
+        cursor.execute(create_query)
+        cursor.execute(
+            insert_query,
+            tuple({
+                "symbol": symbol,
+                "correlation": corr,
+                "pvalue": symbol_p_value_dict[symbol]
+            } for symbol, corr in symbol_corr_list[0: 2 * return_number]))
+
+    return temp_table_name
 
 def fetch_tissue_correlations(
         dataset: dict, trait_symbol: str, probeset_freeze_id: int, method: str,