eskaks¶
Fast pairwise dN/dS and per-gene pN/pS for molecular evolution and Mycobacterium tuberculosis selection analysis. Nei-Gojobori and Li (1993) with precomputed lookup tables, 1000× faster than existing tools.
New to selection analysis?
Start with the getting-started tutorial — it runs a full analysis on the bundled example data with no background assumed. Every unfamiliar term is defined in the glossary, and hovering a dotted abbreviation like dN/dS shows its meaning.
In one line: eskaks measures natural selection on genes by comparing how fast amino-acid-changing mutations accumulate versus silent ones. A ratio below 1 means selection is removing harmful changes (a conserved gene); a ratio above 1 flags genes where change is favoured (drug targets, antigens).
What can it do?¶
-
Pairwise dN/dS
Codon-aligned FASTA in, dN/dS out — Nei-Gojobori or Li/LPB93, sliding windows, per-lineage and per-group summaries.
-
Per-gene pN/pS
VCF + reference + GFF3 → per-gene pN/pS, an exact neutrality test, FDR correction, an MK screen, and π / Watterson θ / Tajima's D.
-
Interactive report
A single self-contained HTML dashboard — Manhattan, volcano, QQ, MK — with a colour-blind mode and CSV/JSON/Print export. No internet needed.
-
Fast & pipeline-ready
Precomputed lookup tables + rayon parallelism, stdin support, JSON output, and a non-zero exit on error.
Try it in one command¶
eskaks fasta alignment.fasta --report -o results
Reads codon-aligned CDS, writes results_pairwise_results.tsv and an interactive results_report.html.
eskaks vcf --ref genome.fasta --gff genes.gff3 --vcf variants.vcf \
--genetic-code 11 --report --variants --diversity -o scan
Writes per-gene pN/pS, a per-variant table (S315T-style keys), diversity statistics, and the report.
eskaks --demo
Runs both the dN/dS and per-gene pN/pS analyses on bundled example data - no input files needed.
How does it compare?¶
| Feature | eskaks | KaKs_Calculator | BioPython | PAML yn00 |
|---|---|---|---|---|
| Speed (100 seqs) | 6 ms | 7,703 ms | 111,619 ms | 697 ms |
| Li model R² vs KaKs | 1.000 | reference | — | — |
| Nei model R² vs KaKs | 0.999 | reference | 0.996 | — |
| Genetic codes | 20 tables | 1 | 1 | limited |
| pN/pS from VCF | ||||
| JSON output | ||||
| Stdin pipe | ||||
| Parallel | (rayon) |
Citation
Ruiz-Rodriguez P, Coscollá M (2026). eskaks: fast pairwise dN/dS and per-gene pN/pS from sequences or VCFs. Zenodo. https://doi.org/10.5281/zenodo.21992154