Software

Open tools for open science

All lab software is open source. Most of it is written in Rust for speed and reliability, because the datasets (thousands of chromosome-level genomes) demand it.

Software development

Under the hood

What four of our tools actually do, with the commands to run them.

Rust · Bioinformatics 2025

tidk

Finding the ends of chromosomes

Telomeres are short repeats at chromosome ends, but which repeat varies between lineages. tidk explore discovers the unit de novo, search maps it in windows along every chromosome, and ends checks whether an assembly is telomere-to-telomere.

It runs in seconds on a gigabase genome, and has been run across more than 3,400 Darwin Tree of Life assemblies to build a curated database of telomeric repeats by clade.

$ conda install -c bioconda tidk
# discover the repeat unit
$ tidk explore --minimum 5 --maximum 12 genome.fa
# map it along every chromosome, then plot
$ tidk search --string TTTAGGG --output euphrasia --dir out genome.fa
# telomere-to-telomere check
$ tidk ends --min-sequence-length 1000000 -o euphrasia genome.fa
TTTAGGG (forward)CCCTAAA (reverse)
Telomeric repeat counts in 300 kb windows along a 30 Mb chromosome: CCCTAAA spikes at the 5′ end, TTTAGGG at the 3′ end, with a small interstitial peak near 18 Mb. 1,000 500 500 1,000 CCCTAAA: 1,180 copies at 0.0–0.3 Mb TTTAGGG: 2 copies at 0.3–0.6 Mb CCCTAAA: 260 copies at 0.3–0.6 Mb TTTAGGG: 2 copies at 0.6–0.9 Mb TTTAGGG: 2 copies at 1.5–1.8 Mb CCCTAAA: 1 copies at 1.5–1.8 Mb TTTAGGG: 1 copies at 1.8–2.1 Mb CCCTAAA: 1 copies at 1.8–2.1 Mb TTTAGGG: 3 copies at 2.1–2.4 Mb TTTAGGG: 2 copies at 2.4–2.7 Mb CCCTAAA: 2 copies at 2.7–3.0 Mb TTTAGGG: 2 copies at 3.0–3.3 Mb CCCTAAA: 2 copies at 3.0–3.3 Mb TTTAGGG: 1 copies at 3.6–3.9 Mb CCCTAAA: 1 copies at 3.6–3.9 Mb CCCTAAA: 3 copies at 3.9–4.2 Mb TTTAGGG: 2 copies at 4.2–4.5 Mb CCCTAAA: 2 copies at 4.2–4.5 Mb CCCTAAA: 2 copies at 4.8–5.1 Mb TTTAGGG: 3 copies at 5.1–5.4 Mb TTTAGGG: 1 copies at 5.4–5.7 Mb CCCTAAA: 2 copies at 5.4–5.7 Mb TTTAGGG: 2 copies at 5.7–6.0 Mb TTTAGGG: 2 copies at 6.0–6.3 Mb TTTAGGG: 1 copies at 6.3–6.6 Mb TTTAGGG: 1 copies at 6.6–6.9 Mb TTTAGGG: 3 copies at 6.9–7.2 Mb CCCTAAA: 2 copies at 7.5–7.8 Mb TTTAGGG: 3 copies at 7.8–8.1 Mb CCCTAAA: 2 copies at 7.8–8.1 Mb TTTAGGG: 2 copies at 8.4–8.7 Mb TTTAGGG: 1 copies at 8.7–9.0 Mb CCCTAAA: 1 copies at 8.7–9.0 Mb TTTAGGG: 3 copies at 9.0–9.3 Mb CCCTAAA: 2 copies at 9.3–9.6 Mb TTTAGGG: 3 copies at 9.6–9.9 Mb CCCTAAA: 3 copies at 10.2–10.5 Mb TTTAGGG: 2 copies at 10.5–10.8 Mb TTTAGGG: 1 copies at 12.0–12.3 Mb CCCTAAA: 1 copies at 12.0–12.3 Mb TTTAGGG: 2 copies at 12.3–12.6 Mb CCCTAAA: 1 copies at 12.3–12.6 Mb TTTAGGG: 3 copies at 12.6–12.9 Mb CCCTAAA: 1 copies at 12.6–12.9 Mb TTTAGGG: 1 copies at 12.9–13.2 Mb CCCTAAA: 2 copies at 12.9–13.2 Mb TTTAGGG: 3 copies at 13.2–13.5 Mb CCCTAAA: 1 copies at 13.2–13.5 Mb TTTAGGG: 1 copies at 13.5–13.8 Mb CCCTAAA: 3 copies at 13.5–13.8 Mb TTTAGGG: 1 copies at 13.8–14.1 Mb CCCTAAA: 2 copies at 13.8–14.1 Mb TTTAGGG: 3 copies at 14.1–14.4 Mb CCCTAAA: 3 copies at 14.1–14.4 Mb TTTAGGG: 2 copies at 14.4–14.7 Mb CCCTAAA: 2 copies at 14.4–14.7 Mb TTTAGGG: 1 copies at 14.7–15.0 Mb CCCTAAA: 2 copies at 15.0–15.3 Mb CCCTAAA: 2 copies at 15.3–15.6 Mb CCCTAAA: 1 copies at 15.9–16.2 Mb CCCTAAA: 3 copies at 16.2–16.5 Mb TTTAGGG: 1 copies at 16.5–16.8 Mb CCCTAAA: 3 copies at 16.5–16.8 Mb CCCTAAA: 3 copies at 16.8–17.1 Mb TTTAGGG: 3 copies at 17.4–17.7 Mb TTTAGGG: 1 copies at 17.7–18.0 Mb CCCTAAA: 1 copies at 17.7–18.0 Mb TTTAGGG: 3 copies at 18.0–18.3 Mb TTTAGGG: 70 copies at 18.3–18.6 Mb CCCTAAA: 55 copies at 18.3–18.6 Mb TTTAGGG: 1 copies at 18.6–18.9 Mb TTTAGGG: 2 copies at 18.9–19.2 Mb CCCTAAA: 2 copies at 18.9–19.2 Mb TTTAGGG: 1 copies at 19.2–19.5 Mb TTTAGGG: 2 copies at 19.5–19.8 Mb CCCTAAA: 1 copies at 19.8–20.1 Mb TTTAGGG: 2 copies at 20.1–20.4 Mb CCCTAAA: 2 copies at 20.1–20.4 Mb TTTAGGG: 2 copies at 20.4–20.7 Mb TTTAGGG: 1 copies at 20.7–21.0 Mb TTTAGGG: 2 copies at 21.0–21.3 Mb CCCTAAA: 1 copies at 21.0–21.3 Mb CCCTAAA: 2 copies at 21.3–21.6 Mb CCCTAAA: 2 copies at 21.6–21.9 Mb TTTAGGG: 3 copies at 21.9–22.2 Mb CCCTAAA: 3 copies at 21.9–22.2 Mb TTTAGGG: 2 copies at 22.8–23.1 Mb CCCTAAA: 3 copies at 22.8–23.1 Mb TTTAGGG: 3 copies at 23.1–23.4 Mb CCCTAAA: 3 copies at 23.1–23.4 Mb TTTAGGG: 3 copies at 23.4–23.7 Mb CCCTAAA: 1 copies at 23.7–24.0 Mb TTTAGGG: 3 copies at 24.0–24.3 Mb CCCTAAA: 3 copies at 24.3–24.6 Mb TTTAGGG: 2 copies at 24.6–24.9 Mb TTTAGGG: 2 copies at 24.9–25.2 Mb CCCTAAA: 2 copies at 24.9–25.2 Mb TTTAGGG: 2 copies at 25.2–25.5 Mb CCCTAAA: 3 copies at 25.2–25.5 Mb TTTAGGG: 3 copies at 25.8–26.1 Mb CCCTAAA: 3 copies at 25.8–26.1 Mb TTTAGGG: 3 copies at 26.1–26.4 Mb CCCTAAA: 1 copies at 26.1–26.4 Mb TTTAGGG: 3 copies at 26.7–27.0 Mb CCCTAAA: 2 copies at 26.7–27.0 Mb TTTAGGG: 2 copies at 27.0–27.3 Mb CCCTAAA: 3 copies at 27.3–27.6 Mb TTTAGGG: 1 copies at 28.5–28.8 Mb CCCTAAA: 3 copies at 28.5–28.8 Mb TTTAGGG: 3 copies at 28.8–29.1 Mb CCCTAAA: 1 copies at 28.8–29.1 Mb TTTAGGG: 1 copies at 29.1–29.4 Mb TTTAGGG: 310 copies at 29.4–29.7 Mb CCCTAAA: 2 copies at 29.4–29.7 Mb TTTAGGG: 1,240 copies at 29.7–30.0 Mb CCCTAAA: 2 copies at 29.7–30.0 Mb 0 Mb 10 Mb 20 Mb 30 Mb 5′ end · CCCTAAA 3′ end · TTTAGGG interstitial
Schematic of tidk search output for one 30 Mb chromosome in 300 kb windows. Strand-specific repeats spike at each end, plus a small interstitial telomeric sequence. Hover a bar for counts.

Rust · graph algorithms

gfatk

Untangling mitochondrial assembly graphs

Plant mitochondria recombine across repeats, so assemblers return a graph, not a sequence. gfatk reads these GFA graphs, separates mitochondrion from plastid, and finds a linear path that uses every segment as many times as its coverage suggests.

Its ideas went on to underpin Oatk, now a widely used de novo organelle assembler.

$ gfatk stats mito.gfa -t
$ gfatk extract-mito assembly.gfa | gfatk linear > mito.fa
$ gfatk dot mito.gfa | dot -Tsvg > mito.svg
u1 (unique)u2 (unique)
An assembly graph with a repeat segment u3 joining two loops, u1 and u2. gfatk walks u3, u1, u3, u2 to produce one 468 kb linear sequence. u1 · 182 kb · 1× coverage u2 · 238 kb · 1× coverage u3 · 24 kb repeat · 2× coverage u1 · 182 kb u2 · 238 kb u3 · repeat · 2× recombining repeat pair gfatk linear → one sequence, u3+ u1+ u3+ u2+ 468 kb 0
Schematic. Two unique segments joined by a repeat seen at twice the coverage. The animated walk traverses the repeat twice, giving one 468 kb sequence.

Rust · Wellcome Open Research 2023

goat-cli

Asking questions of the whole tree of life

Genomes on a Tree (GoaT) holds genome size, chromosome number and sequencing status for every eukaryote. The command-line client turns a one-line question into an API query, so you can survey thousands of species from the shell.

The chart is built from the same API: every measured plant genome size in eight orders, 5,164 species in all.

# which plants have genomes over 100 Gb?
$ goat-cli taxon search -t Liliales -d --tax-rank species -e 'genome_size > 1e11'
# how many flowering plants have chromosome-level assemblies?
$ goat-cli taxon count -t Magnoliopsida -d --tax-rank species -e 'assembly_level = chromosome'
Measured genome sizes of 5,164 plant species in eight orders, from the GoaT API, on a log scale from 40 Mb to 250 Gb. Medians rise from about 0.6 Gb in Brassicales to 26 Gb in Liliales. 100 Mb 1 Gb 10 Gb 100 Gb Brassicales Arabidopsis thaliana · 176 Mb Hornungia alpina · 176 Mb Cardamine impatiens · 178 Mb Conringia orientalis · 200 Mb Erysimum cheiranthoides · 202 Mb Camelina laxa · 210 Mb Rorippa austriaca · 222 Mb Turritis glabra · 235 Mb Barbarea stricta · 240 Mb Sisymbrium loeselii · 243 Mb Cardamine flexuosa · 244 Mb Cardamine hirsuta · 254 Mb Euclidium syriacum · 254 Mb Arabis sagittata · 258 Mb Rorippa palustris · 264 Mb Cardamine glauca · 269 Mb Draba lasiocarpa · 269 Mb Sisymbrium altissimum · 284 Mb Arabis montbretiana · 284 Mb Thlaspi praecox · 293 Mb Camelina hispida · 299 Mb Cleome hassleriana · 300 Mb Lepidium densiflorum · 312 Mb Noccaea caerulescens · 313 Mb Capsella bursa-pastoris · 323 Mb Descurainia sophia · 333 Mb Chorispora tenella · 342 Mb Reseda scoparia · 342 Mb Cardamine matthioli · 355 Mb Olimarabidopsis pumila · 362 Mb Pseudoturritis turrita · 378 Mb Arabis alpina · 381 Mb Carica papaya · 384 Mb Arabidopsis arenosa · 384 Mb Arabis scabra · 411 Mb Salvadora persica · 411 Mb Aubrieta libanotica · 421 Mb Drabella muralis · 422 Mb Lepidium coronopus · 434 Mb Isatis indigotica · 445 Mb Erysimum duriaei · 460 Mb Noccaea goesingensis · 484 Mb Arabidopsis kamchatica · 506 Mb Thlaspi montanum · 513 Mb Raphanus raphanistrum · 514 Mb Teesdalia nudicaulis · 514 Mb Rorippa amphibia · 524 Mb Odontarrhena markgrafii · 528 Mb Sisymbrium orientale · 528 Mb Rapistrum rugosum · 553 Mb Odontarrhena muralis · 567 Mb Mutarda arvensis · 577 Mb Ricotia lunaria · 577 Mb Aurinia saxatilis · 580 Mb Moringa oleifera · 587 Mb Camelina rumelica · 599 Mb Alyssum alyssoides · 605 Mb Vasconcellea goudotiana · 606 Mb Erysimum odoratum · 609 Mb Gyrostemon ramulosus · 631 Mb Microthlaspi perfoliatum · 636 Mb Brassica nigra · 645 Mb Lepidium tenuicaule · 645 Mb Camelina microcarpa · 661 Mb Rapistrum perenne · 667 Mb Erysimum goniocaulon · 675 Mb Lepidium latifolium · 675 Mb Reseda luteola · 685 Mb Sisymbrium strictissimum · 685 Mb Arabis hirsuta · 694 Mb Brassica oleracea · 704 Mb Cardamine glanduligera · 742 Mb Erysimum marschallianum · 743 Mb Armoracia rusticana · 763 Mb Rorippa sylvestris · 763 Mb Camelina sativa · 770 Mb Draba incana · 773 Mb Camelina alyssum · 778 Mb Cardamine pensylvanica · 812 Mb Cochlearia officinalis · 812 Mb Cakile edentula · 822 Mb Berteroa incana · 826 Mb Cochlearia micacea · 841 Mb Cochlearia danica · 890 Mb Cardamine yezoensis · 918 Mb Erysimum diffusum · 928 Mb Cardamine pratensis · 958 Mb Reseda lutea · 958 Mb Cylicomorpha parviflora · 966 Mb Iberis amara · 998 Mb Coincya wrightii · 1 Gb Crambe tatarica · 1 Gb Erucastrum gallicum · 1.1 Gb Cardamine heptaphylla · 1.1 Gb Floerkea proserpinacoides · 1.1 Gb Cardamine torrentis · 1.2 Gb Alliaria petiolata · 1.2 Gb Tropaeolum majus · 1.2 Gb Cardamine enneaphyllos · 1.2 Gb Resetnikia triquetra · 1.3 Gb Lepidium naufragorum · 1.4 Gb Cardamine dentata · 1.5 Gb Braya humilis · 1.6 Gb Dontostemon micranthus · 1.6 Gb Biscutella laevigata · 1.8 Gb Cardamine bulbosa · 1.8 Gb Subularia aquatica · 1.8 Gb Aethionema cordifolium · 2.1 Gb Crambe maritima · 2.2 Gb Bunias orientalis · 2.6 Gb Cardamine raphanifolia · 4.3 Gb Hesperis matronalis · 8.2 Gb Brassicales median · 606 Mb (n = 161) Rosales Fragaria viridis · 98 Mb Rubus innominatus · 264 Mb Rubus spectabilis · 264 Mb Fragaria moschata · 274 Mb Rubus pinfaensis · 289 Mb Prunus pumila · 293 Mb Rosa blanda · 293 Mb Prunus pensylvanica · 303 Mb Rubus lasiostylus · 303 Mb Prunus dulcis · 323 Mb Prunus besseyi · 328 Mb Parietaria pensylvanica · 357 Mb Prunus fenzliana · 367 Mb Filipendula ulmaria · 391 Mb Gillenia trifoliata · 406 Mb Pomaderris cinerea · 419 Mb Frangula caroliniana · 425 Mb Pomaderris subplicata · 432 Mb Pomaderris briagolensis · 434 Mb Pomaderris velutina · 437 Mb Pomaderris delicata · 443 Mb Pomaderris mediora · 445 Mb Pomaderris racemosa · 448 Mb Pomaderris cocoparrana · 468 Mb Pomaderris bodalla · 472 Mb Crataegus sp. · 474 Mb Pomaderris forrestiana · 484 Mb Urtica urens · 499 Mb Rhamnus davurica · 518 Mb Argentina anserina · 548 Mb Parietaria officinalis · 553 Mb Prunus prostrata · 557 Mb Rhamnus cathartica · 557 Mb Pyrus elaeagrifolia · 562 Mb Dasiphora fruticosa · 577 Mb Rosa bracteata · 587 Mb Morus alba · 633 Mb Laportea canadensis · 645 Mb Pyrus cordata · 645 Mb Malus ombrophila · 656 Mb Fragaria virginiana · 660 Mb Holoptelea integrifolia · 665 Mb Ficus pandurata · 685 Mb Ficus religiosa · 685 Mb Ficus retusa · 685 Mb Ficus trigonata · 685 Mb Prunus spinosa · 685 Mb Spiraea alba · 685 Mb Potentilla alba · 704 Mb Malus x hartwigii · 719 Mb Potentilla anglica · 724 Mb Malus zhaojiaoensis · 729 Mb Potentilla reptans · 734 Mb Polylepis hieronymi · 734 Mb Polylepis microphylla · 749 Mb Polylepis neglecta · 754 Mb Malus asiatica · 756 Mb Malus orientalis · 763 Mb Rubus saxatilis · 773 Mb Malus x soulardii · 778 Mb Malus sieversii · 780 Mb Karpatiosorbus devoniensis · 782 Mb Crataegus spathulata · 787 Mb Crataegus wilsonii · 787 Mb Eriobotrya japonica · 807 Mb Pomaderris paniculosa · 821 Mb Spiraea nipponica · 880 Mb Cannabis sativa · 949 Mb Rosa spinosissima · 1 Gb Malus hupehensis · 1 Gb Potentilla hirta · 1 Gb Aria saxicola · 1.1 Gb Aria cheddarensis · 1.1 Gb Aria leighensis · 1.1 Gb Crataegus rhipidophylla · 1.2 Gb Malus toringoides · 1.2 Gb Crataegus pinnatifida · 1.2 Gb Geum macrophyllum · 1.2 Gb Malus ioensis · 1.2 Gb Urtica dioica · 1.2 Gb Celtis australis · 1.3 Gb Crataegus uniflora · 1.3 Gb Cotoneaster cambricus · 1.3 Gb Scandosorbus intermedia · 1.4 Gb Rosa rubiginosa · 1.4 Gb Aremonia agrimonioides · 1.4 Gb Hedlundia hybrida · 1.4 Gb Prinsepia uniflora · 1.5 Gb Aria eminentoides · 1.5 Gb Aria x leptophylla · 1.5 Gb Aria margaretae · 1.5 Gb Crataegus phaenopyrum · 1.5 Gb Crataegus rivularis · 1.5 Gb Malus coronaria · 1.5 Gb Crataegus phippsii · 1.6 Gb Karpatiosorbus admonitor · 1.6 Gb Crataegus harbisonii · 1.6 Gb Crataegus castlegarensis · 1.6 Gb Crataegus ashei · 1.6 Gb Crataegus agrestina · 1.6 Gb Crataegus submollis · 1.6 Gb Crataegus okennonii · 1.6 Gb Malus sargentii · 1.7 Gb Potentilla indica · 1.8 Gb Alchemilla mollis · 1.8 Gb Alchemilla alpina · 1.8 Gb Alchemilla plicata · 1.8 Gb Aria cambrensis · 1.8 Gb Agrimonia eupatoria · 3 Gb Pyrus pyraster · 7.3 Gb Rosales median · 753 Mb (n = 420) Lamiales Genlisea tuberosa · 65 Mb Utricularia purpurea · 79 Mb Utricularia striata · 117 Mb Genlisea margaretae · 168 Mb Utricularia macrorhiza · 193 Mb Utricularia asplundii · 202 Mb Utricularia microcalyx · 205 Mb Utricularia uniflora · 244 Mb Utricularia livida · 245 Mb Utricularia geminiloba · 286 Mb Utricularia subulata · 293 Mb Pinguicula vallisneriifolia · 343 Mb Ocimum tenuiflorum · 352 Mb Micromeria lachnophylla · 362 Mb Veronica filiformis · 362 Mb Utricularia laxa · 380 Mb Globularia alypum · 391 Mb Scutellaria galericulata · 401 Mb Utricularia chrysantha · 403 Mb Scutellaria minor · 421 Mb Veronica serpyllifolia · 440 Mb Penstemon dissectus · 460 Mb Clinopodium menthifolium · 484 Mb Salvia canariensis · 484 Mb Anarrhinum orientale · 489 Mb Verbena urticifolia · 504 Mb Salvia pratensis · 509 Mb Penstemon serrulatus · 523 Mb Veronica pusilla · 523 Mb Cymbalaria muralis · 528 Mb Meehania urticifolia · 567 Mb Penstemon rostriflorus · 567 Mb Pinguicula moctezumae · 571 Mb Penstemon pinifolius · 582 Mb Clinopodium acinos · 587 Mb Linaria saxatilis · 592 Mb Penstemon fendleri · 592 Mb Pinguicula mundi · 615 Mb Parmentiera cereifera · 636 Mb Penstemon albertinus · 655 Mb Streptocarpus cyaneus · 660 Mb Primulina laxiflora · 665 Mb Pinguicula ibarrae · 675 Mb Pinguicula rectifolia · 675 Mb Salvia verticillata · 677 Mb Pinguicula agnata · 697 Mb Penstemon wilcoxii · 699 Mb Pinguicula dertosensis · 707 Mb Penstemon pseudospectabilis · 709 Mb Origanum elongatum · 729 Mb Streptocarpus ionanthus · 734 Mb Stachys distans · 753 Mb Veronica cymbalaria · 753 Mb Scrophularia nodosa · 763 Mb Pinguicula laueana · 787 Mb Pinguicula esseriana · 794 Mb Penstemon strictus · 802 Mb Volkameria inermis · 841 Mb Fraxinus nigra · 880 Mb Primulina subulata · 880 Mb Primulina medica · 900 Mb Veronica scutellata · 900 Mb Penstemon nitidus · 910 Mb Buddleja lindleyana · 919 Mb Primulina ronganensis · 949 Mb Callitriche hermaphroditica · 954 Mb Primulina yangshuoensis · 958 Mb Primulina qingyuanensis · 963 Mb Primulina liboensis · 968 Mb Digitalis chalcantha · 993 Mb Primulina cordata · 998 Mb Primulina guihaiensis · 1 Gb Primulina longii · 1 Gb Veronica albicans · 1 Gb Veronica pimeleoides · 1 Gb Ruellia humilis · 1 Gb Primulina tenuituba · 1.1 Gb Primulina mollifolia · 1.1 Gb Scutellaria lateriflora · 1.1 Gb Satureja cuneifolia · 1.1 Gb Ajuga spectabilis · 1.1 Gb Sesamum prostratum · 1.2 Gb Verbena rigida · 1.2 Gb Ramonda myconi · 1.3 Gb Jacaranda cuspidifolia · 1.3 Gb Penstemon confertus · 1.3 Gb Lamium maculatum · 1.3 Gb Handroanthus serratifolius · 1.3 Gb Bellardia viscosa · 1.3 Gb Vitex pinnata · 1.4 Gb Ballota nigra · 1.4 Gb Lamium moschatum · 1.5 Gb Veronica hederifolia · 1.5 Gb Buddleja davidii · 1.5 Gb Sesamum occidentale · 1.5 Gb Scrophularia lyrata · 1.6 Gb Coleus scutellarioides · 1.7 Gb Picrorhiza kurrooa · 1.7 Gb Galeopsis tetrahit · 1.7 Gb Sideritis brevicaulis · 1.8 Gb Odontitella virgata · 2.1 Gb Orobanche lutea · 2.4 Gb Collinsia tinctoria · 2.7 Gb Pedicularis hoermanniana · 2.8 Gb Justicia hyssopifolia · 2.8 Gb Orobanche portoilicitana · 4.3 Gb Callitriche hamulata · 4.3 Gb Orobanche coelestis · 4.4 Gb Phelipanche hirtiflora · 4.7 Gb Plantago raoulii · 4.8 Gb Betonica officinalis · 4.9 Gb Melampyrum lineare · 10.5 Gb Lamiales median · 846 Mb (n = 748) Poales Carex brownii · 196 Mb Carex paxii · 196 Mb Juncus effusus · 293 Mb Bouteloua hirsuta · 328 Mb Carex chordorrhiza · 333 Mb Brachypodium arbuscula · 337 Mb Carex tenera · 341 Mb Oreojuncus trifidus · 352 Mb Carex hoodii · 360 Mb Carex projecta · 361 Mb Trichophorum germanicum · 372 Mb Carex makinoensis · 391 Mb Tetraria thermalis · 396 Mb Carex pairae · 401 Mb Carex conjuncta · 415 Mb Carex disperma · 421 Mb Carex rosea · 428 Mb Catopsis nitida · 430 Mb Brachypodium sylvaticum · 440 Mb Carex echinata · 450 Mb Carex riloensis · 479 Mb Carex conica · 489 Mb Carex blanda · 518 Mb Tillandsia bulbosa · 523 Mb Pitcairnia tabuliformis · 538 Mb Werauhia viridiflora · 562 Mb Werauhia vittata · 572 Mb Cyperus esculentus · 587 Mb Carex brachystachys · 597 Mb Pitcairnia macrochlamys · 599 Mb Carex communis · 601 Mb Sorghum timorense · 621 Mb Pitcairnia hitchcockiana · 626 Mb Carex albursina · 636 Mb Pitcairnia glauca · 641 Mb Cryptanthus sp. · 650 Mb Carex livida · 685 Mb Encholirium biflorum · 685 Mb Carex kitaibeliana · 694 Mb Tillandsia fasciculata · 768 Mb Juncus triglumis · 792 Mb Aechmea filicaulis · 840 Mb Carex callitrichos · 880 Mb Dyckia distachya · 910 Mb Digitaria longiflora · 914 Mb Carex vulpina · 939 Mb Encholirium magalhaesii · 949 Mb Schizachne purpurascens · 973 Mb Encholirium luxor · 988 Mb Restio macer · 988 Mb Encholirium spectabile · 1.1 Gb Sorghum stipoideum · 1.1 Gb Cenchrus clandestinus · 1.1 Gb Dichanthelium depauperatum · 1.1 Gb Eleusine indica · 1.1 Gb Thamnochortus schlechteri · 1.1 Gb Colpodium versicolor · 1.2 Gb Thyrsostachys siamensis · 1.2 Gb Glyceria fluitans · 1.3 Gb Cenchrus ciliaris · 1.3 Gb Echinochloa frumentacea · 1.3 Gb Elegia thyrsifera · 1.3 Gb Eleocharis parvula · 1.3 Gb Rytidosperma viride · 1.3 Gb Rytidosperma telmaticum · 1.5 Gb Microlaena carsei · 1.6 Gb Tillandsia didisticha · 1.6 Gb Puccinellia stricta · 1.7 Gb Elegia galpinii · 1.9 Gb Cenchrus ramosus · 2 Gb Poa spania · 2 Gb Blysmopsis rufa · 2.1 Gb Sporobolus purpurascens · 2.2 Gb Phyllostachys edulis · 2.3 Gb Hesperostipa spartea · 2.3 Gb Festuca inops · 2.4 Gb Chionochloa spiralis · 2.5 Gb Elegia racemosa · 2.6 Gb Festuca lenensis · 2.6 Gb Sorghum interjectum · 3.6 Gb Miscanthus sacchariflorus · 4.1 Gb Sesleria autumnalis · 4.2 Gb Taeniatherum caput-medusae · 4.3 Gb Festuca auquieri · 4.6 Gb Sesleria heufleriana · 4.8 Gb Deschampsia tenella · 4.9 Gb Avena eriantha · 5 Gb Sorghum bicolor · 5 Gb Apera spica-venti · 5.3 Gb Imperata cylindrica · 5.3 Gb Poa schistacea · 5.4 Gb Agrostis muelleriana · 5.5 Gb Triticum monococcum · 5.9 Gb Bromus arvensis · 5.9 Gb Polypogon billardierei · 6.5 Gb Bromus rubens · 6.6 Gb Calamagrostis avenoides · 6.6 Gb Festuca contracta · 7.3 Gb Hordeum depressum · 7.6 Gb Bromus lepidus · 7.7 Gb Bromus arenarius · 8 Gb Bromus marginatus · 8.2 Gb Briza maxima · 8.5 Gb Avena nuda · 8.5 Gb Secale montanum · 9.2 Gb Hordeum murinum · 9.5 Gb Festuca brigantina · 9.8 Gb Triticum timopheevii · 9.9 Gb Dasypyrum hordeaceum · 10.3 Gb Thinopyrum junceiforme · 11.2 Gb Leymus arenarius · 19 Gb Anthoxanthum amarum · 21.8 Gb Poales median · 1.2 Gb (n = 1507) Asterales Gnaphalium uliginosum · 411 Mb Erigeron canadensis · 472 Mb Filago arvensis · 583 Mb Facelis retusa · 597 Mb Logfia minima · 606 Mb Craspedia glabrata · 680 Mb Centaurea hololeuca · 714 Mb Cheirolophus lagunae · 738 Mb Campanula buseri · 773 Mb Sonchus asper · 802 Mb Carduus acanthoides · 807 Mb Hypochaeris cretensis · 822 Mb Carduus personata · 826 Mb Leontodon incanus · 978 Mb Calendula stellata · 1 Gb Leontopodium artemisiifolium · 1 Gb Azorina vidalii · 1 Gb Centaurea phrygia · 1.1 Gb Bellium bellidioides · 1.1 Gb Craspedia jamesii · 1.1 Gb Crepis leontodontoides · 1.1 Gb Taraxacum alatum · 1.2 Gb Cirsium dissectum · 1.2 Gb Picris hieracioides · 1.2 Gb Vernonanthura chaquensis · 1.2 Gb Helichrysum obconicum · 1.2 Gb Taraxacum officinale · 1.2 Gb Phyteuma spicatum · 1.3 Gb Taraxacum crassum · 1.3 Gb Crocodilium crocodylium · 1.3 Gb Antennaria dioica · 1.3 Gb Erigeron muralis · 1.3 Gb Taraxacum obtusifrons · 1.3 Gb Campanula herminii · 1.4 Gb Chondrilla juncea · 1.4 Gb Symphyotrichum ontarionis · 1.4 Gb Craspedia crocata · 1.4 Gb Reichardia intermedia · 1.4 Gb Symphyotrichum lateriflorum · 1.4 Gb Centaurea dealbata · 1.4 Gb Edraianthus graminifolius · 1.4 Gb Stylidium adnatum · 1.5 Gb Edraianthus serpyllifolius · 1.5 Gb Vernonanthura loretensis · 1.5 Gb Andryala pinnatifida · 1.6 Gb Serratula tinctoria · 1.6 Gb Senecio vulgaris · 1.7 Gb Edraianthus pumilio · 1.7 Gb Launaea cervicornis · 1.7 Gb Tussilago farfara · 1.7 Gb Campanula glomerata · 1.8 Gb Edraianthus wettsteinii · 1.9 Gb Craspedia costiniana · 1.9 Gb Centaurea nigra · 2 Gb Andryala ragusina · 2.1 Gb Aposeris foetida · 2.1 Gb Jacobaea vulgaris · 2.1 Gb Haplopappus velutinus · 2.1 Gb Taraxacum stenocephalum · 2.2 Gb Craspedia maxgrayi · 2.4 Gb Scorzonera cana · 2.4 Gb Baccharis pingraea · 2.4 Gb Achillea crithmifolia · 2.4 Gb Taraxacum nordstedtii · 2.5 Gb Coreopsis tripteris · 2.5 Gb Arctium lappa · 2.6 Gb Calendula arvensis · 2.6 Gb Polymnia canadensis · 2.6 Gb Achillea coarctata · 2.7 Gb Echinops borae · 2.7 Gb Curio rowleyanus · 2.8 Gb Achillea filipendulina · 2.8 Gb Matricaria chamomilla · 2.9 Gb Achyrocline alata · 2.9 Gb Eupatorium altissimum · 3 Gb Tripleurospermum maritimum · 3 Gb Petasites albus · 3.1 Gb Petasites hybridus · 3.2 Gb Hieracium stelligerum · 3.4 Gb Artemisia granatensis · 3.7 Gb Artemisia assoana · 3.9 Gb Hieracium kittanae · 4.1 Gb Hieracium plumulosum · 4.2 Gb Tephroseris crispa · 4.4 Gb Hieracium longipilum · 4.5 Gb Achillea collina · 4.6 Gb Lessingianthus scabrifoliatus · 4.8 Gb Achillea pratensis · 4.9 Gb Tanacetum vulgare · 5.1 Gb Hieracium gymnocerinthe · 5.2 Gb Tephroseris integrifolia · 5.2 Gb Cancrinia maximowiczii · 5.3 Gb Hieracium rohlenae · 5.3 Gb Parthenium integrifolium · 5.5 Gb Hieracium aggregatifolium · 5.5 Gb Hieracium glaucum · 5.6 Gb Catananche caerulea · 5.6 Gb Helianthus anomalus · 5.8 Gb Helianthus heterophyllus · 5.8 Gb Artemisia alba · 5.9 Gb Hieracium pannosum · 6.9 Gb Pratia angulata · 7.4 Gb Chrysanthemum chanetii · 9.5 Gb Tanacetum corymbosum · 9.6 Gb Tripolium pannonicum · 9.8 Gb Senecio aloides · 9.9 Gb Kleinia stapeliiformis · 10 Gb Ajania pallasiana · 11.6 Gb Helianthus agrestis · 11.8 Gb Santolina chamaecyparissus · 14.4 Gb Leucanthemum illyricum · 15.8 Gb Asterales median · 2.2 Gb (n = 832) Asparagales Apostasia nuda · 367 Mb Dracaena trifasciata · 604 Mb Polystachya maculata · 606 Mb Apostasia fogangica · 931 Mb Dendrobium taylorii · 978 Mb Asparagus falcatus · 1 Gb Astelia fragrans · 1.1 Gb Dendrobium bicaudatum · 1.2 Gb Dendrobium helix · 1.2 Gb Epidendrum rigidum · 1.2 Gb Hesperoxiphion peruvianum · 1.3 Gb Dendrobium violaceoflavens · 1.4 Gb Polystachya fusiformis · 1.4 Gb Polystachya tsaratananae · 1.5 Gb Ansellia africana · 1.6 Gb Chysis bractescens · 1.8 Gb Gomesa imperatoris-maximiliani · 1.9 Gb Cyrtochilum tricostatum · 1.9 Gb Vitekorchis excavata · 2.1 Gb Sisyrinchium littorale · 2.2 Gb Dendrobium densiflorum · 2.4 Gb Sisyrinchium idahoense · 2.4 Gb Yucca glauca · 2.6 Gb Cyrtochilum serratum · 2.6 Gb Gastrochilus calceolaris · 2.7 Gb Brassia arcuigera · 2.7 Gb Trichopilia marginata · 2.7 Gb Phalaenopsis fasciata · 3 Gb Oncidium ansiferum · 3 Gb Phalaenopsis lueddemanniana · 3.2 Gb Angraecum sesquipedale · 3.2 Gb Oncidium bracteatum · 3.2 Gb Oncidium noezlianum · 3.4 Gb Brassia ocanensis · 3.6 Gb Trichopilia sanguinolenta · 3.7 Gb Epidendrum falcatum · 3.8 Gb Brassia verrucosa · 3.8 Gb Echinoagave stricta · 3.8 Gb Agave utahensis · 4 Gb Trimezia spathata · 4.3 Gb Echeandia nana · 4.4 Gb Iris sibirica · 4.4 Gb Miltonia regnellii · 4.6 Gb Trichocentrum microchilum · 4.8 Gb Platanthera clavellata · 5.3 Gb Orchis purpurea · 5.7 Gb Iris reichenbachii · 5.8 Gb Agave gigantensis · 5.9 Gb Dactylorhiza fuchsii · 6 Gb Coelogyne barbata · 6.5 Gb Goodyera pubescens · 6.5 Gb Nolina matapensis · 6.5 Gb Herminium gramineum · 7.2 Gb Triteleia laxa · 8 Gb Beaucarnea hookeri · 8.9 Gb Ophiopogon bockianus · 9 Gb Agave cupreata · 9 Gb Narcissus triandrus · 9.3 Gb Ipheion uniflorum · 9.4 Gb Nerine filamentosa · 9.6 Gb Narcissus bulbocodium · 9.7 Gb Iris orchioides · 9.8 Gb Phaius wallichii · 10.1 Gb Ferraria crispa · 10.1 Gb Liriope muscari · 10.1 Gb Bellevalia pycnantha · 10.9 Gb Agapanthus campanulatus · 11.1 Gb Nerine frithii · 11.3 Gb Romulea phoenicia · 11.4 Gb Agapanthus caulescens · 11.4 Gb Nerine pusilla · 13.7 Gb Hyacinthella nervosa · 13.8 Gb Allium mairei · 14.4 Gb Narcissus tazetta · 14.8 Gb Corallorhiza maculata · 15.6 Gb Corallorhiza odontorhiza · 15.7 Gb Allium vvedenskyanum · 16.4 Gb Aloe forbesii · 16.4 Gb Hippeastrum machupijchense · 16.7 Gb Aloe suffulta · 16.8 Gb Gasteria glauca · 17.4 Gb Gasteria glomerata · 17.4 Gb Allium heldreichii · 17.4 Gb Gasteria disticha · 17.5 Gb Scilla peruviana · 17.7 Gb Allium intradarvazicum · 18.5 Gb Limodorum abortivum · 19 Gb Bulbine bulbosa · 19.1 Gb Allium victorialis · 19.1 Gb Allium rosenorum · 19.4 Gb Allium cardiostemon · 19.6 Gb Allium schubertii · 19.8 Gb Allium senescens · 21.1 Gb Paphiopedilum insigne · 21.3 Gb Allium neriniflorum · 21.7 Gb Allium macleanii · 23.1 Gb Paphiopedilum glanduliferum · 23.2 Gb Bellevalia desertorum · 24 Gb Hyacinthus orientalis · 25.1 Gb Cryptostephanus haemanthoides · 25.2 Gb Allium thunbergii · 25.8 Gb Allium splendens · 26.1 Gb Galanthus peshmenii · 27.6 Gb Beauverdia dialystemon · 27.9 Gb Nothoscordum nudicaule · 29.7 Gb Tristagma violaceum · 32.5 Gb Galanthus nivalis · 34.1 Gb Allium nutans · 34.3 Gb Cypripedium flavum · 35.6 Gb Cypripedium henryi · 37.9 Gb Allium cyrilli · 38.1 Gb Galanthus lagodechianus · 80.3 Gb Asparagales median · 8.2 Gb (n = 1179) Santalales Thesium pyrenaicum · 254 Mb Santalum album · 281 Mb Rhoiacarpos capensis · 303 Mb Thesium alpinum · 616 Mb Thesium humifusum · 900 Mb Comandra umbellata · 1.1 Gb Ximenia americana · 1.6 Gb Dendrophthoe glabrescens · 2.6 Gb Nuytsia floribunda · 2.8 Gb Dendrophthoe odontocalyx · 3.1 Gb Ileostylus micranthus · 3.7 Gb Tupeia antarctica · 4 Gb Dendrophthoe homoplastica · 4.5 Gb Dendrophthoe vitellina · 4.7 Gb Dendrophthoe falcata · 6.1 Gb Peraxilla colensoi · 6.2 Gb Muellerina eucalyptoides · 6.4 Gb Sogerianthe sessiliflora · 6.7 Gb Alepis flavida · 7.1 Gb Decaisnina brittenii · 7.8 Gb Loranthus europaeus · 8.1 Gb Decaisnina signata · 8.4 Gb Amyema lucasii · 9 Gb Arceuthobium oxycedri · 9.3 Gb Amyema maidenii · 9.4 Gb Amyema quandang · 9.4 Gb Amyema congener · 9.5 Gb Amyema queenslandica · 9.6 Gb Benthamina alyxifolia · 9.9 Gb Amyema gaudichaudii · 10.7 Gb Lysiana casuarinae · 10.8 Gb Lysiana spathulata · 11 Gb Amyema melaleucae · 11.2 Gb Lysiana subfalcata · 11.4 Gb Amyema cambagei · 12.2 Gb Amyema nestor · 12.5 Gb Lysiana linearifolia · 12.6 Gb Lysiana murrayi · 12.6 Gb Amylotheca dictyophleba · 13.4 Gb Amyema friesiana · 13.5 Gb Amyema finisterrae · 13.6 Gb Decaisnina hollrungii · 14.7 Gb Plicosepalus acaciae · 14.9 Gb Amyema preissii · 15 Gb Lysiana exocarpi · 15 Gb Diplatia furcata · 15.6 Gb Amyema miquelii · 16.6 Gb Macrosolen cochinchinensis · 17.1 Gb Viscum minimum · 60.9 Gb Viscum crassulae · 80.2 Gb Viscum cruciatum · 81.8 Gb Viscum album · 87.1 Gb Santalales median · 9.5 Gb (n = 52) Liliales Schoenocaulon texanum · 641 Mb Anticlea occidentalis · 1.5 Gb Stenanthium gramineum · 1.6 Gb Veratrum schindleri · 2 Gb Veratrum woodii · 2.2 Gb Veratrum longibracteatum · 2.2 Gb Helonias koreana · 2.4 Gb Colchicum speciosum · 2.5 Gb Veratrum nigrum · 2.7 Gb Veratrum parviflorum · 2.9 Gb Xerophyllum tenax · 3 Gb Helonias orientalis · 3.1 Gb Veratrum album · 3.2 Gb Veratrum viride · 3.3 Gb Smilax ecirrhata · 4.2 Gb Tricyrtis hirta · 4.3 Gb Colchicum cupanii · 4.4 Gb Smilax lasioneura · 4.7 Gb Helonias thibetica · 5 Gb Colchicum lusitanum · 5.2 Gb Gagea minima · 5.3 Gb Colchicum autumnale · 6 Gb Gagea pusilla · 6.1 Gb Lapageria rosea · 6.5 Gb Gagea wilczekii · 8.5 Gb Uvularia sessilifolia · 8.7 Gb Gagea soleirolii · 9 Gb Gagea lojaconoi · 9.3 Gb Gagea chrysantha · 9.4 Gb Ripogonum papuanum · 10.9 Gb Gagea villosa · 12.1 Gb Lilium amabile · 13.4 Gb Uvularia grandiflora · 16.6 Gb Gagea pratensis · 19.5 Gb Tulipa borszczowii · 20.3 Gb Tulipa ferganica · 21.9 Gb Tulipa altaica · 22 Gb Tulipa urumiensis · 22.9 Gb Tulipa praestans · 23.4 Gb Alstroemeria brasiliensis · 24.5 Gb Tulipa biebersteiniana · 24.6 Gb Notholirion bulbuliferum · 24.6 Gb Tulipa alberti · 25.6 Gb Tulipa persica · 25.6 Gb Tulipa regelii · 25.6 Gb Tulipa kuschkensis · 26.1 Gb Tulipa ingens · 26.2 Gb Alstroemeria aurea · 26.6 Gb Tulipa patens · 26.9 Gb Tulipa hageri · 28.2 Gb Tulipa schmidtii · 28.3 Gb Tulipa hoogiana · 28.6 Gb Tulipa tetraphylla · 29.3 Gb Tulipa schrenkii · 30.1 Gb Tulipa julia · 30.1 Gb Tulipa sprengeri · 31.6 Gb Fritillaria davidii · 31.8 Gb Tulipa hungarica · 32.1 Gb Tulipa lanata · 32.1 Gb Tulipa celsiana · 32.3 Gb Lilium bosniacum · 33.2 Gb Lilium carniolicum · 33.3 Gb Tulipa saxatilis · 33.6 Gb Lilium pomponium · 34.4 Gb Lilium pyrenaicum · 34.4 Gb Lilium longiflorum · 34.4 Gb Notholirion thomsonianum · 35.6 Gb Fritillaria thunbergii · 38 Gb Trillium undulatum · 38.4 Gb Fritillaria persica · 40 Gb Lilium davidii · 40.1 Gb Fritillaria tubiformis · 44.8 Gb Fritillaria imperialis · 45.7 Gb Trillium albidum · 45.8 Gb Fritillaria meleagris · 46.3 Gb Trillium camschatcense · 46.6 Gb Lilium canadense · 46.8 Gb Trillium flexipes · 47.7 Gb Trillium sulcatum · 48.5 Gb Trillium kurabayashii · 48.9 Gb Trillium catesbaei · 49.3 Gb Trillium grandiflorum · 49.6 Gb Trillium viride · 50.4 Gb Fritillaria pyrenaica · 51.3 Gb Fritillaria liliacea · 51.6 Gb Paris quadrifolia · 51.7 Gb Trillium lancifolium · 51.9 Gb Trillium ovatum · 52.2 Gb Fritillaria camschatcensis · 52.3 Gb Trillium maculatum · 52.7 Gb Trillium sessile · 52.9 Gb Paris polyphylla · 53 Gb Paris thibetica · 53.4 Gb Fritillaria alfredae · 53.5 Gb Trillium chloropetalum · 53.7 Gb Tulipa sylvestris · 54.1 Gb Paris mairei · 54.7 Gb Trillium decipiens · 55.2 Gb Trillium underwoodii · 57.9 Gb Fritillaria olivieri · 64.2 Gb Fritillaria pudica · 64.9 Gb Fritillaria crassifolia · 65.1 Gb Fritillaria acmopetala · 69.3 Gb Fritillaria pinardii · 72.2 Gb Trillium taiwanense · 73.1 Gb Erythronium americanum · 73.5 Gb Fritillaria fleischeriana · 75.4 Gb Fritillaria elwesii · 76 Gb Fritillaria davisii · 77.7 Gb Trillium smallii · 83.6 Gb Paris japonica · 148.9 Gb Liliales median · 26.5 Gb (n = 265) Genlisea tuberosa 65 Mb Viscum album 87.1 Gb Paris japonica 148.9 Gb species median
Live data from the GoaT API (October 2026): measured genome sizes on a log scale. Each row shows up to 110 species, and medians use all 5,164. The European mistletoe genome is one we are working on.

JavaScript · D3

lwPhylo

Phylogenies for the web

A lightweight library that turns a Newick string into rectangular, radial or unrooted layouts for D3. It draws every tree figure on our Figures page.

This is the library itself, running live. Switch layouts, grow a new random tree, or click an internal node to rotate its clade.

import { randomTree } from "@euphrasiologist/lwphylo";
import drawPhylogeny from "@euphrasiologist/lwphylo/draw";

const tree = randomTree(28);
drawPhylogeny(tree, {
  layout: "radial", container: "#tree",
  rotateOnClick: true,
});

Loading lwPhylo…

Live lwPhylo 1.5.1, loaded from npm. Hover a branch to see its root-to-tip distance.

Approach

How we build software

Research code should outlive the paper it was written for. We aim for tools that are installable in one line, documented, tested and fast enough to run across entire genome collections rather than a handful of samples.

Beyond the packages above, recent work includes inverted-repeat detection, annotation of plant mitochondria and plastids, codon-aware alignment conversion, GFF statistics and transposable element alignment.

Languages: Rust, Python, R, JavaScript, SQL and the shell.