Skip to content

Commit

Permalink
Merge pull request #38 from MDU-PHL/mendevar
Browse files Browse the repository at this point in the history
Mendevar
  • Loading branch information
kristyhoran authored Feb 2, 2025
2 parents aece5c9 + e4b4c40 commit 8c5f304
Show file tree
Hide file tree
Showing 27 changed files with 14,196 additions and 15,425 deletions.
16 changes: 6 additions & 10 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,21 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
blast-version: [2.9.0, 2.10.1, 2.11.0]
python-version: [3.7, 3.8, 3.9]
blast-version: [2.13.0]

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
channels: conda-forge, bioconda
activate-environment: meningotype
- name: Install BLAST
- name: Install meningotype and dependencies
shell: bash -l {0}
run: |
conda install blast=${{matrix.blast-version}}
- name: Install LisSero and dependencies
shell: bash -l {0}
run: |
conda install flake8 ispcr mlst
conda install blast=${{matrix.blast-version}} flake8 ispcr mlst
pip install .
- name: Lint with flake8
shell: bash -l {0}
Expand All @@ -60,7 +56,7 @@ jobs:
build-n-publish:
name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
needs: test
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Set up Python 3.7
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ meningotype.egg-info/*
venv/*
*.pyc
build
dist
dist
testMendMain.py
meningotype_26_MenB_since_Aug_2019.tsv
test_class.py
notes_validation.txt
191 changes: 97 additions & 94 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- MLST
- Finetyping (*porA*, *fetA*, *porB*)
- Bexsero antigen sequence typing (BAST) (*fHbp*, *NHBA*, *NadA*, *PorA*)
- MenDeVAR (Meningococcal Deduced Vaccine Antigen Reactivity) Index

## Quick start

Expand All @@ -13,150 +14,138 @@
$ pip install git+https://github.com/MDU-PHL/meningotype.git
# just serotype
$ meningotype NMA.fasta
$ meningotype *.fna
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
NMA.fasta A ctrA - - - - - - - -
SAMPLE_ID SEROGROUP ctrA
NMA.fasta A ctrA
# include all genotypes
$ meningotype --all NMA.fasta
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
NMA.fasta A ctrA 4 7,13-1 F1-5 NEIS2020_28 5 29 0 639
# type lots of files at once
# type lots of files at once and include all typing results
$ meningotype --all *.fna
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
A.fna A ctrA 4 7,13-1 F1-5 NEIS2020_28 5 29 0 639
B.fna B ctrA 8 5-2,10-1 F3-6 NEIS2020_12 16 20 8 150
C.fna C ctrA 177 21,26-2 F1-5 NEIS2020_3 17 101 9 118
W.fna W ctrA 11 5,2 F1-1 NEIS2020_244 623 29 6 141
X.fna X ctrA 181 5-1,10-1 F4-23 NEIS2020_509 391 358 0 -
Y.fna Y ctrA 23 5-2,10-1 F4-1 NEIS2020_67 25 7 0 228
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST Bexsero MenDeVAR Trumenba MenDeVAR
A.fna A ctrA 4 7,13-1 F1-5 NEIS2020_28 5 29 0 639 insufficient data insufficient data
B.fna B ctrA 8 5-2,10-1 F3-6 NEIS2020_12 16 20 8 150 exact match cross-reactive
C.fna C ctrA 177 21,26-2 F1-5 NEIS2020_3 17 101 9 118 insufficient data insufficient data
W.fna W ctrA 11 5,2 F1-1 NEIS2020_244 623 29 6 141 cross-reactive insufficient data
X.fna X ctrA 181 5-1,10-1 F4-23 NEIS2020_509 391 358 0 3042 insufficient data insufficient data
Y.fna Y ctrA 23 5-2,10-1 F4-1 NEIS2020_67 25 7 0 228 insufficient data cross-reactive
```

## Installation

### Dependencies

* [Python >=3.6.x](https://www.python.org/)
* [Python >=3.7.x](https://www.python.org/)
* [BioPython](http://biopython.org/)
* [isPcr v33](http://hgwdev.cse.ucsc.edu/~kent/src/)
* [NCBI BLAST+ >= 2.4](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE_TYPE=BlastDocs&DOC_TYPE=Download)
* [NCBI BLAST+ >= 2.13](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE_TYPE=BlastDocs&DOC_TYPE=Download)
* [mlst](https://github.com/tseemann/mlst)

The simplest way to install dependencies is to use the Brew (MacOS) or
Linuxbrew (Linux) packaging system.

```
$ brew tap brewsci/bio
$ brew install ispcr blast mlst
```

### Installing

The easiest way of installing `meningotype` is using `pip`:
```
$ pip install --user git+https://github.com/MDU-PHL/meningotype.git
```

The `--user` option will install the package locally, rather than in the global `python` directory.

Thus, by default, this will install the package in `$HOME/.local/`, and the executable in `$HOME/.local/bin/`.
To install the executable in a custom location (e.g., `$HOME/bin`), use the following:
```
$ pip install --install-option="--install-scripts=$HOME/bin" --user git+https://github.com/MDU-PHL/meningotype.git
```

To upgrade to a newer version:
The easiest way of installing `meningotype` is using `conda`, which will install all required dependencies:
```
$ pip install --upgrade --install-option="--install-scripts=$HOME/bin" --user git+https://github.com/MDU-PHL/meningotype.git
$ conda create -n meningotype -c bioconda meningotype
```

### Testing

Once installed, you can run the following to ensure `meningotype` is successfully working:

$ meningotype.py --test
$ meningotype --version
meningotype v0.9.0

$ meningotype --checkdeps
Checking dependencies:
isPcr ....... Found "/home/user/bin/isPcr" ....... [OK]
blastn ....... Found "/home/user/bin/blastn" ....... [OK]
blastx ....... Found "/home/user/bin/blastx" ....... [OK]
mlst ....... Found "/home/user/bin/mlst" ....... [OK]


$ meningotype --test

If everything works, you will see the following:

```
$ meningotype.py --test
Running meningotype.py on test examples ...
$ meningotype.py A.fna B.fna C.fna W.fna X.fna Y.fna
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
meningotype/test/A.fna A ctrA - - - - - - - -
meningotype/test/B.fna B ctrA - - - - - - - -
meningotype/test/C.fna C ctrA - - - - - - - -
meningotype/test/W.fna W ctrA - - - - - - - -
meningotype/test/X.fna X ctrA - - - - - - - -
meningotype/test/Y.fna Y ctrA - - - - - - - -
$ meningotype --test
Running meningotype on test examples ...
$ meningotype A.fna B.fna C.fna W.fna X.fna Y.fna
SAMPLE_ID SEROGROUP ctrA
A.fna A ctrA
B.fna B ctrA
C.fna C ctrA
W.fna W ctrA
X.fna X ctrA
Y.fna Y ctrA
```

or to check finetyping:

```
$ meningotype.py --test --finetype
Running meningotype.py on test examples ...
$ meningotype.py A.fna B.fna C.fna W.fna X.fna Y.fna
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
meningotype/test/A.fna A ctrA - 7,13-1 F1-5 - - - - -
meningotype/test/B.fna B ctrA - 5-2,10-1 F3-6 - - - - -
meningotype/test/C.fna C ctrA - 21,26-2 F1-5 - - - - -
meningotype/test/W.fna W ctrA - 5,2 F1-1 - - - - -
meningotype/test/X.fna X ctrA - 5-1,10-1 F4-23 - - - - -
meningotype/test/Y.fna Y ctrA - 5-2,10-1 F4-1 - - - - -
$ meningotype --test --finetype
Running meningotype on test examples ...
$ meningotype A.fna B.fna C.fna W.fna X.fna Y.fna
SAMPLE_ID SEROGROUP ctrA PorA FetA
A.fna A ctrA 7,13-1 F1-5
B.fna B ctrA 5-2,10-1 F3-6
C.fna C ctrA 21,26-2 F1-5
W.fna W ctrA 5,2 F1-1
X.fna X ctrA 5-1,10-1 F4-23
Y.fna Y ctrA 5-2,10-1 F4-1
```

or to check finetyping and Bexsero antigen sequence typing:
or to check finetyping and Bexsero antigen sequence typing and MenDeVAR Vaccine Antigen Reactivity Index:

```
$ meningotype.py --test --all
$ meningotype --test --all
Running meningotype.py on test examples ...
$ meningotype.py A.fna B.fna C.fna W.fna X.fna Y.fna
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST
meningotype/test/A.fna A ctrA 4 7,13-1 F1-5 NEIS2020_28 5 29 0 639
meningotype/test/B.fna B ctrA 8 5-2,10-1 F3-6 NEIS2020_12 16 20 8 150
meningotype/test/C.fna C ctrA 177 21,26-2 F1-5 NEIS2020_3 17 101 9 118
meningotype/test/W.fna W ctrA 11 5,2 F1-1 NEIS2020_244 623 29 6 141
meningotype/test/X.fna X ctrA 181 5-1,10-1 F4-23 NEIS2020_509 391 358 0 -
meningotype/test/Y.fna Y ctrA 23 5-2,10-1 F4-1 NEIS2020_67 25 7 0 228
SAMPLE_ID SEROGROUP ctrA MLST PorA FetA PorB fHbp NHBA NadA BAST Bexsero MenDeVAR Trumenba MenDeVAR
A.fna A ctrA 4 7,13-1 F1-5 NEIS2020_28 5 29 0 639 insufficient data insufficient data
B.fna B ctrA 8 5-2,10-1 F3-6 NEIS2020_12 16 20 8 150 exact match cross-reactive
C.fna C ctrA 177 21,26-2 F1-5 NEIS2020_3 17 101 9 118 insufficient data insufficient data
W.fna W ctrA 11 5,2 F1-1 NEIS2020_244 623 29 6 141 cross-reactive insufficient data
X.fna X ctrA 181 5-1,10-1 F4-23 NEIS2020_509 391 358 0 3042 insufficient data insufficient data
Y.fna Y ctrA 23 5-2,10-1 F4-1 NEIS2020_67 25 7 0 228 insufficient data cross-reactive
```

## Usage

```
$ meningotype.py -h
$ meningotype -h
usage:
meningotype.py [OPTIONS] <fasta1> <fasta2> <fasta3> ... <fastaN>
meningotype [OPTIONS] <fasta1> <fasta2> <fasta3> ... <fastaN>
In silico typing for Neisseria meningitidis
Default: Serotyping, MLST and ctrA PCR
Default: Serotyping and ctrA PCR
PCR Serotyping Ref: Mothershed et al, J Clin Microbiol 2004; 42(1): 320-328
PorA and FetA typing Ref: Jolley et al, FEMS Microbiol Rev 2007; 31: 89-96
Bexsero antigen sequence typing (BAST) Ref: Brehony et al, Vaccine 2016; 34(39): 4690-4697
See also http://www.neisseria.org/nm/typing/
MenDeVAR Vaccine Reactivity Index Ref: Rodrigues et al. J Clin Microbiol. 2020; 59(1):e02161-20
See also https://pubmlst.org/organisms/neisseria-spp
positional arguments:
FASTA input FASTA files eg. fasta1, fasta2, fasta3 ... fastaN
optional arguments:
-h, --help show this help message and exit
--finetype perform porA and fetA fine typing (default=off)
--porB perform porB sequence typing (NEIS2020) (default=off)
--bast perform Bexsero antigen sequence typing (BAST) (default=off)
--mlst perform MLST (default=off)
--all perform MLST, porA, fetA, porB, BAST typing (default=off)
--db DB specify custom directory containing allele databases for porA/fetA typing
directory must contain database files: "FetA_VR.fas", "PorA_VR1.fas", "PorA_VR2.fas"
for Bexsero typing: "fHbp_peptide.fas", "NHBA_peptide.fas", "NadA_peptide.fas", "BASTalleles.txt"
--printseq save porA/fetA or BAST allele sequences to file (default=off)
--updatedb update allele database from <pubmlst.org>
--test run test example
--version show program's version number and exit
-h, --help show this help message and exit
--finetype perform porA and fetA fine typing (default=off)
--porB perform porB sequence typing (NEIS2020) (default=off)
--bast perform Bexsero antigen sequence typing (BAST) (default=off)
--mlst perform MLST (default=off)
--all perform MLST, porA, fetA, porB, BAST typing and MenDeVAR index (default=off)
--db DB specify custom directory containing allele databases for porA/fetA typing
directory must contain database files: "FetA_VR.fas", "PorA_VR1.fas", "PorA_VR2.fas"
for Bexsero typing: "fHbp_peptide.fas", "NHBA_peptide.fas", "NadA_peptide.fas", "BASTalleles.txt"
--printseq DIR specify directory to save extracted porA/fetA/porB or BAST allele sequences (default=off)
--cpus CPUS number of cpus to use in BLAST search (default=1)
--updatedb update allele database from <pubmlst.org>
--test run test example
--checkdeps check dependencies are installed and exit
--version show program's version number and exit
```

## Examples
Expand All @@ -168,27 +157,39 @@ To perform *in silico* serotyping on FASTA files:
The serotypes are printed in tab-separated format to `stdout`.
To save results to a tab-separated text file, redirect `stdout`:

$ meningotype <fasta1> <fasta2> <fasta3> ... <fastaN> > results.txt
$ meningotype <fasta1> <fasta2> <fasta3> ... <fastaN> > results.tsv

To perform *in silico* serotyping AND finetyping of the porA and fetA genes:

$ meningotype --finetype <fasta1> <fasta2> <fasta3> ... <fastaN>

To save finetyping sequences of the alleles to a file (eg. for uploading
"new" sequences to [http://pubmlst.org/neisseria/](http://pubmlst.org/neisseria/)):
"new" sequences to [http://pubmlst.org/neisseria/](https://pubmlst.org/organisms/neisseria-spp/)):

$ meningotype --finetype --printseq <fasta1> <fasta2> <fasta3> ... <fastaN>

These are placed into a folder called `printseq` in the current directory.

To perform *in silico* serotyping AND finetyping AND Bexsero antigen sequence typing AND determine the MenDeVAR Vaccine Antigen Reactivity Index

`$ meningotype --all --printseq <fasta1> <fasta2> <fasta3> ... <fastaN>`


The MenDeVAR index assigns each record one of four categories:

1. Green / Exact match: isolate contains one or more exact sequence match(es) to antigenic variants found in the vaccine
2. Amber / Cross-reactive: isolate contains one or more antigenic variant deemed cross-reactive to vaccine variants through experimental studies.
3. Red / No match: all the isolate's antigenic variants have been deemed not cross-reactive to vaccine variants through experimental studies.
4. Grey / Insufficient data: isolate contains antigens for which there is insufficient data available or which are yet to be tested in experimental studies.


## Updating the allele databases

To update the allele databases from http://pubmlst.org/neisseria/
To update the allele databases from https://pubmlst.org/organisms/neisseria-spp/

$ meningotype.py --updatedb
$ meningotype --updatedb

A copy of the original database is saved to `*.old` just in case,
A copy of the original database is saved to `*.old`,
but is overwritten with each subsequent `--updatedb`.
*Ensure you back up your old databases if you wish to keep them.*

Expand All @@ -201,7 +202,7 @@ GitHub https://github.com/MDU-PHL/meningotype
## Bugs

* Software - submit via the [GitHub issues page](https://github.com/MDU-PHL/meningotype/issues).
* Database - contact the [pubmlst curator](mailto:[email protected])
* Database - contact the [PubMLST curator](mailto:[email protected])

## Software Licence

Expand All @@ -210,6 +211,7 @@ GitHub https://github.com/MDU-PHL/meningotype
## Authors

* Jason Kwong (@kwongjc)
* Andreas Stroehlein (@stroehleina)
* Anders Gonçalves da Silva (@drandersg)
* Torsten Seemann (@torstenseemann)

Expand All @@ -220,4 +222,5 @@ GitHub https://github.com/MDU-PHL/meningotype
* [Jolley et al. FEMS Microbiol Rev. 2007; 31:89-96.](http://onlinelibrary.wiley.com/doi/10.1111/j.1574-6976.2006.00057.x/full)
* [Brehony et al. Vaccine. 2016; 34(39):4690-4697.](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5012890/)
* [Bambini et al. PLoS One. 2013; 8(5):e65043.](http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0065043)
* [Rodrigues et al. J Clin Microbiol. 2020; 59(1):e02161-20.](https://journals.asm.org/doi/10.1128/JCM.02161-20)

2 changes: 1 addition & 1 deletion meningotype/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.8.5"
__version__ = "0.9.0"
Loading

0 comments on commit 8c5f304

Please sign in to comment.