|
Download README.md from datamonkey/hyphaeon: direct link, hf CLI and curl.
- Browser
- Download file 10.7 kB
-
https://huggingface.co/datamonkey/hyphaeon/resolve/main/README.md
- Command line
-
hf download hf://datamonkey/hyphaeon/README.md
-
curl -L -o README.md https://huggingface.co/datamonkey/hyphaeon/resolve/main/README.md
10.7 kB
| license: mit | |
| library_name: hyphaeon | |
| tags: | |
| - biology | |
| - bioinformatics | |
| - phylogenetics | |
| - molecular-evolution | |
| - positive-selection | |
| - dn-ds | |
| - onnx | |
| # HyphAeon | |
| **Ultra-fast neural inference of episodic positive selection in molecular sequences.** | |
| HyphAeon detects site-level episodic diversifying positive selection (dN/dS > 1) across | |
| arbitrary codon alignments and phylogenetic trees. It replaces numerical Maximum Likelihood | |
| Estimation with an axial geometric transformer using Continuous 4D Tree Rotary Position | |
| Embeddings (Tree-RoPE), reaching a 100x-1,000x speedup over HyPhy MEME and PAML CodeML while | |
| matching or exceeding their empirical statistical power at a strictly controlled false | |
| positive rate. | |
| - **Repository:** https://github.com/veg/HyphAeon | |
| - **Architecture notes:** [ARCHITECTURE.md](https://github.com/veg/HyphAeon/blob/main/ARCHITECTURE.md) | |
| - **Developed by:** Sergei L. Kosakovsky Pond and collaborators | |
| - **License:** MIT | |
| ## Capabilities | |
| The same model weights power three analyses, exposed as CLI subcommands: | |
| | Command | Analysis | Output | | |
| | :--- | :--- | :--- | | |
| | `meme` | **Episodic positive selection**: per-site MEME LRT surrogate (the core model). | per-site LRT + p-value | | |
| | `epistasis` | **Epistatic sector mining (ESSM)**: phylogenetic branch attribution, inter-site co-selection networks, in-silico Selection Deep Mutational Scanning, and multi-scale epistatic sectors. | co-selection edges, sectors, DMS sweep (JSON / GraphML / CSV) | | |
| | `phenotype` | **Directional phenotype-genotype association (PhyloWAS)**: associates sites with a trait across the tree and extracts Phenotype-Associated Residue Signatures (PARS). Supports curated phenotype presets (marine, echolocation, high-altitude, longevity, …) or a user trait table. | per-site trait association, p-values, FDR | | |
| `epistasis` and `phenotype` are **derived analyses built on the selection model** (its per-site drive and | |
| branch-level attributions); they do not require separate weights. The results below and the variants | |
| concern the core `meme` model (aliases: `predict`, `site-selection`), which the other two consume. | |
| ## Model variants | |
| This repository provides two weight sets with the **same architecture**: | |
| | File | Variant | Trained on | Use it for | | |
| | :--- | :--- | :--- | :--- | | |
| | `model.safetensors` | **Base** | TOGA mammalian alignments (deep trees) | Deep mammalian data; general use; fine-tuning base. | | |
| | `model.viral.safetensors` (+ `.pt`, `.onnx`) | **Viral fine-tuned** | Base + viral / shallow-tree data | **Viral / shallow-tree data** (see [below](#viral-fine-tuned-variant)). | | |
| The base model is trained on mammals and transfers poorly to viral / shallow-tree alignments; the | |
| viral variant fixes this. Both load into the same `PhyloAxialTransformer` class. `.safetensors` is | |
| recommended; `.pt` is provided for the upstream loader, and `model.viral.onnx` for ONNX / browser | |
| deployment. | |
| ## Model details | |
| | | | | |
| | :--- | :--- | | |
| | Parameters | 1,909,404 | | |
| | Embedding dimension | 384 | | |
| | Layers | 6 | | |
| | Attention heads | 12 | | |
| | Ordinal thresholds (CORAL head) | 16 | | |
| | Precision | float32 | | |
| | Checkpoint format | safetensors | | |
| The model consumes a codon alignment plus a phylogeny and emits, per codon site, a likelihood | |
| ratio test statistic for episodic diversifying selection. Asymptotic p-values follow the | |
| standard MEME null mixture, `0.5 * delta(0) + 0.5 * chi^2(1)`. | |
| ## Usage | |
| Install the package, which pulls these weights automatically on first use: | |
| ```bash | |
| pip install git+https://github.com/veg/HyphAeon.git | |
| ``` | |
| ### Command line | |
| ```bash | |
| hyphaeon meme \ | |
| --alignment my_genes.fasta \ | |
| --tree my_genes.nwk \ | |
| --output results.json \ | |
| --csv results.csv | |
| ``` | |
| If `--tree` is omitted, HyphAeon extracts an embedded tree from a NEXUS or FASTA alignment. | |
| ### Python | |
| ```python | |
| from hyphaeon import PhyloAxialTransformer, load_alignment_and_tree | |
| model = PhyloAxialTransformer.from_pretrained("datamonkey/hyphaeon").eval() | |
| codons, aas, dists, mds, invariable, taxa, num_sites = load_alignment_and_tree( | |
| "my_genes.fasta", "my_genes.nwk" | |
| ) | |
| ``` | |
| To load the **viral fine-tuned** variant explicitly: | |
| ```python | |
| import torch | |
| from safetensors.torch import load_file | |
| from hyphaeon import PhyloAxialTransformer | |
| model = PhyloAxialTransformer(embed_dim=384, num_layers=6, num_heads=12, | |
| window_size=1, num_thresholds=16) | |
| model.load_state_dict(load_file("model.viral.safetensors")) # hf_hub_download this file | |
| model.eval() | |
| ``` | |
| See the repository README for a complete inference loop, including site batching and p-value | |
| computation. | |
| ## Inputs and outputs | |
| **Inputs.** An in-frame codon alignment (FASTA or NEXUS) and a phylogenetic tree (Newick or | |
| NEXUS) with branch lengths. Trees lacking branch lengths are estimated via HyPhy under HKY85 | |
| when HyPhy is on the PATH; otherwise strictly positive lower bounds of 1e-4 are enforced, | |
| which degrades accuracy. | |
| **Outputs.** Per codon site: an LRT statistic, an asymptotic p-value, and an invariable-site | |
| flag. Sites that are invariable across the alignment are assigned an LRT of 0. | |
| ## Evaluation | |
| Taking HyPhy MEME (p <= 0.10, asymptotic LRT >= 4.605) as ground truth across 84 empirical | |
| datasets from 9 independent literature studies (43,302 codons, up to 476 taxa): | |
| | Literature study & system | Datasets | Codons | ROC-AUC | PR-AUC | PPV | FPR | Spearman rho | HyPhy MLE | HyphAeon CPU | Speedup | | |
| | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | |
| | Abdul et al. (2018), SMC5/6 complex | 9 | 7,073 | 0.990 | 0.752 | 100.0% | 0.00% | 0.874 | 561.0 s | 3.84 s | 171.3x | | |
| | Nisson et al. (2025), CCDC137 (HIV Vpr) | 1 | 290 | 0.940 | 0.650 | 75.0% | 0.35% | 0.833 | 80.0 s | 0.21 s | 380.9x | | |
| | Le Corf et al. (2026), GBP5 GTPase | 2 | 1,223 | 0.958 | 0.584 | 68.2% | 0.49% | 0.782 | 1,174.0 s | 1.68 s | 693.3x | | |
| | D'Oliviera et al. (2025), TRMT1 cleavage | 2 | 1,613 | 0.945 | 0.512 | 62.5% | 0.31% | 0.671 | 723.0 s | 1.30 s | 543.9x | | |
| | Lytras et al. (2023), bat OAS1 factor | 1 | 351 | 0.904 | 0.628 | 87.5% | 0.35% | 0.675 | 352.0 s | 0.22 s | 1,566.3x | | |
| | Wisotsky et al. (2020), benchmark suite | 12 | 4,290 | 0.965 | 0.618 | 68.8% | 0.58% | 0.615 | 8,603.0 s | 55.49 s | 608.8x | | |
| | Hilbert & Elde (2023), Siglec / C-lectins | 57 | 28,462 | 0.892 | 0.224 | 44.8% | 0.17% | 0.376 | 14,203.0 s | 16.12 s | 859.1x | | |
| | **Global aggregate** | **84** | **43,302** | **0.914** | **0.286** | **50.6%** | **0.191%** | **0.489** | **25,696.0 s** | **78.87 s** | **325.8x** | | |
| Validation metrics recorded in the base model's training checkpoint: Spearman rho 0.5974, MSE | |
| 3.6411, at epoch 16. | |
| (The evaluation above is the base model. For viral / shallow-tree data, see the viral fine-tuned | |
| variant below.) | |
| ## Viral fine-tuned variant | |
| The base model is trained on mammalian (deep-tree) alignments and transfers poorly to viral, | |
| shallow-tree data. `model.viral.safetensors` fine-tunes the base on viral data (with viral sites | |
| up-weighted) to fix this, while preserving mammalian performance. | |
| The table below is a **controlled comparison of the base model against the fine-tuned model on the same | |
| held-out evaluation sets**, reporting site-ranking Spearman rho against HyPhy MEME LRT. The numbers are | |
| meaningful relative to each other (same data, same metric); they are measured on a viral-focused internal | |
| split and are not directly comparable to the literature-benchmark aggregate above, which uses different | |
| datasets. | |
| | Held-out evaluation set | Base | Viral fine-tuned | | |
| | :--- | :---: | :---: | | |
| | Unseen viral families (flu, corona, flavi, picorna, toga, adeno; excluded from fine-tuning) | 0.10 | **0.43** | | |
| | Viral, other families | 0.26 | **0.57** | | |
| | Mammalian (forgetting check) | reference | matches base (no drop) | | |
| Two takeaways: | |
| 1. **Viral generalization.** On the base model, viral site rankings barely correlate with MEME (rho near | |
| zero). After fine-tuning they correlate substantially, and this holds on six viral families that were | |
| excluded from fine-tuning entirely, so it is genuine cross-family generalization rather than | |
| memorization. | |
| 2. **No catastrophic forgetting.** Re-evaluated on the same held-out mammalian set, the fine-tuned model | |
| matches the base model (no measurable drop), so the viral gains do not come at the expense of the | |
| mammalian regime the base model was trained for. | |
| On shallow viral alignments MEME's own statistical power is limited, so the fine-tuned model is best used | |
| as a fast triage / pre-screen for candidate sites, not as a replacement for a full MEME run. | |
| ### ONNX deployment note | |
| `model.viral.onnx` (opset 17) contains the model only. It maps five already-computed input tensors | |
| (`msa_codons`, `msa_aas`, `dist_matrix`, `mds_coords`) to per-site LRT, and is verified to match the | |
| PyTorch model to within about 1e-6. The caller must compute the inputs; they are not part of the graph. | |
| In particular, `mds_coords` comes from a classical-MDS eigendecomposition of the patristic distance | |
| matrix performed before the model. Reproducing those coordinates bit-for-bit across different | |
| eigensolvers is non-trivial, because eigenvector signs and degenerate-subspace rotations are ambiguous, | |
| so browser or cross-language ports should account for this. | |
| ## Limitations and intended use | |
| HyphAeon is a research tool for comparative molecular evolution, intended as a fast screen for | |
| sites under episodic diversifying selection. | |
| - It is trained to approximate HyPhy MEME, so it inherits that method's assumptions and is | |
| evaluated against it rather than against ground-truth selection. It is an approximation of | |
| MEME, not an independent test of it. | |
| - Precision falls on large, diverse gene families. On the Hilbert & Elde Siglec/C-lectin set | |
| the positive predictive value is 44.8%, so roughly half of flagged sites are not MEME | |
| positives. Treat hits as candidates for confirmatory analysis, not conclusions. | |
| - Aggregate PR-AUC of 0.286 reflects strong class imbalance; positive sites are rare. | |
| - Accuracy depends on branch lengths being present and meaningful. Topology-only trees are | |
| handled but degrade results. | |
| - Alignments must be in frame. Frameshifted or misaligned input produces silently wrong | |
| output. | |
| - The model has not been evaluated on non-coding sequence, recombinant alignments, or | |
| alignments with pervasive sequencing error. | |
| ## Citation | |
| A publication is in preparation. Until it appears, cite the repository: | |
| ```bibtex | |
| @software{hyphaeon, | |
| title = {HyphAeon: Ultra-Fast Neural Inference of Episodic Positive Selection in Molecular Sequences}, | |
| author = {Kosakovsky Pond, Sergei L. and collaborators}, | |
| url = {https://github.com/veg/HyphAeon}, | |
| year = {2026} | |
| } | |
| ``` | |