chemart / chemoton

View on GitHub

Chemoton — 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

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