chemart / kauffman-autocatalytic-sets
View on GitHubKauffman autocatalytic sets (binary polymer model) — The original argument that metabolism could precede genes. Polymers join and split, and any polymer may catalyse any such reaction with some probability. As polymers get longer the number of possible reactions grows fast…
How it works
The original argument that metabolism could precede genes. Polymers join and split, and any polymer may catalyse any such reaction with some probability. As polymers get longer the number of possible reactions grows faster than the number of molecules, so above a critical catalysis probability a mutually-catalysing set almost surely exists - order for free, from combinatorics rather than design. This entry gives the topology; the dynamics and the formal test for such sets live in bagley-farmer and raf.
- S
- polymers = strings over an alphabet of size B (a, b for B = 2), up to a maximum length · implicit
- R
- condensation A + B -> AB and cleavage AB -> A + B for every split of every polymer, each optionally catalysed by a polymer E: A + B + E <-> AB + E · arity 1, 2, 3
- A
- n/a - static graph analysis · food set inflow keeps the system out of equilibrium
Parameters
| name | default | meaning |
|---|---|---|
| B int · structural |
2 | alphabet size [2, 4] |
| max_length int · structural |
5 | longest polymer in the network (at most 512 polymers in total) [2, 8] |
| P float · structural |
0.05 | probability that a given polymer catalyses a given condensation/cleavage pair [0, 1]; critical value P_crit ~ B^(-2L) for a firing disk of polymers up to length L (eq. 6.3) |
| food_set list · population |
["a", "b", "aa", "bb"] | the firing disk of polymers supplied from outside (book figure 6.12) |
Kauffman autocatalytic sets (binary polymer model)
One of the artificial chemistries of Banzhaf & Yamamoto, Artificial Chemistries (MIT Press, 2015), §6.3.1; first proposed by Kauffman, 1986; Farmer, Kauffman & Packard, 1986.
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/kauffman-autocatalytic-sets", seed=0) # same as "kauffman-autocatalytic-sets"
print(net.summary())
What to look for
- percolation transition at P_crit: above it, autocatalytic sets form almost surely
- larger B favours set formation, so proteins (B=20) beat RNA (B=4)
Implementation decisions
- Built as the binary polymer model: all polymers up to max_length, every split of every polymer as a reversible condensation/cleavage pair, and each polymer catalysing each pair (both directions) with probability P.
- Water (H in eq. 6.2) is left out, as in the usual formulation of the polymer model. No rates: the book's analysis is static. The food set is recorded in extras.food_set, and monomer counts per letter are exact conservation laws (extras.conservation).
- The earlier parameter L (maximum food-set length) is replaced by an explicit food_set; the book's default food set is {a, b, aa, bb}.
Banzhaf & Yamamoto, Artificial Chemistries (2015), §6.3.1
Preview at default parameters
62 species · 1608 reactions · status complete · seed 1
2 a -> aa aa -> 2 a a + b -> ab ab -> a + b b + a -> ba ba -> b + a 2 b -> bb bb -> 2 b a + aa -> aaa aaa -> a + aa aa + a -> aaa aaa -> aa + a a + ab -> aab aab -> a + ab aa + b -> aab aab -> aa + b a + ba -> aba aba -> a + ba ab + a -> aba aba -> ab + a a + bb -> abb abb -> a + bb ab + b -> abb abb -> ab + b b + aa -> baa baa -> b + aa ba + a -> baa baa -> ba + a b + ab -> bab bab -> b + ab ba + b -> bab bab -> ba + b b + ba -> bba bba -> b + ba bb + a -> bba bba -> bb + a b + bb -> bbb bbb -> b + bb bb + b -> bbb bbb -> bb + b … 1568 more
Generated by the uploader with chemart push; the hub never runs uploaded code.