phylo 3.1.2

An extensible Phylogenetics library written in rust
# Comparison Study
Scripts and tests for the comparison study of Phylo-rs.

The scripts and tests provided here are used for evaluating the runtime and memory of Phylo-rs for some typical tasks, compared to other bioinformatics libraries with similar functionality.

## Test Cases

Memory Test Cases:
 - `read_newick`: Read large trees in newick format.

Runtime Test Cases:
 - `Tree traversal`: traversing a tree in postfix order.
 - `Least Common Ancestor retrieval`: Finding the LCA for a set of taxa in a rooted tree.
 - `Nearest Neighbor Interchange`: Performing an NNI operation on a rooted tree.
 - `Yule tree Simulation`: Simulating a tree under the Yule evolutionary model.
 - `Tree Contraction`: Contracting a tree to an arbitrary subset of leaves.
 - `Robinson Foulds metric`: Computing the Robinson Foulds distance for a pair of given trees.

 
## Software

In order to run the tests, the following software is required:

 - [Genesis 0.33.0](https://github.com/lczech/genesis/releases/tag/v0.33.0)
 - [ape 5.8-1](https://cran.r-project.org/web/packages/ape/index.html)
 - [DendroPy 5.0.8](https://jeetsukumaran.github.io/DendroPy/)
 - [CompactTree 1.0.0](https://github.com/niemasd/CompactTree/releases/tag/1.0.0)
 - [Gotree 0.4.5](https://github.com/evolbioinfo/gotree/releases/tag/v0.4.5)
 - [TreeSwift 1.1.45](https://github.com/niemasd/TreeSwift/releases/tag/v1.1.45)
 - [phylo 2.0.0](https://crates.io/crates/phylo)
 - [phylotree 0.1.3](https://crates.io/crates/phylotree)
 
## Instructions

To build all the executables used, run the ```build.sh``` script. Be sure to install all the dependencies for Genesis and CompactTree before running the build script. Following the build script use the ```measure-mem.sh``` and ```measure-time.sh``` scripts to run the memory and runtime analysis, respectively. Be sure to install all the software listed in the [Software](#software) section, as gotree will be required to simulate the trees used in the comparative analysis. Finally, use the ```plot-memory-scalability.py``` and ```plot-runtime-scalability.py``` scripts to generate plots. Note that the requirements in the ```requirements.txt``` file should be installed before running any of the scripts in this directory. It is recommended to use a Python virtual environment when installing these dependencies, instructions for which can be found [here](https://docs.python.org/3/library/venv.html)