diff --git a/run_af2/src/run_af2/_shared.py b/run_af2/src/run_af2/_shared.py index 27aa8e1ce24b726aa2b13e957b844950464e5797..f2affaaddcbfddc4799fb4ce76ce1fa1baf0dda1 100644 --- a/run_af2/src/run_af2/_shared.py +++ b/run_af2/src/run_af2/_shared.py @@ -212,7 +212,7 @@ def parse_af2_arguments(parser): metavar="<FILE>", default=None, ) - opts = parser.parse_args() + opts, extra_opts = parser.parse_known_args() # check that the db_preset setting makes sense for arg in db_preset_choices[opts.db_preset]: @@ -253,7 +253,7 @@ def parse_af2_arguments(parser): ) sys.exit(1) - return opts + return opts, extra_opts # LocalWords: argparse ArgumentParser Namespace Bioinformatics Biozentrum af diff --git a/run_af2/src/run_af2/run_singularity.py b/run_af2/src/run_af2/run_singularity.py index 0e35bac2b10116eab6fa467d7f3cb59b1568d796..9b04f8d4aa18c2ac12d5b217b32ce7d7cdf5d12f 100644 --- a/run_af2/src/run_af2/run_singularity.py +++ b/run_af2/src/run_af2/run_singularity.py @@ -118,6 +118,7 @@ def _assemble_singularity_call( # pylint: disable=too-many-arguments model_preset, is_prokaryote_list, data_paths, + extra_arg_list, ): """Assemble the command to run AF2 from the Singularity image.""" # Since the number of arguments to this function is already high, we allow @@ -158,6 +159,9 @@ def _assemble_singularity_call( # pylint: disable=too-many-arguments for flag, path in data_paths.items(): snglrty_cmd.append(f"--{flag}={path}") + # append extra arguments + snglrty_cmd.extend(extra_arg_list) + return snglrty_cmd @@ -199,6 +203,7 @@ def run_af2_singularity_image( # pylint: disable=too-many-arguments af2_image_dir="/scicore/home/schwede/GROUP/alphafold_data/", snglrty_bin="/usr/bin/singularity", tmpdir_var="TMPDIR", + extra_arg_list=None, # data_dir="/scicore/data/managed/AF2params/frozen_210805T171956/", data_dir="/scicore/home/schwede/GROUP/alphafold_data/", uniref90_database_path="/scicore/data/managed/UniProt/latest/uniref/" @@ -274,6 +279,10 @@ def run_af2_singularity_image( # pylint: disable=too-many-arguments :param tmpdir_var: An environment variable defining tmp space, that is not necessarily "/tmp" on some systems. :type tmpdir_var: :class:`str` + :param extra_arg_list: List of extra arguments appended to the Singularity + call. That is for adding extra arguments in a + modified version of run_alphafold.py. + :type extra_arg_list: :class:`list` :param data_dir: Holds the params sub directory with model parameters. Corresponds to DOWNLOAD_DIR in AF2. :type data_dir: :class:`str` @@ -321,6 +330,8 @@ def run_af2_singularity_image( # pylint: disable=too-many-arguments # Since the number of arguments to this function is already high, we allow # more local variables than defined by PEP8. # pylint: disable=too-many-locals + if extra_arg_list is None: + extra_arg_list = [] tmpdir = os.getenv(tmpdir_var) if tmpdir is None: raise ValueError(f"tmpdir_var {tmpdir_var} must not be empty.") @@ -382,6 +393,7 @@ def run_af2_singularity_image( # pylint: disable=too-many-arguments model_preset, is_prokaryote_list, data_paths, + extra_arg_list, ) # set up environment @@ -412,7 +424,7 @@ def run_af2_singularity_image( # pylint: disable=too-many-arguments def main(): """Execute as script""" - opts = _parse_cmdline() + opts, extra_arg_list = _parse_cmdline() # Collect data paths into a dictionary so we can deal with default path on # the sciCORE cluster more easily. @@ -449,7 +461,8 @@ def main(): opts.db_preset, opts.model_preset, opts.is_prokaryote_list, - af2_image_file=opts.singularity_image, + opts.singularity_image, + extra_arg_list=extra_arg_list, **data_paths, ) except RuntimeError as rte: