Skip to main content
`Ctrl`+`K`

# 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

    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

    def get_parser():
        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)
        return parser

    def main():
        parser = get_parser()
        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()