Expand description
Neighbor-Joining phylogenetic tree inference library.
§Data flow
[FASTA / Python dict / JS object]
│
▼
NJConfig (config.rs)
│
▼
detect_alphabet() ──► Alphabet::DNA | Alphabet::Protein
│
▼
MSA<DNA|Protein> (msa.rs)
├── bootstrap() ──► bootstrap_clade_counts()
└── into_dist::<Model>()
│
▼
DistMat (dist.rs)
│
▼
neighbor_joining() ──► NJState::run() (nj.rs)
│
▼
TreeNode (tree.rs)
│
▼
to_newick() ──► Newick String§Public API
The single public entry point is [nj], which accepts an NJConfig and
returns a Newick string. Everything else is internal implementation detail
exposed only to the Python and WASM wrapper crates.
§Model–alphabet compatibility
| Model | DNA | Protein |
|---|---|---|
PDiff | ✓ | ✓ |
JukesCantor | ✓ | — |
Kimura2P | ✓ | — |
Poisson | — | ✓ |
Providing an incompatible model returns an Err from [nj].
Re-exports§
pub use crate::config::MSA;pub use crate::config::NJConfig;pub use crate::config::SequenceObject;
Modules§
- alphabet
- Alphabet definitions and encoding for DNA and protein sequences.
- config
- Public configuration types shared between the core library, Python bindings, and WASM bindings.
- distance_
matrix - Lower-triangular pairwise distance matrix and entry point for NJ.
- models
- msa
- Multiple sequence alignment container and bootstrap resampling.
- nj
- Core Neighbor-Joining algorithm implementation.
- tree
- Binary tree representation for Neighbor-Joining output.
Functions§
- nj
- Infers a phylogenetic tree from an aligned MSA and returns a Newick string.