aboutsummaryrefslogtreecommitdiff
"""module contains script to call biweight midcorrelation in R"""
import subprocess

from typing import List
from typing import Tuple

from gn3.settings import BIWEIGHT_RSCRIPT


def calculate_biweight_corr(trait_vals: List,
                            target_vals: List,
                            path_to_script: str = BIWEIGHT_RSCRIPT,
                            command: str = "Rscript"
                            ) -> Tuple[float, float]:
    """biweight function"""

    args_1 = ' '.join(str(trait_val) for trait_val in trait_vals)
    args_2 = ' '.join(str(target_val) for target_val in target_vals)
    cmd = [command, path_to_script] + [args_1] + [args_2]

    results = subprocess.check_output(cmd, universal_newlines=True)
    try:
        (corr_coeff, p_val) = tuple(
            [float(y.strip()) for y in results.split()])
        return (corr_coeff, p_val)
    except Exception as error:
        raise error