The gut microbiome behaves as a self-organizing ecosystem with two broad, mutually-suppressing functional guilds: fiber-fermenting taxa (Bacteroides/Prevotella-type, producing butyrate and other SCFAs from complex carbohydrates) and protein/fat-fermenting taxa (Bilophila/Alistipes-type, favored by low-fiber diets and linked to a pro-inflammatory, dysbiotic profile). Cross-feeding, pH shifts and bacteriocin competition make each guild reinforce its own dominance once established — a hallmark of alternative stable states in ecology.
This is modeled with a single order parameter x (negative = fiber-dominant, positive = protein-dominant) evolving under a bistable (cusp-catastrophe) potential:
V(x) = x⁴/4 − (k/2)x² − h·x
dV/dx = x³ − k·x − h
dx = −(dV/dx)·dt + σ·dW (overdamped Langevin dynamics)
Here k is the competitive-exclusion strength (how strongly each guild suppresses the other — higher k carves two deeper, more separated wells), h is the dietary bias tilting the landscape toward one guild (set by the fiber-intake slider), and σ is stochastic fluctuation from finite population sizes and daily variability.
- Diet slider — shifts h. Enough dietary swing can eliminate one well entirely (a saddle-node bifurcation at |h| = 2(k/3)^1.5), forcing an irreversible flip even without noise.
- Antibiotic pulse — an instantaneous kick to x, mimicking a broad-spectrum antibiotic course. If it's strong enough to cross the central barrier, the community can resettle into the *other* stable state and stay there after the drug is gone — this is why microbiome recovery is often incomplete, not because of leftover drug, but because the ecosystem found a new equilibrium.
- Seed buttons — place x directly into one well, demonstrating that at the *same* diet and competition settings, two different starting communities converge to two different steady states (hysteresis).
The instanced cell colony below the landscape renders each simulated microbe's guild by sampling a fixed per-cell random threshold against the current fiber-fermenter fraction, so the visible mixture always matches the live population split.