about summary refs log tree commit diff
path: root/gn3/computations/rust_correlation.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn3/computations/rust_correlation.py')
-rw-r--r--gn3/computations/rust_correlation.py37
1 files changed, 24 insertions, 13 deletions
diff --git a/gn3/computations/rust_correlation.py b/gn3/computations/rust_correlation.py
index 5ce097d..359b73a 100644
--- a/gn3/computations/rust_correlation.py
+++ b/gn3/computations/rust_correlation.py
@@ -3,27 +3,27 @@
 https://github.com/Alexanderlacuna/correlation_rust
 
 """
-import subprocess
-import json
-import csv
 import os
+import csv
+import json
+import traceback
+import subprocess
 
 from flask import current_app
 
 from gn3.computations.qtlreaper import create_output_directory
 from gn3.chancy import random_string
-from gn3.settings import TMPDIR
 
 
-def generate_input_files(dataset: list[str],
-                         output_dir: str = TMPDIR) -> tuple[str, str]:
+def generate_input_files(
+        dataset: list[str], output_dir: str) -> tuple[str, str]:
     """function generates outputfiles and inputfiles"""
     tmp_dir = f"{output_dir}/correlation"
     create_output_directory(tmp_dir)
     tmp_file = os.path.join(tmp_dir, f"{random_string(10)}.txt")
     with open(tmp_file, "w", encoding="utf-8") as op_file:
         writer = csv.writer(
-            op_file, delimiter=",", dialect="unix", quotechar="",
+            op_file, delimiter=",", dialect="unix",
             quoting=csv.QUOTE_NONE, escapechar="\\")
         writer.writerows(dataset)
 
@@ -49,17 +49,23 @@ def generate_json_file(
 
 
 def run_correlation(
-        dataset, trait_vals: str, method: str, delimiter: str,
-        corr_type: str = "sample", top_n: int = 500):
+        dataset,
+        trait_vals: str,
+        method: str,
+        delimiter: str,
+        tmpdir: str,
+        corr_type: str = "sample",
+        top_n: int = 500
+):
     """entry function to call rust correlation"""
 
-    # pylint: disable=too-many-arguments
+    # pylint: disable=[too-many-arguments, too-many-positional-arguments]
     correlation_command = current_app.config["CORRELATION_COMMAND"] # make arg?
-    (tmp_dir, tmp_file) = generate_input_files(dataset)
+    (tmp_dir, tmp_file) = generate_input_files(dataset, tmpdir)
     (output_file, json_file) = generate_json_file(
         tmp_dir=tmp_dir, tmp_file=tmp_file, method=method, delimiter=delimiter,
         x_vals=trait_vals)
-    command_list = [correlation_command, json_file, TMPDIR]
+    command_list = [correlation_command, json_file, tmpdir]
     try:
         subprocess.run(command_list, check=True, capture_output=True)
     except subprocess.CalledProcessError as cpe:
@@ -67,7 +73,12 @@ def run_correlation(
             os.readlink(correlation_command)
             if os.path.islink(correlation_command)
             else correlation_command)
-        raise Exception(command_list, actual_command, cpe.stdout) from cpe
+        raise Exception(# pylint: disable=[broad-exception-raised]
+            command_list,
+            actual_command,
+            cpe.stdout,
+            traceback.format_exc().split()
+        ) from cpe
 
     return parse_correlation_output(output_file, corr_type, top_n)