THE CALCUTTA FIELDBOOKREADER PREFERENCES

A LITTLE TRANSPARENCY.

Your visit.
Your choices.

Choose whether YouTube players may connect to Google. Vercel’s cookieless page counts run by default, independently of this video preference.

01 The essentials

ALWAYS AVAILABLE

Sign-in cookies for the private Notes studio, and local settings for themes, reading tools and saved work. These support features you request.

Let YouTube players connect to Google when embedded videos appear. You can also load one video at a time without remembering this permission.

Change your mind any time. Keeping videos paused unloads active YouTube players. Read the full privacy note ↗

How spots and stripes form

By Published Updated 9 min read read

How can a nearly uniform surface develop spots or stripes without a pre-drawn blueprint? In 1952, Alan Turing showed that two interacting signals spreading across a flat sheet can break symmetry on their own. One signal amplifies itself locally, whilst the second restrains it and spreads much faster through neighbouring regions.

The workbench below builds that idea around a single controlled comparison. First, let tiny random disturbances around a uniform equilibrium grow into a stable pattern. Then repeat the exact same experiment—from the identical starting array and random seed—with both signals spreading at the same rate.

Computed comparison of four reaction-diffusion outcomes at model time t = 60 from seed 1952: Spots (k = -0.075, 15x), Stripes (k = 0.000, 15x), Inverse spots (k = +0.075, 15x), and Equal spreading (1x, Dv = Du = 0.6) which smooths back to a uniform surface.
Computed preview of the experiment (seed 1952, model time t = 60.0): When the inhibitor signal spreads 15× faster than the activator (D_u = 0.6, D_v = 9.0), tiny initial disturbances self-organise into isolated spots (k = −0.075), connected stripes (k = 0.000), or inverse spots (k = +0.075). Repeating the experiment at equal spreading rates (1×, D_v = D_u = 0.6) causes every disturbance to fade away.

Computed example. Press Grow from noise to see how it forms.

How a nearly uniform surface develops spots or stripes

This computed preview compares the three verified Turing regimes at model time t = 60.0 from the same initial seed (1952, Grid 96 × 96, spacing h = 0.8, inhibitor spreading 15× faster than activator spreading, D_u = 0.6, D_v = 9.0) against an equal-spreading control (1×, D_v = D_u = 0.6). When both signals spread at the same rate, initial disturbances fade back to a flat equilibrium.

Computed reaction–diffusion comparison showing isolated spots (k = -0.075), labyrinthine stripes (k = 0.000), inverse spots (k = +0.075) at 15x inhibitor spreading, and a uniform surface when both signals spread at equal rates (1x).

Three short suggested experiments

  1. Grow a pattern from microscopic noise: Leave the preset on Spots and press Grow from noise. The patch resets to tiny seeded disturbances (±0.03\pm 0.03) around its uniform equilibrium (u=v=s≈−0.273u = v = s \approx -0.273). Watch local peaks reinforce themselves whilst fast-spreading inhibition carves quiet moats around each rising spot.
  2. Test equal spreading side by side: Select Compare equal spreading. Both fields restart from the exact same initial arrays and evolve at the same model time, changing only the inhibitor spreading rate (15× on the left versus 1×, where Dv=Du=0.6D_v = D_u = 0.6, on the right). Follow the spatial variation curve σu\sigma_u: differences amplify on the left and smooth to zero on the right.
  3. Shift the pattern balance and domain geometry: Try Stripes (k=0.000k = 0.000) and Inverse spots (k=+0.075k = +0.075), or drag Pattern balance yourself. Then open Change the shape to compare a Broad sheet, a Narrow strip, and a Tapered patch, or switch to the Pigment view to see how a simple display threshold turns a continuous signal into crisp markings.

How local amplification and fast inhibition break symmetry

Everyday intuition says that diffusion is a smoothing process. Drop ink into still water and sharp edges blur until the liquid is uniform. For decades, biologists assumed that spatial patterns on animal coats—leopard rosettes, zebra stripes, or the dappled flanks of a trout—required either a pre-existing coordinate map or an external wave moving across the embryo.

Turing discovered a counter-intuitive exception. Suppose every point on a flat sheet carries two interacting signals:

  • An activator signal (uu) that promotes more of itself locally and also stimulates the production of an inhibitor.
  • An inhibitor signal (vv) that suppresses the activator and spreads through the sheet much faster than the activator does.

Imagine a nearly uniform surface sitting at equilibrium, perturbed only by tiny random fluctuations. Wherever the activator uu happens to sit slightly above the baseline, local self-amplification nudges that peak higher. At the same time, the growing peak produces extra inhibitor vv.

Because the activator spreads slowly (Du=0.6D_u = 0.6), the upward push stays localised in a tight cluster. Because the inhibitor spreads rapidly (Dv=9.0D_v = 9.0 at the 15× setting), the newly created inhibitor escapes the nascent peak and floods its immediate surroundings. The peak survives at its own centre—where self-amplification outpaces the escaping inhibitor—whilst a ring of high inhibition around it prevents another peak from rising too close by. Farther away, where the inhibitor has diluted, another activator peak is free to grow.

The result is a characteristic wavelength: peaks space themselves out at a distance set by the contest between local amplification and the reach of the faster inhibitor.

Why equal spreading destroys the pattern

When you turn on Compare equal spreading, the second viewport runs the identical equations from the exact same initial arrays, but sets the inhibitor spreading rate equal to the activator spreading rate:

Dv=Du=0.6(1×)D_v = D_u = 0.6 \quad (1\times)

Why does the pattern vanish instead of merely changing size?

When both signals spread at the same rate, any inhibitor generated by a rising activator peak remains bottled up inside the peak itself rather than running ahead into the surrounding neighbourhood. As soon as uu rises at a point, vv rises right alongside it at the same spatial scale and quenches the peak on the spot. Meanwhile, ordinary diffusion smooths out local differences between neighbouring cells.

Without a faster inhibitor to export restraint outward, no spatial wavelength enjoys positive growth. Every disturbance decays steadily back towards the flat equilibrium u=v=su = v = s, and the spatial variation σu\sigma_u drops to zero. Crucially, the workbench uses a fixed colour scale ([−1.0,+1.0][-1.0, +1.0]) across both fields and throughout playback; automatic contrast stretching would artificially amplify microscopic residual noise and make a fading surface look patterned when it is actually flat.

From spots to stripes and inverse spots

A faster inhibitor is necessary for pattern formation in this two-signal system, but it is not the only ingredient that decides which pattern appears. The Pattern balance parameter kk shifts the baseline drive on the activator signal and determines whether high-signal regions remain isolated islands or link up into continuous bands:

  • Spots (k=−0.075k = -0.075): The uniform equilibrium sits below zero (s≈−0.273s \approx -0.273). High-activator peaks face a headwind across the domain, so only compact, circular islands can sustain themselves amidst a connected low-signal sea.
  • Stripes (k=0.000k = 0.000): The equation is symmetric around s=0s = 0. Neither positive peaks nor negative troughs enjoy an advantage; high- and low-signal regions share the surface equally (~50% each) and weave into labyrinthine stripes of uniform width.
  • Inverse spots (k=+0.075k = +0.075): The uniform equilibrium sits above zero (s≈+0.273s \approx +0.273). Now the high-activator state forms a connected background sheet punctuated by isolated low-signal pockets—the mirror image of the spots regime.

Whenever you adjust Pattern balance or Inhibitor spreading rate, the instrument restarts from the same deterministic random seed (1952 by default) so that differences you see on screen come purely from the equations rather than a fresh roll of random noise.

Signals versus visible pigment

A reaction–diffusion system produces smooth, continuous fields of uu and vv. In this dimensionless model, uu and vv are normalised, signed signal fields measured relative to a reference state: positive values represent above-baseline signalling and negative values represent below-baseline signalling. Unlike raw chemical concentrations, negative numbers here are completely valid.

In biological skin or hair follicles, downstream cells often respond to such continuous morphogen gradients through a sharp switch: where the activator signal sits above a threshold, pigment cells produce dark melanin; where it sits below, they produce light coat colour.

The three view tabs directly above the canvas let you separate the underlying mathematics from that readout rule:

  • Activator and Inhibitor display the continuous signed fields uu and vv against a fixed [−1.0,+1.0][-1.0, +1.0] scale.
  • Pigment applies a binary threshold rule to uu. Moving the Pigment threshold slider changes only how the current field is coloured on screen; it never alters the numerical arrays, model time, or simulation state.

How patch geometry shapes the pattern

Open Change the shape to solve the exact same equations—with the same grid spacing (h=0.8h = 0.8) and diffusion coefficients—inside three flat, two-dimensional domains with no-flux boundaries (the signals spread inside the patch; they do not cross its edges):

  • Broad sheet (76.8 × 76.8 model units): Large enough in both directions to host many wavelengths, producing isotropic spots or winding labyrinthine stripes.
  • Narrow strip (96.0 × 19.2 model units): Wide enough along its length for multiple waves, but narrow across its height. Because no-flux boundaries require signal gradients to meet the edges perpendicularly, stripes frequently align into rungs across the strip.
  • Tapered patch (96.0 × 38.4 model units): A flat two-dimensional wedge that narrows from left to right. At the broad end, two-dimensional spots or branched stripes can sit side by side; towards the narrow tip, only single transverse bands fit across the width—mirroring the transition from body spots to tail rings seen on cheetahs, genets, and leopard geckos.

Keep in mind that all three domains here are flat, two-dimensional approximations on a fixed grid. Modelling curved three-dimensional animal surfaces or tissue that expands while the pattern is still forming requires additional geometric terms beyond a fixed planar mesh.


Equations and implementation details

The instrument integrates the dimensionless cubic activator–inhibitor system on a two-dimensional domain Ω\Omega:

∂u∂t=0.6∇2u+u−u3−1.2v+k\frac{\partial u}{\partial t} = 0.6\nabla^2 u + u - u^3 - 1.2v + k

∂v∂t=Dv∇2v+1.5(u−v)\frac{\partial v}{\partial t} = D_v\nabla^2 v + 1.5(u - v)

Here u(x,y,t)u(x, y, t) and v(x,y,t)v(x, y, t) are normalised, signed signal fields where negative values are valid deviations below the reference baseline:

  • uu: activator signal.
  • vv: inhibitor signal.
  • u−u3u - u^3: local self-amplification (+u+u) with a cubic limiting term (−u3-u^3) that keeps growing peaks bounded.
  • −1.2v-1.2v: local inhibition of the activator by the inhibitor.
  • kk: pattern balance parameter shifting the baseline drive on uu.
  • Du=0.6D_u = 0.6: fixed activator diffusion coefficient.
  • DvD_v: inhibitor diffusion coefficient, controlled via the spreading ratio Dv/DuD_v / D_u (so 1× means Dv=Du=0.6D_v = D_u = 0.6, and 15× means Dv=9.0D_v = 9.0).

Uniform equilibrium and seeded initialisation

Setting ∇2u=∇2v=0\nabla^2 u = \nabla^2 v = 0 and ∂u/∂t=∂v/∂t=0\partial u / \partial t = \partial v / \partial t = 0 yields v=u=sv = u = s, where the uniform equilibrium ss satisfies the depressed cubic:

s3+0.2s=ks^3 + 0.2s = k

Because the derivative 3s2+0.23s^2 + 0.2 is strictly positive for all real ss, every pattern balance kk has a unique real uniform equilibrium solved analytically via Cardano’s formula. Each run initialises (u,v)(u, v) around (s,s)(s, s) using deterministic Mulberry32 pseudo-random disturbances of amplitude ±0.03\pm 0.03. Controlled comparisons reuse the exact same disturbance offsets at every grid cell.

Linear dispersion check and numerical discretisation

Linearising around u=v=su = v = s gives the Jacobian reaction rates fu=1−3s2f_u = 1 - 3s^2, fv=−1.2f_v = -1.2, gu=1.5g_u = 1.5, and gv=−1.5g_v = -1.5. For k∈[−0.075,+0.075]k \in [-0.075, +0.075], the homogeneous mode (q=0q = 0) is stable because tr⁡(J)=fu+gv=−0.5−3s2<0\operatorname{tr}(J) = f_u + g_v = -0.5 - 3s^2 \lt 0 and det⁡(J)=1.5(3s2+0.2)>0\det(J) = 1.5(3s^2 + 0.2) \gt 0. When Dv=Du=0.6D_v = D_u = 0.6, every spatial wavenumber q>0q \gt 0 also has Re⁡λ(q)<0\operatorname{Re}\lambda(q) \lt 0. At Dv=9.0D_v = 9.0 (15×), a band of discrete Neumann eigenmodes on the 96×9696 \times 96 grid (h=0.8h = 0.8) acquires positive growth rate λ(q)>0\lambda(q) \gt 0 with peak growth near q∗≈0.65 rad/unitq^* \approx 0.65\text{ rad/unit} (wavelength Λ≈9.7\Lambda \approx 9.7 model units).

Spatial derivatives use a five-point finite-difference Laplacian with uniform spacing h=0.8h = 0.8 and zero-flux Neumann boundary conditions across all domain masks. Time integration uses the explicit second-order Heun (RK2) predictor–corrector scheme with fixed dimensionless timestep Δt=0.01\Delta t = 0.01 inside a dedicated Web Worker. Halving Δt\Delta t from 0.010.01 to 0.0050.005 up to t=60.0t = 60.0 changes the field by less than 10−610^{-6} RMS with 100%100\% cell-by-cell sign agreement.

Sources and further exploration

  • Alan M. Turing (1952), The Chemical Basis of Morphogenesis, Philosophical Transactions of the Royal Society of London B, 237(641), 37–72.
  • James D. Murray (1981), A Pre-pattern Formation Mechanism for Animal Coat Markings, Journal of Theoretical Biology, 88(1), 161–199, and Mathematical Biology II: Spatial Models and Biomedical Applications (Springer, 2003).
  • Shigeru Kondo and Takashi Miura (2010), Reaction-Diffusion Model as a Framework for Understanding Biological Pattern Formation, Science, 329(5999), 1616–1620.
  • Once you have explored how differential spreading creates spots and stripes in this signed activator–inhibitor model, visit the companion Gray–Scott Reaction–Diffusion Atlas on this blog to explore self-replicating mitosis spots, coral mazes, and spiralling waves across a two-parameter feed-and-kill phase map.

Quick reference and FAQ

Two spreading signals can turn an almost uniform sheet into spots or stripes—provided the restraining signal spreads faster than the amplifying one.

Word Cloud

Word cloud for How spots and stripes form

Comments

Read the conversation or leave a thought for review. Comments load when this section is in view.