Mathematical Biology
April 2026 · 16 min read · Pattern Formation · Reaction-Diffusion · Morphogenesis

Morphogenesis and Turing Patterns

In 1952, Alan Turing — better known for his contributions to computation and cryptography — published a landmark paper on the chemical basis of morphogenesis. He demonstrated mathematically that two diffusing chemical species with appropriate reaction kinetics could spontaneously break spatial symmetry and generate stable periodic patterns, despite starting from a nearly homogeneous state. This Turing instability underlies some of the most striking patterns in biology: the stripes of zebrafish, the spots of leopards, the ridges on fingertips, and the repeated structures of digits and vertebrae.

1. Turing's 1952 paper and the morphogen idea

Alan Turing's paper "The Chemical Basis of Morphogenesis" (1952) addressed one of developmental biology's deepest puzzles: how does a fertilised egg — a single, roughly spherically symmetric cell — give rise to a complex organism with precise spatial organisation? Turing proposed that the answer lay in morphogens: diffusible chemical substances whose concentration gradients provide positional information to cells.

Turing's crucial insight was that a system of two morphogens interacting chemically while diffusing through tissue could be unstable to small spatial perturbations, even if each individual process (diffusion alone, or uniform reaction alone) would be stable. This diffusion-driven instability, now called the Turing instability, is counterintuitive: most people expect diffusion to be a smoothing process that destroys patterns. Turing showed it can instead create them.

Historical context: Turing submitted his paper in November 1951 and it was published in August 1952. He was using the Manchester Atlas — one of the earliest digital computers — to numerically simulate his equations in one dimension. The paper was largely ignored during Turing's lifetime; its importance was only recognised in the 1970s when Gierer and Meinhardt (1972) and others developed explicit biochemical models of the mechanism. Turing died in 1954, two years after the paper appeared.

Turing's framework was purely abstract — he did not identify specific morphogen molecules. The first confirmed example of a Turing mechanism operating in vivo was the patterning of mouse hair follicles, demonstrated by Sick et al. (2006) who identified WNT and DKK proteins as the activating and inhibiting morphogens. Since then, Turing mechanisms have been confirmed in digit patterning (Raspberry, 2012), palate ridges, and zebrafish stripe formation.

2. Reaction-diffusion equations

The general framework for Turing patterns consists of two coupled partial differential equations describing the concentrations u (activator) and v (inhibitor) in space and time:

∂u/∂t = D_u · ∇²u + f(u, v)
∂v/∂t = D_v · ∇²v + g(u, v)

where:
D_u, D_v = diffusion coefficients (D_v ≫ D_u for Turing patterns)
f(u, v), g(u, v) = local reaction kinetics
∇² = Laplacian operator (spatial diffusion)

The spatial term ∇²u represents Fickian diffusion spreading the concentration in proportion to local curvature. In 1D, ∇²u = ∂²u/∂x²; in 2D it becomes ∂²u/∂x² + ∂²u/∂y². The reaction terms f and g can take many specific forms depending on the model chosen.

A key requirement for a Turing instability is differential diffusion: the inhibitor must diffuse significantly faster than the activator. The biological intuition is that local self-activation (the activator promotes its own production) is balanced by long-range inhibition (the inhibitor diffuses away rapidly and suppresses activator production at a distance), creating a standing wave of chemical concentration.

Parameter Typical value / requirement Biological interpretation
D_u (activator diffusion) Small, e.g. 1–10 µm²/s Membrane-bound or large molecule
D_v (inhibitor diffusion) Large, D_v ≫ D_u Small, freely diffusing molecule
d = D_v / D_u ≥ 4–10 for typical kinetics Diffusion ratio — must exceed critical value
Pattern wavelength λ ∝ √(D_u / reaction rate) Stripes/spots spacing

3. The Turing instability

To understand why diffusion can destabilise a uniform steady state, consider a system at equilibrium (u₀, v₀) that satisfies f(u₀, v₀) = 0 and g(u₀, v₀) = 0. The stability of this state to small perturbations is determined by linearising the system. Writing u = u₀ + ũ and v = v₀ + ṽ, the linearised system becomes:

∂ũ/∂t = D_u ∇²ũ + f_u ũ + f_v ṽ
∂ṽ/∂t = D_v ∇²ṽ + g_u ũ + g_v ṽ

where f_u = ∂f/∂u, f_v = ∂f/∂v, g_u = ∂g/∂u, g_v = ∂g/∂v evaluated at (u₀, v₀).

Substituting a spatial Fourier mode ũ, ṽ ∝ e^(σt + ikx), the system reduces to an eigenvalue problem. The growth rate σ of wavenumber k is:

σ(k²) = ½ [tr(A) − (D_u + D_v)k²]   ± ½√[(tr(A) − (D_u + D_v)k²)² − 4·h(k²)]

where A = [[f_u, f_v], [g_u, g_v]] (Jacobian matrix)
and h(k²) = D_u D_v k⁴ − (D_v f_u + D_u g_v)k² + det(A)

The Turing conditions require:

  1. The uniform state is stable without diffusion: tr(A) < 0 and det(A) > 0.
  2. Diffusion destabilises some wavenumber k*: h(k²) < 0 for some k.
  3. The second condition requires f_u > 0 (activator self-activates) and g_v < 0 (inhibitor self-inhibits), with d = D_v/D_u sufficiently large.

The critical wavenumber k* at which growth is fastest determines the wavelength of the pattern: λ = 2π/k*. This is the spatial period of stripes or the diameter of spots.

Pattern selection: The Turing instability predicts growth of modes near k*, but the final pattern (stripes vs. spots vs. hexagons) is determined by the nonlinear interactions between modes. Stripes tend to emerge when one mode dominates; spots emerge from superposition of three equiangular modes. The domain geometry and boundary conditions also influence which patterns appear.

4. Activator-inhibitor systems

The most biologically interpretable version of a Turing system is the activator-inhibitor framework, first explicitly formulated by Gierer and Meinhardt (1972). In this framework:

The resulting dynamic has a clear spatial logic: where the activator is locally elevated, it amplifies itself (positive feedback) while simultaneously sending the inhibitor diffusing outward. The inhibitor returns the signal, suppressing activation in the region surrounding the peak. This local activation / lateral inhibition (LALI) motif generates a characteristic spacing between pattern elements.

Mathematically, the Jacobian of an activator-inhibitor system at the steady state has the sign structure:

A = [[+, −], (activator promotes itself, inhibitor suppresses it) [+, −]] (activator promotes inhibitor, inhibitor suppresses itself)

f_u > 0 (self-activation) f_v < 0 (inhibitor suppresses activator) g_u > 0 (activator produces inhibitor) g_v < 0 (inhibitor self-degrades)

Note that this sign structure means the individual kinetics (without diffusion) make the steady state stable — a state that Turing called conditionally stable. It is the addition of differential diffusion that tips this stable state into instability.

5. The Gierer-Meinhardt model

The Gierer-Meinhardt (GM) model (1972) provides specific reaction kinetics for an activator-inhibitor system, originally inspired by the regeneration of the hydra's head and foot. The standard form is:

∂u/∂t = D_u ∇²u + ρ · u²/v − μ_u · u + σ_u
∂v/∂t = D_v ∇²v + ρ · u² − μ_v · v + σ_v

u: activator concentration v: inhibitor concentration ρ: production rate constant μ_u, μ_v: degradation rates σ_u, σ_v: small baseline (source) terms

The key nonlinearity is the ratio u²/v: activator production is proportional to the square of the activator concentration (autocatalysis) divided by the inhibitor concentration. This nonlinear term creates the saturation needed to stabilise the pattern at finite amplitude.

The GM model successfully reproduced:

Extended Gierer-Meinhardt: Many extensions of the GM model have been studied, including substrate-depletion models (where the inhibitor is replaced by a second substrate that the activator consumes), cross-inhibition models, and three-component systems that produce more complex patterns including labyrinthine or chaotic patterns.

6. The Gray-Scott model

The Gray-Scott model (1984), originally developed for chemical reactors, became one of the most studied reaction-diffusion systems due to its extraordinary richness. It models an autocatalytic chemical reaction where substance U is converted to V in the presence of V (autocatalysis), while V slowly decays:

∂u/∂t = D_u ∇²u − u·v² + F·(1 − u)
∂v/∂t = D_v ∇²v + u·v² − (F + k)·v

F: feed rate (replenishes U) k: kill rate (removes V) D_u = 0.2, D_v = 0.1 (typical values)

The reaction term u·v² represents an autocatalytic step: each molecule of V "catalyses" converting one molecule of U to V, so the rate grows quadratically with V concentration. The feed term F·(1−u) replenishes U to a uniform baseline.

The Gray-Scott model exhibits an astonishing variety of patterns depending on the (F, k) parameter space:

F (feed) k (kill) Pattern type
0.035 0.065 Spots (pearls)
0.037 0.060 Worms / solitons
0.029 0.057 Spirals
0.025 0.055 Mitosis (self-replicating spots)
0.040 0.060 Labyrinthine stripes
0.060 0.062 Negative spots (holes)

The "mitosis" mode is particularly striking: localised spots spontaneously elongate and divide into two spots, mimicking cell division. This self-replication property was connected to the Grey-Scott system as a model for self-replicating chemical structures.

7. Biological patterns and experiments

Animal coat patterns

Among the most celebrated applications of Turing's theory is the explanation of animal coat patterns. Murray (1988) demonstrated that by solving reaction-diffusion equations on domains of different sizes and shapes, one can reproduce the patterns observed on animals:

Zebrafish stripes: confirmed Turing mechanism

The clearest confirmed Turing mechanism in vertebrate pigmentation is zebrafish stripe formation, where three types of pigment cell (melanophores, xanthophores, and iridophores) interact in a pattern consistent with a multi-component reaction-diffusion system. Nakamasu et al. (2009) showed experimentally that melanophores activate neighbouring xanthophores (short-range activation) while xanthophores inhibit distant melanophores (long-range inhibition), satisfying the LALI requirement.

Mouse hair follicle spacing

Sick et al. (2006, Science) provided perhaps the best direct molecular evidence for a Turing mechanism. They showed that WNT (Wingless/Int signalling) acts as the activator and DKK1 (Dickkopf-1, a WNT inhibitor) acts as the inhibitor in determining the spacing of hair follicles in mouse skin. Perturbing DKK1 expression altered the spacing exactly as Turing theory predicted.

Turing patterns in non-biological systems: The same mathematical structure arises in chemical systems (the Belousov-Zhabotinsky reaction), physical systems (sand dunes, cloud streets, convection cells), ecological systems (vegetation patterns in arid regions), and even social systems. The generality of the reaction-diffusion framework makes Turing instability one of the most universal mechanisms in science.

8. JavaScript 2D reaction-diffusion simulation

The interactive simulation below evolves the Gray-Scott model on a 128 × 128 grid using finite differences. Each pixel represents a grid point; colour encodes the concentration of species V (the product). Change the feed and kill parameters to explore the rich pattern phase diagram — from spots to stripes to labyrinthine mazes. Click the canvas to add a drop of V and initiate pattern growth from scratch.

The simulation uses a ping-pong buffer technique: two arrays store the current and next state, alternating each step to avoid read-write conflicts. The Laplacian is computed using the standard 5-point finite difference stencil with periodic boundary conditions. Each animation frame advances multiple reaction-diffusion steps to compensate for the small dt required for numerical stability.

// Gray-Scott parameters
const Du = 0.20, Dv = 0.10;
let F = 0.037, k = 0.060;
const dt = 1.0;

function step(u, v, u2, v2, N) {
  for (let y = 0; y < N; y++) {
    for (let x = 0; x < N; x++) {
      const i = y * N + x;
      // Periodic neighbour indices
      const xp = (x + 1) % N, xm = (x - 1 + N) % N;
      const yp = (y + 1) % N, ym = (y - 1 + N) % N;

      // 5-point Laplacian
      const Lu = u[ym*N+x] + u[yp*N+x] + u[y*N+xm] + u[y*N+xp] - 4*u[i];
      const Lv = v[ym*N+x] + v[yp*N+x] + v[y*N+xm] + v[y*N+xp] - 4*v[i];

      const uvv = u[i] * v[i] * v[i];  // autocatalytic term
      u2[i] = u[i] + dt * (Du * Lu - uvv + F * (1 - u[i]));
      v2[i] = v[i] + dt * (Dv * Lv + uvv - (F + k) * v[i]);
    }
  }
}