Module CLI.search

Expand source code
import argparse
from argparse_formatter import FlexiFormatter
from .search_seq import seq_search
from .family_list import print_families
from .search_lat import ls_search
from . import output_opt_parser, dist_opt_parser


def main():
    parser: argparse.ArgumentParser = argparse.ArgumentParser(description='Find the closest protein family to a new latent space or protein sequence.',
                                                              formatter_class=FlexiFormatter)
    subparsers = parser.add_subparsers(dest='command', title='subcommands', metavar="{lat,seq,list names}")
    parser_ls: argparse.ArgumentParser = subparsers.add_parser('lat', help="Provide a new protein family latent space. The closest protein family to this new latent space will be shown.", parents=[
        output_opt_parser, dist_opt_parser], formatter_class=FlexiFormatter, epilog='''Available metrics:
    euclidean, minkowski, cityblock, sqeuclidean, cosine, correlation, hamming, jaccard, chebyshev, canberra, braycurtis, yule, dice, kulsinski, rogerstanimoto, russellrao, sokalmichener, sokalsneath
''')
    parser_ls.add_argument('latent_space', metavar="filename", help="The file name of a new latent space.", type=str, nargs='+')

    parser_seq: argparse.ArgumentParser = subparsers.add_parser('seq', help="Provide a protein sequence to get the closest protein family for this sequence.", parents=[
        output_opt_parser])
    parser_seq.add_argument('sequence', metavar="filename", help="The name of the file containing a protein sequence.", type=str, nargs='+')

    parser_names: argparse.ArgumentParser = subparsers.add_parser('list names', aliases=['list'], help="Show available protein family names")
    parser_names.add_argument('names', nargs='?', help=argparse.SUPPRESS)
    parser_ls.set_defaults(func=ls_search)
    parser_seq.set_defaults(func=seq_search)
    parser_names.set_defaults(func=print_families)
    args: argparse.Namespace = parser.parse_args()
    # print help text if nothing is selected
    if args.command is None:
        parser.print_help()
    else:
        args.func(args)


if __name__ == "__main__":
    main()

Functions

def main()
Expand source code
def main():
    parser: argparse.ArgumentParser = argparse.ArgumentParser(description='Find the closest protein family to a new latent space or protein sequence.',
                                                              formatter_class=FlexiFormatter)
    subparsers = parser.add_subparsers(dest='command', title='subcommands', metavar="{lat,seq,list names}")
    parser_ls: argparse.ArgumentParser = subparsers.add_parser('lat', help="Provide a new protein family latent space. The closest protein family to this new latent space will be shown.", parents=[
        output_opt_parser, dist_opt_parser], formatter_class=FlexiFormatter, epilog='''Available metrics:
    euclidean, minkowski, cityblock, sqeuclidean, cosine, correlation, hamming, jaccard, chebyshev, canberra, braycurtis, yule, dice, kulsinski, rogerstanimoto, russellrao, sokalmichener, sokalsneath
''')
    parser_ls.add_argument('latent_space', metavar="filename", help="The file name of a new latent space.", type=str, nargs='+')

    parser_seq: argparse.ArgumentParser = subparsers.add_parser('seq', help="Provide a protein sequence to get the closest protein family for this sequence.", parents=[
        output_opt_parser])
    parser_seq.add_argument('sequence', metavar="filename", help="The name of the file containing a protein sequence.", type=str, nargs='+')

    parser_names: argparse.ArgumentParser = subparsers.add_parser('list names', aliases=['list'], help="Show available protein family names")
    parser_names.add_argument('names', nargs='?', help=argparse.SUPPRESS)
    parser_ls.set_defaults(func=ls_search)
    parser_seq.set_defaults(func=seq_search)
    parser_names.set_defaults(func=print_families)
    args: argparse.Namespace = parser.parse_args()
    # print help text if nothing is selected
    if args.command is None:
        parser.print_help()
    else:
        args.func(args)