eggNOG-mapper is a tool for fast functional annotation of novel sequences (proteins, CDS, genomes, metagenomes) using precomputed orthology data from the eggNOG database. Functional terms — GO, KEGG orthologs/pathways/modules, EC numbers, PFAM domains, CAZy families, BiGG reactions and more — are transferred from fine-grained orthologs, which is more precise than best-hit/BLAST transfer because it avoids annotation from close paralogs.
v3 targets the eggNOG 7 database (~59 million proteins across the tree of life). It is not compatible with eggNOG 5 data. See USAGE.md for the complete manual (basic → advanced → HPC → containers).
| Best for | Install | |
|---|---|---|
| ① Free web service — https://eggnog-mapper.cgmlab.org | small/moderate jobs, zero setup | none |
| ② Apptainer/Singularity image | reproducible runs, HPC clusters | one .sif (all tools bundled) |
| ③ pip / from source | pipelines, development | Python package + databases |
Prebuilt images and databases: https://data.cgmlab.org/eggnog-mapper/
- eggNOG 7 database with integer-encoded orthology and phylogeny-aware speciation events (~59M proteins). eggNOG 5 is no longer supported.
- Curated-only functional donors — only manually curated terms are used as annotation donors, stopping the propagation of automated misannotations, while achieving better coverage than v2.
- Per-seed taxonomic ceiling (
--tax_scope auto, default) replaces the old predefined scope lists; each seed narrows to its most informative level. Fixed clades (Metazoa,33208, …) are still accepted. - Cascade annotation engine with a lazy closest-cascade on by default and seed sorting + de-duplication — large speedups on redundant proteome/UniProt scale inputs, byte-identical output.
- Compact 22-column output with a positional
annotation_confidencefield (per-source confidence, documented in the header). See USAGE › Output files. --selftest— one command downloads a tiny reference set and verifies the install reproduces the expected annotations.- Self-contained Apptainer image bundling DIAMOND, MMseqs2, HMMER and
Prodigal (
apptainer/build.sh). - Optional MMseqs2 backend, gzip/bzip2 input autodetection, Cython-accelerated
inner loops, and
--resumefor interrupted runs.
pip install eggnog-mapper
# or from source:
git clone https://github.com/eggnogdb/eggnog-mapper.git
cd eggnog-mapper && pip install .Requires Python ≥ 3.9 and the search tools on PATH:
| tool | role | in v3 |
|---|---|---|
| DIAMOND | seed search | default backend |
| MMseqs2 | seed search | optional backend (-m mmseqs) |
| Prodigal | gene prediction | genome/metagenome input |
| HMMER | domain realignment | only for --pfam_realign |
Install e.g. conda install -c bioconda diamond mmseqs2 prodigal hmmer.
All of these are bundled in the Apptainer image — nothing to install there.
python download_eggnog_data.py -y --data_dir /path/to/dataData is versioned by MAJOR.MINOR (emapper-3.0/) and pinned to the eggNOG DB
version: a minor bump (3.0 → 3.1) means the DB changed and must be
re-downloaded; patch releases reuse the same data. Core download ≈ 45 GB
(annotation DB + DIAMOND DB + taxonomy + prebuilt caches); add -M for the
optional MMseqs2 DB, -P for Pfam. Details:
USAGE › Databases.
# Proteins (default input type)
emapper.py -i proteins.fa -o my_run --data_dir /path/to/data --cpu 8
# CDS / genome / metagenome
emapper.py -i cds.fna --itype CDS -o my_run --data_dir DATA --cpu 8
emapper.py -i genome.fna --itype genome -o my_run --data_dir DATA --cpu 8
emapper.py -i contigs.fna --itype metagenome -o my_run --data_dir DATA --cpu 8
# Verify your installation end-to-end
emapper.py --selftestOutput is written as my_run.emapper.annotations (22-column TSV) plus optional
.xlsx / .orthologs / .gff. Full options, output-column reference, advanced
usage and HPC performance tuning are in USAGE.md.
USAGE.md — the complete manual: basic usage, databases, output format, Apptainer, advanced options, and maximum-performance tips for HPC clusters.
If you use eggNOG-mapper, please cite:
[1] eggNOG-mapper v2: functional annotation, orthology assignments, and domain
prediction at the metagenomic scale. Carlos P. Cantalapiedra,
Ana Hernandez-Plaza, Ivica Letunic, Peer Bork, Jaime Huerta-Cepas. 2021.
Molecular Biology and Evolution, msab293, https://doi.org/10.1093/molbev/msab293
[2] eggNOG v7: phylogeny-based orthology predictions and functional annotations.
Ana Hernández-Plaza, Ziqi Deng, Fabian Robledo-Yagüe, Damian Szklarczyk,
Christian von Mering, Peer Bork, Jaime Huerta-Cepas. Nucleic Acids Research,
Volume 54, Issue D1, 6 January 2026, Pages D402-D408.
https://doi.org/10.1093/nar/gkaf1249
Please also cite the search tool used (the end-of-run message prints the exact versions):
[DIAMOND] Sensitive protein alignments at tree-of-life scale using DIAMOND.
Buchfink B, Reuter K, Drost HG. 2021.
Nature Methods 18, 366–368. https://doi.org/10.1038/s41592-021-01101-x
[MMSEQS2] MMseqs2 enables sensitive protein sequence searching for the analysis
of massive data sets. Steinegger M & Söding J. 2017.
Nat. Biotech. 35, 1026–1028. https://doi.org/10.1038/nbt.3988
[PRODIGAL] Prodigal: prokaryotic gene recognition and translation initiation
site identification. Hyatt et al. 2010.
BMC Bioinformatics 11, 119. https://doi.org/10.1186/1471-2105-11-119
For eggNOG 5 databases, use the v2 branch or the last v2 release:
pip install eggnog-mapper==2.1.15v2 and v3 databases are not interchangeable — v3 only works with eggNOG 7.