Skip to content

get_MNV logo get_MNV logo

License: AGPL v3 Bioconda Version DOI PGO

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


What is get_MNV?

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.

MNV amino acid reclassification MNV amino acid reclassification

  • Groups SNVs by codon and reports SNP, MNV, or SNP/MNV calls
  • Recalculates amino acid changes from the full codon haplotype
  • Decomposes REF/ALT alleles 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

Installation

Desktop GUI

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.

Command line

conda install -c bioconda get_mnv

or download a pre-built binary:

wget https://github.com/PathoGenOmics-Lab/get_MNV/releases/latest/download/get_mnv
chmod +x get_mnv
./get_mnv --help

or build from source:

git clone https://github.com/PathoGenOmics-Lab/get_MNV.git
cd get_MNV
cargo install --path .

Quick start

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.

Documentation

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.

For developers

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.sh

tests/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 scenario

Citation

If 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}
}

License

GNU Affero General Public License v3.0

Fun

Click for the 3D printable logo:

get_MNV 3D logo


✨ Contributors

About

Identifies multiple SNVs within the same codon, reclassifies them as MNVs, and accurately computes resulting amino acid changes from genomic reads

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages