diff options
-rw-r--r-- | gn3/computations/correlations.py | 51 | ||||
-rw-r--r-- | tests/unit/computations/test_correlation.py | 45 |
2 files changed, 30 insertions, 66 deletions
diff --git a/gn3/computations/correlations.py b/gn3/computations/correlations.py index cd7d604..25dd26d 100644 --- a/gn3/computations/correlations.py +++ b/gn3/computations/correlations.py @@ -89,8 +89,6 @@ def compute_sample_r_correlation(trait_name, corr_method, trait_vals, target_values=sanitized_target_vals, corr_method=corr_method) - # xtodo check if corr_coefficient is None - # should use numpy.isNan scipy.isNan is deprecated if corr_coeffient is not None: return (trait_name, corr_coeffient, p_value, num_overlap) return None @@ -189,27 +187,7 @@ def benchmark_compute_all_sample(this_trait, return corr_results -def tissue_lit_corr_for_probe_type(corr_type: str, top_corr_results): - """Function that does either lit_corr_for_trait_list or tissue_corr _for_trait -list depending on whether both dataset and target_dataset are both set to -probet - - """ - corr_results = {"lit": 1} - if corr_type not in ("lit", "literature"): - corr_results["top_corr_results"] = top_corr_results - # run lit_correlation for the given top_corr_results - if corr_type == "tissue": - # run lit correlation the given top corr results - pass - if corr_type == "sample": - pass - # run sample r correlation for the given top results - - return corr_results - - -def tissue_correlation_for_trait_list( +def tissue_correlation_for_trait( primary_tissue_vals: List, target_tissues_values: List, corr_method: str, @@ -232,7 +210,7 @@ def tissue_correlation_for_trait_list( tiss_corr_result = {trait_id: { "tissue_corr": tissue_corr_coeffient, "tissue_number": len(primary_tissue_vals), - "p_value": p_value}} + "tissue_p_val": p_value}} return tiss_corr_result @@ -269,13 +247,13 @@ def fetch_lit_correlation_data( cursor.execute(query_formatter(query, *tuple(reversed(query_values)))) lit_corr_results = cursor.fetchone() - lit_results = (gene_id, lit_corr_results.val)\ + lit_results = (gene_id, lit_corr_results[1])\ if lit_corr_results else (gene_id, 0) return lit_results return (gene_id, 0) -def lit_correlation_for_trait_list( +def lit_correlation_for_trait( conn, target_trait_lists: List, species: Optional[str] = None, @@ -319,8 +297,6 @@ def map_to_mouse_gene_id(conn, species: Optional[str], gene_id: Optional[str]) -> Optional[str]: """Given a species which is not mouse map the gene_id\ to respective mouse gene id""" - # AK:xtodo move the code for checking nullity out of thing functions bug - # while method for string if None in (species, gene_id): return None if species == "mouse": @@ -339,11 +315,10 @@ def map_to_mouse_gene_id(conn, species: Optional[str], def compute_all_lit_correlation(conn, trait_lists: List, species: str, gene_id): - """Function that acts as an abstraction for lit_correlation_for_trait_list - - """ + """Function that acts as an abstraction for + lit_correlation_for_trait""" - lit_results = lit_correlation_for_trait_list( + lit_results = lit_correlation_for_trait( conn=conn, target_trait_lists=trait_lists, species=species, @@ -358,10 +333,9 @@ def compute_all_lit_correlation(conn, trait_lists: List, def compute_all_tissue_correlation(primary_tissue_dict: dict, target_tissues_data: dict, corr_method: str): - """Function acts as an abstraction for tissue_correlation_for_trait_list - required input are target tissue object and primary tissue trait target - tissues data contains the trait_symbol_dict and symbol_tissue_vals - + """Function acts as an abstraction for tissue_correlation_for_trait\ + required input are target tissue object and primary tissue trait\ + target tissues data contains the trait_symbol_dict and symbol_tissue_vals """ tissues_results = [] primary_tissue_vals = primary_tissue_dict["tissue_values"] @@ -372,7 +346,8 @@ def compute_all_tissue_correlation(primary_tissue_dict: dict, for target_tissue_obj in target_tissues_list: trait_id = target_tissue_obj.get("trait_id") target_tissue_vals = target_tissue_obj.get("tissue_values") - tissue_result = tissue_correlation_for_trait_list( + + tissue_result = tissue_correlation_for_trait( primary_tissue_vals=primary_tissue_vals, target_tissues_values=target_tissue_vals, trait_id=trait_id, @@ -425,7 +400,7 @@ def compute_tissue_correlation(primary_tissue_dict: dict, with multiprocessing.Pool(4) as pool: results = pool.starmap( - tissue_correlation_for_trait_list, processed_values) + tissue_correlation_for_trait, processed_values) for result in results: tissues_results.append(result) diff --git a/tests/unit/computations/test_correlation.py b/tests/unit/computations/test_correlation.py index 6414c3b..d264738 100644 --- a/tests/unit/computations/test_correlation.py +++ b/tests/unit/computations/test_correlation.py @@ -10,9 +10,8 @@ from gn3.computations.correlations import do_bicor from gn3.computations.correlations import compute_sample_r_correlation from gn3.computations.correlations import compute_all_sample_correlation from gn3.computations.correlations import filter_shared_sample_keys -from gn3.computations.correlations import tissue_lit_corr_for_probe_type -from gn3.computations.correlations import tissue_correlation_for_trait_list -from gn3.computations.correlations import lit_correlation_for_trait_list +from gn3.computations.correlations import tissue_correlation_for_trait +from gn3.computations.correlations import lit_correlation_for_trait from gn3.computations.correlations import fetch_lit_correlation_data from gn3.computations.correlations import query_formatter from gn3.computations.correlations import map_to_mouse_gene_id @@ -214,20 +213,8 @@ class TestCorrelation(TestCase): filter_shared_samples.assert_called_once_with( this_trait_data.get("trait_sample_data"), traits_dataset[0].get("trait_sample_data")) - @unittest.skip("not implemented") - def test_tissue_lit_corr_for_probe_type(self): - """Tests for doing tissue and lit correlation for trait list\ - if both the dataset and target dataset are probeset runs\ - on after initial correlation has been done - """ - - results = tissue_lit_corr_for_probe_type( - corr_type="tissue", top_corr_results={}) - - self.assertEqual(results, (None, None)) - @mock.patch("gn3.computations.correlations.compute_corr_coeff_p_value") - def test_tissue_correlation_for_trait_list(self, mock_compute_corr_coeff): + def test_tissue_correlation_for_trait(self, mock_compute_corr_coeff): """Test given a primary tissue values for a trait and and a list of\ target tissues for traits do the tissue correlation for them """ @@ -236,8 +223,8 @@ class TestCorrelation(TestCase): target_tissues_values = [1, 2, 3] mock_compute_corr_coeff.side_effect = [(0.4, 0.9), (-0.2, 0.91)] expected_tissue_results = {"1456_at": {"tissue_corr": 0.4, - "p_value": 0.9, "tissue_number": 3}} - tissue_results = tissue_correlation_for_trait_list( + "tissue_p_val": 0.9, "tissue_number": 3}} + tissue_results = tissue_correlation_for_trait( primary_tissue_values, target_tissues_values, corr_method="pearson", trait_id="1456_at", compute_corr_p_value=mock_compute_corr_coeff) @@ -246,7 +233,7 @@ class TestCorrelation(TestCase): @mock.patch("gn3.computations.correlations.fetch_lit_correlation_data") @mock.patch("gn3.computations.correlations.map_to_mouse_gene_id") - def test_lit_correlation_for_trait_list(self, mock_mouse_gene_id, fetch_lit_data): + def test_lit_correlation_for_trait(self, mock_mouse_gene_id, fetch_lit_data): """Fetch results from db call for lit correlation given a trait list\ after doing correlation """ @@ -260,7 +247,7 @@ class TestCorrelation(TestCase): fetch_lit_data.side_effect = [(15, 9), (17, 8), (11, 12)] - lit_results = lit_correlation_for_trait_list( + lit_results = lit_correlation_for_trait( conn=conn, target_trait_lists=target_trait_lists, species="rat", trait_gene_id="12") @@ -289,7 +276,7 @@ class TestCorrelation(TestCase): input trait mouse gene id and mouse gene id """ - expected_db_results = [namedtuple("lit_coeff", "val")(x*0.1) + expected_db_results = [("val", x*0.1) for x in range(1, 4)] conn = DataBase(expected_results=expected_db_results) expected_results = ("1", 0.1) @@ -375,10 +362,10 @@ class TestCorrelation(TestCase): self.assertEqual(results, expected_results) - @mock.patch("gn3.computations.correlations.lit_correlation_for_trait_list") + @mock.patch("gn3.computations.correlations.lit_correlation_for_trait") def test_compute_all_lit_correlation(self, mock_lit_corr): """Test for compute all lit correlation which acts\ - as an abstraction for lit_correlation_for_trait_list + as an abstraction for lit_correlation_for_trait and is used in the api/correlation/lit """ @@ -395,7 +382,7 @@ class TestCorrelation(TestCase): self.assertEqual(lit_correlation_results, expected_mocked_lit_results) - @mock.patch("gn3.computations.correlations.tissue_correlation_for_trait_list") + @mock.patch("gn3.computations.correlations.tissue_correlation_for_trait") @mock.patch("gn3.computations.correlations.process_trait_symbol_dict") def test_compute_all_tissue_correlation(self, process_trait_symbol, mock_tissue_corr): """Test for compute all tissue corelation which abstracts @@ -417,13 +404,15 @@ class TestCorrelation(TestCase): target_tissue_data = {"trait_symbol_dict": target_trait_symbol, "symbol_tissue_vals_dict": target_symbol_tissue_vals} - mock_tissue_corr.side_effect = [{"tissue_corr": -0.5, "p_value": 0.9, "tissue_number": 3}, - {"tissue_corr": 1.11, "p_value": 0.2, "tissue_number": 3}] + mock_tissue_corr.side_effect = [{"tissue_corr": -0.5, "tissue_p_val": 0.9, + "tissue_number": 3}, + {"tissue_corr": 1.11, "tissue_p_val": 0.2, + "tissue_number": 3}] expected_results = [{"1412_at": - {"tissue_corr": 1.11, "p_value": 0.2, "tissue_number": 3}}, + {"tissue_corr": 1.11, "tissue_p_val": 0.2, "tissue_number": 3}}, {"1418702_a_at": - {"tissue_corr": -0.5, "p_value": 0.9, "tissue_number": 3}}] + {"tissue_corr": -0.5, "tissue_p_val": 0.9, "tissue_number": 3}}] results = compute_all_tissue_correlation( primary_tissue_dict=primary_tissue_dict, |