Skip to content

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

What can connect to what. Rows drive, columns are driven, and the numbers are the rows of the table below. A shaded cell cannot be connected: three would need two genome runs for the same lineage, and the rest pair levels that cannot depend on each other. A cell with the arrow with two heads runs joint only, because neither level can be simulated first. A boxed cell is one part of a level driving another part of the same level. A starred cell can also be written on the command line.

# 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.