chemart / gard

View on GitHub

GARD (Graded Autocatalysis Replication Domain) — Heredity without a sequence. An assembly of lipid types grows by absorbing lipids from outside, and lipids already inside catalyse the entry of particular types, so the assembly's *composition* biases which lipids it tak…

How it works

Heredity without a sequence. An assembly of lipid types grows by absorbing lipids from outside, and lipids already inside catalyse the entry of particular types, so the assembly's *composition* biases which lipids it takes up next. Split it in two and each half tends to reconstruct the same composition - a composome. The information is in the multiset, not in an ordered polymer. It also shows cleanly that catalysis alone cannot shift an equilibrium: without the external supply, nothing happens.

S
lipid types L_1..L_N outside (buffered) and A_1..A_N inside one assembly; the assembly's COMPOSITION (a 'compositional genome' / composome) carries the information · explicit
R
L_i --k_f--> A_i ; A_i --k_b--> L_i ; L_i + A_j --beta_ij--> A_i + A_j (catalysis by lipids already in the assembly) · arity 1, 2
A
ssa · outside lipids buffered; the assembly splits in two when it reaches N_max molecules

Parameters

namedefaultmeaning
N_G
int · structural
100 number of lipid types; the network has N_G^2 catalysed joining reactions
[2, 200]
k_f
float · kinetic
0.01 basal joining rate constant
[0, ∞]
k_b
float · kinetic
0.0001 basal leaving rate constant
[0, ∞]
rho
float · population
0.01 buffered outside concentration of every lipid type
[0, ∞]
beta_mu
float · kinetic
-4.0 mean of ln(beta_ij); beta is the receptor-affinity-distribution rate enhancement
beta_sigma
float · kinetic
4.0 standard deviation of ln(beta_ij)
[0, ∞]
N_max
int · population
100 assembly size at which fission occurs; also the crowding capacity of joining
[2, ∞]
catalysed_leaving
bool · structural
false also accelerate leaving by beta_ij (the book's 'in both directions' reading), adding A_i + A_j -> L_i + A_j at k_b beta_ij

GARD (Graded Autocatalysis Replication Domain)

One of the artificial chemistries of Banzhaf & Yamamoto, Artificial Chemistries (MIT Press, 2015), §6.2.4; first proposed by Segre, Lancet et al., 1998-2001.

Its generator ships with the chemart library, so loading it runs no code from the hub and needs no trust_remote_code.

import chemart

net = chemart.generate_network("chemart/gard", seed=0)   # same as "gard"
print(net.summary())

What to look for

  • homeostatically stable composomes (quasi-stationary states)
  • composome succession as mutations accumulate
  • spontaneous symmetry breaking akin to homochirality (spatial variant)
  • known evolvability limits: replication fidelity is too low

Implementation decisions

  • The book gives the reaction scheme but no numbers. The rate equation and all parameter values are from the 2018 PLoS ONE GARD paper; each term becomes one mass-action reaction with outside lipids buffered at rho (checked in tests).
  • That equation accelerates only joining, while the book says catalysis acts 'in both directions'. The default follows the paper's equation; catalysed_leaving = true adds the book's reverse catalysis.
  • The crowding factor (1 - N/N_max) is not mass action. It is recorded on every joining rate as crowding_capacity, and fission at N_max is described in extras.compartments. beta is sampled from the seed, so the network is a random instance.
  • The polymer, EE and spatial variants are not generated (the former 'variant' parameter is dropped); split_size is N_max; k_i, k_minus_i and beta are replaced by the distribution parameters above. thermodynamic-consistency is not claimed, because the default catalyses only one direction.

Sources

  • Markovitch, O. & Krasnogor, N. (2018). Predicting species emergence in simulated complex pre-biotic networks. PLoS ONE 13(2): e0192871, doi:10.1371/journal.pone.0192871 - GARD rate equation, ln(beta) ~ Normal(-4, 4), k_f = 1e-2, k_b = 1e-4, rho = 1e-2, N_max = N_G = 100
  • Segre, D., Ben-Eli, D. & Lancet, D. (2000). Compositional genomes: prebiotic information transfer in mutually catalytic noncovalent assemblies. PNAS 97:4112-4117 (original model; parameters taken from the 2018 paper; this paper itself used k_b = 1e-5 and split at 2 N_min = 80)

Banzhaf & Yamamoto, Artificial Chemistries (2015), §6.2.4

Preview at default parameters

200 species · 10200 reactions · status complete · seed 1

L1 -> A1  [mass-action k=0.01 crowding_capacity=100.0]
A1 -> L1  [mass-action k=0.0001]
L2 -> A2  [mass-action k=0.01 crowding_capacity=100.0]
A2 -> L2  [mass-action k=0.0001]
L3 -> A3  [mass-action k=0.01 crowding_capacity=100.0]
A3 -> L3  [mass-action k=0.0001]
L4 -> A4  [mass-action k=0.01 crowding_capacity=100.0]
A4 -> L4  [mass-action k=0.0001]
L5 -> A5  [mass-action k=0.01 crowding_capacity=100.0]
A5 -> L5  [mass-action k=0.0001]
L6 -> A6  [mass-action k=0.01 crowding_capacity=100.0]
A6 -> L6  [mass-action k=0.0001]
L7 -> A7  [mass-action k=0.01 crowding_capacity=100.0]
A7 -> L7  [mass-action k=0.0001]
L8 -> A8  [mass-action k=0.01 crowding_capacity=100.0]
A8 -> L8  [mass-action k=0.0001]
L9 -> A9  [mass-action k=0.01 crowding_capacity=100.0]
A9 -> L9  [mass-action k=0.0001]
L10 -> A10  [mass-action k=0.01 crowding_capacity=100.0]
A10 -> L10  [mass-action k=0.0001]
L11 -> A11  [mass-action k=0.01 crowding_capacity=100.0]
A11 -> L11  [mass-action k=0.0001]
L12 -> A12  [mass-action k=0.01 crowding_capacity=100.0]
A12 -> L12  [mass-action k=0.0001]
L13 -> A13  [mass-action k=0.01 crowding_capacity=100.0]
A13 -> L13  [mass-action k=0.0001]
L14 -> A14  [mass-action k=0.01 crowding_capacity=100.0]
A14 -> L14  [mass-action k=0.0001]
L15 -> A15  [mass-action k=0.01 crowding_capacity=100.0]
A15 -> L15  [mass-action k=0.0001]
L16 -> A16  [mass-action k=0.01 crowding_capacity=100.0]
A16 -> L16  [mass-action k=0.0001]
L17 -> A17  [mass-action k=0.01 crowding_capacity=100.0]
A17 -> L17  [mass-action k=0.0001]
L18 -> A18  [mass-action k=0.01 crowding_capacity=100.0]
A18 -> L18  [mass-action k=0.0001]
L19 -> A19  [mass-action k=0.01 crowding_capacity=100.0]
A19 -> L19  [mass-action k=0.0001]
L20 -> A20  [mass-action k=0.01 crowding_capacity=100.0]
A20 -> L20  [mass-action k=0.0001]
… 10160 more

Generated by the uploader with chemart push; the hub never runs uploaded code.