The day chemistry drew a pattern
Take two imaginary substances, U and V. U is everywhere, a nourishing background; V is an intruder, present only in a tiny square at the center of an otherwise empty grid. Just three rules, all local — no cell ever sees further than its immediate neighbors:
- reaction: when two V meet a U, they convert it into a third V
(
U + 2V → 3V). V feeds on U and copies itself. - upkeep: U is fed back in everywhere at a rate F (feed), and V is removed everywhere at a rate k (kill).
- diffusion: U spreads twice as fast as V (
Du=0.16,Dv=0.08).
That’s all. No blueprint, no spot position written anywhere, no notion of “pattern” in the code. And yet, from that single square, a structured, regular network invades the whole grid and then freezes. This mechanism has a name — reaction-diffusion, described by Alan Turing in 1952 to explain how a uniform embryo can grow stripes or spots. It’s our fourth LifeLabs experiment, and the exact run command is on its page, reproducible from seed 42.
Why feed + kill + diffusion is enough
The intuition fits in one line: an activator that spreads slowly, an inhibitor that spreads fast. V self-amplifies locally (it copies itself), but the consumption of U and the kill rate keep it from taking over everything. Because U diffuses twice as fast as V, the depletion of food travels further than the spot itself: around each V-rich zone a depleted ring forms, forbidding another spot from being born too close. That “I copy myself here / I forbid myself right next door” game spontaneously imposes a characteristic distance between patterns. The pattern is written nowhere: it is the wavelength of a balance.
What this run shows
15,000 steps, 256×256 grid, spots preset (F=0.037, k=0.060). The vital signs
tell the story better than a frozen image:
- the spatial variance — our measure of “how contrasted the field is rather than uniform” — starts at 0.0006 at step 10 (the seed square, almost nothing) and climbs to 0.0156 by the end. A twenty-five-fold increase: the contrast doesn’t come from the seed, it is produced by the dynamics.
- the active fraction reaches 0.41: the pattern occupies a good part of the grid, without ever saturating it or dying out.
- the classifier, blind and automatic, rules:
patterned— neither uniform nor chaotic.
And above all, in the video you can see the two acts of the story: first the central square destabilizing and seeding outward, a front of spots that split as they advance; then, once the grid is filled, nothing moves. The network freezes. This may be the most counter-intuitive point: a system with no memory, no goal, no plan converges to a stable form and holds it.
A word of honesty about vocabulary: spots is the name of the parameter
pair, not an aesthetic promise. At this size and with this seed, F=0.037/k=0.060
doesn’t yield isolated, well-separated dots but a reticulated network, a
labyrinth of filaments and islands — the typical signature of this corner of the
(F, k) plane. That’s the real result, not a retouched illustration.
The link to Lenia
Gray-Scott isn’t our first continuous cellular automaton. Lenia is one too: in both, the state isn’t a binary “alive/dead” but a field of reals evolving by a local rule that’s identical everywhere. The difference is illuminating. Lenia produces creatures — localized patterns that move and persist within a dead background. Gray-Scott produces a texture — a pattern that fills all of space and comes to rest. Two very different ways in which “local, everywhere, all the time” leads to global organization. Putting the two side by side is exactly what LifeLabs is trying to make visible: emergence doesn’t have a single face.
Do it yourself
The Reaction-diffusion demo runs entirely in
your browser, on the GPU (WebGPU). Pick the spots preset and watch the spots
be born; push the k slider and you change regime before your eyes — stripes,
maze, mitosis; paint with the mouse to seed V wherever you like and watch the
pattern reorganize around your stroke. Nothing is pre-recorded: it’s the same
chemistry as above, recomputed frame by frame.
Open the full run page for the exact parameters, or the Reaction-diffusion experiment page for context. Everything is reproducible from seed 42.