Releases: chaobrain/braintrace
Version 0.1.2
Major Changes
Import Path Migration
- 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
New Algorithms
- 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
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
- Updated
Bug Fixes
- Fixed version info tuple creation: Corrected the version info structure in
braintrace/__init__.py- Ensures proper version tuple formatting for compatibility checks
CI/CD Improvements
- 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
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)
- Updated
Breaking Changes
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, ALIFMigration Guide
Update Dependencies
Replace brainpy with brainpy-state in your project dependencies:
pip uninstall brainpy
pip install brainpy-stateUpdate 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 importVersion
- Bumped version from
0.1.1to0.1.2
What's Changed
- update document link by @xinzhu-L in #52
- ⬆️ Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #53
- update change 'import brainpy' to 'import brainpy.state' by @xinzhu-L in #54
- Add pp_prop algorithm and support for Python 3.14 in project metadata by @chaoming0625 in #55
Full Changelog: v0.1.1...v0.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 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
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 architecture- Better 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 braintraceMigration Guide
Update Import Statements
Replace all occurrences of brainscale with braintrace:
# Find and replace in your codebase
# brainscale → braintraceVJP Algorithm Usage
The new VJP-based algorithms are now available through the modular interface:
from braintrace._etrace_vjp import d_rtrl, esd_rtrl, hybridVersion
- 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 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
Neural Network Module Reorganization
-
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) →
API Improvements
-
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
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 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
Code Quality Improvements
- 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
Dependency Updates
- Updated
requirements.txt: Refined dependency specifications to ensure compatibility with latestbrainstateandbrainpyversions - Updated
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.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
Migration Guide
For State Management:
# Old (0.0.11)
from brainscale import ETraceState, ETraceGroupState
# New (0.1.0)
from brainstate import HiddenState, HiddenGroupStateFor 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, MaxPool2dFor 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.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
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
What's Changed
- ⬆️ Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #40
- Modernize codebase and migrate ecosystem APIs by @oujago in #41
- Migrate core APIs to BrainPy and BrainTools by @chaoming0625 in #42
New Contributors
Full Changelog: v0.0.10...v0.0.11
Version 0.0.10
What's Changed
- New version by @chaoming0625 in #1
- Add etrace learning algorithm with O(n^2) complexity, and hybrid O(n) & O(n^2) algorithms by @chaoming0625 in #2
- for pre- and post-eligibility trace, add independent decay factors and time constants by @chaoming0625 in #3
- algorithm updates by @chaoming0625 in #4
- fix numpy array() compatability by @chaoming0625 in #5
- support
vjpandjvpdiagonal Jacobian by @chaoming0625 in #6 - New updates by @chaoming0625 in #7
- fix bugs by @chaoming0625 in #8
- upgrade to support
brainstateby @chaoming0625 in #9 - New algorithm by @chaoming0625 in #10
- fix by @chaoming0625 in #11
- Updates by @chaoming0625 in #12
- Conditionally support control flows, including
scan,while, andcondby @chaoming0625 in #13 - fix bug by @chaoming0625 in #14
- add
.get_etrace_of()function to obtain the etrace data of the give… by @chaoming0625 in #15 - V 0.0.2 by @chaoming0625 in #16
- compatible with
brainstate>=0.1.0by @chaoming0625 in #17 - New version by @chaoming0625 in #18
- Enable the consistent training of
SingleStepDataandMultiStepDataby @chaoming0625 in #19 - Add
ElementWiseParamand update modules by @chaoming0625 in #20 - Upgraded version of
brainscaleby @chaoming0625 in #21 - Update doc, code, tests, and imports by @chaoming0625 in #22
- fix names by @chaoming0625 in #23
- Update docs by @chaoming0625 in #24
- Update by @chaoming0625 in #25
- Update
brainscalecodebase by @chaoming0625 in #26 - Refactor weight gradient functions for clarity and accuracy by @chaoming0625 in #27
- Enable all examples work by @chaoming0625 in #28
- Fix by @chaoming0625 in #29
- Update examples by @chaoming0625 in #30
- Fix documentation by @chaoming0625 in #31
- Support CSR sparse operations by @chaoming0625 in #32
- Update systematic documentation by @chaoming0625 in #33
- Compatiable JAX >= 0.7.0 by @chaoming0625 in #34
- Add VJP support for weight functions in ETrace operators by @chaoming0625 in #35
- ⬆️ Bump actions/checkout from 4 to 5 by @dependabot[bot] in #36
- ⬆️ Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #37
- Add mode support for elementwise parameters and improve BatchNorm import by @chaoming0625 in #38
- Update publish workflow by @chaoming0625 in #39
New Contributors
- @chaoming0625 made their first contribution in #1
- @dependabot[bot] made their first contribution in #36
Full Changelog: https://github.com/chaobrain/brainscale/commits/v0.0.10