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
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.
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.13907423
@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.13907423},
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).

