The aim of this project is to experiment with, and demonstrate, how to write a simple phylogenetics program that combines the simplicity of python with the speed of C/C++ using cython. We draw as much as possible on existing code from both python and C++ to implement an algorithm that already has both a plain python (slow, simple source code) implementation, and a plain C++ implementation (fast, complex source code) to show that the we can have the best of both worlds (fast, simple source).
The code implements the TIGER algorithm. TIGER stands for "Tree Independent Generation of Evolutionary Rates". The algorithm was developed by Carla A. Cummins and James O. McInerney, and the original implementation is in python, available here. The related paper can be found here.
A faster version called FAST_tiger was developed in C++, by Paul Frandsen and Christof Mayer. It was developed to be used in the PartitionFinder Software, specifically to implement automatic partitioning using a kmeans algorithm on the rates generated by TIGER. That paper can be found here.
This implementation is a mix of python and cython and C++ using a class from the boost library. It has the speed of C++ whilst developing mostly in python. So there is less code, it is easier to read and maintain, but it still runs FAST. It is called Tigger, a character from A.A. Milne's Winnie the Pooh. It was developed by Brett Calcott, Paul Frandsen, and Rob Lanfear.
This isn't production code yet, as it is not portable, hasn't been properly tested, and is not feature complete...