Source code for SALib.scripts.salib
"""Command-line utility for SALib"""
import importlib
import argparse
from SALib import analyze, sample
from SALib.util import avail_approaches
[docs]
def parse_subargs(module, parser, method, opts):
"""Attach argument parser for action specific options.
Parameters
----------
module : module
name of module to extract action from
parser : argparser
argparser object to attach additional arguments to
method : str
name of method (morris, sobol, etc).
Must match one of the available submodules
opts : list
A list of argument options to parse
Returns
-------
subargs : argparser namespace object
"""
module.cli_args(parser)
subargs = parser.parse_args(opts)
return subargs
[docs]
def main():
parser = argparse.ArgumentParser(description="SALib - Sensitivity Analysis Library")
subparsers = parser.add_subparsers(help="Sample or Analysis method", dest="action")
sample_parser = subparsers.add_parser(
"sample", description="Select one of the sample methods"
)
analyze_parser = subparsers.add_parser("analyze")
# Get list of available samplers and analyzers
samplers = avail_approaches(sample)
analyzers = avail_approaches(analyze)
sample_parser.add_argument("method", choices=samplers)
analyze_parser.add_argument("method", choices=analyzers)
known_args, opts = parser.parse_known_args()
action = known_args.action
if not action:
parser.print_help()
exit()
method_name = known_args.method
common_args = importlib.import_module(".".join(["SALib", action, "common_args"]))
module = importlib.import_module(".".join(["SALib", action, method_name]))
if len(opts) == 0:
cmd_parse = common_args.create(module.cli_parse)
cmd_parse.print_help()
exit()
common_args.run_cli(module.cli_parse, module.cli_action, opts)
if __name__ == "__main__":
main()