Tianjian Qin

EvoLab

A diversification simulator for lineage history, coarse-grained taxa, and trait-based tree reconstruction.

EvoLab thumbnail

EvoLab

EvoLab is a lightweight simulator for watching diversification before it gets flattened into a final tree. It combines a continuous-time budding process, a user-set coarsening rule for observed taxa, and linked history-versus-trait summaries in a single static web app.

What it does

EvoLab keeps the process in view. Each run starts from one lineage and lets extant lineages produce clonal daughters, produce mutating daughters, or go extinct in continuous time. The app then compares what happened at the lineage level with what you would recover after coarse-graining that same history into observed taxa.

  • Full lineage chronogram for the event-level record.
  • Coarsened species chronogram after the chosen mutational threshold.
  • History tree and trait tree so you can compare event history with distance-based reconstruction.
  • Lineages through time and trait space for tempo and geometry.

The conceptual framing and interpretation can be found in the blog post.

Quickstart

EvoLab is packaged as one static HTML page. Run it from a small local server so browser features like clipboard export behave as expected.

StepCommand / Action
1 git clone https://github.com/EvoLandEco/EvoLab.git
2 cd EvoLab && python -m http.server 8000
3 Open http://localhost:8000/evolab.html

The page currently loads D3, numeric.js, Bootstrap, and Font Awesome from public CDNs.

How the simulator works

Event times are sampled with a Gillespie-style stochastic simulation algorithm. At each event, one extant lineage is selected and one outcome occurs: clonal birth, mutating birth, or extinction. Traits evolve either as unconstrained Brownian steps or with OU-like pull toward an optimum.

The Coarsen Level slider decides how many mutational steps must accumulate before a daughter lineage gets promoted into a new observed taxon. That is the main bridge between the hidden lineage process and the species-level record.

How to use

  1. Pick a preset or set your own birth, mutation, and death rates.
  2. Set the step limit and coarsen level.
  3. Choose the trait model and tune trait dimension, step size, and OU pull when needed.
  4. Use Grow for animated runs or Step for event-by-event inspection.
  5. Export the run as JSON or copy either Newick tree for downstream work.

Have a question?

Feel free to click on the button below to send me a message.

Choose Colour