Generate a synthetic test with a known tree
Create a new tree and evolve aligned DNA along it under JC69. These are generated tests, separate from the four original checkout examples, whose true trees are unconfirmed.
Up to 1,000,000 bases. The same settings and seed reproduce the same browser test. Scale multiplies branch lengths in expected substitutions per site; larger values allow more divergence and saturation. Browser seeds do not reproduce the separate DendroPy research-study datasets.
Generation assumptions
Your alignment
Paste aligned sequences or open a FASTA or sequential PHYLIP file. Use A, C, G and T; every sequence must have the same length.
Original checkout examples — reference trees unavailable. To test accuracy, use “Generate a synthetic test with a known tree” above.
Each analysis has a 120-second time limit. Results remain available in this browser for 24 hours. Download them to keep a copy.
Inferred topology
Load an alignment to begin.
Your tree and convergence history will appear here.
Topology only: branch lengths in this drawing show layout, not evolutionary distance or confidence.
Tree accuracy against the known reference
Unrooted topology comparison: trivial tip splits, the root location and branch lengths are ignored. RF counts missing plus incorrect splits (lower is better). Normalized RF divides by the total splits in both trees. Precision is the fraction of inferred splits that are correct; recall is the fraction of reference splits recovered; F1 combines them; Jaccard is shared splits divided by their union (higher is better). Undefined ratios display N/A. These related scores are not independent evidence. Split-comparison definitions.
Inspect a split
Click a branch to inspect the division that created it, select a labelled node, or use the split selector. The teal outline marks the selected node, not correctness. Terminal pairs are separated automatically and are not scored; they have no trained plane.
Sequence assignments
The horizontal coordinate preserves the true side of the high-dimensional hyperplane exactly. The vertical coordinate shows variation parallel to it. Below the first split, the reference target keeps the parent attachment and specifies the next division of the local taxa. If this group is absent from the reference, no unique local target is claimed. At the first split, any full-reference edge is a valid unrooted division. Blue and green identify groups; red circles mark disagreements at this split and red crosses mark earlier misplacements along its path. Dashed purple halos indicate ambiguous earlier attribution. A/B labels can be swapped without changing which taxa belong together. Points on the boundary are ties.
Convergence history
RMS sequence-to-prototype distance by training step. Each color represents a partition; a new partition starts a separate trace.
Using and interpreting KomPhy
KomPhy recursively separates sequences using two learned prototypes. Start with an example, adjust the controls, then select Build tree. You can cancel a running analysis and download completed trees as Newick, SVG or a JSON record containing settings, warnings and convergence history.
Nearest selection follows the thesis diagram. Farther selection with Euclidean distance and updates after each epoch follows the archived source. The archived Jukes–Cantor function instead selects nearest; farther with Jukes–Cantor is an experimental combination. These choices can produce very different trees: nearest selection can leave similar sequences unresolved, while farther selection can alternate prototype roles between epochs. Changing the distance sign alone has not been shown to improve accuracy.
Conscience is disabled by default, as in the thesis experiments. All taxa are retained. Groups that training cannot separate remain unresolved and are reported. Continuous Jukes–Cantor saturation is also reported. The original experiment datasets have not been recovered; the two interpretations are being assessed on new synthetic data.