Multi-Nucleotide Variant detection - codon-level annotation from VCF or iVar TSV. Pure Rust · no C dependencies · cross-platform (macOS, Linux, Windows)
Documentation · Install · Quick start · Citation · Ask a question
English · Español
Paula Ruiz-Rodriguez1
and Mireia Coscolla1
1. Institute for Integrative Systems Biology, I2SysBio, University of Valencia-CSIC, Valencia, Spain
get_MNV finds cases where two or more SNVs fall in the same codon and should be interpreted together. These combined changes can produce a different amino acid effect than the individual SNVs alone.
It takes variant calls (VCF or iVar variants.tsv), a reference FASTA and a
gene annotation (GFF/GFF3/GTF or a simple TSV), optionally the aligned reads,
and writes annotated variants as TSV, VCF, or both, plus a self-contained
interactive HTML report.
- Groups SNVs by codon and reports SNP, MNV, or SNP/MNV calls
- Recalculates amino acid changes from the full codon haplotype
- Decomposes
REF/ALTalleles into SNV, MNV, insertion, deletion, delins and complex indel components - Counts SNP, MNV and exact indel support from a BAM, with strand bias
- Supports 9 NCBI genetic code tables
- Ships a desktop GUI with drag and drop and a genomic track viewer
Download the latest release for your platform:
| Platform | Download |
|---|---|
| 🍎 macOS (Apple Silicon) | get_MNV_1.1.5_aarch64.dmg |
| 🍎 macOS (Intel) | get_MNV_1.1.5_x64.dmg |
| 🐧 Linux | Releases page |
| 🪟 Windows | Releases page |
Note
macOS users: The app is not signed with an Apple Developer certificate. On first launch, right-click the app → Open → click Open in the dialog. See Apple support for details.
conda install -c bioconda get_mnvor download a pre-built binary:
wget https://github.com/PathoGenOmics-Lab/get_MNV/releases/latest/download/get_mnv
chmod +x get_mnv
./get_mnv --helpor build from source:
git clone https://github.com/PathoGenOmics-Lab/get_MNV.git
cd get_MNV
cargo install --path .get_mnv \
--vcf variants.vcf \
--bam reads.bam \
--fasta reference.fasta \
--gff genes.gff3 \
--both \
--report run.html--bam is optional and is what turns "these two changes are in one codon" into
"these two changes are on one molecule". Use --tsv instead of --vcf for an
iVar variants.tsv, and --genes instead of --gff for a four-column
annotation. get_mnv --help lists every option, and the
CLI reference
explains what each one changes about the answer.
The output looks like this:
Chromosome Gene Positions Base Changes AA Changes Variant Type Change Type
MTB_anc Rv0095c 104838 T Asp126Glu SNP Non-synonymous
MTB_anc Rv0095c 104941,104942 T,G Gly92Gln SNP/MNV Non-synonymous
MTB_anc esxL 1341102,1341103 T,C Arg33Ser SNP/MNV Non-synonymous
A ready-to-run M. tuberculosis dataset (reference, genes, VCF, and a tiny demo
BAM for the read viewer) lives in example/. The
tutorial walks
through it.
https://pathogenomics-lab.github.io/get_MNV/ is the manual, in English and
Spanish: every option with its default, what each output column means, and what
the tool does and does not take on. The same pages are in docs/ in
this repository.
| Start here | |
|---|---|
| Command line tutorial | A first run end to end on the bundled data, with the output explained line by line |
| Common recipes | Ready-to-run commands for the usual jobs |
| Desktop GUI tutorial | The same run in the app, screen by screen |
| Reference | |
|---|---|
| CLI reference | Every option, with its default and what it changes |
| Input formats | What the VCF, FASTA, annotation and BAM have to look like |
| Output formats | Every TSV column, VCF INFO key and JSON field |
| Example report | A real HTML report, open it and click around |
| How it works | |
|---|---|
| Scope and compatibility | What get_MNV takes on, what it leaves to your caller, and where its limits are |
| Indels and local haplotypes | How an indel is read off the alignments and what each number counts |
| Linkage | Telling a real haplotype from two variants that merely share a codon |
| Troubleshooting | The errors that stop a run, and what each warning is telling you |
Version history is in CHANGELOG.md.
If the manual does not answer it, ask in Q&A. Questions about why a variant came out the way it did belong there rather than in the issue tracker, and an answer marked as the answer is the one the next person finds. Issues are for something that crashed, refused to run, or is plainly wrong.
The core CLI and library live in src/. The desktop app uses Tauri in
src-tauri/ and React/TypeScript in frontend/.
cargo test --workspace
npm run build --prefix frontend
bash scripts/build_get_mnv.sh
bash scripts/build_gui_bundle.shtests/scenarios/ is a Python harness that builds synthetic FASTA, GFF, VCF and
BAM inputs from declarative scenarios, runs the compiled binary and checks each
output row by row; it needs samtools on PATH. See
tests/scenarios/README.md for the cases it covers
and how to add one.
cargo build # produces target/debug/get_mnv
python3 tests/scenarios/run.py # run every scenarioIf you use get_MNV in your research, please cite:
Ruiz-Rodriguez P, Coscolla M. get_MNV: Multi-Nucleotide Variant detection tool. Zenodo. doi: 10.5281/zenodo.13907422
@software{ruiz-rodriguez_get_mnv_2026,
title = {get\_MNV: Multi-Nucleotide Variant detection tool},
author = {Ruiz-Rodriguez, Paula and Coscoll{\'a}, Mireia},
year = {2026},
doi = {10.5281/zenodo.13907422},
url = {https://github.com/PathoGenOmics-Lab/get_MNV},
version = {1.1.5},
license = {AGPL-3.0}
}GNU Affero General Public License v3.0
Click for the 3D printable logo:
|
Paula Ruiz-Rodriguez 💻 🔬 🤔 🔣 🎨 🔧 |
Mireia Coscolla 🔍 🤔 🧑🏫 🔬 📓 |
This project follows the all-contributors specification (emoji key).

