Releases: brainpy/BrainPy
BrainPy 2.7.5
Feature
- compatible with
jax>=0.8.2
What's Changed
- Refine JIT wrappers for new JAX for comaptiblity with
jax>=0.8.2by @chaoming0625 in #809
Full Changelog: V2.7.4...V2.7.5
BrainPy V2.7.4
Release Date: December 2025
This release focuses on simplifying the project structure by removing the experimental brainpy.state module and consolidating documentation.
Major Changes
Removed brainpy.state Module (#806)
- Removed: The entire
brainpy.statemodule has been deleted- This includes all state-based neuron models (LIF variants, Izhikevich, HH)
- Removed synapse models, projections, readouts, and STP implementations
- Removed all associated test files
- Recommendation: Users should use the brainpy.state library directly for state-based neural network simulations
Decouple the brainpy context with brainstate context
- Updated:
brainpy.math.defaultsis totally decoupled withbrainstatecontext management
Documentation Consolidation (#806)
- Renamed:
docs_classic/→docs/(now the main documentation) - Renamed:
examples_classic/→examples/(now the main examples) - Removed:
docs_state/directory (state-based documentation) - Removed:
examples_state/directory (state-based examples)
Dependencies
Updated Dependencies (#807)
- Simplified
pyproject.tomlconfiguration - Updated
requirements.txt
CI/CD Improvements
- Updated:
actions/upload-artifactfrom 5 to 6 (#804) - Updated:
actions/download-artifactfrom 6 to 7 (#805)
Files Modified
brainpy/__init__.py: Removed state module exportsbrainpy/context.py: Simplified context managementbrainpy/math/defaults.py: Updated default configurationsdocs/conf.py: Updated documentation configurationpyproject.toml: Simplified dependency configuration.github/workflows/Publish.yml: Updated CI artifact actions
Breaking Changes
- The
brainpy.statemodule is no longer available. Users relying on this module should migrate to the standalonebrainstatelibrary.
BrainPy v2.7.3
Release Date: December 2024
This is a bug fix release that resolves critical issues with bm.for_loop and improves CI stability.
🐛 Bug Fixes
bm.for_loop jit Parameter Fix
- Fixed: The
jitparameter inbm.for_loopwas accepted but never used - passingjit=Falsehad no effect - Implementation: When
jit=False, the call is now properly wrapped injax.disable_jit()context manager - Impact: Users can now debug code with
jit=Falseto see actual values instead of JIT-compiled traces
Zero-Length Scan Fix
- Fixed:
ValueError: zero-length scan is not supported in disable_jit() modewhen usingjit=Falsewith zero-length inputs - Implementation: Automatically falls back to JIT mode for zero-length inputs with a warning
- Impact: Prevents crashes when
DSRunner.run(duration)results in 0 time steps (e.g.,duration=0.5, dt=1.0)
Progress Bar Enhancement
- Enhanced:
progress_barparameter inbm.for_loop()andbm.scan()now supports advanced customization - New Features:
- Accept
ProgressBarinstances for fine-grained control (freq, desc, count parameters) - Accept integers as shorthand for frequency (e.g.,
progress_bar=10means update every 10 iterations) - Full backward compatibility with existing
progress_bar=True/Falseusage
- Accept
- Export: Added
bm.ProgressBarfor easy access (from brainpy.math import ProgressBar) - Impact: Aligns with brainstate API and enables better progress tracking customization
Parameter Cleanup
- Removed: Unused parameters
rematandunroll_kwargsfrombm.for_loop() - Backward Compatibility:
rematparameter kept inLoopOverTime.__init__()with deprecation warning - Fixes: Resolved TypeErrors in
DSRunnerandLoopOverTimethat used these parameters
CI Improvements
- Fixed: TclError on Windows Python 3.13 CI due to missing Tcl/Tk configuration
- Implementation: Set
MPLBACKEND=Aggenvironment variable in GitHub Actions workflow - Impact: Matplotlib tests now run successfully on all platforms (Linux, macOS, Windows)
🎯 Code Quality
- Added comprehensive test coverage for all fixes (11 new test cases)
- Updated API documentation to reflect new functionality
- All 38 tests in
test_controls.pypass
📦 Files Modified
brainpy/__init__.py: Updated version to 2.7.3brainpy/math/object_transform/controls.py: Fixed jit handling, zero-length scan, progress_bar enhancementbrainpy/math/object_transform/__init__.py: Exported ProgressBarbrainpy/runners.py: Fixed unroll_kwargs usage with functools.partialbrainpy/transform.py: Added remat deprecation warning in LoopOverTimebrainpy/math/object_transform/tests/test_controls.py: Added 11 new test casesdocs_classic/apis/brainpy.math.oo_transform.rst: Added ProgressBar to documentation.github/workflows/CI.yml: Added MPLBACKEND=Agg for all test jobs
🔗 Related PRs
- #803: Fix
bm.for_loopjit parameter handling and remove unused parameters - #802: Original issue report about
jitparameter not working - #801: CI dependency updates
- #800: Documentation improvements
- #798: JointEq error message improvements
⚠️ Breaking Changes
None. All changes are backward compatible or involve previously non-functional parameters.
📦 Installation
pip install --upgrade brainpy==2.7.3🔗 Links
BrainPy v2.7.2
Release Date: October 16, 2024
This is a maintenance release that improves JAX compatibility and documentation.
🐛 Bug Fixes
JAX Compatibility
- Updated: Made compatible with JAX >= 0.8.0
- Fixed: Updated imports and API usage for latest JAX versions
- Impact: Ensures BrainPy works correctly with the latest JAX releases
🔧 Improvements
Documentation
- Updated documentation and CI configuration for better clarity
- Standardized test paths across the project
- Improved core concepts documentation
- Enhanced LIF neuron dynamics documentation (#800)
- Fixed documentation bugs
Neural Network Classes
- Refactored neural network classes for better maintainability
- Updated progress bar parameters for simulations
- Improved code organization and structure
CI/CD
- Updated GitHub Actions dependencies:
- Improved CI workflow reliability
📝 Notes
- This release focuses on maintaining compatibility with the latest JAX ecosystem
- No breaking changes introduced
- All existing code should continue to work without modifications
📦 Installation
pip install --upgrade brainpy==2.7.2🔗 Links
Version 2.7.1
This is a feature release that introduces new neuron and synapse models in the state-based API (brainpy.state) and enhances the Dynamics base class with improved input handling.
Major Changes
New Neuron Models (brainpy.state)
-
LIF (Leaky Integrate-and-Fire) Variants: Added comprehensive set of LIF neuron models
LIF: Basic LIF neuron with exponential synaptic inputLifRef: LIF with refractory periodExpIF: Exponential Integrate-and-Fire neuronExpIFRef: ExpIF with refractory periodAdExIF: Adaptive Exponential Integrate-and-Fire neuronAdExIFRef: AdExIF with refractory periodQuaIF: Quadratic Integrate-and-Fire neuronQuaIFRef: QuaIF with refractory periodAdQuaIF: Adaptive Quadratic Integrate-and-Fire neuronAdQuaIFRef: AdQuaIF with refractory periodGifRef: Generalized Integrate-and-Fire with refractory period
-
Izhikevich Neuron Models: Added new Izhikevich neuron implementations
Izhikevich: Basic Izhikevich neuron modelIzhikevichRef: Izhikevich with refractory period
-
Hodgkin-Huxley Model: Added classic biophysical neuron model
HH: Classic Hodgkin-Huxley model with Na+ and K+ channels
New Synapse Models (brainpy.state)
- BioNMDA: Biological NMDA receptor with second-order kinetics
- Implements two-state cascade dynamics (x and g variables)
- Slower rise time compared to AMPA (biologically realistic)
- Comprehensive documentation with mathematical formulation
Features
Model Implementation
- All new models use the brainstate ecosystem (HiddenState, ShortTermState, LongTermState)
- Proper unit support with brainunit integration
- Exponential Euler integration for numerical stability
- Batch processing support across all models
- Consistent API design following BrainPy v2.7+ architecture
Dynamics Class Enhancements
- Enhanced input handling capabilities in the Dynamics base class
- Added new properties for better state management
- Improved integration with brainstate framework
- Refactored to use public methods instead of private counterparts for clarity
Documentation
- Added comprehensive Examples sections to all neuron classes in
_lif.py - Each example includes:
- Import statements for required modules
- Basic usage with parameter specifications
- State initialization examples
- Update and spike generation examples
- Network integration with
brainstate.nn.Sequential - Notes highlighting key features
- All 13 neuron classes in
_lif.pynow have complete documentation - Simplified documentation paths by removing 'core-concepts' and 'quickstart' prefixes in index.rst
Bug Fixes
- Fixed import paths in
_base.py: changed references from brainstate to brainpy for consistency (057b872) - Fixed test suite issues (95ec203)
- Fixed test suite for proper unit handling in synapse models
Code Quality
- Refactored module assignments to
brainpy.statefor consistency across files (06b2bf4) - Refactored method calls in
_base.py: replaced private methods with public counterparts (210426a)
Testing
- Added comprehensive test suites for all new neuron models
- Added AMPA and GABAa synapse tests
- Added tests for Izhikevich neuron variants
- Added tests for Hodgkin-Huxley model
- All tests passing with proper unit handling
Files Modified
brainpy/__init__.py: Updated version to 2.7.1brainpy/state/_base.py: Enhanced Dynamics class with improved input handling (447 lines added)brainpy/state/_lif.py: Added extensive LIF neuron variants (1862 lines total)brainpy/state/_izhikevich.py: New file with Izhikevich models (407 lines)brainpy/state/_hh.py: New file with Hodgkin-Huxley model (666 lines)brainpy/state/_synapse.py: Added BioNMDA model (158 lines)brainpy/state/_projection.py: Updated for consistency (43 lines modified)brainpy/state/__init__.py: Updated exports for new models- Test files added:
_lif_test.py,_izhikevich_test.py,_hh_test.py,_synapse_test.py,_base_test.py - Documentation updates in
docs_state/index.rst
Removed
- Removed outdated documentation notebooks from
docs_state/:checkpointing-en.ipynbandcheckpointing-zh.ipynbsnn_simulation-en.ipynbandsnn_simulation-zh.ipynbsnn_training-en.ipynbandsnn_training-zh.ipynb
Notes
- This release significantly expands the
brainpy.statemodule with biologically realistic neuron and synapse models - All new models are fully compatible with the brainstate ecosystem
- Enhanced documentation provides clear usage examples for all models
- The Dynamics class refactoring improves the foundation for future state-based model development
What's Changed
- Update version to 2.7.1 and refactor Dynamics class: enhance input ha… by @chaoming0625 in #793
- update state neuron and synapse by @932179209 in #794
New Contributors
- @932179209 made their first contribution in #794
Full Changelog: V2.7.0...V2.7.1
Version 2.7.0
Release Date: October 2025
This is a maintenance release focusing on documentation improvements and version management.
Major Changes
Version Management
- Downgraded version numbering from 3.x series back to 2.7.0 to maintain consistency with the stable 2.x API
- This release represents the continuation of the BrainPy 2.x series
Documentation
Documentation Structure
- Streamlined table of contents in documentation
- Added new sections for Core Concepts and Quickstart guides
- Consolidated documentation sections for better clarity
- Updated default build version to v2 in configuration
- Improved documentation build process with better logging
Documentation Updates
- Refactored index.rst for better organization
- Updated documentation to reflect current module structure
- Enhanced documentation build scripts
Testing
Test Cleanup
- Removed redundant test for abstract Neuron class to avoid conflicts
Notes
- This release maintains the stable BrainPy 2.x API
- For users of BrainPy 2.x, no code changes are required
- Documentation has been improved for better user experience
What's Changed
- Rollback (#789)
- Update documentation (#790, #791)
- Update changelog for version 3.0.1 (#792)
- Downgrade version to 2.7.0 in init.py (#792)
- Documentation structure improvements
Full Changelog: V2.6.0...V2.7.0
Version 2.6.0
New Features
This release provides several new features, including:
MLIRregistered operator customization interface inbrainpy.math.XLACustomOp.- Operator customization with CuPy JIT interface.
- Bug fixes.
What's Changed
- [doc] Fix the wrong path of more examples of
operator customized with taichi.ipynbby @Routhleck in #612 - [docs] Add colab link for documentation notebooks by @Routhleck in #614
- Update requirements-doc.txt to fix doc building temporally by @chaoming0625 in #617
- [math] Rebase operator customization using MLIR registration interface by @chaoming0625 in #618
- [docs] Add kaggle link for documentation notebooks by @Routhleck in #619
- update requirements by @chaoming0625 in #620
- require
brainpylib>=0.2.6forjax>=0.4.24by @chaoming0625 in #622 - [tools] add
brainpy.tools.composeandbrainpy.tools.pipeby @chaoming0625 in #624 - doc hierarchy update by @chaoming0625 in #630
- Standardizing and generalizing object-oriented transformations by @chaoming0625 in #628
- fix #626 by @chaoming0625 in #631
- Fix delayvar not correct in concat mode by @CloudyDory in #632
- [dependency] remove hard dependency of
taichiandnumbaby @Routhleck in #635 clear_buffer_memory()support clearingarray,compilation, andnamesby @chaoming0625 in #639- add
brainpy.math.surrogate..Surrogateby @chaoming0625 in #638 - Enable brainpy object as pytree so that it can be applied with
jax.jitetc. directly by @chaoming0625 in #625 - Fix ci by @chaoming0625 in #640
- Clean taichi AOT caches by @chaoming0625 in #643
- [ci] Fix windows pytest fatal exception by @Routhleck in #644
- [math] Support more than 8 parameters of taichi gpu custom operator definition by @Routhleck in #642
- Doc for
brainpylib>=0.3.0by @chaoming0625 in #645 - Find back updates by @chaoming0625 in #646
- Update installation instruction by @chaoming0625 in #651
- Fix delay bug by @chaoming0625 in #650
- update doc by @chaoming0625 in #652
- [math] Add new customize operators with
cupyby @Routhleck in #653 - [math] Fix taichi custom operator on gpu backend by @Routhleck in #655
- update cupy operator custom doc by @chaoming0625 in #656
- version 2.6.0 by @chaoming0625 in #657
- Upgrade CI by @chaoming0625 in #658
New Contributors
- @CloudyDory made their first contribution in #632
Full Changelog: V2.5.0...V2.6.0
Version 2.5.0
This release contains many new features and fixes. It is the first release with a mature solution for Brain Dynamics Operator Customization on both CPU and GPU platforms.
New Features
- Add synapse projection with Delta synapse models through
brainpy.dyn.HalfProjDeltaandbrainpy.dyn.FullProjDelta. - Add
brainpy.math.exprel, and change the code in the corresponding HH neuron models to improve numerical computation accuracy. These changes can significantly improve the numerical integration accuracy of HH-like models under x32 computation. - Add
brainpy.reset_level()decorator so that the state resetting order can be customized by users. - Add
brainpy.math.ein_rearrange,brainpy.math.ein_reduce, andbrainpy.math.ein_repeatfunctions - Add
brainpy.math.scantransformation. - Rebase all customized operators using Taichi JIT compiler. On the CPU platform, the speed performance can be boosted ten to hundred times. On the GPU platforms, the flexibility can be greatly improved.
- Many bug fixes.
- A new version of
brainpylib>=0.2.4has been released, supporting operator customization through the Taichi compiler. The supported backends include Linux, Windows, MacOS Intel, and MacOS M1 platforms. Tutorials please see https://brainpy.readthedocs.io/en/latest/tutorial_advanced/operator_custom_with_taichi.html
What's Changed
- [docs] Add taichi customized operators tutorial by @Routhleck in #545
- [docs] Optimize tutorial code in
operator_custom_with_taichi.ipynbof documentations by @Routhleck in #546 - [running] fix multiprocessing bugs by @chaoming0625 in #547
- [docs] Fix typo in docs by @Routhleck in #549
- ⬆️ Bump conda-incubator/setup-miniconda from 2 to 3 by @dependabot in #551
- updates by @chaoming0625 in #550
brainpy.math.defjvpandbrainpy.math.XLACustomOp.defjvpby @chaoming0625 in #554- ⬆️ Bump actions/setup-python from 4 to 5 by @dependabot in #555
- Fix
brainpy.math.ifelsebugs by @chaoming0625 in #556 - [math & dyn] add
brainpy.math.exprel, and change the code in the corresponding HH neuron models to improve numerical computation accuracy by @chaoming0625 in #557 - Update README by @chaoming0625 in #558
- [doc] add conductance neuron model tutorial by @chaoming0625 in #559
- Doc by @chaoming0625 in #560
- add
brainpy.math.functional_vector_gradandbrainpy.reset_level()decorator by @chaoming0625 in #561 - [math] change the internal implementation of surrogate function by @chaoming0625 in #562
- Math by @chaoming0625 in #563
- [doc] update citations by @chaoming0625 in #564
- add support for multi-class margin loss by @charlielam0615 in #566
- Support for Delta synapse projections by @chaoming0625 in #568
- [math] Add taichi customized operators(event csrmv, csrmv, jitconn event mv, jitconn mv) by @Routhleck in #553
- fix doc by @chaoming0625 in #571
- Fix default math parameter setting bug by @chaoming0625 in #572
- fix bugs in
brainpy.math.random.truncated_normalby @chaoming0625 in #574 - [doc] fix doc by @chaoming0625 in #576
- fix bugs in truncated_normal; add TruncatedNormal init. by @charlielam0615 in #575
- [Dyn] Fix alpha synapse bugs by @ztqakita in #578
- fix
brainpy.math.softplusandbrainpy.dnn.SoftPlusby @chaoming0625 in #581 - add
TruncatedNormaltoinitialize.pyby @charlielam0615 in #583 - Fix
_format_shapeinrandom_inits.pyby @charlielam0615 in #584 - fix bugs in
truncated_normalby @charlielam0615 in #585 - [dyn] fix warning of reset_state by @chaoming0625 in #587
- [math] upgrade variable retrival by @chaoming0625 in #589
- [math & dnn] add
brainpy.math.unflattenandbrainpy.dnn.Unflattenby @chaoming0625 in #588 - [math] add
ein_rearrange,ein_reduce, andein_repeatfunctions by @chaoming0625 in #590 - [math] Support taichi customized op with metal cpu backend by @Routhleck in #579
- Doc fix and standardize Dual Exponential model again by @chaoming0625 in #591
- update doc, upgrade reset_state, update projection models by @chaoming0625 in #592
- [taichi] Make taichi caches more transparent and Add clean caches function by @Routhleck in #596
- [test] remove test skip on macos, since brainpylib supports taichi interface on macos by @chaoming0625 in #597
- [dyn] add
clear_inputin thestep_runfunction. by @chaoming0625 in #601 - [math] Refactor taichi operators by @Routhleck in #598
- [math] fix
brainpy.math.scanby @chaoming0625 in #604 disable_ jitsupport inbrainpy.math.scanby @chaoming0625 in #606- [math] Remove the logs that
taichi.init()print by @Routhleck in #609 - Version control in Publish.yml CI by @chaoming0625 in #610
New Contributors
- @charlielam0615 made their first contribution in #566
Full Changelog: V2.4.6...V2.5.0
Version 2.4.6
This release contains more than 130 commit updates, and has provided several new features.
New Features
1. surrogate gradient functions are more transparent.
New instances can be used to compute the surrogate gradients. For example:
import brainpy.math as bm
fun = bm.surrogate.Sigmoid()
# forward function
spk = fun(membrane_potential)
# backward function
dV = fun.surrogate_grad(1., membrane_potential)
# surrogate forward function
surro_spk = fun.surrogate_fun(membrane_potential)2. Add brainpy.math.eval_shape for evaluating the all dynamical variables used in the target function.
This function is similar to jax.eval_shape which has no FLOPs, while it can extract all variables used in the target function. For example:
net = ... # any dynamical system
inputs = ... # inputs to the dynamical system
variables, outputs= bm.eval_shape(net, inputs)
# "variables" are all variables used in the target "net"In future, this function will be used everywhere to transform all jax transformations into brainpy's oo transformations.
3. Generalize tools and interfaces for state managements.
For a single object:
- The
.reset_state()defines the state resetting of all local variables in this node. - The
.load_state()defines the state loading from external disks (typically, a dict is passed into this.load_state()function). - The
.save_state()defines the state saving to external disks (typically, the.save_state()function generates a dict containing all variable values).
Here is an example to define a full class of brainpy.DynamicalSystem.
import brainpy as bp
class YouDynSys(bp.DynamicalSystem):
def __init__(self, ): # define parameters
self.par1 = ....
self.num = ...
def reset_state(self, batch_or_mode=None): # define variables
self.a = bp.init.variable_(bm.zeros, (self.num,), batch_or_mode)
def load_state(self, state_dict): # load states from an external dict
self.a.value = bm.as_jax(state_dict['a'])
def save_state(self): # save states as an external dict
return {'a': self.a.value}For a complex network model, brainpy provide unified state managment interface for initializing, saving, and loading states.
- The
brainpy.reset_state()defines the state resetting of all variables in this node and its children nodes. - The
brainpy.load_state()defines the state loading from external disks of all variables in the node and its children. - The
brainpy.save_state()defines the state saving to external disks of all variables in the node and its children. - The
brainpy.clear_input()defines the clearing of all input variables in the node and its children.
4. Unified brain simulation and brain-inspired computing interface through automatic membrane scaling.
The same model used in brain simulation can be easily transformed into the one used for brain-inspired computing for training. For example,
class EINet(bp.DynSysGroup):
def __init__(self):
super().__init__()
self.N = bp.dyn.LifRefLTC(4000, V_rest=-60., V_th=-50., V_reset=-60., tau=20., tau_ref=5.,
V_initializer=bp.init.Normal(-55., 2.))
self.delay = bp.VarDelay(self.N.spike, entries={'I': None})
self.E = bp.dyn.ProjAlignPost1(
comm=bp.dnn.EventCSRLinear(bp.conn.FixedProb(0.02, pre=3200, post=4000), weight=bp.init.Normal(0.6, 0.01)),
syn=bp.dyn.Expon(size=4000, tau=5.),
out=bp.dyn.COBA(E=0.),
post=self.N
)
self.I = bp.dyn.ProjAlignPost1(
comm=bp.dnn.EventCSRLinear(bp.conn.FixedProb(0.02, pre=800, post=4000), weight=bp.init.Normal(6.7, 0.01)),
syn=bp.dyn.Expon(size=4000, tau=10.),
out=bp.dyn.COBA(E=-80.),
post=self.N
)
def update(self, input):
spk = self.delay.at('I')
self.E(spk[:3200])
self.I(spk[3200:])
self.delay(self.N(input))
return self.N.spike.value
# used for brain simulation
with bm.environment(mode=bm.nonbatching_mode):
net = EINet()
# used for brain-inspired computing
# define the `membrane_scaling` parameter
with bm.environment(mode=bm.TrainingMode(128), membrane_scaling=bm.Scaling.transform([-60., -50.])):
net = EINet()5. New apis for operator customization on CPU and GPU devices through brainpy.math.XLACustomOp.
Starting from this release, brainpy introduces Taichi for operator customization. Now, users can write CPU and GPU operators through numba and taichi syntax on CPU device, and taichi syntax on GPu device. Particularly, to define an operator, user can use:
import numba as nb
import taichi as ti
import numpy as np
import jax
import brainpy.math as bm
@nb.njit
def numba_cpu_fun(a, b, out_a, out_b):
out_a[:] = a
out_b[:] = b
@ti.kernel
def taichi_gpu_fun(a, b, out_a, out_b):
for i in range(a.size):
out_a[i] = a[i]
for i in range(b.size):
out_b[i] = b[i]
prim = bm.XLACustomOp(cpu_kernel=numba_cpu_fun, gpu_kernel=taichi_gpu_fun)
a2, b2 = prim(np.random.random(1000), np.random.random(1000),
outs=[jax.ShapeDtypeStruct(1000, dtype=np.float32),
jax.ShapeDtypeStruct(1000, dtype=np.float32)])6. Generalized STDP models which are compatible with diverse synapse models.
See https://github.com/brainpy/BrainPy/blob/master/brainpy/_src/dyn/projections/tests/test_STDP.py
What's Changed
- [bug] fix compatible bug by @chaoming0625 in #508
- [docs] add low-level op customization by @ztqakita in #507
- Compatible with
jax==0.4.16by @chaoming0625 in #511 - updates for parallelization support by @chaoming0625 in #514
- Upgrade surrogate gradient functions by @chaoming0625 in #516
- [doc] update operator customization by @chaoming0625 in #517
- Updates for OO transforma and surrogate functions by @chaoming0625 in #519
- [dyn] add neuron scaling by @ztqakita in #520
- State saving, loading, and resetting by @chaoming0625 in #521
- [delay] rewrite previous delay APIs so that they are compatible with new brainpy version by @chaoming0625 in #522
- [projection] upgrade projections so that APIs are reused across different models by @chaoming0625 in #523
- [math] the interface for operator registration by @chaoming0625 in #524
- FIx bug in Delay by @ztqakita in #525
- Fix bugs in membrane scaling by @ztqakita in #526
- [math] Implement taichi op register by @Routhleck in #527
- Link libtaichi_c_api.so when import brainpylib by @Routhleck in #528
- update taichi op customization by @chaoming0625 in #529
- Fix error message by @HoshinoKoji in #530
- [math] remove the hard requirement of
taichiby @chaoming0625 in #531 - [math] Resolve encoding of source kernel when ti.func is nested in ti… by @Routhleck in #532
- [math] new abstract function for XLACustomOp, fix its bugs by @chaoming0625 in #534
- [math] fix numpy array priority by @chaoming0625 in #533
- [brainpy.share] add category shared info by @chaoming0625 in #535
- [doc] update documentations by @chaoming0625 in #536
- [doc] update doc by @chaoming0625 in #537
- [dyn] add
brainpy.reset_state()andbrainpy.clear_input()for more consistent and flexible state managements by @chaoming0625 in #538 - [math] simplify the taichi AOT operator customization interface by @chaoming0625 in #540
- [dyn] add
save_state,load_state,reset_state, andclear_inputhelpers by @chaoming0625 in #542 - [dyn] update STDP APIs on CPUs and fix bugs by @chaoming0625 in #543
New Contributors
- @HoshinoKoji made their first contribution in #530
Full Changelog: V2.4.5...V2.4.6
Version 2.4.5
New Features
- A new version of
brainpylib==0.1.10has been released. In this release, we have fixed some bugs of brainpy dedicated GPU operators. Users can freely use them in any application. - Correspondingly, dedicated operators in
brainpy.mathhave been refined. .tracing_variable()has been created to support tracingVariables during computations and compilations. Example usage please see #472- Add a new random API for creating multiple random keys:
brainpy.math.random.split_keys(). - Fix bugs, including
brainpy.dnn.AllToAllmodule- RandomState.
brainpy.math.condandbrainpy.math.while_loopwhen variables are used in both branches
What's Changed
- Creat random key automatically when it is detected by @chaoming0625 in #461
- [encoding] upgrade encoding methods by @chaoming0625 in #464
- fix #466 by @chaoming0625 in #467
- Update operators for compatible with
brainpylib>=0.1.10by @chaoming0625 in #468 - Support tracing
Variableduring computation and compilation by usingtracing_variable()function by @chaoming0625 in #472 - Add code of conduct and contributing guides by @chaoming0625 in #473
- add Funding and Development roadmap by @chaoming0625 in #475
- Create SECURITY.md by @chaoming0625 in #474
- Create dependabot.yml by @chaoming0625 in #476
- update maintainence info in README by @chaoming0625 in #479
- ⬆️ Bump actions/setup-python from 2 to 4 by @dependabot in #477
- ⬆️ Bump actions/checkout from 2 to 4 by @dependabot in #478
- ad acknowledgment.md by @chaoming0625 in #482
- update quickstart of
simulating a brain dynamics modelwith new APIs by @chaoming0625 in #483 - update advanced tutorials by @chaoming0625 in #484
- [docs] Update installation.rst by @Routhleck in #485
- update requirements by @chaoming0625 in #486
- [doc] update docs by @chaoming0625 in #487
- [doc] update docs by @chaoming0625 in #488
- Decouple Online and Offline training algorithms as
brainpy.mixin.SupportOnlineandbrainpy.mixin.SupportOfflineby @chaoming0625 in #489 - [dyn] add STDP_Song2000 LTP model by @ztqakita in #481
- update STDP by @chaoming0625 in #491
- [doc] update the API of
brainpy.dynmodule & add synaptic plasticity module by @chaoming0625 in #492 - fix bug by @chaoming0625 in #493
- [math] fix bugs in
condandwhile_loopwhen same variables are used in both branches by @chaoming0625 in #494 - [docs] add BrainPy docker and docs by @ztqakita in #496
- [docs] update README and installation by @ztqakita in #499
- ⬆️ Bump docker/build-push-action from 4 to 5 by @dependabot in #498
- ⬆️ Bump docker/login-action from 2 to 3 by @dependabot in #497
- Add strings in bp._src.dyn.bio_models and abstract_models by @AkitsuFaye in #500
- [reset] update logics of state reset in
DynamicalSystemby @chaoming0625 in #501 - [doc] upgrade docs with the latest APIs, fix #463 by @chaoming0625 in #502
- [doc] add synapse model documentations by @chaoming0625 in #503
- Changed the order of code blocks in the docs of hh models and lif models by @AkitsuFaye in #505
- [mode] move recurrent models in brainpy.dnn model into
brainpy.dynmodule by @chaoming0625 in #506
New Contributors
- @dependabot made their first contribution in #477
Full Changelog: V2.4.4...V2.4.5