Start with a spark
A small patch of cells begins active. A fixed seed adds the same tiny variation every time.
Synthetic system · deterministic study
An active cell encourages the cells nearest to it, while the same activity suppresses activity across a wider area. This study lets that one push-and-pull rule run and asks what patterns survive.
This is not a brain simulation. It is a controlled mathematical toy for seeing how small local rules can create large-scale structure.
01 — The idea
The model is easier to understand as a sequence than as an equation. The equation is still here later, for anyone who wants to check the sequence.
A small patch of cells begins active. A fixed seed adds the same tiny variation every time.
An active cell encourages nearby cells. Activity can therefore spread instead of simply fading.
The same cell suppresses activity across a wider area. The balance decides whether a pattern spreads, settles or disappears.
The useful question is not whether the picture looks brain-like. It is whether the visible pattern follows from the stated rule—and whether it survives reasonable numerical checks.
02 — Experiment
Press Play to let the field evolve. Add local inhibition, then click the field to move it. Reset returns to the same starting point.
03 — Finding
The label agreed; the picture did not.
The study tested four ways of treating the grid’s edges. In one version, activity leaving the right edge returns on the left. In the others, the edges stop or repeat what reaches them.
Across nine parameter settings, all four versions received the same broad regime label. But the exact cell-by-cell patterns differed substantially—even well inside the grid. A tidy summary had hidden a real numerical sensitivity.
That is the useful result: before interpreting a beautiful pattern, check whether it belongs to the rule or to a convenient choice at the boundary.
04 — Record
The machinery is available without making it the price of entry.
The field uses a normalized difference-of-Gaussians kernel: a narrow positive lobe for excitation and a wider negative lobe for inhibition. A sigmoid maps their combined input back into a bounded activity value.
input = nearby excitation − wider inhibition − intervention
target = sigmoid(responseSlope × (input − threshold))
next = (1 − dt) × current + dt × target
npm test
npm run audit
npm run sweep
npm run boundary-audit