A Python toolkit for simulating sequence evolution, estimating evolutionary distances, reconstructing phylogenetic trees and exploring molecular clock calibration from first principles.
Molecular clocks use DNA sequence variation to estimate evolutionary relationships and divergence times between species.
This project explores the computational foundations of molecular clock analysis by implementing the core algorithms from first principles. It combines reusable simulation engines, analytical tools and interactive visualisations to provide an educational framework covering the complete workflow from simulated DNA sequence evolution through evolutionary distance estimation and phylogenetic reconstruction to simple molecular clock calibration.
Detailed documentation, implementation notes and usage guides are available in the project Wiki.
| Component | Purpose |
|---|---|
| Strict Molecular Clock Engine | Simulate ultrametric evolutionary histories |
| Relaxed Molecular Clock Engine | Simulate lineage-specific rate variation |
| Distance Matrix Calculator | Estimate evolutionary distances using multiple substitution models |
| UPGMA Reconstruction | Reconstruct rooted molecular-clock trees from distance matrices |
| Neighbor Joining Reconstruction | Reconstruct distance-based trees without a strict-clock assumption |
| Tree Calibration | Convert reconstructed branch lengths into estimated divergence times using a calibration point |
| Interactive Explorers | Combine the complete workflow into an educational environment |
Further documentation, including the documentation on intended field usage and how to run the application, is available in the project Wiki.
To file issues or suggestions, please use the Issues page for this project on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
