From f887baaf66cc157f0c77237c41e70e42fe03549c Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Fri, 12 Feb 2021 16:36:21 +0300 Subject: Add new procedure for composing a gemma cmd * gn3/commands.py: New file * tests/unit/test_commands.py: New test-cases for ^^. --- gn3/commands.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 gn3/commands.py (limited to 'gn3') diff --git a/gn3/commands.py b/gn3/commands.py new file mode 100644 index 0000000..50b6d29 --- /dev/null +++ b/gn3/commands.py @@ -0,0 +1,42 @@ +"""Procedures used to work with the various bio-informatics cli +commands""" +from typing import Dict +from typing import List +from typing import Optional + +from gn3.file_utils import lookup_file +from gn3.file_utils import jsonfile_to_dict + + +# pylint: disable=locally-disabled, too-many-arguments +def compose_gemma_cmd( + token: str, + metadata_filename: str, + gemma_wrapper_cmd: str = "gemma-wrapper", + gemma_wrapper_kwargs: Optional[Dict] = None, + gemma_kwargs: Optional[Dict] = None, + gemma_args: Optional[List] = None) -> str: + """Compose a valid GEMMA command given the correct values""" + cmd = f"{gemma_wrapper_cmd} --json" + if gemma_wrapper_kwargs: + cmd += (" " # Add extra space between commands + " ".join([f" --{key} {val}" for key, val + in gemma_wrapper_kwargs.items()])) + data = jsonfile_to_dict(lookup_file("TMPDIR", + token, + metadata_filename)) + geno_file = lookup_file(environ_var="TMPDIR", + root_dir="genotype", + file_name=data.get("geno", "")) + pheno_file = lookup_file(environ_var="TMPDIR", + root_dir=token, + file_name=data.get("geno", "")) + cmd += f" -- -g {geno_file} -p {pheno_file}" + if gemma_kwargs: + cmd += (" " + " ".join([f" -{key} {val}" + for key, val in gemma_kwargs.items()])) + if gemma_args: + cmd += (" " + " ".join([f" {arg}" for arg in gemma_args])) + return cmd -- cgit v1.2.3