From 624ece086d026da9150cd35b2404874ccf607b07 Mon Sep 17 00:00:00 2001 From: zsloan Date: Mon, 17 May 2021 21:56:51 +0000 Subject: Created compose_rqtl_command and generate_rqtl_command to create the actual command to be run from the command line; used the same pattern as for GEMMA for consistency --- gn3/commands.py | 7 +++++++ gn3/computations/rqtl.py | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 gn3/computations/rqtl.py diff --git a/gn3/commands.py b/gn3/commands.py index 4b0d62d..db32d1f 100644 --- a/gn3/commands.py +++ b/gn3/commands.py @@ -30,6 +30,13 @@ def compose_gemma_cmd(gemma_wrapper_cmd: str = "gemma-wrapper", cmd += " ".join([f"{arg}" for arg in gemma_args]) return cmd +def compose_rqtl_cmd(rqtl_wrapper_cmd: str, + rqtl_wrapper_kwargs: Dict) -> str: + """Compose a valid R/qtl command given the correct input""" + cmd = rqtl_wrapper_cmd + " " + " ".join( + [f"--{key} {val}" for key, val in rqtl_wrapper_kwargs.items()]) + + return cmd def queue_cmd(conn: Redis, job_queue: str, diff --git a/gn3/computations/rqtl.py b/gn3/computations/rqtl.py new file mode 100644 index 0000000..087a99f --- /dev/null +++ b/gn3/computations/rqtl.py @@ -0,0 +1,25 @@ +"""Procedures related rqtl computations""" +import os + +from typing import Dict +from gn3.commands import compose_rqtl_cmd +from gn3.fs_helpers import get_hash_of_files + +def generate_rqtl_cmd(rqtl_wrapper_cmd: str, + output_dir: str, + rqtl_wrapper_kwargs: Dict) -> Dict: + + _hash = get_hash_of_files( + [v for k, v in rqtl_wrapper_kwargs.items() if k in ["g", "p", "addcovar", + "model", "method", + "interval", "nperm", + "scale", "control"]]) + + _output_filename = f"{_hash}-output.json" + return { + "output_file": + _output_filename, + "rqtl_cmd": + compose_rqtl_cmd(rqtl_wrapper_cmd=rqtl_wrapper_cmd, + rqtl_wrapper_kwargs=rqtl_wrapper_kwargs) + } \ No newline at end of file -- cgit v1.2.3