From 5d78eddfe974958bb90b3cc84bf8f8a78b568b01 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 28 May 2022 20:15:39 +0300 Subject: parse output data --- gn3/computations/rust_correlation.py | 22 ++++++++++++++++++- tests/unit/computations/test_rust_correlation.py | 27 ++++++++++++++++-------- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/gn3/computations/rust_correlation.py b/gn3/computations/rust_correlation.py index a3802ae..e739382 100644 --- a/gn3/computations/rust_correlation.py +++ b/gn3/computations/rust_correlation.py @@ -4,10 +4,30 @@ from gn3.settings import CORRELATION_COMMAND from gn3.settings import TMPDIR -def run_correlation(file_name: & str, outputdir: str = TMPDIR): +def run_correlation(file_name: str, outputdir: str = TMPDIR): command_list = [CORRELATION_COMMAND, file_name, outputdir] results = subprocess.run(command_list, check=True) return results + + +def parse_correlation_output(result_file: str): + + corr_results = [] + + with open(result_file, "r") as file_reader: + + for line in file_reader: + + (trait_name, corr_coeff, p_val) = line.rstrip().split(",") + corr_data = { + "trait_name": trait_name, + "corr_coeff": corr_coeff, + "p_val": p_val + } + + corr_results.append(corr_data) + + return corr_results diff --git a/tests/unit/computations/test_rust_correlation.py b/tests/unit/computations/test_rust_correlation.py index 1398645..121c330 100644 --- a/tests/unit/computations/test_rust_correlation.py +++ b/tests/unit/computations/test_rust_correlation.py @@ -2,23 +2,32 @@ import pytest from gn3.computations.rust_correlation import CORRELATION_COMMAND from gn3.computations.rust_correlation import run_correlation +from gn3.computations.rust_correlation import parse_correlation_output @pytest.mark.unit_test +def test_run_correlation(): + """test calling rusts' correlation """ -def test_equality(): - """initial test for sum """ - - assert 4 == 4 + results = run_correlation( + file_name="/home/kabui/correlation_rust/tests/data/sample_json_file.json", outputdir="/") + assert results == "hello" @pytest.mark.unit_test +def test_parse_results(): -def test_run_correlation(): - """test calling rusts' correlation """ - + raw_data = [ + ["63.62", "0.97", "0.00"], + ["19", "-0.96", "0.22"], + ["77.92", "-0.94", "0.31"], + ["84.04", "0.94", "0.11"], + ["23", "-0.91", "0.11"] + ] - results = run_correlation("./tests/data/sample_json_file.json") + expected_results = [{"trait_name": name, "corr_coeff": corr, + "p_val": pval} for (name, corr, pval) in raw_data] - assert results == "hello" + assert parse_correlation_output( + "tests/unit/computations/data/correlation/sorted_results.txt") == expected_results -- cgit v1.2.3