Nodes — overview
A node is the neuron model that fills a reservoir. Every node satisfies the same contract, so any registered node builds for any task’s dimensions:
step!(r, R) # advance one tick, return spikes/rateseffectors(r, spikes) # map to an E-vector of length n_effectors(r)reset!(r) # reset runtime staten_receptors(r); n_effectors(r)Pick one with node=:symbol; variants() lists what’s registered.
Three families
Falandays — homeostatic, online-plastic
A leaky-integrate-and-fire reservoir that learns during the rollout (weights and
per-node targets adapt each tick). Because it self-organises online, it is fair to run
untrained. See base vs extended for the equations. The family:
:falandays_base, :falandays_extended, :falandays_noisy, :falandays_ablated,
:falandays_hemispheric, :falandays_oosawa, :falandays_dendritic,
:falandays_spatial, :falandays_delayed. For the biology each variant abstracts,
see Neurons.
Compartmental / CTRNN — evolved, fixed-weight
Dendrite → soma → hillock continuous-time recurrent cells with emergent/evolved
weights and no online plasticity — adaptation lives in the dynamics of a fixed-weight
system. An untrained compartmental node is random; it must be evolved to be a fair
test. :compartmental_dense, :compartmental_structured.
:sorn — experimental
A self-organising recurrent network (Lazar/Triesch): binary threshold units with **STDP
- intrinsic plasticity + synaptic normalisation** — a mechanistically distinct route to near-critical dynamics, useful as a criticality positive-control. Not yet validated to reproduce avalanche scaling in this implementation.
Plasticity ⇒ how you prepare it
| family | online plasticity | default benchmark prep |
|---|---|---|
| Falandays (base + variants) | yes | untrained (fair) |
:sorn | yes | untrained (fair, once validated) |
| Compartmental | no | trained (required) — untrained is flagged not-comparable |
Composing & extending
Node axes compose via kwargs — simulate(:wall; node=:falandays_base, sign=:dale, topology=:watts_strogatz, drive=OosawaDrive(...)); the named variants are preset kwarg
bundles. To add a genuinely new node, see Extending it.
Source: src/core/Interfaces.jl (the generics), src/nodes/ (the families).