brian2

star 3

Brian2 skill for spiking neural network simulation with equation-based neuron models, synapses and plasticity, monitors, runtime and cpp_standalone execution, and multicompartment morphology workflows. Use when working with brian2.NeuronGroup, brian2.Synapses, brian2.SpikeMonitor, brian2.StateMonitor, brian2.PopulationRateMonitor, brian2.PoissonGroup, brian2.TimedArray, brian2.set_device, brian2.SpatialNeuron, or brian2.Morphology; keywords: STDP, event-driven synapses, Poisson input, code generation, standalone C++, morphology.

HughYau By HughYau schedule Updated 2/24/2026

name: brian2 description: Brian2 skill for spiking neural network simulation with equation-based neuron models, synapses and plasticity, monitors, runtime and cpp_standalone execution, and multicompartment morphology workflows. Use when working with brian2.NeuronGroup, brian2.Synapses, brian2.SpikeMonitor, brian2.StateMonitor, brian2.PopulationRateMonitor, brian2.PoissonGroup, brian2.TimedArray, brian2.set_device, brian2.SpatialNeuron, or brian2.Morphology; keywords: STDP, event-driven synapses, Poisson input, code generation, standalone C++, morphology.

Brian2

Brian2 is a clock-driven simulator for spiking neural networks with equation-defined models, explicit physical units, and multiple execution backends.

Version

Built against: brian2==2.10.1 [UNVERIFIED: inferred from docs_sphinx/introduction/release_notes.rst because install was denied] Python: 3.13

See assets/version.txt for environment, install policy, and verification limits.

Scope

This skill focuses on user-facing modeling workflows: NeuronGroup, Synapses, inputs/stimuli, recording, device selection, and SpatialNeuron. Coverage profile: hybrid (workflow references + dictionary assets).

Environment Gate

Install policy and environment decision are recorded in assets/version.txt. Current build used install_permission: no; execution-dependent claims are tagged where relevant.

Installation

# requires explicit install permission
pip install brian2

# optional extras from pyproject.toml
pip install "brian2[test,docs]"

Neuron Models and Simulation Loop

# tested against brian2==2.10.1
try:
    from brian2 import NeuronGroup, StateMonitor, ms, mV, run

    neurons = NeuronGroup(
        5,
        "dv/dt = -v/(10*ms) : volt",
        threshold="v > -50*mV",
        reset="v = -70*mV",
    )
    neurons.v = -70 * mV
    mon = StateMonitor(neurons, "v", record=0)
    run(5 * ms)
    print(len(mon.t))
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/modeling-neurons-and-equations.md for NeuronGroup, Equations, state variables, and method-selection caveats.


Synapses and Plasticity

# tested against brian2==2.10.1
try:
    from brian2 import NeuronGroup, Synapses, ms, mV, run

    pre = NeuronGroup(2, "dv/dt = -v/(10*ms) : volt", threshold="v > -55*mV", reset="v = -70*mV")
    post = NeuronGroup(2, "dv/dt = -v/(10*ms) : volt")
    syn = Synapses(pre, post, "w : volt", on_pre="v += w")
    syn.connect(i=[0, 1], j=[1, 0])
    syn.w = "0.5*mV"
    run(1 * ms)
    print(int(syn.N))
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/synapses-and-plasticity.md for connect(...) patterns, event-driven equations, and STDP setup.


Inputs and Time-Dependent Stimuli

# tested against brian2==2.10.1
try:
    import numpy as np
    from brian2 import NeuronGroup, PoissonGroup, SpikeMonitor, TimedArray, Hz, mV, ms, run

    stim = TimedArray(np.array([0.0, 1.0, 0.5, 0.0]) * mV, dt=1 * ms)
    target = NeuronGroup(1, "dv/dt = (stim(t) - v)/(5*ms) : volt")
    drive = PoissonGroup(5, rates=20 * Hz)
    mon = SpikeMonitor(drive)
    run(3 * ms)
    print(len(mon.t), float(target.v[0] / mV))
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/inputs-and-stimuli.md for PoissonGroup, SpikeGeneratorGroup, TimedArray, and PoissonInput.


Recording and Rate Analysis

# tested against brian2==2.10.1
try:
    from brian2 import PoissonGroup, PopulationRateMonitor, SpikeMonitor, Hz, ms, run

    group = PoissonGroup(10, rates=50 * Hz)
    spikes = SpikeMonitor(group)
    rates = PopulationRateMonitor(group)
    run(20 * ms)
    print(spikes.num_spikes, len(rates.rate))
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/recording-and-analysis.md for monitor indexing rules, event-clock sampling, and binned/smoothed rates.


Execution Backends and Devices

# tested against brian2==2.10.1
try:
    from brian2 import get_device, set_device

    set_device("runtime")
    print(type(get_device()).__name__)
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/execution-and-devices.md for set_device, device.build, run_args, and cache-management patterns.


Morphology and SpatialNeuron

# tested against brian2==2.10.1
try:
    from brian2 import Cylinder, Soma, SpatialNeuron, amp, cm, mV, meter, ohm, uF, um

    morph = Soma(diameter=20 * um)
    morph.axon = Cylinder(length=50 * um, diameter=1 * um, n=5)
    eqs = "Im = 0*amp/meter**2 : amp/meter**2"
    neuron = SpatialNeuron(morphology=morph, model=eqs, Cm=1 * uF / cm**2, Ri=100 * ohm * cm)
    neuron.v = -65 * mV
    print(neuron.flat_morphology.n)
except Exception as e:
    print(f"[UNVERIFIED: install denied in selected environment] {type(e).__name__}: {e}")

See references/morphology-and-spatial-neurons.md for Soma/Section/Cylinder constructors and SpatialNeuron constraints.


Verification (Medium+)

PYTHONPATH="H:\Agent\OpenSciHub\brian2" python "H:\Agent\OpenSciHub\.opencode\skills\opensci-skill\scripts\verify-snippets.py" --root "H:\Agent\OpenSciHub\.opencode\skills\brian2" --fail-fast

Dictionary Assets (Hybrid)

Use dictionary assets before source traversal for symbol-level lookup:

  1. Query assets/symbol-index.jsonl for exact symbol names.
  2. Open the matching card in assets/symbol-cards/.
  3. Follow source anchors only when implementation details are required.

Primary dictionary entrypoint: assets/symbol-index.md.

Quick Reference

Function / Class Purpose
NeuronGroup(...) Define equation-based neuron populations with threshold/reset logic.
Synapses(...) Define synaptic dynamics and pre/post event code between groups.
Synapses.connect(...) Materialize connectivity via explicit indices, conditions, or probabilities.
PoissonGroup(...) Generate stochastic spike trains as an input source.
TimedArray(...) Inject time-varying signals into model equations.
SpikeMonitor(...) Record spike times and per-neuron spike counts.
StateMonitor(...) Record continuous state variables over time or event-clock times.
PopulationRateMonitor(...) Record population firing rates with binned/smoothed summaries.
set_device(...) Select runtime or cpp_standalone backend before creating objects.
SpatialNeuron(...) Simulate multicompartment neurons over an explicit morphology tree.

Module Map

Submodule Contents Notes
brian2.core clocks, network scheduler, magic run/store/restore APIs core.network is [LARGE]
brian2.groups NeuronGroup, subgroup views, group variable handling groups.group and neurongroup are [LARGE]
brian2.synapses synapse model parsing, connectivity, pathway execution synapses.synapses is [LARGE]
brian2.input Poisson, spike-generator, and timed-array input sources used for feedforward drive
brian2.monitors spike/event/state/rate recording interfaces spikemonitor is [LARGE]
brian2.devices runtime device and C++ standalone codegen backend standalone path is [LARGE]
brian2.spatialneuron morphology objects and multicompartment simulation morphology module is [LARGE]
brian2.units unit system and dimension checks allunits and fundamentalunits are [LARGE]

Import style: mixed eager import in brian2.__init__ (from brian2.only import *, NumPy/pylab star imports), with top-level API primarily controlled by brian2.only.__all__; no lazy __getattr__ detected.

See assets/module-map.md for full inventory and source anchors.


References

  • references/modeling-neurons-and-equations.md - equation syntax, NeuronGroup configuration, and integration-method implications.
  • references/synapses-and-plasticity.md - Synapses signatures, connectivity patterns, and event-driven plasticity.
  • references/inputs-and-stimuli.md - stochastic and scheduled input APIs (PoissonGroup, SpikeGeneratorGroup, TimedArray, PoissonInput).
  • references/recording-and-analysis.md - monitor APIs and retrieval patterns for spikes, states, and rates.
  • references/execution-and-devices.md - runtime vs standalone device control, build workflow, and cache behavior.
  • references/morphology-and-spatial-neurons.md - morphology construction and SpatialNeuron modeling details.
  • assets/symbol-index.md - module-level dictionary navigation.
  • assets/symbol-index.jsonl - machine-readable symbol registry.
  • assets/symbol-cards/ - per-module symbol cards with signatures and source anchors.
Install via CLI
npx skills add https://github.com/HughYau/neuroforge-skills --skill brian2
Repository Details
star Stars 3
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator