Source code for spirepy.cli.spire

import re
import argparse

from spirepy.study import Study
from spirepy.sample import Sample
from spirepy.cli import download, view


[docs] def maincall(input, action: str, target: str, output: str = None): if action == "view": view(input, target) else: download(input, target, output)
[docs] def main(): parser = argparse.ArgumentParser( description=""" _____ _____ _____ _____ ______ / ____| __ \_ _| __ \| ____| | (___ | |__) || | | |__) | |__ _ __ _ _ \___ \| ___/ | | | _ /| __| | '_ \| | | | ____) | | _| |_| | \ \| |____| |_) | |_| | |_____/|_| |_____|_| \_\______| .__/ \__, | | | __/ | |_| |___/ Interact with the SPIRE[1] database. [1] - Thomas S B Schmidt, Anthony Fullam, Pamela Ferretti, Askarbek Orakov, Oleksandr M Maistrenko, Hans-Joachim Ruscheweyh, Ivica Letunic, Yiqian Duan, Thea Van Rossum, Shinichi Sunagawa, Daniel R Mende, Robert D Finn, Michael Kuhn, Luis Pedro Coelho, Peer Bork, SPIRE: a Searchable, Planetary-scale mIcrobiome REsource, Nucleic Acids Research, Volume 52, Issue D1, 5 January 2024, Pages D777–D783, https://doi.org/10.1093/nar/gkad943 """, formatter_class=argparse.RawTextHelpFormatter, ) parser.add_argument( "--sample", dest="is_sample", action="store_true", help="The item you want to interact with is a sample", ) parser.add_argument( "--study", dest="is_study", action="store_true", help="The item you want to interact with is a study", ) subparsers = parser.add_subparsers(help="subcommand help", dest="action") # create the parser for the "view" command parser_view = subparsers.add_parser("view", help="view the data from an object") parser_view.add_argument( dest="target", choices=["metadata", "amr", "manifest", "eggnog", "mags"], action="store", help="target item to view", ) parser_view.add_argument( "input", metavar="INPUT", nargs="+", help="Input (study or sample ID)", type=str ) # create the parser for the "download" command parser_download = subparsers.add_parser( "download", help="download data from an item" ) parser_download.add_argument( dest="target", choices=["mags", "proteins", "genecalls", "metadata"], action="store", help="target item to dowload", ) parser_download.add_argument( "-o", "--output", dest="output", help="output folder; defaults to current folder", default="./", ) parser_download.add_argument( "input", metavar="INPUT", nargs="+", help="Input (study or sample ID)", type=str ) args = parser.parse_args() if args.is_sample: input = Sample(id=args.input[0]) if args.action == "view": maincall(input, args.action, args.target) else: maincall(input, args.action, args.target, args.output) else: input = Study(name=args.input[0]) if args.action == "view": maincall(input, args.action, args.target) else: maincall(input, args.action, args.target, args.output)
if __name__ == "__main__": main()