Release Notes#
Version 0.1.2#
Major Changes#
Import Path Migration#
Updated dependency from
brainpytobrainpy.state: Migrated all imports to use the more specificbrainpy.statemoduleUpdated
braintrace/nn/_readout.py: Changed neuron model imports frombrainpytobrainpy.stateUpdated all documentation notebooks (12 files): Concepts, RNN/SNN online learning, batching, state management, and graph visualization tutorials
Updated example scripts (4 files): COBA EI RSNN, SNN evaluation, feedforward conv SNN, and SNN models
Updated
requirements.txtandpyproject.tomlto specifybrainpy-stateas dependencyTotal: 19 files changed with improved module structure and consistency
New Algorithms#
Added PP-Prop (Pseudo-Prospective Propagation) algorithm: New eligibility trace algorithm in VJP-based methods
Added
pp_proptobraintrace/_etrace_vjp/esd_rtrl.pyUpdated
docs/apis/algorithms.rstto include PP-Prop in algorithm documentation
Python 3.14 Support#
Added Python 3.14 compatibility: Updated project metadata to officially support Python 3.14
Updated
pyproject.tomlclassifiers to include Python 3.14
Bug Fixes#
Fixed version info tuple creation: Corrected the version info structure in
braintrace/__init__.pyEnsures proper version tuple formatting for compatibility checks
CI/CD Improvements#
Updated GitHub Actions workflow: Bumped
actions/upload-artifactfrom v5 to v6Modernized CI/CD pipeline with latest GitHub Actions versions
Improved artifact upload reliability and performance
Documentation Updates#
Updated documentation links: Refreshed links in concept documentation for better navigation
Updated
docs/quickstart/concepts-en.ipynb(116 lines modified)Updated
docs/quickstart/concepts-zh.ipynb(104 lines modified)
Breaking Changes#
Dependency Change:
Dependency name change: The project now requires
brainpy-stateinstead ofbrainpyUpdate your
requirements.txtor installation commands accordingly
# Old (0.1.1)
pip install brainpy
# New (0.1.2)
pip install brainpy-state
Import path update: Update neuron model imports to use
brainpy.state
# New (0.1.2)
from brainpy.state import IF, LIF, ALIF
Migration Guide#
Update Dependencies#
Replace brainpy with brainpy-state in your project dependencies:
pip uninstall brainpy
pip install brainpy-state
Update Import Statements#
If you have custom code importing neuron models, update to use brainpy.state:
# Find and replace in your codebase
# from brainpy import → from brainpy.state import
Version#
Bumped version from
0.1.1to0.1.2
Version 0.1.1#
Major Changes#
Project Rename: BrainScale → BrainTrace#
Renamed the entire project from
brainscaletobraintrace: This change reflects the project’s focus on eligibility trace-based learning algorithmsPackage directory renamed from
brainscale/tobraintrace/All internal imports updated from
brainscaletobraintraceUpdated all 95 files including source code, tests, documentation, and examples
Updated
pyproject.tomlwith new project name and metadataUpdated README with new project branding and citation information
VJP-Based Eligibility Trace Algorithms#
Added new VJP-based eligibility trace module (
_etrace_vjp/): Comprehensive implementation of vector-Jacobian product based algorithmsbase.py: Core base classes and utilities for VJP operations (671 lines)d_rtrl.py: Diagonal Real-Time Recurrent Learning implementation (756 lines)esd_rtrl.py: Efficient Sparse Diagonal RTRL implementation (847 lines)hybrid.py: Hybrid approaches combining multiple techniques (604 lines)graph_executor.py: Graph-based execution for VJP computationsmisc.py: Miscellaneous utilities including matrix spectrum normalization
Refactored VJP algorithm structure: Migrated from monolithic
_etrace_vjp_algorithms.py(2,888 lines) to modular architectureBetter separation of concerns
Improved testability with dedicated test files (
d_rtrl_test.py,esd_rtrl_test.py,graph_executor_test.py)
Logo and Branding#
Updated logo format from JPG to PNG for consistency
Updated logo across documentation
Breaking Changes#
Package Rename:
Import path change: All imports must now use
braintraceinstead ofbrainscale
# Old (0.1.0)
import brainscale
from brainscale import EligibilityTrace
from brainscale.nn import Linear, GRUCell
# New (0.1.1)
import braintrace
from braintrace import EligibilityTrace
from braintrace.nn import Linear, GRUCell
Installation: Package name changed from
brainscaletobraintrace
# Old
pip install brainscale
# New
pip install braintrace
Migration Guide#
Update Import Statements#
Replace all occurrences of brainscale with braintrace:
# Find and replace in your codebase
# brainscale → braintrace
VJP Algorithm Usage#
The new VJP-based algorithms are now available through the modular interface:
Version#
Bumped version from
0.1.0to0.1.1
Version 0.1.0#
Major Changes#
State Management Refactoring#
Renamed
ETraceStatetoHiddenState: All eligibility trace state management now uses the more generalHiddenStatenaming conventionUpdated across
_etrace_algorithms.py,_etrace_concepts.py,_state_managment.pyAdded deprecation warnings for
ETraceStateto guide users tobrainstate.HiddenStateUpdated all documentation and examples to reflect the new naming
Renamed
ETraceGroupStatetoHiddenGroupState: Improved consistency in hidden state handlingUpdated in
_etrace_compiler_hidden_group.pyAdded deprecation warnings for backward compatibility
Added deprecation handling: Implemented
__getattr__in main__init__.pyto provide helpful warnings when using deprecated names:ETraceState→brainstate.HiddenStateETraceGroupState→brainstate.HiddenGroupStateETraceTreeState→brainstate.HiddenTreeState
Neural Network Module Reorganization#
Consolidated neural network modules: Removed standalone neuron, synapse, and activation modules, migrating them to
brainstateandbrainpyecosystemsDeleted files:
brainscale/nn/_neurons.py(IF, LIF, ALIF now inbrainpy.state)brainscale/nn/_synapses.py(Expon, Alpha, DualExpon, STP, STD now inbrainpy.state)brainscale/nn/_elementwise.py(activation functions now inbrainstate.nn)brainscale/nn/_poolings.py(pooling layers now inbrainstate.nn)
Renamed
_rate_rnns.pyto_rnn.py: Simplified module naming for better clarityAdded comprehensive deprecation warnings in
nn.__getattr__: Automatically redirects users to the correct modules:Neuron models (IF, LIF, ALIF) →
brainpy.stateSynapse models (Expon, Alpha, DualExpon, STP, STD) →
brainpy.stateActivation functions (ReLU, Sigmoid, etc.) →
brainstate.nnPooling layers (MaxPool, AvgPool, etc.) →
brainstate.nnDropout layers →
brainstate.nn
API Improvements#
Normalization parameter standardization: Renamed
normalized_shapetoin_sizeacross all normalization layers for consistencyUpdated in
_normalizations.pyfor LayerNorm, GroupNorm, InstanceNorm, etc.Improved clarity and consistency with other layer APIs
Enhanced input dimension validation: Improved error checking in convolutional layers to catch dimension mismatches early
Refactored imports for consistency: Updated all internal imports to use
braintoolsfor optimization and initialization utilities consistently across the codebase
Testing Infrastructure#
Added comprehensive unit tests for neural network modules:
_conv_test.py: 868 lines of tests for convolutional layers (Conv1d, Conv2d, Conv3d, ConvTranspose)_linear_test.py: 658 lines of tests for linear layers (Linear, Identity)_normalizations_test.py: 695 lines of tests for normalization layers (LayerNorm, BatchNorm, GroupNorm, etc.)_readout_test.py: 763 lines of tests for readout layers (LeakyRateReadout, LeakySpikeReadout)_rnn_test.py: 710 lines of tests for RNN cells (VanillaRNNCell, GRUCell, LSTMCell, MGUCell, etc.)Total: 3,694 lines of new test coverage
Documentation Updates#
Streamlined API documentation: Updated
docs/apis/nn.rstto remove redundant sections and enhance RNN overviewUpdated tutorials and examples: All 16 tutorial notebooks and 11 example scripts updated to reflect new APIs:
Concepts tutorials (en/zh)
RNN and SNN online learning guides
Batching strategies documentation
ETrace state management examples
Graph visualization tutorials
Code Quality Improvements#
Removed redundant docstrings: Cleaned up duplicate documentation in
LeakyRateReadoutandLeakySpikeReadoutImproved code organization: Streamlined
__all__definitions across all modulesEnhanced readability: Consistent import structure and better code formatting throughout
Dependency Updates#
Updated
requirements.txt: Refined dependency specifications to ensure compatibility with latestbrainstateandbrainpyversionsUpdated
pyproject.toml: Bumped version to 0.1.0 and updated project metadata
Breaking Changes#
API Changes:
State class renaming (with deprecation warnings):
ETraceState→ Usebrainstate.HiddenStateinsteadETraceGroupState→ Usebrainstate.HiddenGroupStateinsteadETraceTreeState→ Usebrainstate.HiddenTreeStateinstead
Neural network component migration (with deprecation warnings):
Neuron models (IF, LIF, ALIF) → Use
brainpy.statemoduleSynapse models (Expon, Alpha, etc.) → Use
brainpy.statemoduleActivation functions → Use
brainstate.nnmodulePooling layers → Use
brainstate.nnmodule
Normalization parameter rename:
normalized_shape→in_size(for LayerNorm, GroupNorm, etc.)
Module file reorganization:
nn/_rate_rnns.py→nn/_rnn.pyRemoved:
_neurons.py,_synapses.py,_elementwise.py,_poolings.py
Migration Guide#
For State Management:#
# Old (0.0.11)
from brainscale import ETraceState, ETraceGroupState
# New (0.1.0)
from brainstate import HiddenState, HiddenGroupState
For Neural Network Components:#
# Old (0.0.11)
from brainscale.nn import IF, LIF, Expon, ReLU, MaxPool2d
# New (0.1.0)
from brainpy.state import IF, LIF, Expon
from brainstate.nn import ReLU, MaxPool2d
For Normalization Layers:#
# Old (0.0.11)
norm = LayerNorm(normalized_shape=(128,))
# New (0.1.0)
norm = LayerNorm(in_size=128)
Note: All deprecated APIs include automatic warnings that will guide you to the correct replacements. The old APIs will continue to work in 0.1.0 but will be removed in a future release.
Version#
Bumped version from
0.0.11to0.1.0
Version 0.0.11#
Major Changes#
Import Refactoring#
Migrated imports from
brainstatetobraintools: All initialization-related imports now usebraintools.initinstead ofbrainstate.initUpdated imports in:
brainscale/nn/_neurons.py: Changedfrom brainstate import inittofrom braintools import initbrainscale/nn/_linear.py: Changedfrom brainstate import inittofrom braintools import initbrainscale/nn/_conv.py: Updated initialization importsbrainscale/nn/_synapses.py: Updated initialization importsbrainscale/nn/_readout.py: Updated initialization imports
Migrated neural network model imports from
brainstate.nntobrainpy: Updated base classes for neuron modelsIF,LIF,ALIFnow inherit frombrainpyinstead ofbrainstate.nnMaintained API compatibility while using the new
brainpybackend
Updated functional API calls: Changed from
brainstate.functional.sigmoidtobrainstate.nn.sigmoidin RNN cells
Dependency Updates#
Added
brainpyas a required dependency inrequirements.txt
Documentation Enhancements#
Improved docstring formatting across the codebase:
Enhanced parameter documentation with proper type annotations using NumPy-style docstrings
Added missing “Returns” sections to property and method docstrings
Converted inline examples to proper “Examples” sections with code blocks
Updated documentation in:
brainscale/_etrace_algorithms.py: EnhancedEligibilityTraceandETraceAlgorithmdocumentationbrainscale/_etrace_compiler_base.py: Improved parameter and return type documentationbrainscale/_etrace_compiler_module_info.py: Enhanced module documentation
Core Algorithm Updates#
RNN State Management: Updated all RNN cells to use
braintools.init.paramfor state initialization and resetValinaRNNCell: Updatedinit_state()andreset_state()methodsGRUCell: Updated state management and activation functionsCFNCell: Updated forget and input gate implementationsMGUCell: Updated minimal gated unit state handling
Test Updates#
Refactored test imports: Updated test files to use new import paths
brainscale/_etrace_model_test.py: Updated with new import structurebrainscale/_etrace_vjp_algorithms_test.py: Aligned with new API
Version#
Bumped version from
0.0.10to0.0.11
Files Changed (17 files)#
.gitignore: Added new patternsbrainscale/__init__.py: Updated version numberbrainscale/_etrace_algorithms.py: Enhanced documentation and importsbrainscale/_etrace_compiler_base.py: Improved documentationbrainscale/_etrace_compiler_graph.py: Minor updatesbrainscale/_etrace_compiler_hidden_group.py: Minor updatesbrainscale/_etrace_compiler_module_info.py: Enhanced documentationbrainscale/_etrace_model_test.py: Updated test importsbrainscale/_etrace_vjp_algorithms_test.py: Updated test importsbrainscale/_etrace_vjp_graph_executor.py: Updated importsbrainscale/nn/_conv.py: Migrated to braintools importsbrainscale/nn/_linear.py: Migrated to braintools importsbrainscale/nn/_neurons.py: Migrated to brainpy and braintoolsbrainscale/nn/_rate_rnns.py: Migrated to braintools and updated functional APIsbrainscale/nn/_readout.py: Updated importsbrainscale/nn/_synapses.py: Updated importsrequirements.txt: Added brainpy dependency
Breaking Changes#
None. All changes maintain backward compatibility at the API level.
Migration Guide#
If you have custom code using brainscale:
No changes required for end users
If extending brainscale internally, note that initialization utilities now come from
braintoolsinstead ofbrainstate