Skip to content

Project structure and architecture

Pedro Q edited this page Jan 13, 2022 · 7 revisions

Project Structure and architecture

This should be of no concern to the end user but this project is divided into several folders and .py files:

  • Images contains images used in this repository
  • References contains references folders and related metadata. It also contains the custom_refs folder
    • custom_refs is an empty folder where the user can store their own reference profiles
  • tests contains sample files when running run_test
  • config
    • MANTIS.cfg config file for Mantis
  • mantis contains the all of MANTIS' code
    • cython_src contains the Cython code responsible for compiling the hit extraction algorithm. Cython was used to increase efficiency.
    • __main__.py is the front of the program
    • Assembler.py has all the methods for setting up paths.
    • Consensus.py handles the generation of query sequences consensus. It inherits from UniFunc_wrapper.py. It contains the algorithms for finding the best query hits.
    • Database_generator.py has all the methods for setting up the databases.
    • Exceptions.py contains several custom exceptions
    • Homology_processor.py used for parsing results from HMMER and Diamond
    • MANTIS.py contains main front for launching the annotations, it inherits from all other classes
    • Metadata.py handles the interpretation of the generated annotations. Most references need to be linked to their respective metadata in order to extract usable information.
    • Metadata_SQLITE_Connector.py handles the generation of SQL databases from the metadata.tsv files.
    • Multiprocessing.py contains all the code responsible for multiprocessing
    • Taxonomy_SQLITE_Connector.py handles the SQL databases for the lineage retrieval of NCBI and GTDB taxonomies.
    • UniFunc_wrapper.py wrapper for UniFunc, a text mining tool to measure functional descriptions similarity.
    • utils.py contains small functions that are universal to Mantis