Source code for metator.main

#! /usr/bin/env python3
# Based on Rémy Greinhofer (rgreinho) tutorial on subcommands in docopt
# https://github.com/rgreinho/docopt-subcommands-example
# abignaud, 20201118

"""
MetaHiC pipeline for generating and manipulating MAGs.

usage:
    metator [-hv] <command> [<args>...]

options:
    -h, --help              shows the help
    -v, --version           shows the version

The subcommands are:
    network     Generate metaHiC contigs network from fastq reads or bam files
                and normalize it.
    partition   Partition metaHiC network using Louvain or Leiden algorithm.
    pipeline    Use all the others command to give a binned output in one
                command line.
    validation  Validates bins using CheckM and make a recursive partition to
                try to decontaminate them.
    qc          Generates some quality check on the output of metator.
    contactmap  Generates a HiC contact map from one metaTOR object from the
                final ouptut of metaTOR.
    scaffold    Scaffold a metator bin based on pairs files.
    pairs       Sort the pairs file using pairtools. Compress them using bgzip.
                Index them using pairix.
"""

from docopt import docopt
from docopt import DocoptExit
import metator.commands as commands
from metator.version import __version__


[docs]def main(): args = docopt(__doc__, version=__version__, options_first=True) # Retrieve the command to execute. command_name = args.pop("<command>").capitalize() # Retrieve the command arguments. command_args = args.pop("<args>") if command_args is None: command_args = {} # After 'popping' '<command>' and '<args>', what is left in the args # dictionary are the global arguments. # Retrieve the class from the 'commands' module. try: command_class = getattr(commands, command_name) except AttributeError: print("Unknown command.") raise DocoptExit() # Create an instance of the command. command = command_class(command_args, args) # Execute the command. command.execute()
if __name__ == "__main__": main()