- Updated dependency from
brainpytobrainpy.state: Migrated all imports to use the more specificbrainpy.statemodule- Updated
braintrace/nn/_readout.py: Changed neuron model imports frombrainpytobrainpy.state - Updated 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 dependency - Total: 19 files changed with improved module structure and consistency
- Updated
- Added PP-Prop (Pseudo-Prospective Propagation) algorithm: New eligibility trace algorithm in VJP-based methods
- Added
pp_proptobraintrace/_etrace_vjp/esd_rtrl.py - Updated
docs/apis/algorithms.rstto include PP-Prop in algorithm documentation
- Added
- Added Python 3.14 compatibility: Updated project metadata to officially support Python 3.14
- Updated
pyproject.tomlclassifiers to include Python 3.14
- Updated
- Fixed version info tuple creation: Corrected the version info structure in
braintrace/__init__.py- Ensures proper version tuple formatting for compatibility checks
- Updated GitHub Actions workflow: Bumped
actions/upload-artifactfrom v5 to v6- Modernized CI/CD pipeline with latest GitHub Actions versions
- Improved artifact upload reliability and performance
- 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)
- Updated
Dependency Change:
- Dependency name change: The project now requires
brainpy-stateinstead ofbrainpy- Update your
requirements.txtor installation commands accordingly
- Update your
# 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, ALIFReplace brainpy with brainpy-state in your project dependencies:
pip uninstall brainpy
pip install brainpy-stateIf 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- Bumped version from
0.1.1to0.1.2
- Renamed the entire project from
brainscaletobraintrace: This change reflects the project's focus on eligibility trace-based learning algorithms- Package directory renamed from
brainscale/tobraintrace/ - All internal imports updated from
brainscaletobraintrace - Updated all 95 files including source code, tests, documentation, and examples
- Updated
pyproject.tomlwith new project name and metadata - Updated README with new project branding and citation information
- Package directory renamed from
-
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 architecture- Better separation of concerns
- Improved testability with dedicated test files (
d_rtrl_test.py,esd_rtrl_test.py,graph_executor_test.py)
- Updated logo format from JPG to PNG for consistency
- Updated logo across documentation
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 braintraceReplace all occurrences of brainscale with braintrace:
# Find and replace in your codebase
# brainscale → braintraceThe new VJP-based algorithms are now available through the modular interface:
- Bumped version from
0.1.0to0.1.1
-
Renamed
ETraceStatetoHiddenState: All eligibility trace state management now uses the more generalHiddenStatenaming convention- Updated across
_etrace_algorithms.py,_etrace_concepts.py,_state_managment.py - Added deprecation warnings for
ETraceStateto guide users tobrainstate.HiddenState - Updated all documentation and examples to reflect the new naming
- Updated across
-
Renamed
ETraceGroupStatetoHiddenGroupState: Improved consistency in hidden state handling- Updated in
_etrace_compiler_hidden_group.py - Added deprecation warnings for backward compatibility
- Updated in
-
Added deprecation handling: Implemented
__getattr__in main__init__.pyto provide helpful warnings when using deprecated names:ETraceState→brainstate.HiddenStateETraceGroupState→brainstate.HiddenGroupStateETraceTreeState→brainstate.HiddenTreeState
-
Consolidated neural network modules: Removed standalone neuron, synapse, and activation modules, migrating them to
brainstateandbrainpyecosystems- Deleted 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)
- Deleted files:
-
Renamed
_rate_rnns.pyto_rnn.py: Simplified module naming for better clarity -
Added comprehensive deprecation warnings in
nn.__getattr__: Automatically redirects users to the correct modules:- Neuron models (IF, LIF, ALIF) →
brainpy.state - Synapse models (Expon, Alpha, DualExpon, STP, STD) →
brainpy.state - Activation functions (ReLU, Sigmoid, etc.) →
brainstate.nn - Pooling layers (MaxPool, AvgPool, etc.) →
brainstate.nn - Dropout layers →
brainstate.nn
- Neuron models (IF, LIF, ALIF) →
-
Normalization parameter standardization: Renamed
normalized_shapetoin_sizeacross all normalization layers for consistency- Updated in
_normalizations.pyfor LayerNorm, GroupNorm, InstanceNorm, etc. - Improved clarity and consistency with other layer APIs
- Updated in
-
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
- 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
- Streamlined API documentation: Updated
docs/apis/nn.rstto remove redundant sections and enhance RNN overview - Updated 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
- Removed redundant docstrings: Cleaned up duplicate documentation in
LeakyRateReadoutandLeakySpikeReadout - Improved code organization: Streamlined
__all__definitions across all modules - Enhanced readability: Consistent import structure and better code formatting throughout
- Updated
requirements.txt: Refined dependency specifications to ensure compatibility with latestbrainstateandbrainpyversions - Updated
pyproject.toml: Bumped version to 0.1.0 and updated project metadata
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.statemodule - Synapse models (Expon, Alpha, etc.) → Use
brainpy.statemodule - Activation functions → Use
brainstate.nnmodule - Pooling layers → Use
brainstate.nnmodule
- Neuron models (IF, LIF, ALIF) → Use
-
Normalization parameter rename:
normalized_shape→in_size(for LayerNorm, GroupNorm, etc.)
-
Module file reorganization:
nn/_rate_rnns.py→nn/_rnn.py- Removed:
_neurons.py,_synapses.py,_elementwise.py,_poolings.py
# Old (0.0.11)
from brainscale import ETraceState, ETraceGroupState
# New (0.1.0)
from brainstate import HiddenState, HiddenGroupState# 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# 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.
- Bumped version from
0.0.11to0.1.0
-
Migrated imports from
brainstatetobraintools: All initialization-related imports now usebraintools.initinstead ofbrainstate.init- Updated 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
- Updated imports in:
-
Migrated neural network model imports from
brainstate.nntobrainpy: Updated base classes for neuron modelsIF,LIF,ALIFnow inherit frombrainpyinstead ofbrainstate.nn- Maintained API compatibility while using the new
brainpybackend
-
Updated functional API calls: Changed from
brainstate.functional.sigmoidtobrainstate.nn.sigmoidin RNN cells
- Added
brainpyas a required dependency inrequirements.txt
- 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
- 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
- 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
- Bumped version from
0.0.10to0.0.11
.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
None. All changes maintain backward compatibility at the API level.
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