aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gn3/computations/correlations.py51
-rw-r--r--tests/unit/computations/test_correlation.py45
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,