chemart / chemoton
View on GitHubChemoton — The classic hand-designed minimal cell, and still the clearest statement of what a cell needs. Three subsystems are coupled stoichiometrically: a metabolic cycle that turns nutrient into building blocks, a template that …
How it works
The classic hand-designed minimal cell, and still the clearest statement of what a cell needs. Three subsystems are coupled stoichiometrically: a metabolic cycle that turns nutrient into building blocks, a template that replicates using one of those blocks, and a membrane that grows from another. Because the couplings are exact, growth and division stay synchronised - the cell divides when its membrane has doubled. That tight coupling is also what makes it fragile, which is precisely why it is a good stress test.
- S
- A1..A5 (metabolic cycle), X (nutrient), Y (waste), V (template monomer), pV0..pV(N-1) (double-stranded templates by replication stage), T0 (membrane precursor), T* (activated precursor), T (membrane molecule), R (polycondensation by-product), S (membrane surface) · explicit
- R
- Metabolism A1 + X <-> A2 ; A2 <-> A3 + Y ; A3 <-> A4 + V ; A4 <-> A5 + T0 ; A5 <-> 2 A1. Templates pV0 + V <-> pV1 + R (only above [V]*) ; pV_r + V -> pV_(r+1) + R ; pV_(N-1) + V -> 2 pV0 + R. Membrane T0 -> T* ; T* + R <-> T ; T + S -> 2 S. Division when the surface doubles. · arity 1, 2
- A
- ode, compartments · cell division halves everything; volume Q = S^1.5
Parameters
| name | default | meaning |
|---|---|---|
| N int · structural |
25 | template length: monomers bound per replication round, i.e. the number of stages pV0..pV(N-1) [2, 1000] |
| X float · population |
100.0 | nutrient concentration outside the cell, held constant [0, ∞]; the paper also uses 10 and 1 |
| V_threshold float · kinetic |
35.0 | polycondensation threshold [V]*; template initiation pV0 + V -> pV1 + R only runs above it [0, ∞] |
| rates dict · kinetic |
{} | overrides of the paper's rate constants by name (k1..k10 forward, k1r..k6r, k9r reverse); unlisted constants keep the paper's values |
Chemoton
One of the artificial chemistries of Banzhaf & Yamamoto, Artificial Chemistries (MIT Press, 2015), §6.1.4; wet computing 17.4.1; first proposed by Ganti, ~1952/1971.
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/chemoton", seed=0) # same as "chemoton"
print(net.summary())
What to look for
- synchronised growth and division
- replication time 0.455 at [X] = 100, 0.65 at [X] = 10, 2.4 at [X] = 1 (Fernando & Di Paolo)
- some robustness to noise and to food shortage
- differentiation into 'species'
Implementation decisions
- The book describes the Chemoton only qualitatively. Reactions, rate constants (k1 = 2, k2 = k3 = k4 = 100, k5 = k6 = k7 = k8 = k9 = k10 = 10, k1r..k5r = 0.1, k6r = 1, k9r = 0.1) and initial conditions are model I of Fernando & Di Paolo (2004); each ODE term of their eqs. 1-14 is one mass-action reaction (checked in tests).
- Template replication is represented by stage: pV_r is a double strand with r extra monomers bound, and binding the last monomer releases two pV0. Initiation only runs while [V] > [V]*; this gate is recorded in that reaction's rate as threshold_species/threshold, since it is not a rate law.
- Nutrient X and waste Y are environmental concentrations held constant (extras.buffered; the paper sets [X] = 100, [Y] = 0.1). Volume Q = S^1.5 and division at doubled surface act on all concentrations rather than as reactions, so they are recorded in extras.compartments.
- The book's description has T and T' swapped relative to the paper; this entry follows the paper (T0 precursor, T* activated, T membrane molecule). cycle_size (the paper's wheel is fixed at 5), rate_constants, X_influx and division_criterion are replaced by the parameters above.
Sources
- Fernando, C. & Di Paolo, E. (2004). The Chemoton: a model for the origin of long RNA templates. Proc. Artificial Life IX. Model I, eqs. 1-14 and appendix. https://ezequieldipaolo.net/wp-content/uploads/2019/09/chemoton.pdf
- Csendes, T. (1984). A simulation study on the chemoton. Kybernetes 13:79-85 (source of the metabolic equations and rate constants reused above)
Banzhaf & Yamamoto, Artificial Chemistries (2015), §6.1.4; wet computing 17.4.1
Preview at default parameters
38 species · 40 reactions · status complete · seed 1
A1 + X -> A2 [mass-action k=2.0] A2 -> A1 + X [mass-action k=0.1] A2 -> A3 + Y [mass-action k=100.0] A3 + Y -> A2 [mass-action k=0.1] A3 -> A4 + V [mass-action k=100.0] A4 + V -> A3 [mass-action k=0.1] A4 -> A5 + T0 [mass-action k=100.0] A5 + T0 -> A4 [mass-action k=0.1] A5 -> 2 A1 [mass-action k=10.0] 2 A1 -> A5 [mass-action k=0.1] pV0 + V -> pV1 + R [mass-action k=10.0 threshold_species=V threshold=35.0] pV1 + R -> pV0 + V [mass-action k=1.0] pV1 + V -> pV2 + R [mass-action k=10.0] pV2 + V -> pV3 + R [mass-action k=10.0] pV3 + V -> pV4 + R [mass-action k=10.0] pV4 + V -> pV5 + R [mass-action k=10.0] pV5 + V -> pV6 + R [mass-action k=10.0] pV6 + V -> pV7 + R [mass-action k=10.0] pV7 + V -> pV8 + R [mass-action k=10.0] pV8 + V -> pV9 + R [mass-action k=10.0] pV9 + V -> pV10 + R [mass-action k=10.0] pV10 + V -> pV11 + R [mass-action k=10.0] pV11 + V -> pV12 + R [mass-action k=10.0] pV12 + V -> pV13 + R [mass-action k=10.0] pV13 + V -> pV14 + R [mass-action k=10.0] pV14 + V -> pV15 + R [mass-action k=10.0] pV15 + V -> pV16 + R [mass-action k=10.0] pV16 + V -> pV17 + R [mass-action k=10.0] pV17 + V -> pV18 + R [mass-action k=10.0] pV18 + V -> pV19 + R [mass-action k=10.0] pV19 + V -> pV20 + R [mass-action k=10.0] pV20 + V -> pV21 + R [mass-action k=10.0] pV21 + V -> pV22 + R [mass-action k=10.0] pV22 + V -> pV23 + R [mass-action k=10.0] pV23 + V -> pV24 + R [mass-action k=10.0] pV24 + V -> 2 pV0 + R [mass-action k=10.0] T0 -> T* [mass-action k=10.0] T* + R -> T [mass-action k=10.0] T -> T* + R [mass-action k=0.1] T + S -> 2 S [mass-action k=10.0]
Generated by the uploader with chemart push; the hub never runs uploaded code.