def get_parser(): main_parser = argparse.ArgumentParser() main_parser.add_argument('--version', action='version', version=version(), help='display version information and exit') subparsers = main_parser.add_subparsers(title='modules', dest='which') global_parser = argparse.ArgumentParser(add_help=False) settings_parser = Args.settings_args(subparsers.add_parser('settings', help='user definable settings', parents=[global_parser])) snv_parser = Args.snv_args(subparsers.add_parser('snv', help='run single nucleotide variant association models', parents=[global_parser])) snvgroup_parser = Args.snvgroup_args(subparsers.add_parser('snvgroup', help='run variant group (ie. gene) based association models', parents=[global_parser])) meta_parser = Args.meta_args(subparsers.add_parser('meta', help='run meta analysis', parents=[global_parser])) compile_parser = Args.compile_args(subparsers.add_parser('compile', help='verify and compile results files', parents=[global_parser])) resubmit_parser = Args.resubmit_args(subparsers.add_parser('resubmit', help='resubmit failed results', parents=[global_parser])) snvplot_parser = Args.snvplot_args(subparsers.add_parser('snvplot', help='generate qq and manhattan plots for single variant results', parents=[global_parser])) snvgroupplot_parser = Args.snvgroupplot_args(subparsers.add_parser('snvgroupplot', help='generate qq and manhattan plots for grouped variant results', parents=[global_parser])) filter_parser = Args.filter_args(subparsers.add_parser('filter', help='filter results / correct single variant results for genomic inflation', parents=[global_parser])) merge_parser = Args.merge_args(subparsers.add_parser('merge', help='merge and annotate results with external files / snpEff', parents=[global_parser])) tools_parser = Args.tools_args(subparsers.add_parser('tools', help='run any command line tool with ability to include genomic region automatically', parents=[global_parser])) return main_parser