aboutsummaryrefslogtreecommitdiff
"""Run the 'sample' correlations.

Converts code in
https://github.com/genenetwork/genenetwork2/blob/a08d91a234f700043d1d31164c7e2bacda4729da/wqflask/wqflask/correlation/correlation_gn3_api.py#L211-L216
into a script that can be run as an external process."""
import sys
import pickle
from argparse import ArgumentParser

from gn3.computations.correlations import compute_all_sample_correlation

from scripts.argparse_actions import FileCheck

# compute_all_sample_correlation(
#     corr_method=method, this_trait=this_trait_data, target_dataset=target_dataset_data)

if __name__ == "__main__":
    def cli_args():
        "Process the command-line arguments."
        parser = ArgumentParser(prog="sample_correlations")
        parser.add_argument(
            "corrmethod", help="The correlation method to use.", type=str,
            choices=("pearson", "spearman", "bicor"))
        parser.add_argument(
            "traitfile", help="Path to file with pickled trait.",
            type=str, action=FileCheck)
        parser.add_argument(
            "targetdataset", type=str, action=FileCheck,
            help="Path to file with pickled target dataset traits.")
        parser.add_argument(
            "destfile", type=str,
            help=("Path to file with pickled results of computing the "
                  "correlations."))
        args = parser.parse_args()
        return args

    def main():
        "CLI entry-point function"
        args = cli_args()
        with open(args.traitfile, "rb") as traitfile:
            with open(args.targetdataset, "rb") as targetdataset:
                corrs = compute_all_sample_correlation(
                    corr_method=args.corrmethod,
                    this_trait=pickle.load(traitfile),
                    target_dataset=pickle.load(targetdataset))

        with open(args.destfile, "wb") as dest:
            pickle.dump(corrs, dest)
        return 0

    sys.exit(main())