aboutsummaryrefslogtreecommitdiff
path: root/gn3/db
diff options
context:
space:
mode:
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,