Before you explore

Reading the ladder: from spikes to a slider

Every model in the Demos tab looks different on the surface — a complex number, a pair of firing rates, a post-synaptic potential — but they all share two ideas underneath. This page explains both, once, so the per-model pages can stay short.

On this page

  1. From spikes to a single number
  2. The push–pull motif: excitation and inhibition
  3. A node, and a network of nodes
  4. Coupling, in one idea

1From spikes to a single number

Why every model here talks about "populations", not individual neurons.

A real patch of cortex holds thousands of neurons, each firing its own irregular train of spikes. Modeling every one of them is possible (that's what spiking-network simulations do), but it is not what any model on this site does. Instead, following what the paper calls the mesoscale or "lumped" description, we replace the whole crowd with a small number of population-averaged quantities — most often a single average firing rate per population.

MANY SPIKING NEURONS individual spike trains — hard threshold per cell ONE NEURAL MASS (a population, lumped to a point) membrane potential → rate →
Left: many neurons, each with a sharp firing threshold. Right: population heterogeneity smooths that threshold into a continuous sigmoid transfer function — the curve that underlies every model on this site: explicit in the rate models (WILCO, NMM1, NMM2), implicit via the Hopf normal form's amplitude-saturating cubic term in Stuart–Landau, and altogether absent in the purely linear HO. Where it's present, it turns "how excited is this population" into "how fast is it firing".

This is not a simplification made for convenience alone — it mirrors what EEG, MEG and LFP electrodes actually measure: the summed activity of a population, not any single cell. Every model on this site, from the harmonic oscillator to NMM2, is a different level of detail applied to that same lumped idea.

2The push–pull motif

One recurring pair of variables, wearing a different costume on every rung.

Across every model in this review, oscillation arises from the same two-variable skeleton: one quantity that pushes activity away from rest, and a second that pulls it back. Chase each other fast enough and the pair doesn't settle — it rotates.

E excitatory I inhibitory push (excite) pull (inhibit)
The push–pull loop: E excites I, I inhibits E. Chased fast enough relative to how quickly each side reacts, the pair doesn't settle to a fixed point — it rotates, and that rotation is the oscillation.
ModelWhat plays the role of (E, I) / (push, pull)
HORe(z), Im(z) — two quadrature views of the same rotation; abstract, no biology attached yet.
Stuart–LandauSame (x, y) pair as HO, now with a cubic term that caps how far the "chase" can run.
WILCOx, y are typically excitatory and inhibitory firing rates — though the paper's own WILCO equations admit an equally valid PSP reading of the same form.
NMM1x, y are excitatory and inhibitory post-synaptic potentials — same E/I loop, with realistic synaptic lag added.

Once you can see this pair underneath the notation, every rung on the ladder reads as "the same push–pull loop, with one more layer of biological detail added" — which is exactly the paper's thesis. Phase-only, presented on this site as the rung before HO, is the one exception: it has only a single state variable per node (a phase θ, no amplitude), so there's no push and no pull to speak of yet — just a bare rotation. Every push–pull pair in this table is what gets added on top of that rotation once amplitude re-enters the picture at HO.

3A node, and a network of nodes

Same vocabulary the paper uses in §1.1(3): one mass is a node; many masses, wired together, are a network.

Everything in section 2 describes one node: a single neural mass, i.e. one push–pull loop, standing in for one cortical column, one parcel, or one region. A network is just several such nodes connected by weighted links — the paper calls those weights Cij, the connectivity from node j to node i. Coupling just two nodes is already enough to produce synchronization, phase-locking, and other collective behavior no single node can show alone.

node 1 node 2 node 3 node 4 edge weight = C ij
Each circle is one node (one full push–pull loop, running the equations from section 2). Each edge carries a weight Cij saying how strongly node j drives node i.

4Coupling, in one idea

This is the part every "Network" section on the Demos page is quietly built on.

The paper's own definition (§1.1, concept (6)) is the cleanest one: "Coupling is forcing generated by other nodes: one neural mass serves as a time-dependent drive for another." That means coupling is never a new kind of equation. It is always exactly one extra additive term, tacked onto the same single-node equation you already know.

"Coupling is forcing generated by other nodes: one neural mass serves as a time-dependent drive for another." — Castaldo et al., §1.1, concept (6)
General pattern (Table 1.1) node i's own equation  +  G · Σⱼ Cᵢⱼ · (something about node j)  =  the networked equation

Set the global coupling gain G = 0 (or, equivalently, run a network of N = 1 node) and that extra term vanishes identically — you are left with exactly the isolated single-node equation, no exceptions and no separate formula to learn. This is why every model's Simulator page on this site keeps a single set of "physics" sliders and adds only G (coupling strength) and N (network size) in a "Network" section underneath: turning the network on never changes the node's own dynamics, it only adds this one term.

The exact shape of "something about node j" differs by how each model already represents its state — but it is always additive, and always disappears at G = 0:

ModelIsolated node+ coupling term
Phase-onlyθ̇ᵢ = ωᵢ+ (G/N) Σⱼ sin(θⱼ − θᵢ)  (all-to-all case)  — still additive, still vanishes at G = 0, but the inner term is a nonlinear function of the phase difference (a sine) rather than a linear difference or a linear sum — see the callout below; general form is G · Cᵢⱼ · sin(θⱼ − θᵢ − φᵢⱼ), with a real connectome Cᵢⱼ, delay τᵢⱼ, and phase-lag φᵢⱼ
HO / SLż = (α + iω)z − …+ (G/N) Σⱼ (zⱼ − zᵢ)  (all-to-all case)  — diffusive: pulled toward the network average; general form is G · Cᵢⱼ · (zⱼ − zᵢ) with a real connectome Cᵢⱼ
WILCO / NMM1τẋ + x = σ(… + Fₑ)+ inside σ(…): add Σⱼ Cᵢⱼxⱼ to the sigmoid's input  — one node's output becomes another's input current; G is explicit for the HO/SL/Phase-only oscillator family, but folded into (or absent from, as written) Cᵢⱼ here

Every other coupling law on this site — diffusive or additive — is linear in the states being compared: it depends on zⱼ − zᵢ, or just adds Cᵢⱼxⱼ, straight into the receiving node's equation. Its sin(θⱼ − θᵢ) is different: it's a nonlinear function of the phase difference that vanishes when two oscillators are already in phase, peaks a quarter-cycle apart, and reverses sign beyond a half-cycle apart. It still obeys the same "time-dependent drive for another" definition from §1.1, concept (6) above and still switches off cleanly at G = 0 — it's the shape of the coupling that's different, not the general pattern it fits into.

What this means on the Demos page

Every model's Simulator page has a base variant (just the node's own physics, exactly as in section 2) and a separate Network variant you switch to with the pill selector at the top. The Network variant's sliders are the same node physics plus N and G on top, adding only the coupling term from the table above across N copies of that same node. Slide the Network variant's G to 0 (or N to 1) and you get exactly the base variant's dynamics back — not approximately, but by construction, since it's the identical single-node equation with one additive term switched off. Phase-only is the one exception: θ̇ = ω alone carries no information beyond a constant rotation rate, so there's nothing worth showing until at least two oscillators are coupled — its Simulator page skips the single-node variant entirely and goes straight to the network.

How do they connect → Try it in the Demos →