aboutsummaryrefslogtreecommitdiff
path: root/gn3/db/correlations.py
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/correlations.py
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/correlations.py')
-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,