Pairwise dN/dS (Ka/Ks) and per-gene pN/pS from codon-aligned sequences or VCF files. Written in Rust · one binary, no runtime dependencies · self-contained interactive HTML reports.
Install · Tutorial · CLI reference · Citation · Ask a question
New to eskaks? Start with the hands-on tutorial.
Paula Ruiz-Rodriguez1
and Mireia Coscolla1
1. Institute for Integrative Systems Biology, I2SysBio, University of Valencia-CSIC, Valencia, Spain
Fast pairwise dN/dS (Ka/Ks) and per-gene pN/pS for measuring natural selection on protein-coding genes. Two modes:
eskaks fasta: pairwise dN/dS from codon-aligned FASTA (Nei-Gojobori or Li/LPB93 model).eskaks vcf: per-gene pN/pS from a VCF + reference + GFF3, with a genome-wide neutrality scan and a self-contained interactive HTML report.
Written in Rust, and the binary runs with nothing installed alongside it. Up to 2,641× faster than KaKs_Calculator (R² = 1.0 on the Li model).
| Feature | Description |
|---|---|
| 🧬 Two dN/dS models | Nei-Gojobori (1986) and Li (1993)/LPB93, via precomputed lookup tables |
| 🔬 Per-gene selection scan | pN/pS per gene with a mid-p binomial neutrality test, FDR, and Bonferroni |
| 📐 Spectrum-aware sites | --kappa ts/tv weighting for transition-biased genomes (e.g. M. tuberculosis) |
| 🧮 Population genetics | McDonald-Kreitman test, bootstrap CIs, and a --genomic-control λ correction |
| 🖥️ Interactive report | One self-contained HTML dashboard: colour-blind mode, scales to whole genomes |
| ⚡ Fast & flexible | Parallel and deterministic; TSV/CSV/JSON/SVG output; 20 NCBI genetic codes |
conda install -c bioconda eskaksBioconda builds linux-64 and osx-64. On Apple silicon, prefix the command with
CONDA_SUBDIR=osx-64 to install the Intel build under Rosetta, or take the native
arm64 binary from the release below.
Or download a binary from the
latest release, which
ships macOS (Apple silicon and Intel), Linux x86_64 and Windows x86_64 builds with a
SHA256SUMS file and signed build provenance:
gh attestation verify eskaks-<version>-<platform>.tar.gz --owner PathoGenOmics-LabOr build from source, which needs a Rust toolchain of 1.85 or newer and a C compiler:
git clone https://github.com/PathoGenOmics-Lab/eskaks.git
cd eskaks && make release && cp target/release/eskaks ~/.local/bin/cargo install eskaks is not available yet. The
installation guide has the
details, including what make release does differently from a plain cargo build.
The commands below run on the bundled examples/, so you need no data of
your own:
# pairwise dN/dS from aligned sequences
eskaks fasta examples/genes.fasta -o first_run
# per-gene pN/pS + an interactive HTML report
eskaks vcf --ref examples/toy_genome/reference.fasta \
--gff examples/toy_genome/genes.gff3 --vcf examples/toy_genome/variants.vcf \
--genetic-code 11 --report -o toy_scan # → open toy_scan_report.html--report builds a single self-contained HTML dashboard (interactive Manhattan /
volcano / QQ, McDonald-Kreitman, colour-blind mode, scales to whole genomes; no
internet needed). See a
live example report.
Everything beyond this page lives on the documentation site,
https://pathogenomics-lab.github.io/eskaks/. The docs/ folder in this repository
holds its Markdown source, which is written for the rendered site: read it there, where
the diagrams, formulas and cross-links work.
| I want to | Go to |
|---|---|
| Install eskaks | Installation |
| Learn the tool step by step | Getting started tutorial |
| Copy a command for my use case | Quick start |
| Look up a flag | CLI reference |
| Scan a genome for selection | VCF analysis (pN/pS) |
| Understand what my numbers mean | Interpreting results |
| Choose a substitution model | Models |
| Know what each output column is | Output formats |
| Check speed and accuracy | Performance & accuracy |
| Look up a term | Glossary |
| Solve a problem | FAQ |
| Contribute code | Development |
If you use eskaks in your research, please cite:
Ruiz-Rodriguez P, Coscollá M. eskaks: fast pairwise dN/dS and per-gene pN/pS from sequences or VCFs. Zenodo, 2026. https://doi.org/10.5281/zenodo.21992154
@software{ruiz-rodriguez_eskaks_2026,
title = {eskaks: fast pairwise dN/dS and per-gene pN/pS from sequences or VCFs},
author = {Ruiz-Rodriguez, Paula and Coscoll{\'a}, Mireia},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.21992154},
url = {https://github.com/PathoGenOmics-Lab/eskaks},
version = {0.1.0},
license = {GPL-3.0-only}
}That DOI is the archive of 0.1.0 specifically, which is what a methods section should carry: it pins the reference to the version the results came from. To cite eskaks in general, use the concept DOI 10.5281/zenodo.21992153, which always resolves to the newest version.
GNU General Public License v3.0
|
Paula Ruiz-Rodriguez 💻 🔬 🤔 🔣 🎨 🔧 |
Mireia Coscolla 🔍 🤔 🧑🏫 🔬 📓 |
This project follows the all-contributors specification (emoji key).