Changelog#
All notable changes to this project are documented in this file.
The format follows Keep a Changelog conventions, and this project adheres to Semantic Versioning.
Unreleased#
Changed — JIT-safe parameter validation for NEST neurons#
Added
brainpy_state._nest._utils.cond_any, a shared tracer-aware reduction helper: it returnsFalsewhen its condition is a JAX tracer (soifvalidation checks are skipped duringjit/vmap/gradtracing) andbool(np.any(...))otherwise. AllNESTNeuronparameter-validation checks (if np.any(...)/if u.math.any(...)) now route through it.erfc_neuronandginzburg_neuron: removed a Pythonif bool(any(...))branch insideupdate()that broke underjax.jit; the per-neuron update is now always computed and masked withwhere, making both models JIT-compatible.Added
brainpy_state/_nest/jit_compat_test.pyverifying every publicNESTNeuronsubclass traces underjit(57 models), with architecturally NumPy-scalar models (precise-spiking, mean-field, delay-queue) documented.
Added — Network API for NEST-style models#
brainpy.state.Network—brainstate.nn.Modulesubclass with projection-firstupdate()traversal and JIT-wrappedsimulate(duration, monitor=...).brainpy.state.Builder— imperative subclass exposingadd()andconnect(); produces the same underlying module tree as a subclassedNetwork.Rule-based projections:
OneToOneProj,AllToAllProj,PairwiseBernoulliProj,SymmetricPairwiseBernoulliProj,FixedIndegreeProj,FixedOutdegreeProj,FixedTotalNumberProj,PairwisePoissonProj. Uniform constructor(pre, post, *, weight, delay=None, syn, out, allow_autapses, allow_multapses, seed, **rule_kwargs).delay=support is deferred to a follow-up — v1 acceptsdelay=Noneonly.brainpy.state.Recorder— helper that wires a passiveNESTDevicerecorder to a source population (string attribute or callable).brainpy.state.dist.{Normal, LogNormal, Uniform}— distribution objects sampled once at projection__init__.Brunel flagship example at
examples/brunel.py.
See docs/superpowers/specs/2026-05-12-nest-network-api-design.md for
the design and docs/superpowers/plans/2026-05-12-nest-network-api.md
for the implementation plan.
0.0.4 – 2025-02-21#
Highlights#
Version 0.0.4 is a major feature release that introduces a comprehensive library of
NEST-compatible neural models (initial version), reorganizes the public API into dedicated _brainpy and
_nest submodules, and transitions the project to the Apache 2.0 license.
Added#
NEST-Compatible Model Library#
A complete port of the NEST simulator model catalogue, covering more than 250 models across all major categories:
Neuron Models
Integrate-and-Fire (IAF):
iaf_psc_alpha,iaf_psc_alpha_multisynapse,iaf_psc_alpha_ps,iaf_psc_delta,iaf_psc_delta_ps,iaf_psc_exp,iaf_psc_exp_htum,iaf_psc_exp_multisynapse,iaf_psc_exp_ps,iaf_psc_exp_ps_lossless,iaf_cond_alpha,iaf_cond_alpha_mc,iaf_cond_beta,iaf_cond_exp,iaf_cond_exp_sfa_rr,iaf_bw_2001,iaf_bw_2001_exact,iaf_chs_2007,iaf_chxk_2008,iaf_tum_2000Adaptive Exponential IF (AdEx / aeif):
aeif_cond_alpha,aeif_cond_alpha_astro,aeif_cond_alpha_multisynapse,aeif_cond_beta_multisynapse,aeif_cond_exp,aeif_psc_alpha,aeif_psc_delta,aeif_psc_delta_clopath,aeif_psc_expGeneralized IF (GIF):
gif_cond_exp,gif_cond_exp_multisynapse,gif_pop_psc_exp,gif_psc_exp,gif_psc_exp_multisynapseMulti-timescale Adaptive Threshold (MAT):
amat2_psc_exp,mat2_psc_expGeneralized LIF (GLIF):
glif_cond,glif_psc,glif_psc_double_alphaHodgkin-Huxley family:
hh_cond_beta_gap_traub,hh_cond_exp_traub,hh_psc_alpha,hh_psc_alpha_clopath,hh_psc_alpha_gap,ht_neuronIzhikevich:
izhikevichPoint-process neurons:
pp_cond_exp_mc_urbanczik,pp_psc_deltaBinary neurons:
erfc_neuron,ginzburg_neuron,mcculloch_pitts_neuronRate neurons:
gauss_rate_ipn,lin_rate_ipn,lin_rate_opn,rate_neuron_ipn,rate_neuron_opn,rate_transformer_node,siegert_neuron,sigmoid_rate_ipn,sigmoid_rate_gg_1998_ipn,tanh_rate_ipn,tanh_rate_opn,threshold_lin_rate_ipn,threshold_lin_rate_opnMiscellaneous:
ignore_and_fire
Synapse Models
Static:
static_synapse,static_synapse_hom_w,cont_delay_synapse,bernoulli_synapseShort-term plasticity:
tsodyks_synapse,tsodyks_synapse_hom,tsodyks2_synapse,quantal_stp_synapseSTDP:
stdp_synapse,stdp_synapse_hom,stdp_dopamine_synapse,stdp_facetshw_synapse_hom,stdp_nn_pre_centered_synapse,stdp_nn_restr_synapse,stdp_nn_symm_synapse,stdp_pl_synapse_hom,stdp_triplet_synapseVoltage-based / specialized:
clopath_synapse,ht_synapse,jonke_synapse,urbanczik_synapse,vogels_sprekeler_synapseStructural connections:
diffusion_connection,gap_junction,rate_connection_delayed,rate_connection_instantaneous,sic_connection
Stimulation Devices
Current generators:
ac_generator,dc_generator,noise_generator,step_current_generator,step_rate_generatorSpike generators:
spike_generator,spike_train_injector,spike_dilutorPoisson generators:
poisson_generator,poisson_generator_ps,inhomogeneous_poisson_generator,sinusoidal_poisson_generatorOther generators:
gamma_sup_generator,mip_generator,ppd_sup_generator,pulsepacket_generator,sinusoidal_gamma_generator
Recording Devices
correlation_detector,correlomatrix_detector,correlospinmatrix_detector,multimeter,spike_recorder,spin_detector,volume_transmitter,weight_recorder
Specialised Models
astrocyte_lr_1994: Leaky integrator astrocyte modelcm_default: Multi-compartment neuron model
NEST Base Infrastructure#
NESTNeuron,NESTSynapse,NESTDevice: abstract base classes for all NEST-compatible models, providing shared parameter management and state initialisation utilities (_nest/_base.py,_nest/_utils.py)
BrainPy-style Model Enhancements#
SpikeTime: addedweightparameter and time-rounding optionAlignPostProj,DeltaProj,CurrentProj: new projection variantsalign_pre_projection,align_post_projection: projection utility functionsSymmetryGapJunction,AsymmetryGapJunction: gap junction projection typesPoissonEncoder,PoissonInput,poisson_input: additional input generatorsLeakyRateReadout,LeakySpikeReadout: renamed and expanded readout classes
Changed#
API layout: public models reorganised into
brainpy_state._brainpy(BrainPy-style models) andbrainpy_state._nest(NEST-compatible models) subpackages; all symbols remain importable from the top-level namespaceLicense: changed from GNU GPLv3 to Apache License 2.0
Data types: model state variables now use
brainstate.environ.dftype()for consistent default floating-point precision across the ecosystemDependency: minimum
brainpyrequirement raised to>= 2.7.6NEST models: all NEST models refactored onto shared base classes and utility helpers, eliminating duplicated boilerplate across model files
aeif_cond_alpha: streamlined initialisation ofintegration_stepandI_stimfieldsDocumentation: mathematical equations and parameter descriptions expanded and standardised across all BrainPy-style and NEST-compatible model files
Fixed#
Documentation URLs updated in
CONTRIBUTING.md,config.yml, andpyproject.tomlto point to the correct hosted locationsEcosystem cross-references in
README.mdandindex.rstcorrected
0.0.3 – 2025-01-01#
Highlights#
Version 0.0.3 consolidates the package rename from brainpy.state to
brainpy_state, adds brainpy as a declared runtime dependency, and
tightens internal state initialisation.
Added#
brainpyadded as an explicit runtime dependency inrequirements.txtandpyproject.toml
Changed#
Package renamed from
brainpy.statetobrainpy_state; all public import paths updated accordinglyHiddenStateinitialisation refactored for correctness and clarityFunction names updated and a simulation example added to the main script
Directory structure reorganised in preparation for the
_brainpy/_nestsplit introduced in 0.0.4Minimum
brainpyrequirement formalised
Fixed#
Import statements that still referenced the old
brainpy.statenamespace corrected throughout the codebase
0.0.1 – 2024-12-01#
Initial release of brainpy_state.
brainpy_state modernises the BrainPy
spiking neural network simulator by adopting the state-based programming model
introduced in brainstate.
Added#
Neuron Models#
Integrate-and-Fire (LIF) family
IF: basic integrate-and-fire neuronLIF,LIFRef: leaky integrate-and-fire (with optional refractory period)ExpIF,ExpIFRef: exponential integrate-and-fireAdExIF,AdExIFRef: adaptive exponential integrate-and-fireALIF: adaptive leaky integrate-and-fireQuaIF: quadratic integrate-and-fireAdQuaIF,AdQuaIFRef: adaptive quadratic integrate-and-fireGif,GifRef: generalized integrate-and-fire
Hodgkin-Huxley family
HH: classic Hodgkin-Huxley conductance-based neuronMorrisLecar: Morris-Lecar neuronWangBuzsakiHH: Wang-Buzsaki modified Hodgkin-Huxley neuron
Izhikevich family
Izhikevich,IzhikevichRef: Izhikevich neuron (with optional refractory period)
Synapse Models#
Exponential synapses:
Expon(single exponential decay),DualExpon(dual exponential rise-and-decay)Receptor-based synapses:
Alpha,AMPA,GABAa,BioNMDAShort-term plasticity:
STP(facilitation and depression),STD(pure depression)
Infrastructure#
Neuron,Synapse,Dynamics: abstract base classes for custom model developmentProjection,AlignPostProj: network projection utilitiesCOBA,CUBA,MgBlock: synaptic output current handlersSpikeTime,PoissonSpike: spike-train input generatorsReadout,LeakyReadout,WeightedReadout: readout layer implementationsRuntime compatibility check: raises an informative error when an incompatible
brainpyversion (< 2.7.4) is detected
Dependencies#
Package |
Minimum version |
|---|---|
Python |
3.10 |
jax |
latest |
brainstate |
0.2.0 |
saiunit |
latest |
brainevent |
0.0.4 |
braintools |
0.0.9 |
numpy |
1.15 |