Skip to content

Interactive Demos

Each demo below is a live, self-contained widget running entirely in your browser. No Python kernel, no server — just HTML5 Canvas + JavaScript.

Click on the phase plane to set initial conditions, drag sliders to change parameters, and run parameter sweeps to explore bifurcations.


Wilson-Cowan: E-I Oscillations

A classic excitatory-inhibitory population model. Default parameters produce stable fixed points; increase aee (E→E coupling) or Pe (external drive) to induce oscillations.


FitzHugh-Nagumo: Excitability

Simplified Hodgkin-Huxley dynamics. Below the bifurcation threshold (I ≈ 0.3) the neuron rests at a stable fixed point. Above threshold, it fires repetitively (limit cycle).


MPR: Bistable Regime

The Montbrió-Pazó-Roxin model in its bistable regime: three coexisting fixed points (stable low-activity node, saddle, stable high-activity focus). Click near the saddle to observe the separatrix — trajectories diverge to either the low or high activity state.


MPR: Limit Cycle

Just beyond the bistable region, the MPR model exhibits limit cycle oscillations in firing rate. This corresponds to a Hopf bifurcation from the high-activity fixed point.


How These Work

Each iframe loads a standalone HTML export generated by PhasePlaneWidget.to_standalone_html(). The file contains:

  • All model equations in JavaScript
  • An RK4 ODE solver
  • A Newton-Raphson fixed-point finder
  • Canvas rendering code
  • No external dependencies — works offline

To generate your own:

from phase_plane_widget import PhasePlaneWidget

widget = PhasePlaneWidget(model_name="mpr")
widget.params["eta_bar"] = -5.0
widget.params["J"] = 15.0
widget.to_standalone_html("my_widget.html")