Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌳 Tree of Life — 4.5 billion years of evolution

Live site: https://acycliczebra.github.io/Evolution/

An interactive, static explorer of the tree of life and the geologic time scale, built by scanning every page of the English Wikipedia dump (2026-09-01, 25.9 M pages) and extracting every taxobox.

  • 544,356 taxa / 392,921 species (extinct and extant), from domains down to subspecies
  • Every taxon shows its picture, scientific & common name, rank, authority, conservation status, temporal (fossil) range, summary and a link to its Wikipedia article
  • Drill down via breadcrumbs, subgroup cards or an expandable tree diagram; search any name
  • A zoomable geologic time strip — eon, era, period, epoch and age in official ICS colours — with 54 evolutionary milestones
  • Click any time unit (or drag the time cursor) to see what Earth looked like on an interactive 3D globe (three.js), a description, the iconic and most diverse life, and what first appeared
  • Filter any group to the members alive at the selected time

Data dump

data/ contains the organized dump:

file content
taxa-NN.jsonl.gz one taxon per line, preorder over the tree (parents before children)
timescale.json geologic units (eon → age) with dates, maps, descriptions and per-unit life, plus milestones

Taxon record fields:

{"id": 354124, "name": "Cavia porcellus", "rank": "species", "parent_id": 354123,
 "lineage": ["Life", "Eukaryota", "…", "Caviidae", "Caviinae", "Cavia"],
 "extinct": false, "range_end_ma": 0,
 "image": "George the amazing guinea pig.jpg", "common_name": "Guinea pig",
 "authority": "(Linnaeus, 1758)", "conservation_status": "DOM",
 "short_description": "Domesticated rodent from South America", "summary": "The guinea pig …",
 "wikipedia": "Guinea pig", "species_count": 1, "descendant_count": 0}

image is a Wikimedia Commons/Wikipedia file name (https://en.wikipedia.org/wiki/Special:FilePath/<image>).

How it is built

python scripts/download.py <dump url> enwiki.xml.bz2          # parallel, resumable download
python scripts/extract.py enwiki.xml.bz2 enwiki-index.txt.bz2 out/ 30   # ~10 min on 30 cores
python scripts/build.py out/ .                                 # ~3 min → data/ and web/public/data/
  1. extract.py streams the multistream dump in parallel and pulls out Template:Taxonomy/* pages (the backbone that Wikipedia's automatic taxoboxes use), every article containing a Taxobox, Automatic taxobox, Speciesbox, Subspeciesbox, Infraspeciesbox, Virusbox, Ichnobox or Oobox, all Infobox geologic timespans, and redirects.
  2. build.py resolves the taxonomy templates into a tree (following same as, /skip and /? variants), attaches articles to their taxa, places Speciesbox/manual-taxobox species under their genus, parses fossil ranges into millions of years, derives extinct/extant status and ranges bottom-up, and computes for every geologic unit the most diverse groups (by number of dated genera alive) and first appearances.
  3. curated.py holds the ICS time scale skeleton and colours, per-unit notes on Earth's geography/climate and iconic life, and the milestones. Dates and paleomaps from Wikipedia's period articles override the skeleton when present.

Languages

The site is available in English, French, Hindi, Italian, Japanese, Korean, Persian, Portuguese, Russian, Spanish, Turkish and Vietnamese (language menu in the header; the choice and the order of recently used languages are kept in localStorage). URLs stay in English (#n=<id>&u=<unit>), so switching the language keeps the open taxon and time.

  • Names, summaries and article links come from each language's own Wikipedia (2026-09-01 dumps): every English article the site uses (taxa, geologic units, milestones) is matched to its local article through the local wiki's interlanguage links, and the local title and lead paragraph are taken from the local dump. Where no local article exists the English text is shown, marked as such.
  • Interface strings are in web/src/i18n/<lang>.json (source: web/src/i18n/en.ts); curated content (geologic unit names, notes on Earth, milestones, rank names, globe labels) is translated in scripts/i18n/content.<lang>.json.
# per language: langlinks table + multistream dump parts (downloaded one at a time, deleted after use)
python scripts/i18n_extract.py . out/redirects.tsv i18n/ 20260901 hi es fr pt ru ja vi tr fa ko it
python scripts/i18n_build.py . i18n/ hi es fr pt ru ja vi tr fa ko it   # -> web/public/data/l/<lang>/

web/public/data/l/<lang>/ holds n/<chunk>.json (localized name, article and lead per taxon, overlaying the English chunks), time.json (localized time scale and curated content), and s/<bucket>.json search shards over the local names.

Paleogeographic globe

The globe is rendered with three.js from scientific reconstructions (not Wikipedia images), generated by scripts/paleomaps.py into web/public/earth/:

time source
0–540 Ma, every 5 Myr PALEOMAP PaleoDEMs — Scotese & Wright (2018), CC BY 4.0: gridded elevation and ocean depth, shaded relief; land is coloured barren before land plants (~470 Ma) and vegetated after (~400 Ma)
545–1000 Ma, every 25 Myr GPlates Web Service, plate model of Merdith et al. (2021): reconstructed coastlines only (relief and depth are illustrative)
> 1000 Ma no reliable global reconstruction exists; a clearly labelled placeholder is shown
# needs numpy, pillow, netCDF4; grids from paleoDEM_0.2Deg_grids.zip at the PaleoDEM link above
python scripts/paleomaps.py <paleoDEM_0.2Deg_grids dir> <cache dir> .

Web app

The site in web/ is a React + TypeScript app built with Vite (D3 is used for the tree layout and zoom). Taxon data is lazy-loaded from web/public/data in 1,000-taxon chunks and the search index is sharded by prefix; images are hot-linked from Wikimedia Commons.

cd web
npm install
npm run dev       # local dev server
npm run build     # type-check + production build to web/dist

Pushing to main deploys to GitHub Pages via .github/workflows/pages.yml.

path purpose
src/App.tsx app state (selected taxon, time unit, timeline zoom), URL hash sync
src/components/Timeline.tsx zoomable geologic time strip with milestone pins
src/components/Explorer.tsx breadcrumbs, taxon card, subgroup cards/filters
src/components/TreeView.tsx expandable tree diagram
src/components/TimePanel.tsx selected period: globe, description, life, first appearances
src/components/Globe.tsx three.js paleogeographic globe (lazy-loaded)
src/data.ts chunk loading and search
src/time.ts time scale helpers (warped scale)
src/i18n/ languages, UI strings, localized formatting and content (useI18n)
src/components/LanguageMenu.tsx language menu (recently used first)

Text and images © Wikipedia / Wikimedia Commons contributors, CC BY-SA 4.0.

About

Interactive tree of life + geologic time scale built from every taxobox in English Wikipedia

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages