diff options
author | BonfaceKilz | 2021-02-12 16:36:21 +0300 |
---|---|---|
committer | BonfaceKilz | 2021-02-12 21:13:30 +0300 |
commit | f887baaf66cc157f0c77237c41e70e42fe03549c (patch) | |
tree | 0d1cc2c8b01f910f436906c109be7b26d9be4e04 /gn3/commands.py | |
parent | fcf6fbdaaae460bed917b73db033a3d063443389 (diff) | |
download | genenetwork3-f887baaf66cc157f0c77237c41e70e42fe03549c.tar.gz |
Add new procedure for composing a gemma cmd
* gn3/commands.py: New file
* tests/unit/test_commands.py: New test-cases for ^^.
Diffstat (limited to 'gn3/commands.py')
-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 |