Repository navigation
v0.1.0-beta.38 — AxoMEME 2.0 browser inference (Beta)
Pre-releaseAxoMEME 2.0 — browser inference (Beta)
Adds AxoMEME as a new analysis method: a neural model that ranks the sites of an alignment by how
MEME-like their selection signal looks, running entirely in the browser in seconds rather than the
hours a full MEME run takes.
The model is in Beta and under active development — the integration is settled, but the numbers
may move between releases. It is badged as such in the method selector and on its results.
What it is, and what it is not
AxoMEME ranks sites; it does not produce calibrated significance. Measured across 12 real
DataMonkey submissions and 662 variable sites, its predicted LRT reached the chi-square gate for
p ≤ 0.10 exactly once and the p ≤ 0.05 gate never — including on an alignment where MEME itself
reports 17 significant sites. Its authors report Spearman rank correlation, not calibration.
So the calling mode defaults to percentile, tiers are labelled by the rule that produced them
("Top 2%") rather than by a confidence word, the score column is not called an LRT, and no
significance threshold line is drawn anywhere. Sites with no amino-acid variation read "not scored"
rather than 0.000, because those zeros are set before the model is consulted.
MEME is still the ground truth. AxoMEME is for deciding where to look.
Verified against the reference implementation
The ONNX export is the model only — newick parsing, patristic distances, Max-PD selection,
tokenisation and MDS all had to be rebuilt in JS, because torch.linalg.eigh has no ONNX lowering.
Parity is measured against the ML team's own functions, extracted verbatim and executed rather than
reimplemented:
| stage | result |
|---|---|
| patristic distances | exact — 10,405,350 cells over 270 real trees, worst |Δ| 0.000e+0 |
| MDS coordinates | 270/270 within 1e-5 relative, worst 3.35e-7 (float32's own resolution is 1.19e-7) |
| end to end | 12 alignments, 2,195 sites, Pearson r = 1.000000, Spearman ρ = 1.000000 |
Cost
AxoMEME is one method of fifteen and the other fourteen download none of it. The runtime is loaded by
dynamic import and the model served from static/, asserted by e2e rather than assumed. The WASM
runtime is served locally rather than from a CDN, so the site stays self-contained.
First run downloads about 17 MB; after that scoring takes seconds.
Also in this release
- The MEME hit-likelihood estimate (#150), with its JS evaluator verified against XGBoost's own
scoring and no ML runtime in the bundle. - Negative branch lengths from DataMonkey's own neighbour-joining are clamped to zero, matching the
model's training pipeline — they crash the reference implementation on 4.6% of real trees. - Trees without branch lengths are refused for AxoMEME rather than silently producing confident
numbers from an all-zero distance matrix. - E2E tests moved to manual dispatch; run them locally with
npm run test:e2e.
Requires hyphy-scope@1.10.0, which carries the new AxomemeVisualization.