diff options
author | Frederick Muriuki Muriithi | 2022-01-24 15:24:59 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2022-01-27 10:02:02 +0300 |
commit | 7bc3d9a11ee1e5a863a01a91abd7510bdbfae54e (patch) | |
tree | 2592a5db5ac644846e0383062fa2dfabd30e9c8f | |
parent | f9dfc61b4fe5d78c6a09adbeafa28a4e5d91c2ad (diff) | |
download | genenetwork3-7bc3d9a11ee1e5a863a01a91abd7510bdbfae54e.tar.gz |
Refactor: Remove circular importrefactor-circular-import
The function
`gn3.computation.partial_correlations.correlations_of_all_tissue_traits` was,
before this commit, called inside the
`gn3.db.correlations.build_temporary_tissue_correlations_table`
function, leading to a circular dependency. This commit removes the circular
dependency by rearranging the calls.
-rw-r--r-- | gn3/computations/partial_correlations.py | 14 | ||||
-rw-r--r-- | gn3/db/correlations.py | 36 |
2 files changed, 18 insertions, 32 deletions
diff --git a/gn3/computations/partial_correlations.py b/gn3/computations/partial_correlations.py index 9bad12a..4b35c51 100644 --- a/gn3/computations/partial_correlations.py +++ b/gn3/computations/partial_correlations.py @@ -406,6 +406,12 @@ def partial_corrs(# pylint: disable=[R0913] `web.webqtl.correlation.PartialCorrDBPage.__init__` function in GeneNetwork1. """ + symbol_corr_dict, symbol_p_value_dict = correlations_of_all_tissue_traits( + fetch_gene_symbol_tissue_value_dict_for_trait( + (input_trait_symbol,), tissue_probeset_freeze_id, conn), + fetch_gene_symbol_tissue_value_dict_for_trait( + tuple(), tissue_probeset_freeze_id, conn), + method) if database_filename: return partial_correlations_fast( samples, primary_vals, control_vals, database_filename, @@ -414,15 +420,15 @@ def partial_corrs(# pylint: disable=[R0913] species, input_trait_geneid, dataset, return_number, conn) if "literature" in method.lower() else fetch_tissue_correlations( - dataset, input_trait_symbol, tissue_probeset_freeze_id, - method, return_number, conn)), + dataset, symbol_corr_dict, symbol_p_value_dict, + return_number, conn)), method, ("literature" if method.lower() == "sgo literature correlation" else ("tissue" if "tissue" in method.lower() else "genetic"))) trait_database, data_start_pos = fetch_all_database_data( - conn, species, input_trait_geneid, input_trait_symbol, samples, dataset, - method, return_number, tissue_probeset_freeze_id) + conn, species, input_trait_geneid, samples, dataset, method, + symbol_corr_dict, symbol_p_value_dict, return_number) return partial_correlations_normal( primary_vals, control_vals, input_trait_geneid, trait_database, data_start_pos, dataset, method) diff --git a/gn3/db/correlations.py b/gn3/db/correlations.py index d372607..4f0d404 100644 --- a/gn3/db/correlations.py +++ b/gn3/db/correlations.py @@ -275,7 +275,7 @@ def fetch_gene_symbol_tissue_value_dict_for_trait( return {} def build_temporary_tissue_correlations_table( - conn: Any, trait_symbol: str, probeset_freeze_id: int, method: str, + conn: Any, symbol_corr_dict: dict, symbol_p_value_dict: dict, return_number: int) -> str: """ Build a temporary table to hold the tissue correlations data. @@ -283,26 +283,6 @@ 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 one call immediately - # following this comment. - from gn3.computations.partial_correlations import (#pylint: disable=[C0415, R0401] - correlations_of_all_tissue_traits) - # This import above is necessary within the function to avoid - # circular-imports. - # - # - # This import above is indicative of convoluted code, with the computation - # being interwoven with the data retrieval. This needs to be changed, such - # that the function being imported here is no longer necessary, or have the - # imported function passed to this function as an argument. - symbol_corr_dict, symbol_p_value_dict = correlations_of_all_tissue_traits( - 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=lambda key_val: key_val[1]) @@ -326,8 +306,8 @@ def build_temporary_tissue_correlations_table( return temp_table_name -def fetch_tissue_correlations(# pylint: disable=R0913 - dataset: dict, trait_symbol: str, probeset_freeze_id: int, method: str, +def fetch_tissue_correlations( + dataset: dict, symbol_corr_dict: dict, symbol_p_value_dict: dict, return_number: int, conn: Any) -> dict: """ Pair tissue correlations data with a trait id string. @@ -337,7 +317,7 @@ def fetch_tissue_correlations(# pylint: disable=R0913 GeneNetwork1. """ temp_table = build_temporary_tissue_correlations_table( - conn, trait_symbol, probeset_freeze_id, method, return_number) + conn, symbol_corr_dict, symbol_p_value_dict, return_number) with conn.cursor() as cursor: cursor.execute( ( @@ -473,9 +453,9 @@ def build_query_tissue_corr(db_type, temp_table, sample_id_columns, joins): 3) def fetch_all_database_data(# pylint: disable=[R0913, R0914] - conn: Any, species: str, gene_id: int, trait_symbol: str, - samples: Tuple[str, ...], dataset: dict, method: str, - return_number: int, probeset_freeze_id: int) -> Tuple[ + conn: Any, species: str, gene_id: int, samples: Tuple[str, ...], + dataset: dict, method: str, symbol_corr_dict: dict, + symbol_p_value_dict: dict, return_number: int) -> Tuple[ Tuple[float], int]: """ This is a migration of the @@ -556,7 +536,7 @@ def fetch_all_database_data(# pylint: disable=[R0913, R0914] "tissue correlation, pearson's r", "tissue correlation, spearman's rho"): temp_table = build_temporary_tissue_correlations_table( - conn, trait_symbol, probeset_freeze_id, method, return_number) + conn, symbol_corr_dict, symbol_p_value_dict, return_number) trait_database = tuple( item for sublist in |