Spanda
The science

Get the physics exactly right, and the biology follows.

Spanda is built on one refusal: a simulated cell may never create or destroy free energy out of thin air. Everything below is how that refusal is enforced — and why enforcing it is enough to make a bag of chemistry behave like a living thing.

01The problem

Every whole-cell model leaks energy.

A whole-cell model is thousands of coupled reactions, each with a forward and a reverse rate. In practice those two numbers are pulled from different experiments, different databases, different organisms — and nothing forces them to agree with thermodynamics. The result is a model that can quietly manufacture free energy inside a loop, like an Escher staircase that always climbs.

You can fit such a model to data and never notice. But the moment you ask it to predict — a direction, a concentration, a knockout — the hidden inconsistencies steer the answer. The cell's most basic accounting is wrong, so its predictions inherit the error.

02The invariant

One rate per reaction, split by free energy.

Spanda never stores two independent rates. It stores one reference rate k₀ and a standard free-energy change ΔG° (from eQuilibrator), then derives the pair by a symmetric split:

forward
kf = k₀ · e−ΔG°/2RT
reverse
kr = k₀ · e+ΔG°/2RT

Divide one by the other and the reference rate cancels, leaving the Wegscheider / detailed-balance condition exactly, at every state:

kf / kr = e−ΔG°/RT

Because the constraint is built into how rates are constructed, it cannot drift out of tune as the simulation runs. In the live simulator, the measured residual on this identity is machine-zero. Free energy enters and leaves only through the bath — the cell's environment — never through an internal contradiction.

03The dynamics

Discrete molecules, stochastic events, real time.

On top of the invariant runs a direct-method Gillespie stochastic simulation. Molecules are integer counts, not concentrations; each event is a single reaction firing; waiting times are drawn from the total propensity. This is the same algorithm used for the gene-expression noise that defines real minimal cells.

Chemical potential

μ = μ° + RT·ln(c) sets every propensity, so the drive of each reaction tracks the actual molecular state, not a fixed rate.

Entropy, per event

Each firing dissipates −ΔG to the bath. Cumulative entropy production is strictly positive — the second law, enforced one event at a time.

No scheduler

Nothing is timed or triggered. Transcription, translation, decay and maintenance all compete on propensity alone.

The published syn3A model scales this to 2,069 reactions — 198 metabolic, 51 transport, and 1,820 gene-expression steps over 1,671 species — with conservation verified at every event and a suite of 258+ tests guarding the invariant.

04The payoff

Life-like behaviour, unprogrammed.

A 13-reaction proof-of-concept — import, catabolism, transcription, translation, decay, maintenance — is small enough to reason about and rich enough to be alive. With detailed balance on and nothing scheduled, it produces a non-trivial steady state, a positive energy charge, and strictly-positive entropy production. Then it can die, three different ways:

Starvation

Remove the nutrient gradient and the cell has nothing to draw on. The energy charge bleeds out.

Gene knockout

Delete the transporter gene: no mRNA, no transporter, no import — a cascading collapse.

Waste poisoning

Block export and exhaust accumulates, non-competitively choking metabolism from within.

None of these are coded as death. There is no if (dying) branch. Each collapse is what the chemistry does when you perturb it — which is exactly the point. Run all three live →

05Turned outward

The same check, run on everyone else's models.

The invariant is also a measuring instrument. Take any published model, compute each reaction's thermodynamic equilibrium constant from ΔG°, compare it to the kinetic one implied by the model's rates, and the disagreements light up. Reactions are scored across four tiers of stringency (D1 structural through D4 gold-standard), and the whole audit is checked against a null where the ΔG° values are shuffled.

The signal survives the null by many standard deviations across three organisms spanning the prokaryote–eukaryote divide. That is the difference between “a few bad entries” and a structural property of how the field builds models. The numbers are on the findings page.

Scope

What we claim — and what we don't.

We claim
  • A thermodynamically-consistent stochastic whole-cell simulator in which detailed balance is enforced at every event — validated by 258+ tests and a 2,069-reaction syn3A model.
  • Life-like behaviour — growth, homeostasis, and three death modes — emerging from the invariant alone, with a detailed-balance-violated null control to prove the dependence.
  • A universal 13–17% rate of direction-reversed reactions across syn3A, E. coli and yeast, statistically far from a shuffled-K_eq null.
  • A single falsifiable prediction (lactate ≫ pyruvate in syn3A) that a metabolomics run can confirm or refute.
We do not claim
  • A validated whole-cell model of any real organism — the predictions are computational and await the bench.
  • A clinical, diagnostic, or therapeutic claim of any kind.
  • A settled cell-cycle timescale — calibration is uncertain and reported with two options side-by-side.
  • Dynamic ribosome biogenesis or coupled FtsZ division — these are scoped as not-yet-wired in the current version.

The fastest way to understand it is to run it.