loading...
running...
How to use
Pick a preset or move the sliders; the web is live. Remove Keystone Predator takes the otters out and you can watch the cascade: urchins boom, the canopy shrinks, fish leave and the bottom turns pale. Reintroduce Otters puts three back. Tick "Remove ..." to hold any species at zero, or click a node in the food web diagram. Cull urchins and Storm are one-off shocks.
- Try 1: Remove the otters, wait for the barren, then reintroduce otters with q = 0 and with q = 0.4 and compare the recovery.
- Try 2: set D = 0 and remove the otters: without drift kelp the barren does not last.
- Try 3: raise q from 0 to 0.5 in steps, then lower it. Press "Sweep q (hysteresis)" to see both branches at once.
- Try 4: run the removal experiment to see which species behaves as a keystone (CI).
- Try 5: remove only the snails. A weak interaction is not a keystone.
Drag to orbit, wheel to zoom. Space pauses, R resets. The readout shows the nearest equilibrium and its return time. The seven numerical checks below run on the reference parameters.
The kelp plant (stipe with gas bladders, holdfast and ruffled blades), the sea urchin with its spines, the turban snail, the sea otter (fur, face, whiskers), the reef fish, the rocky reef with pink coralline crust and the sandy seabed with rippled texture were modelled in Blender 5.2 with Cycles-baked PBR textures, exported as one Draco GLB and animated in Three.js. Urchins and snails are drawn about three times life size so you can see them from the overview camera. The 2D lab uses sprites rendered from the same models.
The science
A keystone species has an effect on its community that is far larger than its abundance suggests (Paine 1969). The classic example on the North Pacific coast is the sea otter: otters eat sea urchins, urchins eat kelp, and kelp forests shelter hundreds of other species. Where otters were hunted out, urchins multiplied and ground the forest down to bare rock, an urchin barren; where otters returned the forest came back (Estes and Palmisano 1974; Estes and Duggins 1995). This lab makes the idea quantitative with four coupled equations.
dK/dt = σ + r K (1 − K/100) − (g U + gs S) K / (K + D + h)
dU/dt = eU g U (K + D)/(K + D + h) − mU U − dU U2 − O f U
dS/dt = eS gs S (K + D)/(K + D + h) − mS S − dS S2 − O f w S
dO/dt = O ( A + eO f (U + w2 S) − mO − q ) − dO O2
f = p P / (Ph2 + P2), P = U + w S
Kelp K is percent canopy cover: logistic regrowth r with a small spore supply σ so a bare patch can recolonise. Grazing saturates (a type II response) and is shared with a drift subsidy D, kelp torn loose elsewhere that drifts in and feeds urchins without being taken from the living canopy. In a barren, drift is what keeps urchins alive for decades without any live kelp: this is the ingredient that produces alternative stable states (Scheffer et al. 2001; Filbee-Dexter and Scheibling 2014). Otters take urchins (and, less eagerly, snails, weight w = 0.6) with a type III response f: they switch to other food when urchins are rare, which gives urchins a refuge at low density, and they eat at most a bounded amount when urchins are common, which is why a few otters cannot clear a dense barren. Otters also live on clams and crabs (income A per otter), so they persist when urchins are scarce. The parameter q is extra otter mortality, for example killer-whale predation (Springer et al. 2003), hunting or an oil spill. Densities are relative biomass units, not kg per square metre; every constant other than the sliders is illustrative, chosen to give realistic time scales, not fitted to a site.
Stability. At an equilibrium y* the Jacobian J = ∂F/∂y has four eigenvalues. If all have negative real part, small kicks decay with return time 1/|max Re λ|. The page finds y* with Newton's method, forms J by central differences and gets the eigenvalues from the characteristic polynomial (Faddeev-LeVerrier) and Durand-Kerner root finding. A small positive Re λ or a complex pair near zero marks the edge of a cycle.
Tipping and hysteresis. Raise q slowly and the forest persists until otters become too rare to hold urchins down; the system then jumps to the barren. Lower q again and it does not jump back at the same value: the "Sweep q" graph shows the two branches. This is a fold-type regime shift, the same mathematics as lake eutrophication.
Community importance. The removal experiment reports CI = (|Kwith − Kwithout| / Kwith) / p, where p is the species' share of total biomass (Power et al. 1996). A keystone has large CI at small p. Here otters have a CI of the order of 10, urchins and snails far below 1.
Numerics. Classical fourth-order Runge-Kutta with a fixed step of 0.02 years; a removed species is clamped to zero after every step. Numerical checks run in the page (reference parameters, independent of the sliders): (1) kelp alone against the exact logistic solution; (2) a long RK4 run against the Newton equilibrium; (3) a small kick evolved nonlinearly against exp(J t) (matrix exponential); (4) the sum of the eigenvalues against trace(J); (5) their product against det(J) by Gaussian elimination; (6) step-size convergence; (7) closure of the kelp and otter flux budgets, computed by a separate flux function.
Simplifications. No space (one well-mixed patch); constant environment, no storms, El Nino or marine heat waves; no age structure; urchin starvation is crude (only the self-limiting term dU); real barrens also need disease or predator loss to start. Real recoveries take decades. Time-scales and the size of the hysteresis loop depend strongly on the illustrative constants, so use the shapes, not the numbers.
Sources to spot-check (from memory, flagged): Paine 1969 (Am Nat); Estes and Palmisano 1974 (Science); Estes and Duggins 1995 (Ecol Monogr); Power et al. 1996 (BioScience); Scheffer et al. 2001 (Nature); Springer et al. 2003 (PNAS); Filbee-Dexter and Scheibling 2014 (Mar Ecol Prog Ser). Illustration only, not a management model.