{ "info": { "author": "Andre Tan", "author_email": "andre.sutanto.91@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering :: Bio-Informatics" ], "description": "# emmtyper - Emm Automatic Isolate Labeller\n\n[![CircleCI](https://circleci.com/gh/MDU-PHL/emmtyper.svg?style=svg)](https://circleci.com/gh/MDU-PHL/emmtyper)\n[![Coverage Status](https://coveralls.io/repos/github/MDU-PHL/emmtyper/badge.svg?branch=master)](https://coveralls.io/github/MDU-PHL/emmtyper?branch=master) ![PyPI - Implementation](https://img.shields.io/pypi/implementation/emmtyper) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/emmtyper) ![PyPI - Wheel](https://img.shields.io/pypi/wheel/emmtyper) ![Conda](https://img.shields.io/conda/pn/bioconda/emmtyper?label=bioconda) ![GitHub issues](https://img.shields.io/github/issues-raw/MDU-PHL/emmtyper)\n\n## Table of Content\n\n- [emmtyper - Emm Automatic Isolate Labeller](#emmtyper---emm-automatic-isolate-labeller)\n - [Table of Content](#table-of-content)\n - [Background](#background)\n - [Inner workings](#inner-workings)\n - [Requirements](#requirements)\n - [Installation](#installation)\n - [Brew](#brew)\n - [Conda](#conda)\n - [Usage](#usage)\n - [Example Commands](#example-commands)\n - [Result Format](#result-format)\n - [Short format](#short-format)\n - [Verbose format](#verbose-format)\n - [Visual format](#visual-format)\n - [Tags](#tags)\n - [Example outputs](#example-outputs)\n - [BLAST or PCR?](#blast-or-pcr)\n - [Authors](#authors)\n - [Maintainer](#maintainer)\n - [Issues](#issues)\n\n## Background\n\n`emmtyper` is a command line tool for emm-typing of _Streptococcus pyogenes_ using a _de novo_ or complete assembly.\n\nBy default, we use the U.S. Centers for Disease Control and Prevention trimmed emm subtype database,\nwhich can be found [here](https://www2a.cdc.gov/ncidod/biotech/strepblast.asp).\nThe database is curated by Dr. Velusamy Srinivasan. We take this opportunity to thank Dr. Srinivasan for his work.\n\n### Inner workings\n\nThe difficulty in performing M-typing is that there is a single gene of interest (`emm`), but two other homologue genes (`enn` and `mrp`), often referred to as `emm-like`. The homologue genes may or may not occur in the isolate of interest. When performing `emm-typing` from an assembly, we can distinguish betweeen one or more clusters of matches on the contigs. The best match for each of the clusters identified is then parsed from the BLAST results. Where possible, we try to distinguish between matches to the `emm` gene, and matches to one of the `emm-like` genes.\n\nPossible arrangments:\n\n       _emm_\n\n---->>>>>>>----\n\n        _mrp_                 _emm_                 _enn_\n\n---->>>>>>----->>>>>>------>>>>>>-----\n\n           _emm_                 _enn_\n\n----->>>>>>------>>>>>>-----\n\n## Requirements\n\n- `blastn` \u2265 2.6 (tested on 2.9)\n- `isPcr`\n- `python` \u2265 3.6\n\n## Installation\n\n### Brew\n\n```bash\nbrew install python blastn ispcr\npip3 install emmtyper\nemmtyper --help\n```\n\n### Conda\n\n```bash\nconda install -c bioconda emmtyper\n```\n\n## Usage\n\nemmtyper has 2 workflows: directly BLASTing the contigs against the DB, or using isPcr to generate an _in silico_ PCR product that is then BLASTed against the DB. The BLAST results go through emmtyper's business logic to distinguish between `emm` and `emm-like` alleles and derive the isoolate M-type.\n\nThe basic usage of emmtyper is in the form of:\n\n```bash\nemmtyper [options] contig1 contig2 ... contigN\n```\n\nAll the available options can be inspected with `emmtyper --help`. Options passed on to `blast` are tagged with `[BLAST]`, and those for `isPcr` are tagged with `[isPcr]`.\n\n```bash\nUsage: emmtyper [OPTIONS] [FASTA]...\n\n Welcome to emmtyper.\n\n Usage:\n\n emmtyper *.fasta\n\nOptions:\n --version Show the version and exit.\n -w, --workflow [blast|pcr] Choose workflow [default: blast]\n -d, --blast_db TEXT Path to EMM BLAST DB [default:\n /path/to/emmtyper/db/emm.fna]\n -k, --keep Keep BLAST and isPcr output files.\n [default: False]\n -d, --cluster-distance INTEGER Distance between cluster of matches to\n consider as different clusters. [default:\n 500]\n -o, --output TEXT Output stream. Path to file for output to a\n file. [default: stdout]\n -f, --output-format [short|verbose|visual]\n Output format.\n --dust [yes|no|level window linker]\n [BLAST] Filter query sequence with DUST.\n [default: no]\n --percent-identity INTEGER [BLAST] Minimal percent identity of\n sequence. [default: 95]\n --culling-limit INTEGER [BLAST] Total hits to return in a position.\n [default: 5]\n --mismatch INTEGER [BLAST] Threshold for number of mismatch to\n allow in BLAST hit. [default: 4]\n --align-diff INTEGER [BLAST] Threshold for difference between\n alignment length and subject length in BLAST\n hit. [default: 5]\n --gap INTEGER [BLAST] Threshold gap to allow in BLAST hit.\n [default: 2]\n --blast-path TEXT [BLAST] Specify full path to blastn\n executable.\n --primer-db TEXT [isPcr] PCR primer. Text file with 3\n columns: Name, Forward Primer, Reverse\n Primer. [default:\n /path/to/emmtyper/data/isPcrPrim.tsv]\n --min-perfect INTEGER [isPcr] Minimum size of perfect match at 3\\'\n primer end. [default: 15]\n --min-good INTEGER [isPcr] Minimum size where there must be 2\n matches for each mismatch. [default: 15]\n --max-size INTEGER [isPcr] Maximum size of PCR product.\n [default: 2000]\n --ispcr-path TEXT [isPcr] Specify full path to isPcr\n executable.\n --help Show this message and exit.\n```\n\nMost of these options are self explanatory. The two expections are:\n\n1. `--workflow`: choose between a `blast` only workflow, or a _in silico_ PCR followed by `blast` workflow. See below for more information.\n2. `--clust_distance` defines the minimum distance between clusters of matched sequences on the contigs to generate separate `emm-type` calls for each clusters. Clusters of matches that are within the minimum `clust-distance` are treated as a single location match.\n3. `--output_type` demonstrated below.\n\n### Example Commands\n\n```bash\n# basic call using the blast workflow for a single contig file\nemmtyper isolate1.fa\n# basic call using the pcr workflow for all the .fa files in a folder\nemmtyper -w pcr *.fa\n# basic call changing some of the options for blast\nemmtyper --keep --culling_limit 10 --align_diff 10 *.fa\n# call using the pcr workflow changing some of the isPcr options and\n# using the visual output format\nemmtyper -w pcr --output-format visual --max-size 2000 --mismatch 5 *.fa\n```\n\n## Result Format\n\n### Short format\n\nemmtyper has three different result formats: `short`, `verbose`, and `visual`.\n\nemmtyper by default produces the `short` version. This consists of five values in tab-separated format printed to stdout.\n\nThe values are:\n\n- Isolate name\n- Number of clusters: should be between 1 and 3, larger values could indicate contamination\n- Predicted `emm-type`\n- Possible `emm-like` alleles (semi-colon separated list)\n- EMM cluster: Functional grouping of EMM types into 48 clusters\n\n### Verbose format\n\nThe verbose result returns:\n\n- Isolate name\n- Number of BLAST hits\n- Number of clusters: should be between 1 and 3, larger values could indicate contamination\n- Predicted `emm-type`\n- Position(s) `emm-like` alleles in the assembly\n- Possible `emm-like` alleles (semi-colon separated list)\n- `emm-like` position(s) in assembly\n- EMM cluster: Functional grouping of EMM types into 48 clusters\n\nThe positions in the assembly are presented in the following format `:`.\n\n### Visual format\n\nThe visual result returns an ASCII map of the `emm` and, if found any `emm-alleles`, in the genome. Alleles on a single contig are separated by \"-\", with each \"-\" representing 500bp. Alleles found on different contigs are separated with tab.\n\n### Tags\n\nThe alleles can be tagged with a suffix character to indicate different possibilities:\n\n| Tag | Description | Additional Information |\n| --- | ------------------ | --------------------------------------------------------- |\n| \\* | Suspect `emm-like` | Allele flagged in the CDC database as possibly `emm-like` |\n| ~ | Imperfect score | Match score below 100% |\n\n### Example outputs\n\nExample for all result format:\n\nShort format:\n\n```\nIsolate1\t1\tEMM65.0\t\tE6\nIsolate2\t3\tEMM4.0\tEMM236.3*;EMM156.0*\tE1\nIsolate3\t2\tEMM52.1\tEMM134.2*\tD4\n```\n\nVerbose format:\n\n```\nIsolate1\t6\t1\tEMM65.0\t5:82168\tE6\nIsolate2\t8\t3\tEMM4.0\t2:104111\tEMM236.3*;EMM156.0*\t2:102762;2:105504\tE1\nIsolate3\t5\t2\tEMM52.1\t14:10502\tEMM134.2*\t5:913\tD4\n```\n\nVisual format:\n\n```\nIsolate1\tEMM65.0\nIsolate2\tEMM156.0*--EMM4.0--EMM236.3*\nIsolate3\tEMM52.1\tEMM134.2*\n```\n\n## BLAST or PCR?\n\nIf you are not sure which pipeline to choose from, we recommend using `blast` first. The `blast` workflow is fast and works well with assemblies. You can then use the `pcr` mode if you wish to perform some troubleshooting.\n\nFor example, the `pcr` workflow might be useful when troubleshooting isolates for which emmtyper has reported more than 3 clusteres and/or too many alleles.\n\nAn important thing to note is that not all `emm-like` alleles can be identified by using by PCR typing. The `pcr` workflow can be used to test which hits would be returned if carrying out conventional M-typing using PCR. However, the workflow is not foolproof, as _in silico_ PCR will fail when one or both primers do not align in the same contig (i.e., the allele is broken across two or more contigs) or there are mutations in the primer sites. In the former case, this might be an indication of poor sequence coverage or contamination.\n\n## Authors\n\n- Andre Tan\n- Torsten Seemann\n- Jake Lacey\n- Mark Davies\n- Liam Mcintyre\n- Hannah Frost\n- Deborah Williamson\n- Anders Gonçalves da Silva\n\nThe codebase for `emmtyper` was primarly written by Andre Tan as part of his Master's\nDegree in Bioinformatics. Torsten Seemann, Deborah Williamson, and Anders Gonçalves da Silva provided supervision and assistance.\n\nHannah Frost contributed with EMM clustering by suggesting we incorporate it in to the code, and providing the necessary information to do so and test it.\n\nJake Lacey, Liam Mcintyre, and Mark Davies provided assistance in validating `emmtyper`.\n\n## Maintainer\n\nThe code is actively maintained by MDU Bioinformatics Team.\n\nContact the principal maintainer at andersgs at gmail dot com.\n\n## Issues\n\nPlease post bug reports, questions, suggestions in the [Issues](https://github.com/MDU-PHL/emmtyper/issues) section.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MDUPHL/emmtyper", "keywords": "", "license": "GPL-3.0", "maintainer": "Bioinformatics @ MDUPHL", "maintainer_email": "anders.goncalves@unimelb.edu.au", "name": "emmtyper", "package_url": "https://pypi.org/project/emmtyper/", "platform": "", "project_url": "https://pypi.org/project/emmtyper/", "project_urls": { "Homepage": "https://github.com/MDUPHL/emmtyper" }, "release_url": "https://pypi.org/project/emmtyper/0.1.0/", "requires_dist": [ "scipy (>=1.1.0)", "numpy (>=1.15.0)", "python-dateutil", "click" ], "requires_python": ">=3.6, <4", "summary": "Streptococcus pyogenes in silico EMM typer", "version": "0.1.0" }, "last_serial": 5788844, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d86fbd0c32d849645f4bfd12ea7e5034", "sha256": "03a4da63f67d1072cdc49fdbd00ff25ba10449608c7749a9863117c6686ba2f8" }, "downloads": -1, "filename": "emmtyper-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d86fbd0c32d849645f4bfd12ea7e5034", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <4", "size": 181227, "upload_time": "2019-09-05T22:52:53", "url": "https://files.pythonhosted.org/packages/12/ab/524bd5cb77f0bb8d0ac074395bb91380b061df385c888087173553c193fc/emmtyper-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6137063d0b8eb355d3604f04f14a889", "sha256": "bd34ebe10f2596781f69a1d6101ce87b447ff033ff3443e5aa8d390247fa4841" }, "downloads": -1, "filename": "emmtyper-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a6137063d0b8eb355d3604f04f14a889", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <4", "size": 165112, "upload_time": "2019-09-05T22:52:57", "url": "https://files.pythonhosted.org/packages/41/5e/50b9169244c166cf0a82f8e496eb58f1213005fe05e21219c41b189a41b2/emmtyper-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d86fbd0c32d849645f4bfd12ea7e5034", "sha256": "03a4da63f67d1072cdc49fdbd00ff25ba10449608c7749a9863117c6686ba2f8" }, "downloads": -1, "filename": "emmtyper-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d86fbd0c32d849645f4bfd12ea7e5034", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <4", "size": 181227, "upload_time": "2019-09-05T22:52:53", "url": "https://files.pythonhosted.org/packages/12/ab/524bd5cb77f0bb8d0ac074395bb91380b061df385c888087173553c193fc/emmtyper-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6137063d0b8eb355d3604f04f14a889", "sha256": "bd34ebe10f2596781f69a1d6101ce87b447ff033ff3443e5aa8d390247fa4841" }, "downloads": -1, "filename": "emmtyper-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a6137063d0b8eb355d3604f04f14a889", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <4", "size": 165112, "upload_time": "2019-09-05T22:52:57", "url": "https://files.pythonhosted.org/packages/41/5e/50b9169244c166cf0a82f8e496eb58f1213005fe05e21219c41b189a41b2/emmtyper-0.1.0.tar.gz" } ] }