diff options
Diffstat (limited to 'gn3')
-rw-r--r-- | gn3/commands.py | 42 |
1 files changed, 42 insertions, 0 deletions
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 |