aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/computations
diff options
context:
space:
mode:
authorAlexander Kabui2021-09-27 17:30:32 +0300
committerAlexander Kabui2021-09-27 17:30:32 +0300
commit0d60b01476e49b094944c1ba4136e4cc8c28aaba (patch)
treee831465d69d80308f20b2f808152bcaac35837a2 /tests/unit/computations
parentf51a09e2c5f594425531fe26e8237b09fb6909ae (diff)
downloadgenenetwork3-0d60b01476e49b094944c1ba4136e4cc8c28aaba.tar.gz
add tests for calling wgcna_script
Diffstat (limited to 'tests/unit/computations')
-rw-r--r--tests/unit/computations/test_wgcna.py96
1 files changed, 89 insertions, 7 deletions
diff --git a/tests/unit/computations/test_wgcna.py b/tests/unit/computations/test_wgcna.py
index 64f6c14..57224b3 100644
--- a/tests/unit/computations/test_wgcna.py
+++ b/tests/unit/computations/test_wgcna.py
@@ -11,16 +11,98 @@ from gn3.computations.wgcna import call_wgcna_script
class TestWgcna(TestCase):
"""test class for wgcna"""
+ @mock.patch("gn3.computations.wgcna.run_cmd")
+ @mock.patch("gn3.computations.wgcna.compose_wgcna_cmd")
@mock.patch("gn3.computations.wgcna.dump_wgcna_data")
- def test_call_wgcna_script(self, mock_dump):
- """call wgcna script"""
+ def test_call_wgcna_script(self, mock_dumping_data, mock_compose_wgcna, mock_run_cmd):
+ """test for calling wgcna script"""
+ mock_dumping_data.return_value = "/tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json"
- mock_dump.return_value = "/tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json"
+ mock_compose_wgcna.return_value = "Rscript/GUIX_PATH/scripts/r_file.R /tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json"
- results = call_wgcna_script(
- "/home/kabui/project/genenetwork3/scripts/wgcna_analysis.R", {})
+ request_data = {
+ "trait_names": ["1455537_at", "1425637_at", "1449593_at", "1421945_a_at", "1450423_s_at", "1423841_at", "1451144_at"],
+ "trait_sample_data": [
+ {
+ "129S1/SvImJ": 7.142,
+ "A/J": 7.31,
+ "AKR/J": 7.49,
+ "B6D2F1": 6.899,
+ "BALB/cByJ": 7.172,
+ "BALB/cJ": 7.396
+ },
+ {
+ "129S1/SvImJ": 7.071,
+ "A/J": 7.05,
+ "AKR/J": 7.313,
+ "B6D2F1": 6.999,
+ "BALB/cByJ": 7.293,
+ "BALB/cJ": 7.117
+ }]}
- self.assertEqual(results, "dsedf")
+ mock_run_cmd_results = {
+
+ "code": 0,
+ "output": "Flagging genes and samples with too many missing values...\n ..step 1\nAllowing parallel execution with up to 3 working processes.\npickSoftThreshold: will use block size 7.\n pickSoftThreshold: calculating connectivity for given powers...\n ..working on genes 1 through 7 of 7\n Flagging genes and samples with too many missing values...\n ..step 1\n ..Working on block 1 .\n TOM calculation: adjacency..\n ..will not use multithreading.\nclustering..\n ....detecting modules..\n ....calculating module eigengenes..\n ....checking kME in modules..\n ..merging modules that are too close..\n mergeCloseModules: Merging modules whose distance is less than 0.15\n mergeCloseModules: less than two proper modules.\n ..color levels are turquoise\n ..there is nothing to merge.\n Calculating new MEs...\n"
+ }
+
+ json_output = "{\"inputdata\":{\"trait_sample_data \":{},\"minModuleSize\":30,\"TOMtype\":\"unsigned\"},\"outputdata\":{\"eigengenes\":[],\"colors\":[]}}"
+
+ expected_output = {
+
+ "data": {
+ "inputdata": {
+ "trait_sample_data ": {},
+ "minModuleSize": 30,
+ "TOMtype": "unsigned"
+ },
+
+ "outputdata": {
+ "eigengenes": [],
+ "colors": []
+ }
+ },
+
+ **mock_run_cmd_results
+
+ }
+
+ with mock.patch("builtins.open", mock.mock_open(read_data=json_output)) as mock_file:
+
+ mock_run_cmd.return_value = mock_run_cmd_results
+
+ results = call_wgcna_script(
+ "Rscript/GUIX_PATH/scripts/r_file.R", request_data)
+
+ mock_dumping_data.assert_called_once_with(request_data)
+
+ mock_compose_wgcna.assert_called_once_with(
+ "Rscript/GUIX_PATH/scripts/r_file.R", "/tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json")
+
+ mock_run_cmd.assert_called_once_with(
+ "Rscript/GUIX_PATH/scripts/r_file.R /tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json")
+
+ self.assertEqual(results, expected_output)
+
+ @mock.patch("gn3.computations.wgcna.run_cmd")
+ @mock.patch("gn3.computations.wgcna.compose_wgcna_cmd")
+ @mock.patch("gn3.computations.wgcna.dump_wgcna_data")
+ def test_call_wgcna_script_fails(self, mock_dumping_data, mock_compose_wgcna, mock_run_cmd):
+ """test for calling wgcna script fails and generates the expected error"""
+ mock_dumping_data.return_value = "/tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json"
+
+ mock_compose_wgcna.return_value = "Rscript/GUIX_PATH/scripts/r_file.R /tmp/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc-test.json"
+
+ expected_error = {
+ "code": 127,
+ "output": "could not read the json file"
+ }
+
+ with mock.patch("builtins.open", mock.mock_open(read_data="")) as mock_file:
+
+ mock_run_cmd.return_value = expected_error
+ self.assertEqual(call_wgcna_script(
+ "input_file.R", ""), expected_error)
def test_compose_wgcna_cmd(self):
"""test for composing wgcna cmd"""
@@ -29,7 +111,7 @@ class TestWgcna(TestCase):
self.assertEqual(
wgcna_cmd, "Rscript ./scripts/wgcna.r /tmp/wgcna.json")
- @skip("to update tests")
+ @ skip("to update tests")
def test_create_json_file(self):
"""test for writing the data to a csv file"""
# # All the traits we have data for (should not contain duplicates)