I · 1952
A mathematician looks at a leopard
In August 1952 Alan Turing, then at the University of Manchester, published The Chemical Basis of Morphogenesis in the Philosophical Transactions of the Royal Society of London (Series B, volume 237, pages 37 to 72). Its first sentence set out an entire research programme:
“It is suggested that a system of chemical substances, called morphogens, reacting together and diffusing through a tissue, is adequate to account for the main phenomena of morphogenesis.”A. M. Turing, 1952
The surprise is diffusion. We expect it to smooth things out, as ink spreads until the water is evenly grey. Turing showed that two substances diffusing at different rates can destabilize a perfectly uniform mixture: a tiny random fluctuation grows into a regular pattern whose spacing is set by the chemistry, not by any blueprint. Working on a ring of cells, he found that the onset of instability can take six essentially different forms. In the most interesting one, stationary waves appear, and he suggested they might account for the tentacles of Hydra , whorled leaves and dappled coats.
The recipe in one line: an activator that promotes itself and its own inhibitor, and an inhibitor that diffuses faster than the activator. Local activation, long-range inhibition. Alfred Gierer and Hans Meinhardt gave the idea that name in 1972.
Turing died in June 1954 and never saw the idea vindicated. In 1990 Castets, Dulos, Boissonade and De Kepper held a stationary Turing pattern in a gel reactor for the first time, using the chlorite, iodide and malonic acid (CIMA) reaction.
II · The governing equations
From two morphogens to the Gray–Scott model
Turing's general two-morphogen system couples local reaction kinetics f , g to diffusion:
∂a/∂t = f(a, b) + Da ∇²a ∂b/∂t = g(a, b) + Db ∇²b
At a uniform steady state with Jacobian entries fa , fb , ga , gb , the mixture is stable without diffusion but unstable with it (a Turing instability ) when
fa + gb < 0, fa gb − fb ga > 0 Db fa + Da gb > 2√(Da Db (fa gb − fb ga ))The last inequality cannot hold when Da = Db : the inhibitor must spread sufficiently faster than the activator.
Model 1 · Gray–Scott
Peter Gray and Stephen Scott studied the autocatalytic reaction U + 2V → 3V in a continuously fed reactor. Spread over a surface it becomes
∂u/∂t = Du ∇²u − uv² + F(1 − u) ∂v/∂t = Dv ∇²v + uv² − (F + k)vu: substrate, replenished at feed rate F. v: autocatalyst, removed at rate F + k (k is the kill rate).
In 1993 John Pearson mapped its (F, k) plane in Science and found spots, stripes, labyrinths, self-replicating spots and chaos, which he labelled with Greek letters. The Pearson Atlas specimen lays that plane across the screen, with F rising upward and k rising to the right; hover to read the local coordinates in the probe.
Lab units: Du = 1, Dv = 0.5, Δt = 1, nine-point Laplacian (centre −1, edges 0.2, corners 0.05), explicit Euler on a periodic grid. The viscosity slider divides both diffusion coefficients, so thicker media grow finer patterns.
III · Model 2
Slime mould: computing with protoplasm
Physarum polycephalum is a single cell with countless nuclei that forages by spreading a network of pulsing tubes. In 2000 Toshiyuki Nakagaki and colleagues showed it could find the shortest route through a maze (Nature 407, 470). In 2010 Atsushi Tero's group set oat flakes where the cities around Tokyo would be and watched the mould grow a network comparable to the real rail system in cost, efficiency and fault tolerance (Science 327, 439).
The agent model follows Jeff Jones (Artificial Life , 2010). Every particle, every step:
Sense the trail at three sensors placed SO cells ahead, at angles −SA, 0 and +SA.
Rotate by RA toward the strongest reading; if both sides beat the centre, turn at random.
Move SS cells forward.
Deposit chemoattractant on the new cell.
T ← (1 − δ) · mix(T, blur3×3 (T), κ) + depositsδ: decay. κ: diffusion. No particle knows the network exists; the trail field is their shared memory.
Nutrient wells emit attractant the way oat flakes do, and repulsors are sensed as negative concentration. With two or three species, each follows its own trail and treats the others' according to the rivalry setting.
IV · Model 3
Lenia: life without on and off
Conway's Game of Life is discrete in space, state and time. Lenia, introduced by Bert Wang-Chak Chan (Complex Systems , 2019), makes all three continuous:
At+Δt = clip( At + Δt · G(K ∗ At ), 0, 1 ) G(u) = 2 exp(−(u − μ)² / 2σ²) − 1K is a ring-shaped kernel of radius R built from the bump exp(4 − 1/(r(1 − r))), optionally as several concentric rings with weights β.
Orbium (R = 13, μ = 0.15, σ = 0.015, Δt = 0.1) is a glider that keeps its shape while it swims, the Lenia counterpart of Life's glider. The triple-ring Hydrogeminium parameters grow restless colonies from noise.
SmoothLife, by Stephan Rafler (2011), is the two-neighbourhood ancestor: an inner disc average m and an outer ring average n decide birth and death through smooth thresholds. Its preset runs both neighbourhoods in the same shader pass, which is what “multi-neighbourhood” means here.
Nacre
A local Orbium-seeded cultivar: R = 13, β = [1], μ = 0.148, σ = 0.0155 and Δt = 0.08. Reseeding releases one swimmer in the centre; paint to add others. One untouched swimmer remained bounded and alive through a 5,000-step test. That observation does not establish indefinite survival or a new biological species.
Try Nacre
V · Model 4
Boids: a flock from three urges
Craig Reynolds (SIGGRAPH 1987) animated flocks by giving each “bird-oid” three steering urges: separation (avoid crowding), alignment (match your neighbours' heading) and cohesion (drift toward their centre). Predators add a fourth: flee.
a = ws ·sep + wa ·align + wc ·coh + flee + avoid v ← clamp((v + aΔt)(1 − ηΔt), vmin , vmax )η: viscosity of the medium. Neighbours come from a 3D spatial hash; each boid heeds at most a fixed number of them.
A 2008 study of starling flocks over Rome (Ballerini and colleagues, PNAS ) found that each bird tracks about six or seven nearest neighbours whatever their distance. That topological rule keeps a flock cohesive as its density swings, and it is why this lab caps each boid's neighbour list.
VI · Model 5
The clock that keeps time in colour
In the early 1950s Boris Belousov found that citric acid, bromate and cerium ions in acid solution oscillate between colourless and yellow. Journals would not believe a reaction could oscillate, and only a short abstract appeared, in 1959. Anatol Zhabotinsky took the reaction up in the 1960s; in 1972 Richard Field, Endre Kőrös and Richard Noyes worked out its mechanism, which Field and Noyes condensed into the Oregonator model two years later. Spread thin in a dish, the reaction becomes an excitable medium: waves that annihilate when they collide and curl into rotating spirals when broken.
Cyclic chemistry (after Alasdair Turner)
a′ = a + a(αb − γc) b′ = b + b(βc − αa) c′ = c + c(γa − βb)Each species is averaged over its 3×3 neighbourhood first. a consumes b, b consumes c, c consumes a.
Excitable medium (after Dwight Barkley, 1991)
∂u/∂t = ∇²u + ε−1 u(1 − u)(u − (v + b)/a) ∂v/∂t = g(u) − v
With g(u) = u this is Barkley's model, a fast caricature of the Oregonator. Paint a barrier across a travelling wave to break it and a pair of spirals appears. The Turbulence preset uses the delayed recovery of Bär and Eiswirth (1993), under which spirals break apart.
VII · Model 6
Cosmic Biosphere: three layers, one loop
The first five models live alone. Here they feed on one another. A chemical terrain (Gray–Scott, or Barkley's excitable waves) is the food. Slime agents climb its gradients and graze it. Flocks of fauna graze the slime, and every one of them drops chemical seeds in its wake, so the terrain they ate regrows along the paths they flew.
terrain ∂v/∂t = Dv ∇²v + uv² − (F + k)v − γ·S·v + seeds slime sensors read T + χ·N; deposit grows with N fauna dE/dt = α·S − μ; divide at E > 2, starve at E < 0N: nutrient (the terrain). S: slime density. T: slime trail. χ: chemotaxis. γ: slime appetite. α, μ: fauna appetite and metabolism.
The fauna read a coarse census of the dish, read back from the GPU without stalling it, to decide where the food is. The phase portrait at lower left plots nutrient against slime, coloured by the size of the fauna population. When grazers overshoot, the trajectory circles like the predator and prey cycles that Alfred Lotka (1925) and Vito Volterra (1926) found in their equations.
Lantern Atoll
Eight chemical islets surround a dark lagoon. Stronger chemotaxis draws the slime toward the shores; gentler grazing, lower metabolism and fewer fauna leave room for the terrain to recover. Follow the lagoon as an evolving experiment: its long-term ecological balance is not established.
Try Lantern Atoll
VIII · Rendering
Specimens as terrain
Every grid model writes a surface each frame: an albedo from its palette and a height from its concentration. One shared lighting pass treats that height as a landscape. Normals come from central differences. Light wraps around the relief, a sharp wet highlight rides the slopes, and crevices darken where the local surface sits below its blurred surroundings (a cavity term read from the texture's mipmaps). A Fresnel rim, proportional to (1 − N·V)³, lights the edges, and a faint thin-film tint shifts with viewing angle.
The body of every specimen is translucent. Each colour channel is lit through a progressively softer normal, with red, which scatters furthest in real tissue, the softest, and wraps further into shadow. Light carried through the flesh is absorbed by the Beer–Lambert law, so thin membranes glow pale while thick cores go deep and saturated, as in a siphonophore, a jelly or cast resin. Seen against the light in 3D, a forward-scattering lobe lights the edges from behind.
Occlusion is computed in the specimen’s own texture space, which is exact for a heightfield and has none of the screen-edge artefacts of screen-space AO. For every cell, six directions are searched out to ten cells for the steepest horizon (cone-filtered through the mipmaps), and a curvature term darkens the concave crevices between ridges.
Thin film changes the interference colour on the wet coat as the view grazes it. Caustics focuses light onto the floor under the relief in 3D. Bloom spreads bright light while retaining a bounded energy across its levels; the tone shoulder compresses highlights. These are optical interpretations of the field, not extra simulated chemistry.
Press I and the dish tilts into real geometry: the height field displaces a mesh, tiled three by three so the periodic world runs to a fogged horizon. The camera settles at the isometric elevation of 35.26° (arctan 1/√2). Orbit with a middle-drag, an Alt-drag or the Orbit pointer mode; painting still works, because each stroke is cast as a ray onto the dish. A thin-lens depth of field focuses on the orbit centre: each fragment writes a signed circle of confusion, and a half-resolution bokeh pass gathers on a golden-angle spiral, so the far terrain melts into soft discs while the centre stays sharp.
IX · Field notes
Where the equations live
Cheetah and leopard coats James Murray argued that the size and shape of the embryo select the pattern: spots on a broad flank, stripes along a narrow tail. His model predicts that a spotted animal can have a striped tail, but a striped animal cannot have a spotted tail.Try Mitosis
Brain coral The meandering ridges of Diploria labyrinthiformis look strikingly like the labyrinthine Gray–Scott regime. The resemblance is an analogy, not a demonstrated mechanism.Try Labyrinth
Angelfish and zebrafish Kondo and Asai (1995) watched stripes on the angelfish Pomacanthus split and rearrange as the fish grew, as a Turing system predicts. Later work on zebrafish traced the interactions to pigment cells.Try Worms
Vascular networks Leaf veins, blood vessels and slime mould tubes all reinforce channels that carry flow and prune those that do not. Tero's 2010 model of Physarum was built on exactly that feedback.Try Transport Network
Digits and follicles Sheth and colleagues (2012) found that Hox genes tune the wavelength of a Turing-type mechanism that spaces the digits; Sick and colleagues (2006) proposed that WNT and its inhibitor DKK space hair follicles the same way.Try Coral Growth
Murmurations and bait balls Starling flocks turn as one without a leader; fish schools split and close around a hunter, a manoeuvre known as the fountain effect.Try Bait Ball
Heart rhythms Spiral waves like the BZ reaction's appear in heart muscle during some arrhythmias, where a re-entrant wave keeps circling instead of dying out.Try Excitable Spirals
Social amoebae Starving Dictyostelium cells relay pulses of cyclic AMP in expanding spirals, then stream up the waves to aggregate into a single organism.Try Cyclic Spirals
X · Using the laboratory
Instruments and protocol
Left-drag Paint morphogen, stimulate, or seed a cluster of agents
Right-drag or Shift-drag Place the selected instrument: barrier, nutrient well, repulsor, or eraser
Wheel Zoom the microscope (or the camera, for boids)
Middle-drag or Alt-drag Pan the dish (or orbit the camera)
1 –6 Switch model; each keeps its state while you are away
I Use the visible 2D | 3D switch, or I, to tilt into terrain and back. Boids are always 3D.
D A Compare two dishes; inspect structure and wavelength
V Y Evolve a new phenotype; open the phylogenetic tree
N Synth keys: the A–K row plays the current mode, and so does any MIDI keyboard
O Film a ten-second clip of the specimen with its sound
Two fingers Pinch to zoom; drag to pan, or to orbit in 3D
X Exhibition: start a curated tour yourself; idle watching never starts it
L Listen: let the microphone pulse the specimen
Space . Pause, or advance a single frame
R C Reseed, or clear
U Z Save the specimen as a .morpho file, or open one
S Capture a 4K snapshot Capture a snapshot, capped at 2560 px on the long side
[ ] Shrink or grow the brush
P B Next palette, toggle bloom
M G H F Sound, this guide, hide the interface, fullscreen
0 Reset zoom and pan
The 2D | 3D switch stays outside the Laboratory, so Controls can stay closed. In 3D, Alt-drag or middle-drag to orbit; use the wheel to zoom. drag with two fingers to orbit; pinch to zoom. The Optics terrain toggle and I do the same thing. Take the tour on the opening card starts Exhibition and returns you to your specimen on exit.
On a phone or tablet
One finger paints. Two fingers pinch to zoom and drag to pan, or orbit in 3D; a quick two-finger tap resets the view. Controls opens the laboratory, where Instrument and Orbit under Instruments change what a one-finger drag does. While the Structure Analyzer is open, a touch moves its window instead of painting. After hiding the interface, tap the faint eye in the corner to bring it back.
Turning the device keeps the specimen whole: on a touch screen the dish grows to cover the new shape instead of cropping it. When the graphics fall behind, the laboratory first takes fewer simulation steps per frame and then renders at a lower resolution; the probe readout shows either factor while it applies. The page runs offline once loaded, but a phone may not run a file opened straight from its file manager, so open it from a web address.
Evolve and the phylogeny
Evolve mutates the parameters that shape a phenotype and glides them to their new values over three seconds, so you watch the pattern turn into its offspring. The mutation respects what is viable: Gray–Scott offspring are drawn close to the saddle-node line k = √F/2 − F, where patterns live, and Lenia's growth centre moves only a few per cent.
Every offspring gets a binomial name and a place in a phylogenetic tree (Y ). The specimen as you found it is the wild type at the root; if you move the sliders by hand before breeding, the tuned form enters the tree as a cultivar , in single quotes as botanists write them. Branch length is genetic distance, the size of the parameter change measured against each slider's range, and the small bars on every branch are its divergence vector. Each node carries a photograph of the phenotype, taken once it has had a few seconds to express itself. Click any node and the universe glides back to that genome; the next Evolve branches from there.
Playing the specimen
Synth keys take over A S D F G H J K while enabled. Press N to leave the keyboard and restore shortcuts such as Analyzer, Compare, Snapshot and Field Guide.
With Synth keys on (N ), the home row A S D F G H J K plays one octave of the current mode, and Shift plays the octave above. Any MIDI keyboard plays as well: the page asks for MIDI access only when you turn the keys on. Each note sounds at its true pitch and is followed by a modal arpeggio (the diatonic third, fifth and octave above), and the pad re-voices onto the chord you played. Each note also bursts into the specimen at its place on a dial: pitch class sets the angle, with C at twelve o'clock, and octave sets the distance from the centre, so a scale traces a ring. Velocity sets the size of the burst, the mod wheel widens every burst, and the sustain pedal lengthens the notes.
Recording
Record 10 s Clip (O ) films the canvas at up to 60 frames a second, together with the soundscape's final mix, and downloads the clip when it ends: MP4 (H.264) where the browser can encode it, otherwise WebM. The bitrate scales with the canvas, from 8 to 40 Mbit/s. The interface is not filmed.
Sound
Turn on Strings in Performance for plucked Karplus–Strong voices. Pick position colours their harmonics and damping controls their decay. They are rendered directly into audio buffers, so high notes keep their intended pitch. A resonant bass membrane adds a drumhead-like response. Detected merges and divisions in Gray–Scott and Lenia, and sharp Boids manoeuvres, can excite these voices; those coarse detections are musical cues, not organism identification.
The soundscape is synthesized live. An 8×8 census of the specimen gives its density, activity, contrast and spatial entropy (the evenness of its mass). These pick a mode on a scale from Lydian (ordered, bright) to Phrygian (turbulent, dark), changed only at chord boundaries. A sub-bass, a pad voiced across three octaves and a pentatonic arpeggio follow the specimen's density, centre and restlessness. Cursor ripples bend a chime's pitch with your hand's speed. With Listen on, onsets in the room (a clap, a syllable) pulse the specimen under your cursor, or at a slowly drifting source when the cursor is away. Sound is analysed in the page only and never recorded or sent.
Everything here lives in one HTML file with no network requests. The fields are simulated in WebGL2 fragment shaders on floating-point textures; the slime mould runs up to a million agents on the GPU; the boids run on the CPU with a spatial hash. Snapshots are written as uncompressed PNG files, and each carries its model, specimen and parameters in its text chunks, so every plate keeps its own provenance.
Turing named everything he studied. Typing his first name at the keyboard is said to change the view.
XI · Research
One specimen, a controlled question
Compare · D
Fork the live specimen into A, the control, and B, the intervention. Their fields, agents and random streams start identical, so an untouched fork has exactly zero divergence in the same browser. Choose Sliders: A or B before changing parameters. Paint on either side of the divider; a held stroke follows the side beneath the pointer. V evolves B while Compare is open.
Drag the divider, or focus it and use the arrow keys. Split shows the two dishes; Overlay highlights differences; Δ map isolates them. The difference map is logarithmic and automatically ranged, so use the numeric mean and maximum |Δ| to compare magnitudes over time. Re-sync B copies A's state into B while retaining B's intervention parameters. Changing model or entering the exhibition closes the fork. Exhibition starts only when you choose it, never from idle watching. Leaving restores your original specimen, preset and view; tour stops reset other models' specimens.
Structure Analyzer · A
Move the pointer to choose a 128 × 128-cell window. The instrument plots radial autocorrelation G(r), the power spectrum S and a history of dominant wavelength λ in cells. In Compare it samples both dishes at the same location. Boids have no lattice to analyse.
For stripes, spot lattices and other patterns with power near one spatial frequency, angular averaging produces a Bessel-shaped correlation. The estimator corrects its first post-trough peak by 2π/7.01558667 before reporting λ; the marker therefore need not sit on G's peak. A clear spectral peak is the fallback. ξ is the first 1/e crossing of G, and order is its post-trough peak height. Broadband or irregular patterns have only an approximate spacing; a uniform window has none.
Chronoscope and Afterimage
In Research, turn on Chronoscope to pin the current order parameter. Cyan shows an increase since that moment; amber shows a decrease. Unchanged tissue stays subdued. The fixed scale reaches full colour at |Δs| = 0.25, with a soft knee for small changes; brightness is not a linear ruler. The legend and step count stay beside the controls.
Afterimage adds a fine pearl outline of the pinned s = 0.15 contour. Follow an amber retreat against the old outline and a cyan front beyond it to see displacement clearly. This is a reference contour, not a tracked identity or proof of growth. Toggle it off for colour alone. Pin now replaces the reference without changing the simulation.
Chronoscope works on a single grid dish in 2D or 3D. Compare, changing model or preset, reseeding, clearing, resizing or restoring a lineage clears the reference. Snapshots record the pinned parameters, elapsed steps and Afterimage setting.
XII · Fabrication
Take a specimen out of the dish
Save specimen downloads a versioned .morpho checkpoint: fields, instrument masks, agents, fauna, parameters, preset, age, random streams, cameras, palette and Optics. Open specimen restores it with its saved lattice, even in a different window. If that window has another shape, the dish repeats at its edges or runs past the window; Reseed, Clear or a new preset fits a fresh dish to the window. In Compare only dish A is saved; opening closes Compare. Saving is unavailable during Exhibition. Press U to save, Z to open, or drop a capsule onto the page. On iOS, downloads go to Files; Open specimen uses the system file picker.
Capsules use binary float data and optional offline gzip compression. Typical files range from below 1 MiB for a small field to several MiB for an agent simulation. Limits are 128 MiB per file and decoded payload, 256 KiB metadata, 4096 cells per axis, 4,194,304 lattice cells and 1,048,576 Physarum agents (16 MiB for that agent texture alone). Invalid files leave the current session unchanged. Different GPUs or texture formats can produce different results; incompatible texture formats are rejected.
Lineage, analysis overlays, live audio, microphone, MIDI, recording, decorative stars and screen-sized Boids afterimages are not restored. Random stream words are retained, but an audio performance is not a checkpointed audio graph. A graphics context reset loses unsaved state; reopen a saved specimen using Open specimen.
Choose Export 3D Mesh (.obj) in Protocol. The current grid field becomes a closed relief with walls and a flat 3 mm base. The longer side is 100 mm, the other follows the lattice aspect ratio, and relief reaches up to 8 mm times Terrain height . The exporter caps the longer axis at 480 intervals in landscape or portrait.
Coordinates are in millimetres with Z up. Vertex colours store the palette as RGB values; importer support varies. Lighting, bloom and research overlays are not baked into the geometry. In Compare, the export captures dish A. Boids have no heightfield to export. The button reports reading and meshing progress; a large dish can take time. You can continue observing while the captured specimen is assembled.