3-Adic Hyperbolic VAE โ€” Cytochrome C Phylogeny Validation

Three trained conditions from docs/plans/PHYLOGENY-VALIDATION-PIPELINE.md (repo: https://github.com/gesttaltt/3-adic-ml), testing whether a p-adic / hyperbolic VAE architecture recovers real cytochrome c phylogeny (39 species, UniProt Pfam PF00034, NCBI taxonomy) better than simpler baselines.

Conditions

Condition Architecture Losses
A (condition_A_euclidean/) Flat Euclidean VAE Standard reconstruction + Gaussian KL
B (condition_B_hyperbolic_generic/) TernaryVAEV6Controllable, factored=false Reconstruction + generic hyperbolic KL only, all p-adic-specific losses off
C (condition_C_padic/) TernaryVAEV6Controllable, same as v24.0_tangent_fix.yaml Full p-adic hierarchy/geodesic/algebraic loss curriculum

Fase 4 result: does embedding distance recover taxonomy?

raw_encoding_baseline = zero-model control (Euclidean distance on raw hydropathy-encoded aligned sequences, no VAE). Any condition must beat this to demonstrate the architecture learned something beyond conserved-sequence-implies-close-relative.

Condition Spearman vs. taxonomic distance Mantel p Verdict
raw_encoding_baseline 0.7228 0.0001 does not beat baseline
A_euclidean 0.6285 0.0001 does not beat baseline
B_hyperbolic_generic 0.6538 0.0001 does not beat baseline
C_padic 0.4955 0.0001 does not beat baseline

Full results with bootstrap CIs: phylogeny_recovery_results_full.json.

Follow-up: Condition D (taxonomy-conditioned), with a real species holdout

condition_D_taxonomy_conditioned/ tests a narrower question the table above left open: hyperbolic geometry is well-suited to trees, but nothing above ever pointed a hyperbolic loss at the real tree -- C pointed it at v_3(index) instead. Condition D uses a new TaxonomyGeodesicLoss (targets real inter-species taxonomic distance) and, for the first time in this repo, a genuine species-level holdout: trained on 30/39 species, evaluated separately on the 9 held out (stratified across kingdoms, never seen in training). See condition_D_taxonomy_conditioned/heldout_species.json for the exact list.

Split Spearman vs. raw baseline (same subset)
Held-in (30 species, seen in training) 0.8404 beats 0.7228 (expected)
Held-out (9 species, never in training) 0.5091 loses to 0.7803

A no-encoder sanity check (39 free Poincare points fit directly against the taxonomy matrix, no VAE) scored 0.9057 -- confirming hyperbolic geometry can represent this tree well on its own. That advantage did not transfer once an encoder had to derive placement from the same collision-heavy 3-symbol hydropathy encoding used throughout this dataset (see index_collision in the results JSON). Bootstrap CIs at n=9 held-out species are wide ([-0.12, 0.87] vs. [-0.04, 0.94]), so this is best read as "no detectable held-out generalization advantage," not a definitive negative.

Full methodology and all four splits (held-in/held-out/mixed/overall): phylogeny_recovery_results_D_taxonomy_conditioned.json and TAXONOMY-CONDITIONED-EMBEDDING-PLAN.md in the source repo.

Loading

import torch
ckpt = torch.load("condition_C_padic/checkpoint.pt", weights_only=True)

See the source repo's src/models/vae.py (TernaryVAEV6Controllable) and src/models/vae_baseline.py (TernaryVAEEuclideanBaseline) for the model classes these checkpoints load into.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support