The connection reference
The tables of Chapter 8, in one place: every connection, every driver, every target, and the verbs and mappings of the link.
Every connection

| # |
Driver |
Target |
What it says |
Conditioned |
Joint |
| 1 |
a trait |
a gene family |
habitat sets the loss rate; all four rates take a driver |
Co1–Co8 |
Jo5 |
| 2 |
a trait |
an ordered or nucleotide genome |
eleven rates at the ordered resolution, thirteen at the nucleotide one, and the extents besides |
Co9 |
— |
| 3 |
a trait |
a sequence |
habitat sets the substitution rate |
Co10 |
Jo2 |
| 4 |
a trait |
a trait |
one character sets another's rate or switch |
Co11–Co12 |
Jo4 |
| 5 |
a gene family |
a gene family |
a mobile element makes transfer likelier for the rest of the genome |
Co13 |
Jo6 |
| 6 |
a gene family |
a sequence |
lose the repair gene and evolve faster |
Co14 |
— |
| 7 |
a gene family |
a trait |
carry the toxin family and turn pathogenic |
Co15 |
Jo5 |
| 8 |
an ordered or nucleotide genome |
a sequence |
as 6, with coordinates in the genome run |
Co16 |
— |
| 9 |
an ordered or nucleotide genome |
a trait |
as 7, with coordinates in the genome run |
Co17–Co18 |
— |
| 10 |
a sequence |
a sequence |
one gene's composition indexes something about the lineage, and that sets another gene's rate |
Co19–Co20 |
Jo3 |
| 11 |
a sequence |
a trait |
GC content sets how fast a trait changes |
Co21 |
Jo2 |
| 12 |
a sequence |
a genome |
composition sets the loss rate of the genome that carries the gene; it can never be simulated first |
— |
Jo1 |
| 13 |
a trait |
the species tree |
speciation and extinction follow the state; the tree comes out of the run |
— |
Jo8–Jo12 |
| 14 |
gene content |
the species tree |
carrying a key family sets the speciation rate |
— |
Jo7 |
What can be a driver
In a conditioned run, a driver is a finished result:
| Driver |
What it offers |
Gallery |
| a discrete trait |
one of its states |
Co1 |
| a continuous trait |
a number, taken every step of time |
Co4 |
| a gene family |
present or absent |
Co14–Co15 |
| a module |
a fraction, 0 to 1: how complete a declared group of families is |
Co17 |
| a sequence's composition |
a number, 0 to 1: the share of its letters in a given set |
Co19 |
| one family's composition |
the same, on a run restricted to that family, plus an absent= |
Co20 |
In a joint run, a driver is named, and the name says which level it comes from:
| Driver |
What it offers |
Mapping |
"traits:<name>", discrete |
that trait's current state |
a table over the states |
"traits:<name>", continuous |
that trait's current value |
a curve, or a Scalar |
"genomes:<family>" |
whether that family is there |
a table over present / absent |
"genomes:count" |
how many genes the lineage has |
a curve, or a Scalar |
"sequences:<name>" |
how much of that gene is a given set of letters |
a curve, or a Scalar |
What can be a target
| Target |
Kind |
Level |
Gallery |
duplication, transfer, loss, origination |
how often |
genomes, every resolution |
Co1 |
inversion, transposition, translocation, fission, fusion, chromosome_origination, chromosome_loss |
how often |
genomes, ordered and nucleotide |
Co9 |
substitution |
how often |
sequences |
Co10 |
rate (continuous), switch (discrete) |
how often |
traits |
Co11–Co12 |
| every event's extent |
how much |
genomes, ordered and nucleotide; Python only |
Co9 |
transfer_to |
a choice |
genomes, every resolution |
Co3 |
| the substitution model |
a model |
sequences |
Sq2 |
birth, death |
how often |
species; joint runs only |
Jo8 |
The verbs
| Verb |
What the number does |
Written on |
Gallery |
scaled_by |
multiplies the base in front of it |
a rate, an extent |
Co1 |
set_by |
replaces the base, in the rate's own units, so nothing is written in front; on a substitution model it gives the model itself |
a rate, a substitution model |
Co7 |
weighted_by |
weighs the candidates against each other |
transfer_to, from Recipients() |
Co3 |
set_by is for when the literature states the rate itself (the loss rate is 1.0 in the water) rather than a multiple of a base you had to invent. weighted_by needs no base because its weights are normalised over whoever is alive when a transfer fires, so they choose the recipient and never change how many transfers happen.
The mappings
| The driver gives |
Mapping |
What it is |
Gallery |
| named states |
Table |
one factor per state; a bare dict is read as one, and a state left out is unchanged |
Co1 |
| a number |
Curve |
any function of it; a bare function is read as one, and bound= puts a ceiling on the factor, which an unbounded function needs |
Co5–Co6 |
| a number |
Scalar |
a strength, giving the factor exp(strength × value) |
Co8 |
| a pair of states |
Between |
one weight per ordered (donor, recipient) pair, default= for the rest; transfer_to only |
Ge3 |
Whatever the shape, the number that comes out of a mapping has no units and cannot be negative: it multiplies, or weighs, what it lands on. set_by is the one exception: its mapping gives the rate itself, in the rate's own units.