fast-nnt
fast-nnt (read Fast Ent) is a simple Rust implementation of the Neighbor Net algorithm
Installation
Install Rust via rustup.
Once Rust is installed you can simply run:
cargo install fast-nnt
Alternatively, you can build from source. Clone and install this repo via:
git clone https://github.com/rhysnewell/fast-nnt.git
cd fast-nnt
cargo install --path .
Usage
Required input is a symmetrical distance matrix, ideally with a header row indicating the taxa labels. Can be separated by any delimiter.
To generate a split nexus file (mostly) identical to SplitsTree4 and SplitsTree6:
fast_nnt neighbour_net -t 4 -i test/data/large_dist_matrix.csv -d output_dir -o prefix -O splits-tree4
Use the new Huson 2023 ordering algorithm (default):
fast_nnt neighbour_net -t 4 -i test/data/large_dist_matrix.csv -d output_dir -o prefix -O huson2023
Output
The output will include a nexus file containing the split network and network layout.
Known issues
- Floating point drift in the CGNR function, as observed in the smoke_30 test.
- Not sure where it is happening, but the final results on real data end up looking pretty much the same so not sure if it is an issue. Will need to be fixed at some point.
TODO
- Work on parallelism. Not a priority as the program is fast enough.
- Test on giant datasets.