diff --git a/.gitignore b/.gitignore index b4e4a9b0b..da6ec6fcc 100644 --- a/.gitignore +++ b/.gitignore @@ -229,3 +229,7 @@ cython_debug/ /bugs/ /dev/ /.claude/ +/docs_version2/_static/logos/ +/docs/_static/logos/ +/docs/_build/ +/docs/changelog.md diff --git a/.readthedocs.yml b/.readthedocs.yml index ada769e0d..386b4b591 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -13,7 +13,7 @@ build: post_checkout: # Copy the appropriate conf.py based on project name - | - if [ "$READTHEDOCS_PROJECT" = "brainpy-version2" ]; then + if [ "$PROJECT_VERSION" = "brainpy-version2" ]; then mkdir -p docs_build cp -r docs_version2/* docs_build/ else diff --git a/README.md b/README.md index 630b6233f..901288458 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ We provide a Binder environment for BrainPy. You can use the following button to ## Citing -If you are using ``brainpy``, please consider citing the corresponding paper: +If you are using ``brainpy >= 2.0``, please consider citing the corresponding paper: ```bibtex @article {10.7554/eLife.86365, diff --git a/brainpy/__init__.py b/brainpy/__init__.py index 96d429f15..0f0dcf2a4 100644 --- a/brainpy/__init__.py +++ b/brainpy/__init__.py @@ -16,6 +16,7 @@ __version__ = "3.0.0" __version_info__ = (3, 0, 0) +from . import mixin from . import version2 from ._base import * from ._base import __all__ as base_all @@ -40,7 +41,7 @@ from ._synouts import * from ._synouts import __all__ as synout_all -__main__ = ['version2'] + errors_all + inputs_all + neuron_all + readout_all + stp_all + synapse_all +__main__ = ['version2', 'mixin'] + errors_all + inputs_all + neuron_all + readout_all + stp_all + synapse_all __main__ = __main__ + synout_all + base_all + exp_all + proj_all + synproj_all del errors_all, inputs_all, neuron_all, readout_all, stp_all, synapse_all, synout_all, base_all del exp_all, proj_all, synproj_all @@ -81,7 +82,7 @@ def __dir__(): _deprecated_modules = [ 'math', 'check', 'tools', 'connect', 'initialize', 'init', 'conn', 'optim', 'losses', 'measure', 'inputs', 'encoding', 'checkpoints', - 'mixin', 'algorithms', 'integrators', 'ode', 'sde', 'fde', + 'algorithms', 'integrators', 'ode', 'sde', 'fde', 'dnn', 'layers', 'dyn', 'running', 'train', 'analysis', 'channels', 'neurons', 'rates', 'synapses', 'synouts', 'synplast', 'visualization', 'visualize', 'types', 'modes', 'context', @@ -96,4 +97,3 @@ def __dir__(): del _sys, _mod_name, _deprecated_modules version2.__version__ = __version__ - diff --git a/brainpy/_base.py b/brainpy/_base.py index 642961121..19ca54b7b 100644 --- a/brainpy/_base.py +++ b/brainpy/_base.py @@ -16,6 +16,7 @@ from typing import Callable, Optional import braintools + import brainstate __all__ = [ @@ -43,12 +44,12 @@ class Neuron(brainstate.nn.Dynamics): for multi-dimensional input (e.g., ``100`` or ``(28, 28)``). spk_fun : Callable, optional Surrogate gradient function for the non-differentiable spike generation operation. - Default is ``brainstate.surrogate.InvSquareGrad()``. Common alternatives include: + Default is ``braintools.surrogate.InvSquareGrad()``. Common alternatives include: - - ``brainstate.surrogate.ReluGrad()`` - - ``brainstate.surrogate.SigmoidGrad()`` - - ``brainstate.surrogate.GaussianGrad()`` - - ``brainstate.surrogate.ATan()`` + - ``braintools.surrogate.ReluGrad()`` + - ``braintools.surrogate.SigmoidGrad()`` + - ``braintools.surrogate.GaussianGrad()`` + - ``braintools.surrogate.ATan()`` spk_reset : str, optional Reset mechanism applied after spike generation. Default is ``'soft'``. @@ -149,7 +150,7 @@ class Neuron(brainstate.nn.Dynamics): ... in_size=100, ... tau=10*u.ms, ... V_th=1.0*u.mV, - ... spk_fun=brainstate.surrogate.ReluGrad(), + ... spk_fun=braintools.surrogate.ReluGrad(), ... spk_reset='soft' ... ) >>> @@ -304,7 +305,7 @@ class Synapse(brainstate.nn.Dynamics): **Alignment Patterns** - Some synapse models inherit from ``brainstate.mixin.AlignPost`` to enable + Some synapse models inherit from :class:`AlignPost` to enable event-driven computation where synaptic variables are aligned with postsynaptic neurons. This is particularly efficient for sparse connectivity patterns. diff --git a/brainpy/_base_test.py b/brainpy/_base_test.py index 55dcfa5a5..b97799c72 100644 --- a/brainpy/_base_test.py +++ b/brainpy/_base_test.py @@ -1,4 +1,4 @@ -# Copyright 2025 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,12 +29,11 @@ import unittest -import brainstate import braintools import brainunit as u -import jax import jax.numpy as jnp +import brainstate from brainpy._base import Neuron, Synapse diff --git a/brainpy/_errors.py b/brainpy/_errors.py index d2a675225..73cc390e4 100644 --- a/brainpy/_errors.py +++ b/brainpy/_errors.py @@ -33,7 +33,6 @@ 'MonitorError', 'MathError', 'JaxTracerError', - 'ConcretizationTypeError', 'GPUOperatorNotFound', 'SharedArgError', ] @@ -128,120 +127,6 @@ class MathError(BrainPyError): __module__ = 'brainpy' -class MPACheckpointingRequiredError(BrainPyError): - """To optimally save and restore a multiprocess array (GDA or jax Array outputted from pjit), use GlobalAsyncCheckpointManager. - - You can create an GlobalAsyncCheckpointManager at top-level and pass it as - argument:: - - from jax.experimental.gda_serialization import serialization as gdas - gda_manager = gdas.GlobalAsyncCheckpointManager() - brainpy.checkpoints.save(..., gda_manager=gda_manager) - """ - __module__ = 'brainpy' - - def __init__(self, path, step): - super().__init__( - f'Checkpoint failed at step: "{step}" and path: "{path}": Target ' - 'contains a multiprocess array should be saved/restored with a ' - 'GlobalAsyncCheckpointManager.') - - -class MPARestoreTargetRequiredError(BrainPyError): - """Provide a valid target when restoring a checkpoint with a multiprocess array. - - Multiprocess arrays need a sharding (global meshes and partition specs) to be - initialized. Therefore, to restore a checkpoint that contains a multiprocess - array, make sure the ``target`` you passed contains valid multiprocess arrays - at the corresponding tree structure location. If you cannot provide a full - valid ``target``, consider ``allow_partial_mpa_restoration=True``. - """ - __module__ = 'brainpy' - - def __init__(self, path, step, key=None): - error_msg = ( - f'Restore checkpoint failed at step: "{step}" and path: "{path}": ' - 'Checkpoints containing a multiprocess array need to be restored with ' - 'a target with pre-created arrays. If you cannot provide a full valid ' - 'target, consider ``allow_partial_mpa_restoration=True``. ') - if key: - error_msg += f'This error fired when trying to restore array at {key}.' - super().__init__(error_msg) - - -class MPARestoreDataCorruptedError(BrainPyError): - """A multiprocess array stored in Google Cloud Storage doesn't contain a "commit_success.txt" file, which should be written at the end of the save. - - Failure of finding it could indicate a corruption of your saved GDA data. - """ - __module__ = 'brainpy' - - def __init__(self, step, path): - super().__init__( - f'Restore checkpoint failed at step: "{step}" on multiprocess array at ' - f' "{path}": No "commit_success.txt" found on this "_gda" directory. ' - 'Was its save halted before completion?') - - -class MPARestoreTypeNotMatchError(BrainPyError): - """Make sure the multiprocess array type you use matches your configuration in jax.config.jax_array. - - If you turned `jax.config.jax_array` on, you should use - `jax.experimental.array.Array` everywhere, instead of using - `GlobalDeviceArray`. Otherwise, avoid using jax.experimental.array - to restore your checkpoint. - """ - __module__ = 'brainpy' - - def __init__(self, step, gda_path): - super().__init__( - f'Restore checkpoint failed at step: "{step}" on multiprocess array at ' - f' "{gda_path}": The array type provided by the target does not match ' - 'the JAX global configuration, namely the jax.config.jax_array.') - - -class AlreadyExistsError(BrainPyError): - """Attempting to overwrite a file via copy. - - You can pass ``overwrite=True`` to disable this behavior and overwrite - existing files in. - """ - __module__ = 'brainpy' - - def __init__(self, path): - super().__init__(f'Trying overwrite an existing file: "{path}".') - - -class InvalidCheckpointError(BrainPyError): - """A checkpoint cannot be stored in a directory that already has - - a checkpoint at the current or a later step. - - You can pass ``overwrite=True`` to disable this behavior and - overwrite existing checkpoints in the target directory. - """ - __module__ = 'brainpy' - - def __init__(self, path, step): - super().__init__( - f'Trying to save an outdated checkpoint at step: "{step}" and path: "{path}".' - ) - - -class InvalidCheckpointPath(BrainPyError): - """A checkpoint cannot be stored in a directory that already has - - a checkpoint at the current or a later step. - - You can pass ``overwrite=True`` to disable this behavior and - overwrite existing checkpoints in the target directory. - """ - __module__ = 'brainpy' - - def __init__(self, path): - super().__init__(f'Invalid checkpoint at "{path}".') - - class JaxTracerError(MathError): __module__ = 'brainpy' @@ -271,22 +156,6 @@ def __init__(self, variables=None): super(JaxTracerError, self).__init__(msg) -class ConcretizationTypeError(Exception): - __module__ = 'brainpy' - - def __init__(self): - super(ConcretizationTypeError, self).__init__( - 'This problem may be caused by several ways:\n' - '1. Your if-else conditional statement relies on instances of brainpy.math.Variable. \n' - '2. Your if-else conditional statement relies on functional arguments which do not ' - 'set in "static_argnames" when applying JIT compilation. More details please see ' - 'https://jax.readthedocs.io/en/latest/errors.html#jax.errors.ConcretizationTypeError\n' - '3. The static variables which set in the "static_argnames" are provided ' - 'as arguments, not keyword arguments, like "jit_f(v1, v2)" [<- wrong]. ' - 'Please write it as "jit_f(static_k1=v1, static_k2=v2)" [<- right].' - ) - - class GPUOperatorNotFound(Exception): __module__ = 'brainpy' diff --git a/brainpy/_exponential.py b/brainpy/_exponential.py index e123d7253..7bbee291c 100644 --- a/brainpy/_exponential.py +++ b/brainpy/_exponential.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,18 +18,20 @@ from typing import Optional, Callable -from brainstate.typing import Size, ArrayLike -import brainstate import braintools import brainunit as u + +import brainstate +from brainstate.typing import Size, ArrayLike from ._base import Synapse +from .mixin import AlignPost __all__ = [ - 'Expon', 'DualExpon', + 'Expon', 'DualExpon', ] -class Expon(Synapse, brainstate.mixin.AlignPost): +class Expon(Synapse, AlignPost): r""" Exponential decay synapse model. @@ -97,7 +99,7 @@ def update(self, x=None): return self.g.value -class DualExpon(Synapse, brainstate.mixin.AlignPost): +class DualExpon(Synapse, AlignPost): r""" Dual exponential synapse model. diff --git a/brainpy/_inputs.py b/brainpy/_inputs.py index 9763c1c4e..e73e06317 100644 --- a/brainpy/_inputs.py +++ b/brainpy/_inputs.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,9 +21,8 @@ import numpy as np import brainstate -from brainstate.typing import ArrayLike, Size, DTypeLike from brainpy._misc import set_module_as - +from brainstate.typing import ArrayLike, Size, DTypeLike __all__ = [ 'SpikeTime', diff --git a/brainpy/_lif.py b/brainpy/_lif.py index 309f998bb..27fcd75f7 100644 --- a/brainpy/_lif.py +++ b/brainpy/_lif.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,16 +17,16 @@ from typing import Callable -import brainstate +import braintools import brainunit as u import jax -from brainstate.typing import ArrayLike, Size -import braintools +import brainstate +from brainstate.typing import ArrayLike, Size from ._base import Neuron __all__ = [ - 'IF', 'LIF', 'LIFRef', 'ALIF', + 'IF', 'LIF', 'LIFRef', 'ALIF', ] diff --git a/brainpy/_lif_test.py b/brainpy/_lif_test.py index 93b975d13..1a00c0da4 100644 --- a/brainpy/_lif_test.py +++ b/brainpy/_lif_test.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/brainpy/_misc.py b/brainpy/_misc.py index 3cfc70fad..075be91b2 100644 --- a/brainpy/_misc.py +++ b/brainpy/_misc.py @@ -14,10 +14,9 @@ # ============================================================================== - def set_module_as(module: str): def wrapper(fun: callable): fun.__module__ = module return fun - return wrapper \ No newline at end of file + return wrapper diff --git a/brainpy/_projection.py b/brainpy/_projection.py index 7f7c13309..13dfaa9c4 100644 --- a/brainpy/_projection.py +++ b/brainpy/_projection.py @@ -17,12 +17,13 @@ from typing import Optional import brainevent + import brainstate from brainstate._state import State -from brainstate.mixin import BindCondData, JointTypes, ParamDescriber, AlignPost +from brainstate.mixin import JointTypes, ParamDescriber from brainstate.nn._dynamics import maybe_init_prefetch - from ._synouts import SynOut +from .mixin import BindCondData, AlignPost if brainstate.__version__ < '0.2.0': from brainstate.util.others import get_unique_name @@ -31,11 +32,9 @@ __all__ = [ 'Projection', - 'AlignPostProj', 'DeltaProj', 'CurrentProj', - 'align_pre_projection', 'align_post_projection', ] @@ -60,9 +59,9 @@ class Projection(brainstate.nn.Module): Parameters ---------- - *args : Any + *args Arguments passed to the parent Module class. - **kwargs : Any + **kwargs Keyword arguments passed to the parent Module class. Raises @@ -285,7 +284,7 @@ class DeltaProj(Projection): Parameters ---------- - *prefetch : State or callable + *prefetch Optional prefetch modules to process input before communication. comm : callable Communication model that determines how signals are transmitted. @@ -360,7 +359,7 @@ class CurrentProj(Projection): Parameters ---------- - *prefetch : State or callable + *prefetch Optional prefetch modules to process input before communication. The last element must be an instance of Prefetch or PrefetchDelayAt if any are provided. comm : callable @@ -398,7 +397,8 @@ def __init__( # check prefetch self.prefetch = prefetch if len(self.prefetch) > 0 and not isinstance( - prefetch[-1], (brainstate.nn.Prefetch, brainstate.nn.PrefetchDelayAt)): + prefetch[-1], (brainstate.nn.Prefetch, brainstate.nn.PrefetchDelayAt) + ): raise TypeError( f'The last element of prefetch should be an instance ' f'of {brainstate.nn.Prefetch} or {brainstate.nn.PrefetchDelayAt}, ' diff --git a/brainpy/_readout.py b/brainpy/_readout.py index 52ca4e365..0a3795dfb 100644 --- a/brainpy/_readout.py +++ b/brainpy/_readout.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,11 +19,11 @@ import numbers from typing import Callable +import braintools import brainunit as u import jax import brainstate -import braintools from brainstate.typing import Size, ArrayLike from ._base import Neuron diff --git a/brainpy/_readout_test.py b/brainpy/_readout_test.py index 337cc89c6..927d9e3c3 100644 --- a/brainpy/_readout_test.py +++ b/brainpy/_readout_test.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,12 +16,12 @@ import unittest +import braintools +import brainunit as u import jax.numpy as jnp -import brainunit as u -import brainstate -import braintools import brainpy +import brainstate class TestReadoutModels(unittest.TestCase): diff --git a/brainpy/_stp.py b/brainpy/_stp.py index 3819e75f9..350496b07 100644 --- a/brainpy/_stp.py +++ b/brainpy/_stp.py @@ -1,4 +1,4 @@ -# Copyright 2025 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,10 +17,10 @@ from typing import Optional +import braintools import brainunit as u import brainstate -import braintools from brainstate.typing import ArrayLike, Size from ._base import Synapse @@ -209,7 +209,6 @@ def __init__( self, in_size: Size, name: Optional[str] = None, - # synapse parameters tau: ArrayLike = 200. * u.ms, U: ArrayLike = 0.07, ): @@ -220,7 +219,9 @@ def __init__( self.U = braintools.init.param(U, self.varshape) def init_state(self, batch_size: int = None, **kwargs): - self.x = brainstate.HiddenState(braintools.init.param(braintools.init.Constant(1.), self.varshape, batch_size)) + self.x = brainstate.HiddenState( + braintools.init.param(braintools.init.Constant(1.), self.varshape, batch_size) + ) def reset_state(self, batch_size: int = None, **kwargs): self.x.value = braintools.init.param(braintools.init.Constant(1.), self.varshape, batch_size) diff --git a/brainpy/_synapse.py b/brainpy/_synapse.py index d9c243ad2..aec415ef1 100644 --- a/brainpy/_synapse.py +++ b/brainpy/_synapse.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,18 +18,18 @@ from typing import Optional, Callable -from brainstate.typing import Size, ArrayLike -import brainstate import braintools import brainunit as u + +import brainstate +from brainstate.typing import Size, ArrayLike from ._base import Synapse __all__ = [ - 'Alpha', 'AMPA', 'GABAa', + 'Alpha', 'AMPA', 'GABAa', ] - class Alpha(Synapse): r""" Alpha synapse model. @@ -122,6 +122,7 @@ class AMPA(Synapse): $$ where: + - $g$ represents the fraction of receptors in the open state - $\alpha$ is the binding rate constant [ms^-1 mM^-1] - $\beta$ is the unbinding rate constant [ms^-1] diff --git a/brainpy/_synapse_test.py b/brainpy/_synapse_test.py index d26311c70..95bba6640 100644 --- a/brainpy/_synapse_test.py +++ b/brainpy/_synapse_test.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/brainpy/_synaptic_projection.py b/brainpy/_synaptic_projection.py index 8c0f0ea19..e7645ab02 100644 --- a/brainpy/_synaptic_projection.py +++ b/brainpy/_synaptic_projection.py @@ -17,12 +17,11 @@ from typing import Callable, Union, Tuple +import braintools import brainunit as u -import braintools import brainstate from brainstate.typing import ArrayLike - from ._projection import Projection __all__ = [ @@ -248,14 +247,14 @@ class AsymmetryGapJunction(Projection): Examples -------- - >>> import brainstate + >>> import brainpy >>> import brainunit as u >>> import numpy as np >>> >>> # Create two neuron populations >>> n_neurons = 100 - >>> pre_pop = brainstate.nn.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV) - >>> post_pop = brainstate.nn.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV) + >>> pre_pop = brainpy.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV) + >>> post_pop = brainpy.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV) >>> pre_pop.init_state() >>> post_pop.init_state() >>> @@ -263,7 +262,7 @@ class AsymmetryGapJunction(Projection): >>> weights = np.ones((n_neurons, 2)) * u.nS >>> weights[:, 0] *= 2.0 # Double weight in pre->post direction >>> - >>> gap_junction = brainstate.nn.AsymmetryGapJunction( + >>> gap_junction = brainpy.AsymmetryGapJunction( ... pre=pre_pop, ... pre_state='V', ... post=post_pop, diff --git a/brainpy/_synouts.py b/brainpy/_synouts.py index 5745602f1..e8cf466be 100644 --- a/brainpy/_synouts.py +++ b/brainpy/_synouts.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,16 +15,18 @@ # -*- coding: utf-8 -*- -import brainstate import brainunit as u import jax.numpy as jnp +import brainstate +from .mixin import BindCondData + __all__ = [ 'SynOut', 'COBA', 'CUBA', 'MgBlock', ] -class SynOut(brainstate.nn.Module, brainstate.mixin.BindCondData): +class SynOut(brainstate.nn.Module, BindCondData): """ Base class for synaptic outputs. @@ -41,7 +43,7 @@ def __call__(self, *args, **kwargs): if self._conductance is None: raise ValueError( f'Please first pack conductance data at the current step using ' - f'".{brainstate.mixin.BindCondData.bind_cond.__name__}(data)". {self}' + f'".{BindCondData.bind_cond.__name__}(data)". {self}' ) ret = self.update(self._conductance, *args, **kwargs) return ret diff --git a/brainpy/_synouts_test.py b/brainpy/_synouts_test.py index ecf5770d1..d52c38e6d 100644 --- a/brainpy/_synouts_test.py +++ b/brainpy/_synouts_test.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,6 @@ import jax.numpy as jnp import numpy as np -import brainstate import brainpy diff --git a/brainpy/version2/mixin.py b/brainpy/mixin.py similarity index 63% rename from brainpy/version2/mixin.py rename to brainpy/mixin.py index 43fbdaeef..df0eedec7 100644 --- a/brainpy/version2/mixin.py +++ b/brainpy/mixin.py @@ -1,25 +1,32 @@ # -*- coding: utf-8 -*- - -import numbers +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from dataclasses import dataclass from typing import Union, Dict, Callable, Sequence, Optional, Any import jax -import brainstate.mixin -from brainpy.version2 import math as bm, tools -from brainpy.version2.math.object_transform.naming import get_unique_name -from brainpy.version2.types import ArrayType +import brainstate -DynamicalSystem = None -delay_identifier, init_delay_by_return = None, None +bm, delay_identifier, init_delay_by_return, DynamicalSystem = None, None, None, None __all__ = [ 'MixIn', 'ParamDesc', 'ParamDescriber', - 'DelayRegister', 'AlignPost', 'Container', 'TreeNode', @@ -35,11 +42,175 @@ MixIn = brainstate.mixin.Mixin ParamDesc = brainstate.mixin.ParamDesc ParamDescriber = brainstate.mixin.ParamDescriber -AlignPost = brainstate.mixin.AlignPost -BindCondData = brainstate.mixin.BindCondData JointType = brainstate.mixin.JointTypes +def _get_bm(): + global bm + if bm is None: + from brainpy.version2 import math + bm = math + return bm + + +class AlignPost(brainstate.mixin.Mixin): + """ + Mixin for aligning post-synaptic inputs. + + This mixin provides an interface for components that need to receive and + process post-synaptic inputs, such as synaptic connections or neural + populations. The ``align_post_input_add`` method should be implemented + to handle the accumulation of external currents or inputs. + + Notes + ----- + Classes that inherit from this mixin must implement the + ``align_post_input_add`` method. + + Examples + -------- + Implementing a synapse with post-synaptic alignment: + + .. code-block:: python + + >>> import brainstate + >>> import jax.numpy as jnp + >>> + >>> class Synapse(brainstate.mixin.AlignPost): + ... def __init__(self, weight): + ... self.weight = weight + ... self.post_current = brainstate.State(0.0) + ... + ... def align_post_input_add(self, current): + ... # Accumulate the weighted current into post-synaptic target + ... self.post_current.value += current * self.weight + >>> + >>> # Usage + >>> synapse = Synapse(weight=0.5) + >>> synapse.align_post_input_add(10.0) + >>> print(synapse.post_current.value) # Output: 5.0 + + Using with neural populations: + + .. code-block:: python + + >>> class NeuronGroup(brainstate.mixin.AlignPost): + ... def __init__(self, size): + ... self.size = size + ... self.input_current = brainstate.State(jnp.zeros(size)) + ... + ... def align_post_input_add(self, current): + ... # Add external current to neurons + ... self.input_current.value = self.input_current.value + current + >>> + >>> neurons = NeuronGroup(100) + >>> external_input = jnp.ones(100) * 0.5 + >>> neurons.align_post_input_add(external_input) + """ + + def align_post_input_add(self, *args, **kwargs): + """ + Add external inputs to the post-synaptic component. + + Parameters + ---------- + *args + Positional arguments for the input. + **kwargs + Keyword arguments for the input. + + Raises + ------ + NotImplementedError + If the method is not implemented by the subclass. + """ + raise NotImplementedError + + +class BindCondData(brainstate.mixin.Mixin): + """ + Mixin for binding temporary conductance data. + + This mixin provides an interface for temporarily storing conductance data, + which is useful in synaptic models where conductance values need to be + passed between computation steps without being part of the permanent state. + + Attributes + ---------- + _conductance : Any, optional + Temporarily bound conductance data. + + Examples + -------- + Using conductance binding in a synapse: + + .. code-block:: python + + >>> import brainstate + >>> import jax.numpy as jnp + >>> + >>> class ConductanceBasedSynapse(brainstate.mixin.BindCondData): + ... def __init__(self): + ... self._conductance = None + ... + ... def compute(self, pre_spike): + ... if pre_spike: + ... # Bind conductance data temporarily + ... self.bind_cond(0.5) + ... + ... # Use conductance if available + ... if self._conductance is not None: + ... current = self._conductance * (0.0 - (-70.0)) + ... # Clear after use + ... self.unbind_cond() + ... return current + ... return 0.0 + >>> + >>> synapse = ConductanceBasedSynapse() + >>> current = synapse.compute(pre_spike=True) + + Managing conductance in a network: + + .. code-block:: python + + >>> class SynapticConnection(brainstate.mixin.BindCondData): + ... def __init__(self, g_max): + ... self.g_max = g_max + ... self._conductance = None + ... + ... def prepare_conductance(self, activation): + ... # Bind conductance based on activation + ... g = self.g_max * activation + ... self.bind_cond(g) + ... + ... def apply_conductance(self, voltage): + ... if self._conductance is not None: + ... current = self._conductance * voltage + ... self.unbind_cond() + ... return current + ... return 0.0 + """ + # Attribute to store temporary conductance data + _conductance: Optional + + def bind_cond(self, conductance): + """ + Bind conductance data temporarily. + + Parameters + ---------- + conductance : Any + The conductance data to bind. + """ + self._conductance = conductance + + def unbind_cond(self): + """ + Unbind (clear) the conductance data. + """ + self._conductance = None + + def _get_delay_tool(): global delay_identifier, init_delay_by_return if init_delay_by_return is None: from brainpy.version2.delay import init_delay_by_return @@ -47,20 +218,15 @@ def _get_delay_tool(): return delay_identifier, init_delay_by_return -def _get_dynsys(): - global DynamicalSystem - if DynamicalSystem is None: from brainpy.version2.dynsys import DynamicalSystem - return DynamicalSystem - - @dataclass class ReturnInfo: size: Sequence[int] axis_names: Optional[Sequence[str]] = None - batch_or_mode: Optional[Union[int, bm.Mode]] = None - data: Union[Callable, bm.Array, jax.Array] = bm.zeros + batch_or_mode: Optional[Union[int, brainstate.mixin.Mode]] = None + data: Union[Callable, jax.Array] = jax.numpy.zeros def get_data(self): + bm = _get_bm() if isinstance(self.data, Callable): if isinstance(self.batch_or_mode, int): size = (self.batch_or_mode,) + tuple(self.size) @@ -81,7 +247,7 @@ def get_data(self): class Container(MixIn): """Container :py:class:`~.MixIn` which wrap a group of objects. """ - children: bm.node_dict + children: dict() def __getitem__(self, item): """Overwrite the slice access (`self['']`). """ @@ -102,6 +268,7 @@ def __getattr__(self, item): return super().__getattribute__(item) def __repr__(self): + from brainpy.version2 import tools cls_name = self.__class__.__name__ indent = ' ' * len(cls_name) child_str = [tools.repr_context(repr(val), indent) for val in self.children.values()] @@ -109,9 +276,11 @@ def __repr__(self): return f'{cls_name}({string})' def __get_elem_name(self, elem): + bm = _get_bm() if isinstance(elem, bm.BrainPyObject): return elem.name else: + from brainpy.version2.math.object_transform.base import get_unique_name return get_unique_name('ContainerElem') def format_elements(self, child_type: type, *children_as_tuple, **children_as_dict): @@ -192,97 +361,6 @@ def check_hierarchy(self, root, leaf): f'of {leaf.master_type}, but the master now is {root}.') -class DelayRegister(MixIn): - - def register_delay( - self, - identifier: str, - delay_step: Optional[Union[int, ArrayType, Callable]], - delay_target: bm.Variable, - initial_delay_data: Union[Callable, ArrayType, numbers.Number] = None, - ): - """Register delay variable. - - Args: - identifier: str. The delay access name. - delay_target: The target variable for delay. - delay_step: The delay time step. - initial_delay_data: The initializer for the delay data. - - Returns: - delay_pos: The position of the delay. - """ - _delay_identifier, _init_delay_by_return = _get_delay_tool() - DynamicalSystem = _get_dynsys() - assert isinstance(self, DynamicalSystem), f'self must be an instance of {DynamicalSystem.__name__}' - _delay_identifier = _delay_identifier + identifier - if not self.has_aft_update(_delay_identifier): - self.add_aft_update(_delay_identifier, _init_delay_by_return(delay_target, initial_delay_data)) - delay_cls = self.get_aft_update(_delay_identifier) - name = get_unique_name('delay') - delay_cls.register_entry(name, delay_step) - return name - - def get_delay_data( - self, - identifier: str, - delay_pos: str, - *indices: Union[int, slice, bm.Array, jax.Array], - ): - """Get delay data according to the provided delay steps. - - Parameters:: - - identifier: str - The delay variable name. - delay_pos: str - The delay length. - indices: optional, int, slice, ArrayType - The indices of the delay. - - Returns:: - - delay_data: ArrayType - The delay data at the given time. - """ - _delay_identifier, _init_delay_by_return = _get_delay_tool() - _delay_identifier = _delay_identifier + identifier - delay_cls = self.get_aft_update(_delay_identifier) - return delay_cls.at(delay_pos, *indices) - - def update_local_delays(self, nodes: Union[Sequence, Dict] = None): - """Update local delay variables. - - This function should be called after updating neuron groups or delay sources. - For example, in a network model, - - - Parameters:: - - nodes: sequence, dict - The nodes to update their delay variables. - """ - warnings.warn('.update_local_delays() has been removed since brainpy>=2.4.6', - DeprecationWarning) - - def reset_local_delays(self, nodes: Union[Sequence, Dict] = None): - """Reset local delay variables. - - Parameters:: - - nodes: sequence, dict - The nodes to Reset their delay variables. - """ - warnings.warn('.reset_local_delays() has been removed since brainpy>=2.4.6', - DeprecationWarning) - - def get_delay_var(self, name): - _delay_identifier, _init_delay_by_return = _get_delay_tool() - _delay_identifier = _delay_identifier + name - delay_cls = self.get_aft_update(_delay_identifier) - return delay_cls - - class SupportInputProj(MixIn): """The :py:class:`~.MixIn` that receives the input projections. @@ -290,8 +368,8 @@ class SupportInputProj(MixIn): the input function utilities cannot be used. """ - current_inputs: bm.node_dict - delta_inputs: bm.node_dict + current_inputs: dict + delta_inputs: dict def add_inp_fun(self, key: str, fun: Callable, label: Optional[str] = None, category: str = 'current'): """Add an input function. @@ -403,7 +481,7 @@ def sum_inputs(self, *args, **kwargs): class SupportReturnInfo(MixIn): """``MixIn`` to support the automatic delay in synaptic projection :py:class:`~.SynProj`.""" - def return_info(self) -> Union[bm.Variable, ReturnInfo]: + def return_info(self): raise NotImplementedError('Must implement the "return_info()" function.') @@ -422,7 +500,7 @@ class SupportOnline(MixIn): def online_init(self, *args, **kwargs): raise NotImplementedError - def online_fit(self, target: ArrayType, fit_record: Dict[str, ArrayType]): + def online_fit(self, target, fit_record: Dict): raise NotImplementedError @@ -437,7 +515,7 @@ class SupportOffline(MixIn): def offline_init(self, *args, **kwargs): pass - def offline_fit(self, target: ArrayType, fit_record: Dict[str, ArrayType]): + def offline_fit(self, target, fit_record: Dict): raise NotImplementedError diff --git a/brainpy/version2/__init__.py b/brainpy/version2/__init__.py index 60985df74..da555bb27 100644 --- a/brainpy/version2/__init__.py +++ b/brainpy/version2/__init__.py @@ -1,7 +1,20 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy import _errors as errors +from brainpy import mixin # fundamental supporting modules from brainpy.version2 import check, tools # Part: Math Foundation # @@ -21,7 +34,6 @@ encoding, # encoding schema checkpoints, # checkpoints check, # error checking - mixin, # mixin classes algorithms, # online or offline training algorithms ) from .math import BrainPyObject @@ -118,7 +130,6 @@ synouts, # synaptic output synplast, # synaptic plasticity ) -from brainpy.version2 import modes from brainpy.version2.math.object_transform.base import ( Base as Base, ) diff --git a/brainpy/version2/_delay.py b/brainpy/version2/_delay.py deleted file mode 100644 index 27265d848..000000000 --- a/brainpy/version2/_delay.py +++ /dev/null @@ -1,301 +0,0 @@ -""" -Delay variable. -""" - -from typing import Union, Callable, Optional, Dict - -import jax -import jax.numpy as jnp -import numpy as np -from jax.lax import stop_gradient - -from brainpy.version2 import check -from brainpy.version2 import math as bm -from brainpy.version2.context import share -from brainpy.version2.dynsys import DynamicalSystem -from brainpy.version2.math.delayvars import ROTATE_UPDATE, CONCAT_UPDATE - -__all__ = [ - 'Delay', -] - - -class Delay(DynamicalSystem): - """Delay variable which has a fixed delay length. - - The data in this delay variable is arranged as:: - - delay = 0 [ data - delay = 1 data - delay = 2 data - ... .... - ... .... - delay = length-1 data - delay = length data ] - - Parameters:: - - latest: Variable - The initial delay data. - length: int - The delay data length. - before_t0: Any - The delay data. It can be a Python number, like float, int, boolean values. - It can also be arrays. Or a callable function or instance of ``Connector``. - Note that ``initial_delay_data`` should be arranged as the following way:: - - delay = 1 [ data - delay = 2 data - ... .... - ... .... - delay = length-1 data - delay = length data ] - method: str - The method used for updating delay. - - """ - - latest: bm.Variable - data: Optional[bm.Variable] - length: int - - def __init__( - self, - latest: bm.Variable, - length: int = 0, - before_t0: Optional[Union[float, int, bool, bm.Array, jax.Array, Callable]] = None, - entries: Optional[Dict] = None, - name: Optional[str] = None, - method: str = ROTATE_UPDATE, - mode: Optional[bm.Mode] = None, - ): - super().__init__(name=name, mode=mode) - if method is None: - if self.mode.is_a(bm.NonBatchingMode): - method = ROTATE_UPDATE - elif self.mode.is_a(bm.TrainingMode): - method = CONCAT_UPDATE - else: - method = ROTATE_UPDATE - assert method in [ROTATE_UPDATE, CONCAT_UPDATE] - self.method = method - - # target - if not isinstance(latest, bm.Variable): - raise ValueError(f'Must be an instance of brainpy.version2.math.Variable. But we got {type(latest)}') - self.latest = latest - - # delay length - assert isinstance(length, int) - self.length = length - - # delay data - if before_t0 is not None: - assert isinstance(before_t0, (int, float, bool, bm.Array, jax.Array, Callable)) - self._before_t0 = before_t0 - if length > 0: - self._init_data(length) - else: - self.data = None - - # other info - self._access_to_step = dict() - for entry, value in entries.items(): - self.register_entry(entry, value) - - def register_entry( - self, - entry: str, - delay_time: Optional[Union[float, bm.Array, Callable]] = None, - delay_step: Optional[Union[int, bm.Array, Callable]] = None, - ) -> 'Delay': - """Register an entry to access the data. - - Args: - entry (str): The entry to access the delay data. - delay_step: The delay step of the entry (must be an integer, denoting the delay step). - delay_time: The delay time of the entry (can be a float). - - Returns: - Return the self. - """ - if entry in self._access_to_step: - raise KeyError(f'Entry {entry} has been registered.') - - if delay_time is not None: - if delay_step is not None: - raise ValueError('Provide either "delay_time" or "delay_step". Both you have given both.') - if callable(delay_time): - delay_time = bm.as_jax(delay_time(self.delay_target_shape)) - delay_step = jnp.asarray(delay_time / bm.get_dt(), dtype=bm.get_int()) - elif isinstance(delay_time, float): - delay_step = int(delay_time / bm.get_dt()) - else: - delay_step = jnp.asarray(bm.as_jax(delay_time) / bm.get_dt(), dtype=bm.get_int()) - - # delay steps - if delay_step is None: - delay_type = 'none' - elif isinstance(delay_step, int): - delay_type = 'homo' - elif isinstance(delay_step, (bm.Array, jax.Array, np.ndarray)): - if delay_step.size == 1 and delay_step.ndim == 0: - delay_type = 'homo' - else: - delay_type = 'heter' - delay_step = delay_step - elif callable(delay_step): - delay_step = delay_step(self.delay_target_shape) - delay_type = 'heter' - else: - raise ValueError(f'Unknown "delay_steps" type {type(delay_step)}, only support ' - f'integer, array of integers, callable function, brainpy.version2.init.Initializer.') - if delay_type == 'heter': - if delay_step.dtype not in [jnp.int32, jnp.int64]: - raise ValueError('Only support delay steps of int32, int64. If your ' - 'provide delay time length, please divide the "dt" ' - 'then provide us the number of delay steps.') - if self.delay_target_shape[0] != delay_step.shape[0]: - raise ValueError(f'Shape is mismatched: {self.delay_target_shape[0]} != {delay_step.shape[0]}') - if delay_type == 'heter': - max_delay_step = int(max(delay_step)) - elif delay_type == 'homo': - max_delay_step = delay_step - else: - max_delay_step = None - - # delay variable - if max_delay_step is not None: - if self.length < max_delay_step: - self._init_data(max_delay_step) - self.length = max_delay_step - self._access_to_step[entry] = delay_step - return self - - def at(self, entry: str, *indices) -> bm.Array: - """Get the data at the given entry. - - Args: - entry (str): The entry to access the data. - *indices: - - Returns: - The data. - """ - assert isinstance(entry, str) - if entry not in self._access_to_step: - raise KeyError(f'Does not find delay entry "{entry}".') - delay_step = self._access_to_step[entry] - if delay_step is None: - return self.latest.value - else: - if self.data is None: - return self.latest.value - else: - if isinstance(delay_step, slice): - return self.retrieve(delay_step, *indices) - elif np.ndim(delay_step) == 0: - return self.retrieve(delay_step, *indices) - else: - if len(indices) == 0 and len(delay_step) == self.latest.shape[0]: - indices = (jnp.arange(delay_step.size),) - return self.retrieve(delay_step, *indices) - - @property - def delay_target_shape(self): - """The data shape of the delay target.""" - return self.latest.shape - - def __repr__(self): - name = self.__class__.__name__ - return (f'{name}(num_delay_step={self.length}, ' - f'delay_target_shape={self.delay_target_shape}, ' - f'update_method={self.method})') - - def _check_delay(self, delay_len): - raise ValueError(f'The request delay length should be less than the ' - f'maximum delay {self.length}. ' - f'But we got {delay_len}') - - def retrieve(self, delay_step, *indices): - """Retrieve the delay data according to the delay length. - - Parameters:: - - delay_step: int, ArrayType - The delay length used to retrieve the data. - """ - assert delay_step is not None - if check.is_checking(): - check.jit_error(jnp.any(delay_step > self.length), self._check_delay, delay_step) - - if self.method == ROTATE_UPDATE: - i = share.load('i') - delay_idx = (i + delay_step) % (self.length + 1) - delay_idx = stop_gradient(delay_idx) - - elif self.method == CONCAT_UPDATE: - delay_idx = delay_step - - else: - raise ValueError(f'Unknown updating method "{self.method}"') - - # the delay index - if hasattr(delay_idx, 'dtype') and not jnp.issubdtype(delay_idx.dtype, jnp.integer): - raise ValueError(f'"delay_len" must be integer, but we got {delay_idx}') - indices = (delay_idx,) + tuple(indices) - - # the delay data - return self.data[indices] - - def update( - self, - latest_value: Optional[Union[bm.Array, jax.Array]] = None - ) -> None: - """Update delay variable with the new data. - """ - if self.data is not None: - # get the latest target value - if latest_value is None: - latest_value = self.latest.value - - # update the delay data at the rotation index - if self.method == ROTATE_UPDATE: - i = share.load('i') - idx = bm.as_jax((i - 1) % (self.length + 1)) - self.data[idx] = latest_value - - # update the delay data at the first position - elif self.method == CONCAT_UPDATE: - if self.length >= 2: - self.data.value = bm.vstack([latest_value, self.data[1:]]) - else: - self.data[0] = latest_value - - def reset_state(self, batch_size: int = None): - """Reset the delay data. - """ - # initialize delay data - if self.data is not None: - self._init_data(self.length, batch_size) - - def _init_data(self, length, batch_size: int = None): - if batch_size is not None: - if self.latest.batch_size != batch_size: - raise ValueError(f'The batch sizes of delay variable and target variable differ ' - f'({self.latest.batch_size} != {batch_size}). ' - 'Please reset the target variable first, because delay data ' - 'depends on the target variable. ') - - if self.latest.batch_axis is None: - batch_axis = None - else: - batch_axis = self.latest.batch_axis + 1 - self.data = bm.Variable(jnp.zeros((length + 1,) + self.latest.shape, dtype=self.latest.dtype), - batch_axis=batch_axis) - # update delay data - self.data[0] = self.latest.value - if isinstance(self._before_t0, (bm.Array, jax.Array, float, int, bool)): - self.data[1:] = self._before_t0 - elif callable(self._before_t0): - self.data[1:] = self._before_t0((length,) + self.latest.shape, dtype=self.latest.dtype) diff --git a/brainpy/version2/algorithms/__init__.py b/brainpy/version2/algorithms/__init__.py index fd8341d6e..66983284f 100644 --- a/brainpy/version2/algorithms/__init__.py +++ b/brainpy/version2/algorithms/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from . import utils from .offline import * from .online import * -from . import utils diff --git a/brainpy/version2/algorithms/offline.py b/brainpy/version2/algorithms/offline.py index 4434ba5d1..b8e83b559 100644 --- a/brainpy/version2/algorithms/offline.py +++ b/brainpy/version2/algorithms/offline.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings import jax.numpy as jnp diff --git a/brainpy/version2/algorithms/online.py b/brainpy/version2/algorithms/online.py index c741b09bb..cf75678a0 100644 --- a/brainpy/version2/algorithms/online.py +++ b/brainpy/version2/algorithms/online.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax import jax.numpy as jnp from jax import vmap diff --git a/brainpy/version2/algorithms/utils.py b/brainpy/version2/algorithms/utils.py index 652d5eede..a360ba7c3 100644 --- a/brainpy/version2/algorithms/utils.py +++ b/brainpy/version2/algorithms/utils.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from itertools import combinations_with_replacement import brainpy.version2.math as bm diff --git a/brainpy/version2/analysis/__init__.py b/brainpy/version2/analysis/__init__.py index 2ab3b564f..2dc37bfc3 100644 --- a/brainpy/version2/analysis/__init__.py +++ b/brainpy/version2/analysis/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides analysis tools for differential equations. @@ -17,8 +30,8 @@ from . import constants as C, stability, plotstyle, utils from .base import * from .constants import * +from .constants import * from .highdim.slow_points import * from .lowdim.lowdim_bifurcation import * from .lowdim.lowdim_phase_plane import * -from .constants import * diff --git a/brainpy/version2/analysis/base.py b/brainpy/version2/analysis/base.py index 2272d240c..68b8e8cfe 100644 --- a/brainpy/version2/analysis/base.py +++ b/brainpy/version2/analysis/base.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== __all__ = [ 'DSAnalyzer' ] diff --git a/brainpy/version2/analysis/constants.py b/brainpy/version2/analysis/constants.py index 41e4c215a..f18ddd63e 100644 --- a/brainpy/version2/analysis/constants.py +++ b/brainpy/version2/analysis/constants.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== __all__ = [ 'CONTINUOUS', 'DISCRETE', diff --git a/brainpy/version2/analysis/highdim/__init__.py b/brainpy/version2/analysis/highdim/__init__.py index 07787bb60..4b647d902 100644 --- a/brainpy/version2/analysis/highdim/__init__.py +++ b/brainpy/version2/analysis/highdim/__init__.py @@ -1,3 +1,16 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .slow_points import * diff --git a/brainpy/version2/analysis/highdim/slow_points.py b/brainpy/version2/analysis/highdim/slow_points.py index 80ca0933f..5205bcad8 100644 --- a/brainpy/version2/analysis/highdim/slow_points.py +++ b/brainpy/version2/analysis/highdim/slow_points.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect import math import time @@ -12,6 +25,7 @@ from jax.scipy.optimize import minimize import brainpy.version2.math as bm +from brainpy._errors import AnalyzerError, UnsupportedError from brainpy.version2 import optim, losses from brainpy.version2.analysis import utils, base, constants from brainpy.version2.context import share @@ -19,7 +33,6 @@ from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.helpers import clear_input from brainpy.version2.runners import check_and_format_inputs, _f_ops -from brainpy._errors import AnalyzerError, UnsupportedError from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/analysis/highdim/tests/test_slow_points.py b/brainpy/version2/analysis/highdim/tests/test_slow_points.py index 79c931311..c329ed09e 100644 --- a/brainpy/version2/analysis/highdim/tests/test_slow_points.py +++ b/brainpy/version2/analysis/highdim/tests/test_slow_points.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/analysis/lowdim/__init__.py b/brainpy/version2/analysis/lowdim/__init__.py index 6303cfd3a..b198fc4fb 100644 --- a/brainpy/version2/analysis/lowdim/__init__.py +++ b/brainpy/version2/analysis/lowdim/__init__.py @@ -1,4 +1,17 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .lowdim_bifurcation import * from .lowdim_phase_plane import * diff --git a/brainpy/version2/analysis/lowdim/lowdim_analyzer.py b/brainpy/version2/analysis/lowdim/lowdim_analyzer.py index 9093762c2..178e5329c 100644 --- a/brainpy/version2/analysis/lowdim/lowdim_analyzer.py +++ b/brainpy/version2/analysis/lowdim/lowdim_analyzer.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from functools import partial @@ -257,7 +270,7 @@ def __init__(self, *args, **kwargs): @property def F_fx(self): - """Make the standard function call of :math:`f_x (*\mathrm{vars}, *\mathrm{pars})`. + r"""Make the standard function call of :math:`f_x (*\mathrm{vars}, *\mathrm{pars})`. This function has been transformed into the standard call. For instance, if the user has the ``target_vars=("v1", "v2")`` and @@ -899,7 +912,8 @@ def _get_fp_candidates_by_aux_rank(self, num_segments=1, num_rank=100): def _get_fixed_points(self, candidates, *args, tol_aux=1e-7, tol_unique=1e-2, tol_opt_candidate=None, num_segment=1): - """Get the fixed points according to the initial ``candidates`` and the parameter setting ``args``. + r""" + Get the fixed points according to the initial ``candidates`` and the parameter setting ``args``. "candidates" and "args" can be obtained through: diff --git a/brainpy/version2/analysis/lowdim/lowdim_bifurcation.py b/brainpy/version2/analysis/lowdim/lowdim_bifurcation.py index bad4bdbfb..af099a029 100644 --- a/brainpy/version2/analysis/lowdim/lowdim_bifurcation.py +++ b/brainpy/version2/analysis/lowdim/lowdim_bifurcation.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from copy import deepcopy from functools import partial diff --git a/brainpy/version2/analysis/lowdim/lowdim_phase_plane.py b/brainpy/version2/analysis/lowdim/lowdim_phase_plane.py index 3d9970972..098bbc5a2 100644 --- a/brainpy/version2/analysis/lowdim/lowdim_phase_plane.py +++ b/brainpy/version2/analysis/lowdim/lowdim_phase_plane.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from copy import deepcopy import jax diff --git a/brainpy/version2/analysis/lowdim/tests/test_bifurcation.py b/brainpy/version2/analysis/lowdim/tests/test_bifurcation.py index ef2e2384b..48d41f6e6 100644 --- a/brainpy/version2/analysis/lowdim/tests/test_bifurcation.py +++ b/brainpy/version2/analysis/lowdim/tests/test_bifurcation.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import pytest pytest.skip('Test cannot pass in github action.', allow_module_level=True) diff --git a/brainpy/version2/analysis/lowdim/tests/test_phase_plane.py b/brainpy/version2/analysis/lowdim/tests/test_phase_plane.py index 09d3a6835..af4a81bdf 100644 --- a/brainpy/version2/analysis/lowdim/tests/test_phase_plane.py +++ b/brainpy/version2/analysis/lowdim/tests/test_phase_plane.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.numpy as jnp diff --git a/brainpy/version2/analysis/plotstyle.py b/brainpy/version2/analysis/plotstyle.py index 6c99466d2..c617f8073 100644 --- a/brainpy/version2/analysis/plotstyle.py +++ b/brainpy/version2/analysis/plotstyle.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== __all__ = [ 'plot_schema', 'set_plot_schema', diff --git a/brainpy/version2/analysis/stability.py b/brainpy/version2/analysis/stability.py index a4f98c456..7e85f5db6 100644 --- a/brainpy/version2/analysis/stability.py +++ b/brainpy/version2/analysis/stability.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np __all__ = [ diff --git a/brainpy/version2/analysis/tests/test_stability.py b/brainpy/version2/analysis/tests/test_stability.py index 08e6ee17e..d06b7a967 100644 --- a/brainpy/version2/analysis/tests/test_stability.py +++ b/brainpy/version2/analysis/tests/test_stability.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2.analysis.stability import * diff --git a/brainpy/version2/analysis/utils/__init__.py b/brainpy/version2/analysis/utils/__init__.py index be8715821..c3fe6f913 100644 --- a/brainpy/version2/analysis/utils/__init__.py +++ b/brainpy/version2/analysis/utils/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .function import * from .measurement import * from .model import * diff --git a/brainpy/version2/analysis/utils/function.py b/brainpy/version2/analysis/utils/function.py index 3f5310f2a..85df5dda5 100644 --- a/brainpy/version2/analysis/utils/function.py +++ b/brainpy/version2/analysis/utils/function.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect import brainpy.version2.math as bm diff --git a/brainpy/version2/analysis/utils/measurement.py b/brainpy/version2/analysis/utils/measurement.py index 0ef009f72..9b6996a1e 100644 --- a/brainpy/version2/analysis/utils/measurement.py +++ b/brainpy/version2/analysis/utils/measurement.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial from typing import Union diff --git a/brainpy/version2/analysis/utils/model.py b/brainpy/version2/analysis/utils/model.py index 7ee739a45..c8b430eff 100644 --- a/brainpy/version2/analysis/utils/model.py +++ b/brainpy/version2/analysis/utils/model.py @@ -1,6 +1,19 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from brainpy._errors import AnalyzerError, UnsupportedError from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.integrators.base import Integrator @@ -11,7 +24,6 @@ from brainpy.version2.math.interoperability import as_jax from brainpy.version2.math.object_transform import Variable from brainpy.version2.runners import DSRunner -from brainpy._errors import AnalyzerError, UnsupportedError __all__ = [ 'model_transform', diff --git a/brainpy/version2/analysis/utils/optimization.py b/brainpy/version2/analysis/utils/optimization.py index b06392238..be03e0a3a 100644 --- a/brainpy/version2/analysis/utils/optimization.py +++ b/brainpy/version2/analysis/utils/optimization.py @@ -1,9 +1,22 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.lax import jax.numpy as jnp import numpy as np +import scipy.optimize as soptimize from jax import grad, jit, vmap from jax.flatten_util import ravel_pytree @@ -11,8 +24,6 @@ from brainpy import _errors as errors from . import f_without_jaxarray_return -import scipy.optimize as soptimize - __all__ = [ 'ECONVERGED', 'ECONVERR', diff --git a/brainpy/version2/analysis/utils/others.py b/brainpy/version2/analysis/utils/others.py index 09fe23ef7..cd82e28c1 100644 --- a/brainpy/version2/analysis/utils/others.py +++ b/brainpy/version2/analysis/utils/others.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict import jax diff --git a/brainpy/version2/analysis/utils/outputs.py b/brainpy/version2/analysis/utils/outputs.py index 7b0cf53a0..40f3d9863 100644 --- a/brainpy/version2/analysis/utils/outputs.py +++ b/brainpy/version2/analysis/utils/outputs.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import sys __all__ = [ diff --git a/brainpy/version2/analysis/utils/visualization.py b/brainpy/version2/analysis/utils/visualization.py index b563d8f95..ca5552bcf 100644 --- a/brainpy/version2/analysis/utils/visualization.py +++ b/brainpy/version2/analysis/utils/visualization.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np diff --git a/brainpy/version2/channels.py b/brainpy/version2/channels.py index daf001710..5fefd9bf4 100644 --- a/brainpy/version2/channels.py +++ b/brainpy/version2/channels.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ diff --git a/brainpy/version2/check.py b/brainpy/version2/check.py index a622f14d4..d3b39f028 100644 --- a/brainpy/version2/check.py +++ b/brainpy/version2/check.py @@ -1,7 +1,18 @@ # -*- coding: utf-8 -*- - - -from brainpy.version2.deprecations import deprecation_getattr2 +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import wraps, partial from typing import Union, Sequence, Dict, Callable, Tuple, Type, Optional, Any diff --git a/brainpy/version2/checkpoints/serialization.py b/brainpy/version2/checkpoints.py similarity index 82% rename from brainpy/version2/checkpoints/serialization.py rename to brainpy/version2/checkpoints.py index 8e8bc49cd..fcf8a79c0 100644 --- a/brainpy/version2/checkpoints/serialization.py +++ b/brainpy/version2/checkpoints.py @@ -1,11 +1,25 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Any, Optional +import braintools import jax +from braintools.file import msgpack_register_serialization, AsyncManager -import braintools from brainpy.version2.math.ndarray import Array from brainpy.version2.types import PyTree -from braintools.file import msgpack_register_serialization, AsyncManager __all__ = [ 'save_pytree', 'load_pytree', 'AsyncManager', diff --git a/brainpy/version2/checkpoints/__init__.py b/brainpy/version2/checkpoints/__init__.py deleted file mode 100644 index 9960b02f8..000000000 --- a/brainpy/version2/checkpoints/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- coding: utf-8 -*- - -from .serialization import * diff --git a/brainpy/version2/checkpoints/tests/test_checkpoints.py b/brainpy/version2/checkpoints/tests/test_checkpoints.py deleted file mode 100644 index 40a96afc6..000000000 --- a/brainpy/version2/checkpoints/tests/test_checkpoints.py +++ /dev/null @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/brainpy/version2/connect/__init__.py b/brainpy/version2/connect/__init__.py index fa4031152..92926b3b1 100644 --- a/brainpy/version2/connect/__init__.py +++ b/brainpy/version2/connect/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides methods to construct connectivity between neuron groups. You can access them through ``brainpy.version2.connect.XXX``. diff --git a/brainpy/version2/connect/base.py b/brainpy/version2/connect/base.py index e4efbfc41..e14859cdf 100644 --- a/brainpy/version2/connect/base.py +++ b/brainpy/version2/connect/base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import abc import textwrap from typing import Union, List, Tuple @@ -7,8 +20,8 @@ import jax.numpy as jnp import numpy as onp -from brainpy.version2 import tools, math as bm from brainpy._errors import ConnectorError +from brainpy.version2 import tools, math as bm __all__ = [ # the connection types diff --git a/brainpy/version2/connect/custom_conn.py b/brainpy/version2/connect/custom_conn.py index 37e8d5f05..69b47e35f 100644 --- a/brainpy/version2/connect/custom_conn.py +++ b/brainpy/version2/connect/custom_conn.py @@ -1,10 +1,24 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax import jax.numpy as jnp import numpy as np -from brainpy.version2 import math as bm, tools from brainpy._errors import ConnectorError +from brainpy.version2 import math as bm, tools from .base import * __all__ = [ diff --git a/brainpy/version2/connect/random_conn.py b/brainpy/version2/connect/random_conn.py index 6c97e6774..3f4d047e4 100644 --- a/brainpy/version2/connect/random_conn.py +++ b/brainpy/version2/connect/random_conn.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial from typing import Optional @@ -7,9 +20,9 @@ from jax import vmap, jit, numpy as jnp import brainpy.version2.math as bm -from brainpy.version2.tools.package import SUPPORT_NUMBA from brainpy._errors import ConnectorError from brainpy.version2.tools import numba_seed, numba_jit, numba_range, format_seed +from brainpy.version2.tools.package import SUPPORT_NUMBA from .base import * __all__ = [ diff --git a/brainpy/version2/connect/regular_conn.py b/brainpy/version2/connect/regular_conn.py index 39d78df47..4cc2a9178 100644 --- a/brainpy/version2/connect/regular_conn.py +++ b/brainpy/version2/connect/regular_conn.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple, List import jax diff --git a/brainpy/version2/connect/tests/test_custom_conn.py b/brainpy/version2/connect/tests/test_custom_conn.py index 0dc2112af..c6cc6152d 100644 --- a/brainpy/version2/connect/tests/test_custom_conn.py +++ b/brainpy/version2/connect/tests/test_custom_conn.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from unittest import TestCase import numpy as np diff --git a/brainpy/version2/connect/tests/test_optimized_result.py b/brainpy/version2/connect/tests/test_optimized_result.py index adc21af61..c6d726ce7 100644 --- a/brainpy/version2/connect/tests/test_optimized_result.py +++ b/brainpy/version2/connect/tests/test_optimized_result.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from datetime import datetime from time import time diff --git a/brainpy/version2/connect/tests/test_random_conn.py b/brainpy/version2/connect/tests/test_random_conn.py index ad9809be6..48eb33dfa 100644 --- a/brainpy/version2/connect/tests/test_random_conn.py +++ b/brainpy/version2/connect/tests/test_random_conn.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import pytest diff --git a/brainpy/version2/connect/tests/test_random_conn_visualize.py b/brainpy/version2/connect/tests/test_random_conn_visualize.py index ad093ee25..2a2d8609d 100644 --- a/brainpy/version2/connect/tests/test_random_conn_visualize.py +++ b/brainpy/version2/connect/tests/test_random_conn_visualize.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import pytest pytest.skip('skip', allow_module_level=True) diff --git a/brainpy/version2/connect/tests/test_regular_conn.py b/brainpy/version2/connect/tests/test_regular_conn.py index 7f3a470ff..1870cbfdc 100644 --- a/brainpy/version2/connect/tests/test_regular_conn.py +++ b/brainpy/version2/connect/tests/test_regular_conn.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import numpy as np diff --git a/brainpy/version2/context.py b/brainpy/version2/context.py index ff8a5d0b8..686038f26 100644 --- a/brainpy/version2/context.py +++ b/brainpy/version2/context.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ Context for brainpy computation. @@ -7,7 +21,6 @@ from typing import Any, Union import brainstate - from brainpy.version2.tools.dicts import DotDict __all__ = [ diff --git a/brainpy/version2/delay.py b/brainpy/version2/delay.py index 6170157b9..13aaada84 100644 --- a/brainpy/version2/delay.py +++ b/brainpy/version2/delay.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ Delay variable. """ @@ -10,13 +24,13 @@ import jax.numpy as jnp import numpy as np -from brainpy.version2 import check, math as bm +from brainpy.mixin import ParamDesc, ReturnInfo, JointType, SupportAutoDelay +from brainpy.version2 import check, math as bm +from brainpy.version2.check import jit_error from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.initialize import variable_ from brainpy.version2.math.delayvars import ROTATE_UPDATE, CONCAT_UPDATE -from brainpy.version2.mixin import ParamDesc, ReturnInfo, JointType, SupportAutoDelay -from brainpy.version2.check import jit_error __all__ = [ 'Delay', diff --git a/brainpy/version2/deprecations.py b/brainpy/version2/deprecations.py index b13aa80ac..5b203f796 100644 --- a/brainpy/version2/deprecations.py +++ b/brainpy/version2/deprecations.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools import warnings diff --git a/brainpy/version2/dnn/__init__.py b/brainpy/version2/dnn/__init__.py index 1526c9e7e..750742574 100644 --- a/brainpy/version2/dnn/__init__.py +++ b/brainpy/version2/dnn/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .activations import * from .base import * from .conv import * @@ -9,5 +22,4 @@ from .linear import * from .normalization import * from .pooling import * -from brainpy.version2.dyn.rates.nvar import NVAR diff --git a/brainpy/version2/dnn/activations.py b/brainpy/version2/dnn/activations.py index 8f64f467c..ce514e1a2 100644 --- a/brainpy/version2/dnn/activations.py +++ b/brainpy/version2/dnn/activations.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Optional diff --git a/brainpy/version2/dnn/base.py b/brainpy/version2/dnn/base.py index ca0412ddb..db695437e 100644 --- a/brainpy/version2/dnn/base.py +++ b/brainpy/version2/dnn/base.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2.dynsys import DynamicalSystem __all__ = [ diff --git a/brainpy/version2/dnn/conv.py b/brainpy/version2/dnn/conv.py index 928586342..01d077504 100644 --- a/brainpy/version2/dnn/conv.py +++ b/brainpy/version2/dnn/conv.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple, Optional, Sequence, Callable from jax import lax diff --git a/brainpy/version2/dnn/dropout.py b/brainpy/version2/dnn/dropout.py index c1c5648ba..272f45817 100644 --- a/brainpy/version2/dnn/dropout.py +++ b/brainpy/version2/dnn/dropout.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional from brainpy.version2 import math as bm, check diff --git a/brainpy/version2/dnn/function.py b/brainpy/version2/dnn/function.py index 6e9172f7f..8084252ab 100644 --- a/brainpy/version2/dnn/function.py +++ b/brainpy/version2/dnn/function.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Callable, Optional, Sequence import brainpy.version2.math as bm diff --git a/brainpy/version2/dnn/interoperation_flax.py b/brainpy/version2/dnn/interoperation_flax.py index 48373217e..aa767d29b 100644 --- a/brainpy/version2/dnn/interoperation_flax.py +++ b/brainpy/version2/dnn/interoperation_flax.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import dataclasses from typing import Dict, Tuple diff --git a/brainpy/version2/dnn/linear.py b/brainpy/version2/dnn/linear.py index 3b2ad598a..799066668 100644 --- a/brainpy/version2/dnn/linear.py +++ b/brainpy/version2/dnn/linear.py @@ -1,22 +1,35 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +import numbers +from typing import Dict, Optional, Union, Callable import jax import jax.numpy as jnp -import numbers import numpy as np -from typing import Dict, Optional, Union, Callable - from brainevent._csr_impl_plasticity import csr_on_pre, csr2csc_on_post from brainevent._dense_impl_plasticity import dense_on_pre, dense_on_post -from brainpy.version2 import math as bm + +from brainpy._errors import MathError +from brainpy.mixin import SupportOnline, SupportOffline, SupportSTDP from brainpy.version2 import connect, initialize as init -from brainpy.version2.context import share -from brainpy.version2.dnn.base import Layer -from brainpy.version2.mixin import SupportOnline, SupportOffline, SupportSTDP +from brainpy.version2 import math as bm from brainpy.version2.check import is_initializer from brainpy.version2.connect import csr2csc -from brainpy._errors import MathError +from brainpy.version2.context import share +from brainpy.version2.dnn.base import Layer from brainpy.version2.initialize import XavierNormal, ZeroInit, Initializer, parameter from brainpy.version2.types import ArrayType, Sharding diff --git a/brainpy/version2/dnn/normalization.py b/brainpy/version2/dnn/normalization.py index c065e77ed..8cf4fa9c9 100644 --- a/brainpy/version2/dnn/normalization.py +++ b/brainpy/version2/dnn/normalization.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional, Sequence, Callable from jax import lax, numpy as jnp diff --git a/brainpy/version2/dnn/pooling.py b/brainpy/version2/dnn/pooling.py index aff5dc29c..1a6c5332a 100644 --- a/brainpy/version2/dnn/pooling.py +++ b/brainpy/version2/dnn/pooling.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple, Sequence, Optional, Callable, List, Any import jax diff --git a/brainpy/version2/dnn/tests/test_activation.py b/brainpy/version2/dnn/tests/test_activation.py index c99f4c138..244d4ac50 100644 --- a/brainpy/version2/dnn/tests/test_activation.py +++ b/brainpy/version2/dnn/tests/test_activation.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dnn/tests/test_conv_layers.py b/brainpy/version2/dnn/tests/test_conv_layers.py index f3ca1b573..ab7cfd3e0 100644 --- a/brainpy/version2/dnn/tests/test_conv_layers.py +++ b/brainpy/version2/dnn/tests/test_conv_layers.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import platform import jax.numpy as jnp diff --git a/brainpy/version2/dnn/tests/test_flax.py b/brainpy/version2/dnn/tests/test_flax.py index 4841ef04f..c3de4019c 100644 --- a/brainpy/version2/dnn/tests/test_flax.py +++ b/brainpy/version2/dnn/tests/test_flax.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/brainpy/version2/dnn/tests/test_function.py b/brainpy/version2/dnn/tests/test_function.py index 64ef83ba8..ee0133bba 100644 --- a/brainpy/version2/dnn/tests/test_function.py +++ b/brainpy/version2/dnn/tests/test_function.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dnn/tests/test_linear.py b/brainpy/version2/dnn/tests/test_linear.py index d34348502..e397f80db 100644 --- a/brainpy/version2/dnn/tests/test_linear.py +++ b/brainpy/version2/dnn/tests/test_linear.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dnn/tests/test_mode.py b/brainpy/version2/dnn/tests/test_mode.py index 9cc7742c7..be00cf35a 100644 --- a/brainpy/version2/dnn/tests/test_mode.py +++ b/brainpy/version2/dnn/tests/test_mode.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dnn/tests/test_normalization.py b/brainpy/version2/dnn/tests/test_normalization.py index ce22704e9..5d0327544 100644 --- a/brainpy/version2/dnn/tests/test_normalization.py +++ b/brainpy/version2/dnn/tests/test_normalization.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dnn/tests/test_pooling_layers.py b/brainpy/version2/dnn/tests/test_pooling_layers.py index 5380cdea8..4bb9a7766 100644 --- a/brainpy/version2/dnn/tests/test_pooling_layers.py +++ b/brainpy/version2/dnn/tests/test_pooling_layers.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax import jax.numpy as jnp import numpy as np diff --git a/brainpy/version2/dyn/__init__.py b/brainpy/version2/dyn/__init__.py index 23638bfe8..7520da025 100644 --- a/brainpy/version2/dyn/__init__.py +++ b/brainpy/version2/dyn/__init__.py @@ -1,4 +1,17 @@ -from .projections.plasticity import STDP_Song2000 +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .channels import * from .ions import * @@ -6,6 +19,8 @@ from .others import * from .outs import * from .projections import * +from .projections.plasticity import STDP_Song2000 from .rates import * from .synapses import * + NeuGroup = NeuDyn diff --git a/brainpy/version2/dyn/_docs.py b/brainpy/version2/dyn/_docs.py index cd0c56baf..214f46d32 100644 --- a/brainpy/version2/dyn/_docs.py +++ b/brainpy/version2/dyn/_docs.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== pneu_doc = ''' size: int, or sequence of int. The neuronal population size. sharding: The sharding strategy. diff --git a/brainpy/version2/dyn/base.py b/brainpy/version2/dyn/base.py index 231012ab8..4f7f26e6a 100644 --- a/brainpy/version2/dyn/base.py +++ b/brainpy/version2/dyn/base.py @@ -1,7 +1,20 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from brainpy.mixin import SupportAutoDelay, ParamDesc from brainpy.version2.dynsys import Dynamic -from brainpy.version2.mixin import SupportAutoDelay, ParamDesc __all__ = [ 'NeuDyn', 'SynDyn', 'IonChaDyn', diff --git a/brainpy/version2/dyn/channels/__init__.py b/brainpy/version2/dyn/channels/__init__.py index d97923f3a..682fcdbcd 100644 --- a/brainpy/version2/dyn/channels/__init__.py +++ b/brainpy/version2/dyn/channels/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .calcium import * from .hyperpolarization_activated import * diff --git a/brainpy/version2/dyn/channels/base.py b/brainpy/version2/dyn/channels/base.py index 437c9b770..6c971e486 100644 --- a/brainpy/version2/dyn/channels/base.py +++ b/brainpy/version2/dyn/channels/base.py @@ -1,8 +1,21 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from brainpy.mixin import TreeNode from brainpy.version2.dyn.base import IonChaDyn from brainpy.version2.dyn.neurons.hh import HHTypedNeuron -from brainpy.version2.mixin import TreeNode __all__ = [ 'IonChannel', diff --git a/brainpy/version2/dyn/channels/calcium.py b/brainpy/version2/dyn/channels/calcium.py index 0fc448e3b..5f933fb0a 100644 --- a/brainpy/version2/dyn/channels/calcium.py +++ b/brainpy/version2/dyn/channels/calcium.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements voltage-dependent calcium channels. diff --git a/brainpy/version2/dyn/channels/hyperpolarization_activated.py b/brainpy/version2/dyn/channels/hyperpolarization_activated.py index 46c751a93..aac520a45 100644 --- a/brainpy/version2/dyn/channels/hyperpolarization_activated.py +++ b/brainpy/version2/dyn/channels/hyperpolarization_activated.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements hyperpolarization-activated cation channels. """ diff --git a/brainpy/version2/dyn/channels/leaky.py b/brainpy/version2/dyn/channels/leaky.py index a31c0323a..dfd75e949 100644 --- a/brainpy/version2/dyn/channels/leaky.py +++ b/brainpy/version2/dyn/channels/leaky.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements leakage channels. diff --git a/brainpy/version2/dyn/channels/potassium.py b/brainpy/version2/dyn/channels/potassium.py index 7e382ebdd..9613c26e2 100644 --- a/brainpy/version2/dyn/channels/potassium.py +++ b/brainpy/version2/dyn/channels/potassium.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements voltage-dependent potassium channels. diff --git a/brainpy/version2/dyn/channels/potassium_calcium.py b/brainpy/version2/dyn/channels/potassium_calcium.py index 2c4483766..308dfccf2 100644 --- a/brainpy/version2/dyn/channels/potassium_calcium.py +++ b/brainpy/version2/dyn/channels/potassium_calcium.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements calcium-dependent potassium channels. """ @@ -8,12 +20,12 @@ from typing import Union, Callable, Optional import brainpy.version2.math as bm +from brainpy.mixin import JointType from brainpy.version2.context import share from brainpy.version2.dyn.ions.calcium import Calcium from brainpy.version2.dyn.ions.potassium import Potassium from brainpy.version2.initialize import Initializer, parameter, variable from brainpy.version2.integrators.ode.generic import odeint -from brainpy.version2.mixin import JointType from brainpy.version2.types import Shape, ArrayType from .calcium import CalciumChannel from .potassium import PotassiumChannel diff --git a/brainpy/version2/dyn/channels/potassium_calcium_compatible.py b/brainpy/version2/dyn/channels/potassium_calcium_compatible.py index c5f0aa1a2..be25f8db4 100644 --- a/brainpy/version2/dyn/channels/potassium_calcium_compatible.py +++ b/brainpy/version2/dyn/channels/potassium_calcium_compatible.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements calcium-dependent potassium channels. diff --git a/brainpy/version2/dyn/channels/potassium_compatible.py b/brainpy/version2/dyn/channels/potassium_compatible.py index e2a838ba9..676bf95df 100644 --- a/brainpy/version2/dyn/channels/potassium_compatible.py +++ b/brainpy/version2/dyn/channels/potassium_compatible.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements voltage-dependent potassium channels. diff --git a/brainpy/version2/dyn/channels/sodium.py b/brainpy/version2/dyn/channels/sodium.py index 2cf148877..07ebdf457 100644 --- a/brainpy/version2/dyn/channels/sodium.py +++ b/brainpy/version2/dyn/channels/sodium.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements voltage-dependent sodium channels. diff --git a/brainpy/version2/dyn/channels/sodium_compatible.py b/brainpy/version2/dyn/channels/sodium_compatible.py index 93ed92cc4..145e50802 100644 --- a/brainpy/version2/dyn/channels/sodium_compatible.py +++ b/brainpy/version2/dyn/channels/sodium_compatible.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements voltage-dependent sodium channels. diff --git a/brainpy/version2/dyn/channels/tests/test_Ca.py b/brainpy/version2/dyn/channels/tests/test_Ca.py index 8006f8651..e44a15031 100644 --- a/brainpy/version2/dyn/channels/tests/test_Ca.py +++ b/brainpy/version2/dyn/channels/tests/test_Ca.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/channels/tests/test_IH.py b/brainpy/version2/dyn/channels/tests/test_IH.py index b9187b132..ac9e8f96f 100644 --- a/brainpy/version2/dyn/channels/tests/test_IH.py +++ b/brainpy/version2/dyn/channels/tests/test_IH.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/channels/tests/test_K.py b/brainpy/version2/dyn/channels/tests/test_K.py index 9d8fafd50..18b5d8f3d 100644 --- a/brainpy/version2/dyn/channels/tests/test_K.py +++ b/brainpy/version2/dyn/channels/tests/test_K.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/channels/tests/test_KCa.py b/brainpy/version2/dyn/channels/tests/test_KCa.py index 77b349cf8..87bbaa0d9 100644 --- a/brainpy/version2/dyn/channels/tests/test_KCa.py +++ b/brainpy/version2/dyn/channels/tests/test_KCa.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/channels/tests/test_Na.py b/brainpy/version2/dyn/channels/tests/test_Na.py index a6ba3131d..6aa82106f 100644 --- a/brainpy/version2/dyn/channels/tests/test_Na.py +++ b/brainpy/version2/dyn/channels/tests/test_Na.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/channels/tests/test_leaky.py b/brainpy/version2/dyn/channels/tests/test_leaky.py index 688f46347..79c7661b1 100644 --- a/brainpy/version2/dyn/channels/tests/test_leaky.py +++ b/brainpy/version2/dyn/channels/tests/test_leaky.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/ions/__init__.py b/brainpy/version2/dyn/ions/__init__.py index f71653a19..3596d629a 100644 --- a/brainpy/version2/dyn/ions/__init__.py +++ b/brainpy/version2/dyn/ions/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .calcium import * from .potassium import * diff --git a/brainpy/version2/dyn/ions/base.py b/brainpy/version2/dyn/ions/base.py index 96f1f5c6f..634e78b16 100644 --- a/brainpy/version2/dyn/ions/base.py +++ b/brainpy/version2/dyn/ions/base.py @@ -1,14 +1,26 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional, Dict, Sequence, Callable -from brainstate.mixin import _JointGenericAlias - import brainpy.version2.math as bm +from brainpy.mixin import Container, TreeNode from brainpy.version2.dyn.base import IonChaDyn from brainpy.version2.dyn.neurons.hh import HHTypedNeuron -from brainpy.version2.mixin import Container, TreeNode from brainpy.version2.types import Shape +from brainstate.mixin import _JointGenericAlias __all__ = [ 'MixIons', @@ -77,7 +89,7 @@ def reset_state(self, V, batch_size=None): node.reset_state(V, *infos, batch_size) def check_hierarchy(self, roots, leaf): - # 'master_type' should be a brainpy.version2.mixin.JointType + # 'master_type' should be a brainpy.mixin.JointType self._check_master_type(leaf) for cls in leaf.master_type.__args__: if not any([issubclass(root, cls) for root in roots]): @@ -117,7 +129,7 @@ def _get_imp(self, cls): def _check_master_type(self, leaf): if not isinstance(leaf.master_type, _JointGenericAlias): raise TypeError(f'{self.__class__.__name__} requires leaf nodes that have the master_type of ' - f'"brainpy.version2.mixin.JointType". However, we got {leaf.master_type}') + f'"brainpy.mixin.JointType". However, we got {leaf.master_type}') def mix_ions(*ions) -> MixIons: diff --git a/brainpy/version2/dyn/ions/calcium.py b/brainpy/version2/dyn/ions/calcium.py index 7f098eeb2..e8c20c099 100644 --- a/brainpy/version2/dyn/ions/calcium.py +++ b/brainpy/version2/dyn/ions/calcium.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/dyn/ions/potassium.py b/brainpy/version2/dyn/ions/potassium.py index fac1781e5..7daa8dec3 100644 --- a/brainpy/version2/dyn/ions/potassium.py +++ b/brainpy/version2/dyn/ions/potassium.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/dyn/ions/sodium.py b/brainpy/version2/dyn/ions/sodium.py index 729792337..9b04ef17d 100644 --- a/brainpy/version2/dyn/ions/sodium.py +++ b/brainpy/version2/dyn/ions/sodium.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/dyn/ions/tests/test_MixIons.py b/brainpy/version2/dyn/ions/tests/test_MixIons.py index eb3e84f63..de761468b 100644 --- a/brainpy/version2/dyn/ions/tests/test_MixIons.py +++ b/brainpy/version2/dyn/ions/tests/test_MixIons.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/neurons/__init__.py b/brainpy/version2/dyn/neurons/__init__.py index ebec19ce0..8b6ee2a05 100644 --- a/brainpy/version2/dyn/neurons/__init__.py +++ b/brainpy/version2/dyn/neurons/__init__.py @@ -1,3 +1,17 @@ -from .lif import * -from .hh import * +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * +from .hh import * +from .lif import * diff --git a/brainpy/version2/dyn/neurons/base.py b/brainpy/version2/dyn/neurons/base.py index 1ffd31edb..7a36ee7f8 100644 --- a/brainpy/version2/dyn/neurons/base.py +++ b/brainpy/version2/dyn/neurons/base.py @@ -1,9 +1,23 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Sequence, Union, Callable, Any, Optional import brainpy.version2.math as bm +from brainpy.version2.check import is_callable from brainpy.version2.dyn._docs import pneu_doc, dpneu_doc from brainpy.version2.dyn.base import NeuDyn -from brainpy.version2.check import is_callable __all__ = ['GradNeuDyn'] diff --git a/brainpy/version2/dyn/neurons/hh.py b/brainpy/version2/dyn/neurons/hh.py index a190365c8..6c80eec42 100644 --- a/brainpy/version2/dyn/neurons/hh.py +++ b/brainpy/version2/dyn/neurons/hh.py @@ -1,17 +1,31 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial from typing import Any, Sequence from typing import Union, Callable, Optional import brainpy.version2.math as bm +from brainpy.mixin import Container, TreeNode +from brainpy.version2.check import is_initializer from brainpy.version2.context import share from brainpy.version2.dyn.base import NeuDyn, IonChaDyn from brainpy.version2.initialize import OneInit from brainpy.version2.initialize import Uniform, variable_, noise as init_noise from brainpy.version2.integrators import JointEq from brainpy.version2.integrators import odeint, sdeint -from brainpy.version2.mixin import Container, TreeNode from brainpy.version2.types import ArrayType -from brainpy.version2.check import is_initializer from brainpy.version2.types import Shape __all__ = [ diff --git a/brainpy/version2/dyn/neurons/lif.py b/brainpy/version2/dyn/neurons/lif.py index 182b4d9ff..8c6f321e6 100644 --- a/brainpy/version2/dyn/neurons/lif.py +++ b/brainpy/version2/dyn/neurons/lif.py @@ -1,15 +1,29 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial from typing import Union, Callable, Optional, Any, Sequence from jax.lax import stop_gradient import brainpy.version2.math as bm +from brainpy.version2.check import is_initializer from brainpy.version2.context import share from brainpy.version2.dyn._docs import ref_doc, lif_doc, pneu_doc, dpneu_doc, ltc_doc, if_doc from brainpy.version2.dyn.neurons.base import GradNeuDyn from brainpy.version2.initialize import ZeroInit, OneInit, noise as init_noise from brainpy.version2.integrators import odeint, sdeint, JointEq -from brainpy.version2.check import is_initializer from brainpy.version2.types import Shape, ArrayType, Sharding __all__ = [ diff --git a/brainpy/version2/dyn/neurons/tests/test_hh.py b/brainpy/version2/dyn/neurons/tests/test_hh.py index 68c72bd3d..5b76e77e5 100644 --- a/brainpy/version2/dyn/neurons/tests/test_hh.py +++ b/brainpy/version2/dyn/neurons/tests/test_hh.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/neurons/tests/test_lif.py b/brainpy/version2/dyn/neurons/tests/test_lif.py index 50d9f9e46..2970d5c8e 100644 --- a/brainpy/version2/dyn/neurons/tests/test_lif.py +++ b/brainpy/version2/dyn/neurons/tests/test_lif.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np from absl.testing import parameterized diff --git a/brainpy/version2/dyn/others/__init__.py b/brainpy/version2/dyn/others/__init__.py index 63c75366c..47d2646b6 100644 --- a/brainpy/version2/dyn/others/__init__.py +++ b/brainpy/version2/dyn/others/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .common import * from .input import * from .noise import * diff --git a/brainpy/version2/dyn/others/common.py b/brainpy/version2/dyn/others/common.py index cbcee1ea4..271f01bfc 100644 --- a/brainpy/version2/dyn/others/common.py +++ b/brainpy/version2/dyn/others/common.py @@ -1,13 +1,27 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional, Sequence import brainpy.version2.math as bm from brainpy.version2 import initialize as init from brainpy.version2 import tools +from brainpy.version2.check import is_initializer from brainpy.version2.context import share from brainpy.version2.dyn._docs import pneu_doc from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.integrators import odeint -from brainpy.version2.check import is_initializer from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dyn/others/input.py b/brainpy/version2/dyn/others/input.py index e7bb9d7f1..13439b41e 100644 --- a/brainpy/version2/dyn/others/input.py +++ b/brainpy/version2/dyn/others/input.py @@ -1,17 +1,30 @@ # -*- coding: utf-8 -*- -import warnings +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial from typing import Union, Sequence, Any, Optional, Callable import jax import jax.numpy as jnp +from brainpy.mixin import ReturnInfo from brainpy.version2 import math as bm from brainpy.version2.context import share from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.dyn.utils import get_spk_type from brainpy.version2.initialize import parameter, variable_ -from brainpy.version2.mixin import ReturnInfo from brainpy.version2.types import Shape, ArrayType __all__ = [ diff --git a/brainpy/version2/dyn/others/noise.py b/brainpy/version2/dyn/others/noise.py index 8731bd332..73364f420 100644 --- a/brainpy/version2/dyn/others/noise.py +++ b/brainpy/version2/dyn/others/noise.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable import jax.numpy as jnp diff --git a/brainpy/version2/dyn/others/tests/test_input.py b/brainpy/version2/dyn/others/tests/test_input.py index c1a9579be..ed28b5604 100644 --- a/brainpy/version2/dyn/others/tests/test_input.py +++ b/brainpy/version2/dyn/others/tests/test_input.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/others/tests/test_input_groups.py b/brainpy/version2/dyn/others/tests/test_input_groups.py index 352c16742..82ff5b744 100644 --- a/brainpy/version2/dyn/others/tests/test_input_groups.py +++ b/brainpy/version2/dyn/others/tests/test_input_groups.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/others/tests/test_noise_groups.py b/brainpy/version2/dyn/others/tests/test_noise_groups.py index 860944014..ad2f8cf6c 100644 --- a/brainpy/version2/dyn/others/tests/test_noise_groups.py +++ b/brainpy/version2/dyn/others/tests/test_noise_groups.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import pytest from absl.testing import parameterized diff --git a/brainpy/version2/dyn/outs/__init__.py b/brainpy/version2/dyn/outs/__init__.py index ac55893ee..a26b7a673 100644 --- a/brainpy/version2/dyn/outs/__init__.py +++ b/brainpy/version2/dyn/outs/__init__.py @@ -1,2 +1,16 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .outputs import * diff --git a/brainpy/version2/dyn/outs/base.py b/brainpy/version2/dyn/outs/base.py index 7bd7cf1f8..0135d2684 100644 --- a/brainpy/version2/dyn/outs/base.py +++ b/brainpy/version2/dyn/outs/base.py @@ -1,8 +1,22 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional import brainpy.version2.math as bm +from brainpy.mixin import ParamDesc, BindCondData from brainpy.version2.dynsys import DynamicalSystem -from brainpy.version2.mixin import ParamDesc, BindCondData __all__ = [ 'SynOut' diff --git a/brainpy/version2/dyn/outs/outputs.py b/brainpy/version2/dyn/outs/outputs.py index 9162cd1b0..96188da4d 100644 --- a/brainpy/version2/dyn/outs/outputs.py +++ b/brainpy/version2/dyn/outs/outputs.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional, Sequence import numpy as np diff --git a/brainpy/version2/dyn/projections/__init__.py b/brainpy/version2/dyn/projections/__init__.py index b95bf3e00..f35550980 100644 --- a/brainpy/version2/dyn/projections/__init__.py +++ b/brainpy/version2/dyn/projections/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .align_post import * from .align_pre import * from .base import * diff --git a/brainpy/version2/dyn/projections/align_post.py b/brainpy/version2/dyn/projections/align_post.py index f3e65dbbf..8e85643db 100644 --- a/brainpy/version2/dyn/projections/align_post.py +++ b/brainpy/version2/dyn/projections/align_post.py @@ -1,10 +1,24 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Callable, Union +from brainpy.mixin import (JointType, ParamDescriber, SupportAutoDelay, BindCondData, AlignPost) from brainpy.version2 import math as bm, check from brainpy.version2.delay import (delay_identifier, - register_delay_by_return) + register_delay_by_return) from brainpy.version2.dynsys import DynamicalSystem, Projection -from brainpy.version2.mixin import (JointType, ParamDescriber, SupportAutoDelay, BindCondData, AlignPost) __all__ = [ 'HalfProjAlignPostMg', 'FullProjAlignPostMg', diff --git a/brainpy/version2/dyn/projections/align_pre.py b/brainpy/version2/dyn/projections/align_pre.py index 003ec803c..63a66dfda 100644 --- a/brainpy/version2/dyn/projections/align_pre.py +++ b/brainpy/version2/dyn/projections/align_pre.py @@ -1,9 +1,23 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Union +from brainpy.mixin import (JointType, ParamDescriber, SupportAutoDelay, BindCondData) from brainpy.version2 import math as bm, check from brainpy.version2.delay import (Delay, DelayAccess, init_delay_by_return, register_delay_by_return) from brainpy.version2.dynsys import DynamicalSystem, Projection -from brainpy.version2.mixin import (JointType, ParamDescriber, SupportAutoDelay, BindCondData) from .utils import _get_return __all__ = [ diff --git a/brainpy/version2/dyn/projections/base.py b/brainpy/version2/dyn/projections/base.py index 8c923685b..0bb131049 100644 --- a/brainpy/version2/dyn/projections/base.py +++ b/brainpy/version2/dyn/projections/base.py @@ -1,5 +1,19 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from brainpy.mixin import ReturnInfo from brainpy.version2 import math as bm -from brainpy.version2.mixin import ReturnInfo def _get_return(return_info): diff --git a/brainpy/version2/dyn/projections/conn.py b/brainpy/version2/dyn/projections/conn.py index 631dc3ed9..3cf7a795b 100644 --- a/brainpy/version2/dyn/projections/conn.py +++ b/brainpy/version2/dyn/projections/conn.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Optional import jax diff --git a/brainpy/version2/dyn/projections/delta.py b/brainpy/version2/dyn/projections/delta.py index e23ca3fa7..a1bb4ef70 100644 --- a/brainpy/version2/dyn/projections/delta.py +++ b/brainpy/version2/dyn/projections/delta.py @@ -1,9 +1,23 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Union +from brainpy.mixin import (JointType, SupportAutoDelay) from brainpy.version2 import math as bm, check from brainpy.version2.delay import (delay_identifier, register_delay_by_return) from brainpy.version2.dynsys import DynamicalSystem, Projection -from brainpy.version2.mixin import (JointType, SupportAutoDelay) __all__ = [ 'HalfProjDelta', 'FullProjDelta', diff --git a/brainpy/version2/dyn/projections/inputs.py b/brainpy/version2/dyn/projections/inputs.py index da84d6004..db6f4badc 100644 --- a/brainpy/version2/dyn/projections/inputs.py +++ b/brainpy/version2/dyn/projections/inputs.py @@ -1,12 +1,26 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numbers from typing import Any from typing import Union, Optional +from brainpy.mixin import SupportAutoDelay from brainpy.version2 import check, math as bm from brainpy.version2.context import share from brainpy.version2.dynsys import Dynamic from brainpy.version2.dynsys import Projection -from brainpy.version2.mixin import SupportAutoDelay from brainpy.version2.types import Shape __all__ = [ diff --git a/brainpy/version2/dyn/projections/plasticity.py b/brainpy/version2/dyn/projections/plasticity.py index 53df8d755..444690678 100644 --- a/brainpy/version2/dyn/projections/plasticity.py +++ b/brainpy/version2/dyn/projections/plasticity.py @@ -1,11 +1,25 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Callable, Union +from brainpy.mixin import (JointType, ParamDescriber, SupportAutoDelay, + BindCondData, AlignPost, SupportSTDP) from brainpy.version2 import math as bm, check from brainpy.version2.delay import register_delay_by_return from brainpy.version2.dyn.synapses.abstract_models import Expon from brainpy.version2.dynsys import DynamicalSystem, Projection -from brainpy.version2.mixin import (JointType, ParamDescriber, SupportAutoDelay, - BindCondData, AlignPost, SupportSTDP) from brainpy.version2.types import ArrayType from .align_post import (align_post_add_bef_update, ) from .align_pre import (align_pre2_add_bef_update, ) diff --git a/brainpy/version2/dyn/projections/tests/test_STDP.py b/brainpy/version2/dyn/projections/tests/test_STDP.py index 055f81843..a44ffb520 100644 --- a/brainpy/version2/dyn/projections/tests/test_STDP.py +++ b/brainpy/version2/dyn/projections/tests/test_STDP.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np from absl.testing import parameterized diff --git a/brainpy/version2/dyn/projections/tests/test_aligns.py b/brainpy/version2/dyn/projections/tests/test_aligns.py index bbeb22b21..d5a3cca32 100644 --- a/brainpy/version2/dyn/projections/tests/test_aligns.py +++ b/brainpy/version2/dyn/projections/tests/test_aligns.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import matplotlib.pyplot as plt import numpy as np diff --git a/brainpy/version2/dyn/projections/tests/test_delta.py b/brainpy/version2/dyn/projections/tests/test_delta.py index 141f33286..1b3e223f6 100644 --- a/brainpy/version2/dyn/projections/tests/test_delta.py +++ b/brainpy/version2/dyn/projections/tests/test_delta.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import matplotlib.pyplot as plt import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/projections/utils.py b/brainpy/version2/dyn/projections/utils.py index 8c923685b..0bb131049 100644 --- a/brainpy/version2/dyn/projections/utils.py +++ b/brainpy/version2/dyn/projections/utils.py @@ -1,5 +1,19 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +from brainpy.mixin import ReturnInfo from brainpy.version2 import math as bm -from brainpy.version2.mixin import ReturnInfo def _get_return(return_info): diff --git a/brainpy/version2/dyn/projections/vanilla.py b/brainpy/version2/dyn/projections/vanilla.py index 4f4515aec..0f7f95c38 100644 --- a/brainpy/version2/dyn/projections/vanilla.py +++ b/brainpy/version2/dyn/projections/vanilla.py @@ -1,8 +1,22 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional +from brainpy.mixin import (JointType, BindCondData) from brainpy.version2 import math as bm, check from brainpy.version2.dynsys import DynamicalSystem, Projection -from brainpy.version2.mixin import (JointType, BindCondData) __all__ = [ 'VanillaProj', diff --git a/brainpy/version2/dyn/rates/__init__.py b/brainpy/version2/dyn/rates/__init__.py index 3509093b4..98d7a49d5 100644 --- a/brainpy/version2/dyn/rates/__init__.py +++ b/brainpy/version2/dyn/rates/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .nvar import * from .populations import * from .reservoir import * diff --git a/brainpy/version2/dyn/rates/nvar.py b/brainpy/version2/dyn/rates/nvar.py index fb3860142..15348c860 100644 --- a/brainpy/version2/dyn/rates/nvar.py +++ b/brainpy/version2/dyn/rates/nvar.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from itertools import combinations_with_replacement from typing import Union, Sequence, List, Optional diff --git a/brainpy/version2/dyn/rates/populations.py b/brainpy/version2/dyn/rates/populations.py index 92cde5819..925a76d65 100644 --- a/brainpy/version2/dyn/rates/populations.py +++ b/brainpy/version2/dyn/rates/populations.py @@ -1,22 +1,35 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable import jax from brainpy.version2 import math as bm +from brainpy.version2.check import is_initializer from brainpy.version2.context import share from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.dyn.others.noise import OUProcess from brainpy.version2.initialize import (Initializer, - Uniform, - parameter, - variable, - variable_, - ZeroInit) + Uniform, + parameter, + variable, + variable_, + ZeroInit) from brainpy.version2.integrators.joint_eq import JointEq from brainpy.version2.integrators.ode.generic import odeint -from brainpy.version2.check import is_initializer from brainpy.version2.types import Shape, ArrayType __all__ = [ diff --git a/brainpy/version2/dyn/rates/reservoir.py b/brainpy/version2/dyn/rates/reservoir.py index 4505bf420..bf04dbb9c 100644 --- a/brainpy/version2/dyn/rates/reservoir.py +++ b/brainpy/version2/dyn/rates/reservoir.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Union, Callable, Tuple import jax.numpy as jnp diff --git a/brainpy/version2/dyn/rates/rnncells.py b/brainpy/version2/dyn/rates/rnncells.py index 9b6f07e3c..2f816ff89 100644 --- a/brainpy/version2/dyn/rates/rnncells.py +++ b/brainpy/version2/dyn/rates/rnncells.py @@ -1,21 +1,34 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Sequence, Optional, Tuple import jax.numpy as jnp import brainpy.version2.math as bm +from brainpy.version2.check import (is_integer, + is_initializer) from brainpy.version2.dnn.base import Layer from brainpy.version2.dnn.conv import _GeneralConv -from brainpy.version2.check import (is_integer, - is_initializer) from brainpy.version2.initialize import (XavierNormal, - ZeroInit, - Orthogonal, - parameter, - variable, - variable_, - Initializer) + ZeroInit, + Orthogonal, + parameter, + variable, + variable_, + Initializer) from brainpy.version2.math import activations from brainpy.version2.types import ArrayType diff --git a/brainpy/version2/dyn/rates/tests/test_nvar.py b/brainpy/version2/dyn/rates/tests/test_nvar.py index 5b323d50b..2fa4ca9d8 100644 --- a/brainpy/version2/dyn/rates/tests/test_nvar.py +++ b/brainpy/version2/dyn/rates/tests/test_nvar.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dyn/rates/tests/test_rates.py b/brainpy/version2/dyn/rates/tests/test_rates.py index 2087b8c33..e7974ae0e 100644 --- a/brainpy/version2/dyn/rates/tests/test_rates.py +++ b/brainpy/version2/dyn/rates/tests/test_rates.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from unittest import TestCase from absl.testing import parameterized diff --git a/brainpy/version2/dyn/rates/tests/test_reservoir.py b/brainpy/version2/dyn/rates/tests/test_reservoir.py index 65e7f7f66..5abd344b0 100644 --- a/brainpy/version2/dyn/rates/tests/test_reservoir.py +++ b/brainpy/version2/dyn/rates/tests/test_reservoir.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dyn/rates/tests/test_rnncells.py b/brainpy/version2/dyn/rates/tests/test_rnncells.py index cb74c292b..9410eb878 100644 --- a/brainpy/version2/dyn/rates/tests/test_rnncells.py +++ b/brainpy/version2/dyn/rates/tests/test_rnncells.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/dyn/synapses/__init__.py b/brainpy/version2/dyn/synapses/__init__.py index 215279ee9..ebe5e1091 100644 --- a/brainpy/version2/dyn/synapses/__init__.py +++ b/brainpy/version2/dyn/synapses/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .abstract_models import * from .bio_models import * from .delay_couplings import * diff --git a/brainpy/version2/dyn/synapses/abstract_models.py b/brainpy/version2/dyn/synapses/abstract_models.py index 05d015937..7acca25b8 100644 --- a/brainpy/version2/dyn/synapses/abstract_models.py +++ b/brainpy/version2/dyn/synapses/abstract_models.py @@ -1,5 +1,20 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Sequence, Callable, Optional +from brainpy.mixin import AlignPost, ReturnInfo from brainpy.version2 import math as bm from brainpy.version2.context import share from brainpy.version2.dyn import _docs @@ -7,7 +22,6 @@ from brainpy.version2.initialize import parameter from brainpy.version2.integrators.joint_eq import JointEq from brainpy.version2.integrators.ode.generic import odeint -from brainpy.version2.mixin import AlignPost, ReturnInfo from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dyn/synapses/bio_models.py b/brainpy/version2/dyn/synapses/bio_models.py index 9d2cffdb8..8c77b53dd 100644 --- a/brainpy/version2/dyn/synapses/bio_models.py +++ b/brainpy/version2/dyn/synapses/bio_models.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Sequence, Callable, Optional from brainpy.version2 import math as bm diff --git a/brainpy/version2/dyn/synapses/delay_couplings.py b/brainpy/version2/dyn/synapses/delay_couplings.py index 601b80f6b..707ec0560 100644 --- a/brainpy/version2/dyn/synapses/delay_couplings.py +++ b/brainpy/version2/dyn/synapses/delay_couplings.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numbers from typing import Optional, Union, Sequence, Tuple, Callable @@ -7,9 +20,9 @@ from jax import vmap import brainpy.version2.math as bm +from brainpy.version2.check import is_sequence from brainpy.version2.dynsys import Projection from brainpy.version2.initialize import Initializer -from brainpy.version2.check import is_sequence from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dyn/synapses/tests/test_abstract_models.py b/brainpy/version2/dyn/synapses/tests/test_abstract_models.py index f99022ecb..2883133d6 100644 --- a/brainpy/version2/dyn/synapses/tests/test_abstract_models.py +++ b/brainpy/version2/dyn/synapses/tests/test_abstract_models.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/dyn/synapses/tests/test_delay_couplings.py b/brainpy/version2/dyn/synapses/tests/test_delay_couplings.py index ab9016b68..ac2998bed 100644 --- a/brainpy/version2/dyn/synapses/tests/test_delay_couplings.py +++ b/brainpy/version2/dyn/synapses/tests/test_delay_couplings.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dyn/utils.py b/brainpy/version2/dyn/utils.py index 0646c15d1..4af9c9aae 100644 --- a/brainpy/version2/dyn/utils.py +++ b/brainpy/version2/dyn/utils.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/dynold/__init__.py b/brainpy/version2/dynold/__init__.py index e69de29bb..2c035cd2b 100644 --- a/brainpy/version2/dynold/__init__.py +++ b/brainpy/version2/dynold/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== \ No newline at end of file diff --git a/brainpy/version2/dynold/experimental/__init__.py b/brainpy/version2/dynold/experimental/__init__.py index e69de29bb..2c035cd2b 100644 --- a/brainpy/version2/dynold/experimental/__init__.py +++ b/brainpy/version2/dynold/experimental/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== \ No newline at end of file diff --git a/brainpy/version2/dynold/experimental/abstract_synapses.py b/brainpy/version2/dynold/experimental/abstract_synapses.py index 4731fec90..749c8dbb2 100644 --- a/brainpy/version2/dynold/experimental/abstract_synapses.py +++ b/brainpy/version2/dynold/experimental/abstract_synapses.py @@ -1,16 +1,29 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Callable, Optional from jax import vmap import brainpy.version2.math as bm +from brainpy.version2.check import is_float from brainpy.version2.connect import TwoEndConnector, All2All, One2One from brainpy.version2.context import share from brainpy.version2.dynold.experimental.base import SynConnNS, SynOutNS, SynSTPNS from brainpy.version2.initialize import Initializer, variable_ from brainpy.version2.integrators import odeint, JointEq -from brainpy.version2.check import is_float from brainpy.version2.types import ArrayType diff --git a/brainpy/version2/dynold/experimental/base.py b/brainpy/version2/dynold/experimental/base.py index 4db62220e..6279d32a3 100644 --- a/brainpy/version2/dynold/experimental/base.py +++ b/brainpy/version2/dynold/experimental/base.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional, Tuple import jax diff --git a/brainpy/version2/dynold/experimental/others.py b/brainpy/version2/dynold/experimental/others.py index b35867b70..be78b70b4 100644 --- a/brainpy/version2/dynold/experimental/others.py +++ b/brainpy/version2/dynold/experimental/others.py @@ -1,9 +1,23 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional import brainpy.version2.math as bm +from brainpy.version2.check import is_float, is_integer from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem -from brainpy.version2.check import is_float, is_integer class PoissonInput(DynamicalSystem): diff --git a/brainpy/version2/dynold/experimental/syn_outs.py b/brainpy/version2/dynold/experimental/syn_outs.py index 6ae4e8c37..1a4efe9fd 100644 --- a/brainpy/version2/dynold/experimental/syn_outs.py +++ b/brainpy/version2/dynold/experimental/syn_outs.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union from brainpy.version2.dynold.experimental.base import SynOutNS diff --git a/brainpy/version2/dynold/experimental/syn_plasticity.py b/brainpy/version2/dynold/experimental/syn_plasticity.py index d6bd37628..803686691 100644 --- a/brainpy/version2/dynold/experimental/syn_plasticity.py +++ b/brainpy/version2/dynold/experimental/syn_plasticity.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union import jax.numpy as jnp diff --git a/brainpy/version2/dynold/neurons/__init__.py b/brainpy/version2/dynold/neurons/__init__.py index e4e413d69..3bb44e64f 100644 --- a/brainpy/version2/dynold/neurons/__init__.py +++ b/brainpy/version2/dynold/neurons/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .biological_models import * from .fractional_models import * from .reduced_models import * diff --git a/brainpy/version2/dynold/neurons/biological_models.py b/brainpy/version2/dynold/neurons/biological_models.py index ada2f9dbc..9e33b8500 100644 --- a/brainpy/version2/dynold/neurons/biological_models.py +++ b/brainpy/version2/dynold/neurons/biological_models.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable import brainpy.version2.math as bm @@ -8,10 +21,10 @@ from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.dyn.neurons import hh from brainpy.version2.initialize import (OneInit, - Initializer, - parameter, - noise as init_noise, - variable_) + Initializer, + parameter, + noise as init_noise, + variable_) from brainpy.version2.integrators.joint_eq import JointEq from brainpy.version2.integrators.ode.generic import odeint from brainpy.version2.integrators.sde.generic import sdeint diff --git a/brainpy/version2/dynold/neurons/fractional_models.py b/brainpy/version2/dynold/neurons/fractional_models.py index 16993a815..1c013d889 100644 --- a/brainpy/version2/dynold/neurons/fractional_models.py +++ b/brainpy/version2/dynold/neurons/fractional_models.py @@ -1,17 +1,30 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Sequence, Callable import jax.numpy as jnp import brainpy.version2.math as bm +from brainpy.version2.check import is_float, is_integer, is_initializer from brainpy.version2.context import share from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.initialize import ZeroInit, OneInit, Initializer, parameter from brainpy.version2.integrators.fde import CaputoL1Schema from brainpy.version2.integrators.fde import GLShortMemory from brainpy.version2.integrators.joint_eq import JointEq -from brainpy.version2.check import is_float, is_integer, is_initializer from brainpy.version2.types import Shape, ArrayType __all__ = [ diff --git a/brainpy/version2/dynold/neurons/reduced_models.py b/brainpy/version2/dynold/neurons/reduced_models.py index ec71d4ebf..2de426d48 100644 --- a/brainpy/version2/dynold/neurons/reduced_models.py +++ b/brainpy/version2/dynold/neurons/reduced_models.py @@ -1,21 +1,34 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable from jax.lax import stop_gradient import brainpy.version2.math as bm +from brainpy.version2.check import is_initializer, is_callable, is_subclass from brainpy.version2.context import share from brainpy.version2.dyn.base import NeuDyn from brainpy.version2.dyn.neurons import lif from brainpy.version2.initialize import (ZeroInit, - OneInit, - Initializer, - parameter, - variable_, - noise as init_noise) + OneInit, + Initializer, + parameter, + variable_, + noise as init_noise) from brainpy.version2.integrators import sdeint, odeint, JointEq -from brainpy.version2.check import is_initializer, is_callable, is_subclass from brainpy.version2.types import Shape, ArrayType __all__ = [ diff --git a/brainpy/version2/dynold/neurons/tests/test_biological_neurons.py b/brainpy/version2/dynold/neurons/tests/test_biological_neurons.py index f7619b4c7..13c443e6c 100644 --- a/brainpy/version2/dynold/neurons/tests/test_biological_neurons.py +++ b/brainpy/version2/dynold/neurons/tests/test_biological_neurons.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/neurons/tests/test_fractional_neurons.py b/brainpy/version2/dynold/neurons/tests/test_fractional_neurons.py index 7583f0ff6..81d8425c6 100644 --- a/brainpy/version2/dynold/neurons/tests/test_fractional_neurons.py +++ b/brainpy/version2/dynold/neurons/tests/test_fractional_neurons.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/neurons/tests/test_reduced_neurons.py b/brainpy/version2/dynold/neurons/tests/test_reduced_neurons.py index 84c2edd72..9fd34dc38 100644 --- a/brainpy/version2/dynold/neurons/tests/test_reduced_neurons.py +++ b/brainpy/version2/dynold/neurons/tests/test_reduced_neurons.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synapses/__init__.py b/brainpy/version2/dynold/synapses/__init__.py index 01fd3605f..e4ce8aebf 100644 --- a/brainpy/version2/dynold/synapses/__init__.py +++ b/brainpy/version2/dynold/synapses/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .abstract_models import * from .base import * from .biological_models import * diff --git a/brainpy/version2/dynold/synapses/abstract_models.py b/brainpy/version2/dynold/synapses/abstract_models.py index dc368a83f..4b6d73777 100644 --- a/brainpy/version2/dynold/synapses/abstract_models.py +++ b/brainpy/version2/dynold/synapses/abstract_models.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Callable, Optional import jax diff --git a/brainpy/version2/dynold/synapses/base.py b/brainpy/version2/dynold/synapses/base.py index b8d47d4dc..8da0a2d7b 100644 --- a/brainpy/version2/dynold/synapses/base.py +++ b/brainpy/version2/dynold/synapses/base.py @@ -1,8 +1,24 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Union, Dict, Callable, Optional, Tuple import jax +from brainpy._errors import UnsupportedError +from brainpy.mixin import (ParamDesc, JointType, SupportAutoDelay, BindCondData, ReturnInfo) from brainpy.version2 import math as bm from brainpy.version2.connect import TwoEndConnector, One2One, All2All from brainpy.version2.dnn import linear @@ -10,8 +26,6 @@ from brainpy.version2.dyn.projections.conn import SynConn from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.initialize import parameter -from brainpy.version2.mixin import (ParamDesc, JointType, SupportAutoDelay, BindCondData, ReturnInfo) -from brainpy._errors import UnsupportedError from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dynold/synapses/biological_models.py b/brainpy/version2/dynold/synapses/biological_models.py index 3fefa4956..d0d162971 100644 --- a/brainpy/version2/dynold/synapses/biological_models.py +++ b/brainpy/version2/dynold/synapses/biological_models.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Callable, Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/dynold/synapses/compat.py b/brainpy/version2/dynold/synapses/compat.py index afe46f48e..293032861 100644 --- a/brainpy/version2/dynold/synapses/compat.py +++ b/brainpy/version2/dynold/synapses/compat.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Union, Dict, Callable diff --git a/brainpy/version2/dynold/synapses/gap_junction.py b/brainpy/version2/dynold/synapses/gap_junction.py index 9b28626f0..2d39420a8 100644 --- a/brainpy/version2/dynold/synapses/gap_junction.py +++ b/brainpy/version2/dynold/synapses/gap_junction.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Callable import brainpy.version2.math as bm diff --git a/brainpy/version2/dynold/synapses/learning_rules.py b/brainpy/version2/dynold/synapses/learning_rules.py index 6ad86de21..9b8adbdf5 100644 --- a/brainpy/version2/dynold/synapses/learning_rules.py +++ b/brainpy/version2/dynold/synapses/learning_rules.py @@ -1,7 +1,21 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Callable, Optional +from brainpy.mixin import ParamDesc from brainpy.version2.connect import TwoEndConnector from brainpy.version2.dyn import synapses from brainpy.version2.dyn.base import NeuDyn @@ -9,7 +23,6 @@ from brainpy.version2.dynold.synouts import CUBA from brainpy.version2.dynsys import Sequential from brainpy.version2.initialize import Initializer -from brainpy.version2.mixin import ParamDesc from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dynold/synapses/tests/test_abstract_synapses.py b/brainpy/version2/dynold/synapses/tests/test_abstract_synapses.py index ce87f6dc6..c6b079b53 100644 --- a/brainpy/version2/dynold/synapses/tests/test_abstract_synapses.py +++ b/brainpy/version2/dynold/synapses/tests/test_abstract_synapses.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synapses/tests/test_biological_synapses.py b/brainpy/version2/dynold/synapses/tests/test_biological_synapses.py index 4bd3d562e..c2ebe56fd 100644 --- a/brainpy/version2/dynold/synapses/tests/test_biological_synapses.py +++ b/brainpy/version2/dynold/synapses/tests/test_biological_synapses.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synapses/tests/test_dynold_base_synapse.py b/brainpy/version2/dynold/synapses/tests/test_dynold_base_synapse.py index a659a6ef2..09a0a0f88 100644 --- a/brainpy/version2/dynold/synapses/tests/test_dynold_base_synapse.py +++ b/brainpy/version2/dynold/synapses/tests/test_dynold_base_synapse.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synapses/tests/test_gap_junction.py b/brainpy/version2/dynold/synapses/tests/test_gap_junction.py index e45bafe7a..8c1c36da3 100644 --- a/brainpy/version2/dynold/synapses/tests/test_gap_junction.py +++ b/brainpy/version2/dynold/synapses/tests/test_gap_junction.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synapses/tests/test_learning_rule.py b/brainpy/version2/dynold/synapses/tests/test_learning_rule.py index 6bcc74716..109e24357 100644 --- a/brainpy/version2/dynold/synapses/tests/test_learning_rule.py +++ b/brainpy/version2/dynold/synapses/tests/test_learning_rule.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import parameterized import brainpy.version2 as bp diff --git a/brainpy/version2/dynold/synouts/__init__.py b/brainpy/version2/dynold/synouts/__init__.py index aefc8c28d..bb9ce88a7 100644 --- a/brainpy/version2/dynold/synouts/__init__.py +++ b/brainpy/version2/dynold/synouts/__init__.py @@ -1,4 +1,17 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .conductances import * from .ions import * diff --git a/brainpy/version2/dynold/synouts/conductances.py b/brainpy/version2/dynold/synouts/conductances.py index c58c6978f..ae2de2db3 100644 --- a/brainpy/version2/dynold/synouts/conductances.py +++ b/brainpy/version2/dynold/synouts/conductances.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional from brainpy.version2.dynold.synapses.base import _SynOut diff --git a/brainpy/version2/dynold/synouts/ions.py b/brainpy/version2/dynold/synouts/ions.py index 6b7d73779..57e64f3af 100644 --- a/brainpy/version2/dynold/synouts/ions.py +++ b/brainpy/version2/dynold/synouts/ions.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional import jax.numpy as jnp diff --git a/brainpy/version2/dynold/synplast/__init__.py b/brainpy/version2/dynold/synplast/__init__.py index 2e9853f03..2fcd4f61d 100644 --- a/brainpy/version2/dynold/synplast/__init__.py +++ b/brainpy/version2/dynold/synplast/__init__.py @@ -1,3 +1,16 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .short_term_plasticity import * diff --git a/brainpy/version2/dynold/synplast/short_term_plasticity.py b/brainpy/version2/dynold/synplast/short_term_plasticity.py index 98d6a413e..681ec3a45 100644 --- a/brainpy/version2/dynold/synplast/short_term_plasticity.py +++ b/brainpy/version2/dynold/synplast/short_term_plasticity.py @@ -1,14 +1,27 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union import jax.numpy as jnp +from brainpy.version2.check import is_float from brainpy.version2.context import share from brainpy.version2.dynold.synapses.base import _SynSTP from brainpy.version2.initialize import variable from brainpy.version2.integrators import odeint, JointEq -from brainpy.version2.check import is_float from brainpy.version2.types import ArrayType __all__ = [ diff --git a/brainpy/version2/dynsys.py b/brainpy/version2/dynsys.py index 756ac8264..7b233516b 100644 --- a/brainpy/version2/dynsys.py +++ b/brainpy/version2/dynsys.py @@ -1,19 +1,34 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import collections import inspect import numbers import warnings from typing import Union, Dict, Callable, Sequence, Optional, Any +import jax import numpy as np from brainpy._errors import NoImplementationError, UnsupportedError +from brainpy.mixin import SupportAutoDelay, Container, SupportInputProj, _get_delay_tool, MixIn from brainpy.version2 import tools, math as bm from brainpy.version2.context import share from brainpy.version2.deprecations import _update_deprecate_msg from brainpy.version2.initialize import parameter, variable_ -from brainpy.version2.mixin import SupportAutoDelay, Container, SupportInputProj, DelayRegister, _get_delay_tool +from brainpy.version2.math.object_transform.naming import get_unique_name from brainpy.version2.types import ArrayType, Shape __all__ = [ @@ -34,6 +49,96 @@ reset_state = None +class DelayRegister(MixIn): + + def register_delay( + self, + identifier: str, + delay_step: Optional[Union[int, ArrayType, Callable]], + delay_target: bm.Variable, + initial_delay_data: Union[Callable, ArrayType, numbers.Number] = None, + ): + """Register delay variable. + + Args: + identifier: str. The delay access name. + delay_target: The target variable for delay. + delay_step: The delay time step. + initial_delay_data: The initializer for the delay data. + + Returns: + delay_pos: The position of the delay. + """ + _delay_identifier, _init_delay_by_return = _get_delay_tool() + assert isinstance(self, DynamicalSystem), f'self must be an instance of {DynamicalSystem.__name__}' + _delay_identifier = _delay_identifier + identifier + if not self.has_aft_update(_delay_identifier): + self.add_aft_update(_delay_identifier, _init_delay_by_return(delay_target, initial_delay_data)) + delay_cls = self.get_aft_update(_delay_identifier) + name = get_unique_name('delay') + delay_cls.register_entry(name, delay_step) + return name + + def get_delay_data( + self, + identifier: str, + delay_pos: str, + *indices: Union[int, slice, bm.Array, jax.Array], + ): + """Get delay data according to the provided delay steps. + + Parameters:: + + identifier: str + The delay variable name. + delay_pos: str + The delay length. + indices: optional, int, slice, ArrayType + The indices of the delay. + + Returns:: + + delay_data: ArrayType + The delay data at the given time. + """ + _delay_identifier, _init_delay_by_return = _get_delay_tool() + _delay_identifier = _delay_identifier + identifier + delay_cls = self.get_aft_update(_delay_identifier) + return delay_cls.at(delay_pos, *indices) + + def update_local_delays(self, nodes: Union[Sequence, Dict] = None): + """Update local delay variables. + + This function should be called after updating neuron groups or delay sources. + For example, in a network model, + + + Parameters:: + + nodes: sequence, dict + The nodes to update their delay variables. + """ + warnings.warn('.update_local_delays() has been removed since brainpy>=2.4.6', + DeprecationWarning) + + def reset_local_delays(self, nodes: Union[Sequence, Dict] = None): + """Reset local delay variables. + + Parameters:: + + nodes: sequence, dict + The nodes to Reset their delay variables. + """ + warnings.warn('.reset_local_delays() has been removed since brainpy>=2.4.6', + DeprecationWarning) + + def get_delay_var(self, name): + _delay_identifier, _init_delay_by_return = _get_delay_tool() + _delay_identifier = _delay_identifier + name + delay_cls = self.get_aft_update(_delay_identifier) + return delay_cls + + def not_implemented(fun): def new_fun(*args, **kwargs): return fun(*args, **kwargs) diff --git a/brainpy/version2/encoding/__init__.py b/brainpy/version2/encoding/__init__.py index 1b67bbc87..6ddaf5962 100644 --- a/brainpy/version2/encoding/__init__.py +++ b/brainpy/version2/encoding/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .stateful_encoding import * from .stateless_encoding import * diff --git a/brainpy/version2/encoding/base.py b/brainpy/version2/encoding/base.py index 316590a9d..92d7c5ac6 100644 --- a/brainpy/version2/encoding/base.py +++ b/brainpy/version2/encoding/base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2.math.object_transform.base import BrainPyObject __all__ = [ diff --git a/brainpy/version2/encoding/stateful_encoding.py b/brainpy/version2/encoding/stateful_encoding.py index f546a647a..cc3d069b5 100644 --- a/brainpy/version2/encoding/stateful_encoding.py +++ b/brainpy/version2/encoding/stateful_encoding.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Callable, Optional import numpy as np diff --git a/brainpy/version2/encoding/stateless_encoding.py b/brainpy/version2/encoding/stateless_encoding.py index a88e0df73..7576c21c9 100644 --- a/brainpy/version2/encoding/stateless_encoding.py +++ b/brainpy/version2/encoding/stateless_encoding.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional import brainpy.version2.math as bm diff --git a/brainpy/version2/encoding/tests/test_stateless_encoding.py b/brainpy/version2/encoding/tests/test_stateless_encoding.py index 7324e1f41..ec5f74e47 100644 --- a/brainpy/version2/encoding/tests/test_stateless_encoding.py +++ b/brainpy/version2/encoding/tests/test_stateless_encoding.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/experimental.py b/brainpy/version2/experimental.py index 25d39e6c5..0f552124c 100644 --- a/brainpy/version2/experimental.py +++ b/brainpy/version2/experimental.py @@ -1,11 +1,17 @@ -from brainpy.version2.dynold.experimental.syn_plasticity import ( - STD as STD, - STP as STP, -) -from brainpy.version2.dynold.experimental.syn_outs import ( - CUBA as CUBA, - COBA as COBA, -) +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2.dynold.experimental.abstract_synapses import ( Exponential, DualExponential, @@ -14,7 +20,14 @@ from brainpy.version2.dynold.experimental.others import ( PoissonInput, ) - +from brainpy.version2.dynold.experimental.syn_outs import ( + CUBA as CUBA, + COBA as COBA, +) +from brainpy.version2.dynold.experimental.syn_plasticity import ( + STD as STD, + STP as STP, +) if __name__ == '__main__': STD diff --git a/brainpy/version2/helpers.py b/brainpy/version2/helpers.py index 625e2ae7a..11ff11a6a 100644 --- a/brainpy/version2/helpers.py +++ b/brainpy/version2/helpers.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Callable from brainpy.version2 import dynsys diff --git a/brainpy/version2/initialize/__init__.py b/brainpy/version2/initialize/__init__.py index 75dc0793d..e594dc043 100644 --- a/brainpy/version2/initialize/__init__.py +++ b/brainpy/version2/initialize/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import * from .decay_inits import * from .generic import * diff --git a/brainpy/version2/initialize/base.py b/brainpy/version2/initialize/base.py index 77ae21723..96dde4017 100644 --- a/brainpy/version2/initialize/base.py +++ b/brainpy/version2/initialize/base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import abc __all__ = [ diff --git a/brainpy/version2/initialize/decay_inits.py b/brainpy/version2/initialize/decay_inits.py index 81183f50f..78ff3c2cd 100644 --- a/brainpy/version2/initialize/decay_inits.py +++ b/brainpy/version2/initialize/decay_inits.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import partial import numpy as np diff --git a/brainpy/version2/initialize/generic.py b/brainpy/version2/initialize/generic.py index a5249990e..8be56da94 100644 --- a/brainpy/version2/initialize/generic.py +++ b/brainpy/version2/initialize/generic.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Optional, Sequence import jax diff --git a/brainpy/version2/initialize/others.py b/brainpy/version2/initialize/others.py index ce2378ffb..4d038bc3c 100644 --- a/brainpy/version2/initialize/others.py +++ b/brainpy/version2/initialize/others.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Callable import brainpy.version2.math as bm diff --git a/brainpy/version2/initialize/random_inits.py b/brainpy/version2/initialize/random_inits.py index a32ab5669..975207c8a 100644 --- a/brainpy/version2/initialize/random_inits.py +++ b/brainpy/version2/initialize/random_inits.py @@ -1,12 +1,25 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import math import jax.numpy as jnp import numpy as np -from brainpy.version2 import tools from brainpy.version2 import math as bm +from brainpy.version2 import tools from .base import _InterLayerInitializer __all__ = [ diff --git a/brainpy/version2/initialize/regular_inits.py b/brainpy/version2/initialize/regular_inits.py index 6a3ebd03f..cd2936bf2 100644 --- a/brainpy/version2/initialize/regular_inits.py +++ b/brainpy/version2/initialize/regular_inits.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2 import math as bm, tools from .base import _InterLayerInitializer diff --git a/brainpy/version2/initialize/tests/test_decay_inits.py b/brainpy/version2/initialize/tests/test_decay_inits.py index 58644861b..2db9d5dbd 100644 --- a/brainpy/version2/initialize/tests/test_decay_inits.py +++ b/brainpy/version2/initialize/tests/test_decay_inits.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib diff --git a/brainpy/version2/initialize/tests/test_random_inits.py b/brainpy/version2/initialize/tests/test_random_inits.py index d86ddd1a5..d0797cf3c 100644 --- a/brainpy/version2/initialize/tests/test_random_inits.py +++ b/brainpy/version2/initialize/tests/test_random_inits.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/initialize/tests/test_regular_inits.py b/brainpy/version2/initialize/tests/test_regular_inits.py index 8c122a3e1..867b9a2fd 100644 --- a/brainpy/version2/initialize/tests/test_regular_inits.py +++ b/brainpy/version2/initialize/tests/test_regular_inits.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax diff --git a/brainpy/version2/inputs/__init__.py b/brainpy/version2/inputs/__init__.py index e37615905..b5ac7ebfc 100644 --- a/brainpy/version2/inputs/__init__.py +++ b/brainpy/version2/inputs/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides various methods to form current inputs. You can access them through ``brainpy.version2.inputs.XXX``. diff --git a/brainpy/version2/inputs/currents.py b/brainpy/version2/inputs/currents.py index 8726f33fd..dbc554397 100644 --- a/brainpy/version2/inputs/currents.py +++ b/brainpy/version2/inputs/currents.py @@ -1,13 +1,23 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings -import jax.numpy as jnp -import numpy as np +import braintools -from brainpy.version2 import math as bm -from brainpy.version2.check import is_float, is_integer +import brainstate __all__ = [ 'section_input', @@ -29,8 +39,7 @@ def section_input(values, durations, dt=None, return_length=False): If you want to get an input where the size is 0 bwteen 0-100 ms, and the size is 1. between 100-200 ms. - >>> section_input(values=[0, 1], - >>> durations=[100, 100]) + >>> section_input(values=[0, 1], durations=[100, 100]) Parameters:: @@ -47,32 +56,8 @@ def section_input(values, durations, dt=None, return_length=False): current_and_duration """ - if len(durations) != len(values): - raise ValueError(f'"values" and "durations" must be the same length, while ' - f'we got {len(values)} != {len(durations)}.') - - dt = bm.get_dt() if dt is None else dt - - # get input current shape, and duration - I_duration = sum(durations) - I_shape = () - for val in values: - shape = jnp.shape(val) - if len(shape) > len(I_shape): - I_shape = shape - - # get the current - start = 0 - I_current = bm.zeros((int(np.ceil(I_duration / dt)),) + I_shape) - for c_size, duration in zip(values, durations): - length = int(duration / dt) - I_current[start: start + length] = c_size - start += length - - if return_length: - return I_current, I_duration - else: - return I_current + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.section(values, durations, return_length=return_length) def constant_input(I_and_duration, dt=None): @@ -100,25 +85,8 @@ def constant_input(I_and_duration, dt=None): current_and_duration : tuple (The formatted current, total duration) """ - dt = bm.get_dt() if dt is None else dt - - # get input current dimension, shape, and duration - I_duration = 0. - I_shape = () - for I in I_and_duration: - I_duration += I[1] - shape = jnp.shape(I[0]) - if len(shape) > len(I_shape): - I_shape = shape - - # get the current - start = 0 - I_current = bm.zeros((int(np.ceil(I_duration / dt)),) + I_shape) - for c_size, duration in I_and_duration: - length = int(duration / dt) - I_current[start: start + length] = c_size - start += length - return I_current, I_duration + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.constant(I_and_duration) def constant_current(*args, **kwargs): @@ -165,19 +133,8 @@ def spike_input(sp_times, sp_lens, sp_sizes, duration, dt=None): current : bm.ndarray The formatted input current. """ - dt = bm.get_dt() if dt is None else dt - assert isinstance(sp_times, (list, tuple)) - if isinstance(sp_lens, (float, int)): - sp_lens = [sp_lens] * len(sp_times) - if isinstance(sp_sizes, (float, int)): - sp_sizes = [sp_sizes] * len(sp_times) - - current = bm.zeros(int(np.ceil(duration / dt))) - for time, dur, size in zip(sp_times, sp_lens, sp_sizes): - pp = int(time / dt) - p_len = int(dur / dt) - current[pp: pp + p_len] = size - return current + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.spike(sp_times, sp_lens, sp_sizes, duration) def spike_current(*args, **kwargs): @@ -215,15 +172,8 @@ def ramp_input(c_start, c_end, duration, t_start=0, t_end=None, dt=None): current : bm.ndarray The formatted current """ - dt = bm.get_dt() if dt is None else dt - t_end = duration if t_end is None else t_end - - current = bm.zeros(int(np.ceil(duration / dt))) - p1 = int(np.ceil(t_start / dt)) - p2 = int(np.ceil(t_end / dt)) - cc = jnp.array(jnp.linspace(c_start, c_end, p2 - p1)) - current[p1: p2] = cc - return current + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.ramp(c_start, c_end, duration, t_start, t_end) def ramp_current(*args, **kwargs): @@ -257,17 +207,8 @@ def wiener_process(duration, dt=None, n=1, t_start=0., t_end=None, seed=None): seed: int The noise seed. """ - dt = bm.get_dt() if dt is None else dt - is_float(dt, 'dt', allow_none=False, min_bound=0.) - is_integer(n, 'n', allow_none=False, min_bound=0) - rng = bm.random.default_rng(seed) - t_end = duration if t_end is None else t_end - i_start = int(t_start / dt) - i_end = int(t_end / dt) - noises = rng.standard_normal((i_end - i_start, n)) * jnp.sqrt(dt) - currents = bm.zeros((int(duration / dt), n)) - currents[i_start: i_end] = noises - return currents + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.wiener_process(duration, sigma=1.0, n=n, t_start=t_start, t_end=t_end, seed=seed) def ou_process(mean, sigma, tau, duration, dt=None, n=1, t_start=0., t_end=None, seed=None): @@ -298,25 +239,8 @@ def ou_process(mean, sigma, tau, duration, dt=None, n=1, t_start=0., t_end=None, seed: optional, int The random seed. """ - dt = bm.get_dt() if dt is None else dt - dt_sqrt = jnp.sqrt(dt) - is_float(dt, 'dt', allow_none=False, min_bound=0.) - is_integer(n, 'n', allow_none=False, min_bound=0) - rng = bm.random.default_rng(seed) - x = bm.Variable(jnp.ones(n) * mean) - - def _f(t): - x.value = x + dt * ((mean - x) / tau) + sigma * dt_sqrt * rng.randn(n) - return x.value - - noises = bm.for_loop(_f, jnp.arange(t_start, t_end, dt)) - - t_end = duration if t_end is None else t_end - i_start = int(t_start / dt) - i_end = int(t_end / dt) - currents = bm.zeros((int(duration / dt), n)) - currents[i_start: i_end] = noises - return currents + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.ou_process(mean, sigma, tau, duration, n=n, t_start=t_start, t_end=t_end, seed=seed) def sinusoidal_input(amplitude, frequency, duration, dt=None, t_start=0., t_end=None, bias=False): @@ -340,45 +264,8 @@ def sinusoidal_input(amplitude, frequency, duration, dt=None, t_start=0., t_end= Whether the sinusoid oscillates around 0 (False), or has a positive DC bias, thus non-negative (True). """ - dt = bm.get_dt() if dt is None else dt - is_float(dt, 'dt', allow_none=False, min_bound=0.) - if t_end is None: - t_end = duration - times = jnp.arange(0, t_end - t_start, dt) - start_i = int(t_start / dt) - end_i = int(t_end / dt) - sin_inputs = amplitude * jnp.sin(2 * jnp.pi * times * (frequency / 1000.0)) - if bias: sin_inputs += amplitude - currents = bm.zeros(int(duration / dt)) - currents[start_i:end_i] = sin_inputs - return currents - - -def _square(t, duty=0.5): - t, w = np.asarray(t), np.asarray(duty) - w = np.asarray(w + (t - t)) - t = np.asarray(t + (w - w)) - if t.dtype.char in 'fFdD': - ytype = t.dtype.char - else: - ytype = 'd' - - y = np.zeros(t.shape, ytype) - - # width must be between 0 and 1 inclusive - mask1 = (w > 1) | (w < 0) - np.place(y, mask1, np.nan) - - # on the interval 0 to duty*2*pi function is 1 - tmod = np.mod(t, 2 * np.pi) - mask2 = (1 - mask1) & (tmod < w * 2 * np.pi) - np.place(y, mask2, 1) - - # on the interval duty*2*pi to 2*pi function is - # (pi*(w+1)-tmod) / (pi*(1-w)) - mask3 = (1 - mask1) & (1 - mask2) - np.place(y, mask3, -1) - return y + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.sinusoidal(amplitude, frequency, duration, t_start=t_start, t_end=t_end, bias=bias) def square_input(amplitude, frequency, duration, dt=None, bias=False, t_start=0., t_end=None): @@ -402,14 +289,5 @@ def square_input(amplitude, frequency, duration, dt=None, bias=False, t_start=0. Whether the sinusoid oscillates around 0 (False), or has a positive DC bias, thus non-negative (True). """ - dt = bm.get_dt() if dt is None else dt - is_float(dt, 'dt', allow_none=False, min_bound=0.) - if t_end is None: t_end = duration - times = np.arange(0, t_end - t_start, dt) - sin_inputs = amplitude * _square(2 * np.pi * times * (frequency / 1000.0)) - if bias: sin_inputs += amplitude - currents = bm.zeros(int(duration / dt)) - start_i = int(t_start / dt) - end_i = int(t_end / dt) - currents[start_i:end_i] = bm.asarray(sin_inputs) - return currents + with brainstate.environ.context(dt=dt or brainstate.environ.get_dt()): + return braintools.input.square(amplitude, frequency, duration, t_start=t_start, t_end=t_end, duty_cycle=0.5, bias=bias) diff --git a/brainpy/version2/inputs/tests/test_currents.py b/brainpy/version2/inputs/tests/test_currents.py index 0335e882d..e082bacb3 100644 --- a/brainpy/version2/inputs/tests/test_currents.py +++ b/brainpy/version2/inputs/tests/test_currents.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from unittest import TestCase import numpy as np diff --git a/brainpy/version2/integrators/__init__.py b/brainpy/version2/integrators/__init__.py index 4df1514fe..377eb8d20 100644 --- a/brainpy/version2/integrators/__init__.py +++ b/brainpy/version2/integrators/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides numerical solvers for various differential equations, including: diff --git a/brainpy/version2/integrators/base.py b/brainpy/version2/integrators/base.py index ce6d70db6..4d30b43d2 100644 --- a/brainpy/version2/integrators/base.py +++ b/brainpy/version2/integrators/base.py @@ -1,15 +1,27 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from contextlib import contextmanager from typing import Dict, Sequence, Union, Callable import jax +from brainpy._errors import DiffEqError +from brainpy.version2.check import is_float, is_dict_data from brainpy.version2.math import TimeDelay, LengthDelay from brainpy.version2.math.object_transform.base import BrainPyObject -from brainpy.version2.check import is_float, is_dict_data -from brainpy._errors import DiffEqError from ._jaxpr_to_source_code import jaxpr_to_python_code from .constants import DT diff --git a/brainpy/version2/integrators/constants.py b/brainpy/version2/integrators/constants.py index 679d76be2..13ddf8956 100644 --- a/brainpy/version2/integrators/constants.py +++ b/brainpy/version2/integrators/constants.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== # import brainpy.version2.math as bm from brainpy.version2.math.object_transform import naming diff --git a/brainpy/version2/integrators/fde/Caputo.py b/brainpy/version2/integrators/fde/Caputo.py index 7179cd1ad..312d7936b 100644 --- a/brainpy/version2/integrators/fde/Caputo.py +++ b/brainpy/version2/integrators/fde/Caputo.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides numerical methods for integrating Caputo fractional derivative equations. @@ -11,10 +24,10 @@ from scipy.special import gamma, rgamma import brainpy.version2.math as bm +from brainpy._errors import UnsupportedError from brainpy.version2 import check from brainpy.version2.integrators.constants import DT from brainpy.version2.integrators.utils import check_inits, format_args -from brainpy._errors import UnsupportedError from brainpy.version2.types import ArrayType from .base import FDEIntegrator from .generic import register_fde_integrator diff --git a/brainpy/version2/integrators/fde/GL.py b/brainpy/version2/integrators/fde/GL.py index d1e355337..cdd9872bc 100644 --- a/brainpy/version2/integrators/fde/GL.py +++ b/brainpy/version2/integrators/fde/GL.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides numerical solvers for Grünwald–Letnikov derivative FDEs. """ @@ -9,9 +22,9 @@ import jax import brainpy.version2.math as bm +from brainpy._errors import UnsupportedError from brainpy.version2.integrators.constants import DT from brainpy.version2.integrators.utils import check_inits, format_args -from brainpy._errors import UnsupportedError from .base import FDEIntegrator from .generic import register_fde_integrator diff --git a/brainpy/version2/integrators/fde/__init__.py b/brainpy/version2/integrators/fde/__init__.py index 2ac3f88cd..528748a40 100644 --- a/brainpy/version2/integrators/fde/__init__.py +++ b/brainpy/version2/integrators/fde/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .Caputo import * from .GL import * from .base import * diff --git a/brainpy/version2/integrators/fde/base.py b/brainpy/version2/integrators/fde/base.py index e69aedf8c..6e438c0c8 100644 --- a/brainpy/version2/integrators/fde/base.py +++ b/brainpy/version2/integrators/fde/base.py @@ -1,14 +1,27 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Dict import jax.numpy as jnp import brainpy.version2.math as bm +from brainpy._errors import UnsupportedError +from brainpy.version2.check import is_integer from brainpy.version2.integrators.base import Integrator from brainpy.version2.integrators.utils import get_args -from brainpy.version2.check import is_integer -from brainpy._errors import UnsupportedError __all__ = [ 'FDEIntegrator' diff --git a/brainpy/version2/integrators/fde/generic.py b/brainpy/version2/integrators/fde/generic.py index 94c577326..5a349f82a 100644 --- a/brainpy/version2/integrators/fde/generic.py +++ b/brainpy/version2/integrators/fde/generic.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .base import FDEIntegrator __all__ = [ diff --git a/brainpy/version2/integrators/fde/tests/test_Caputo.py b/brainpy/version2/integrators/fde/tests/test_Caputo.py index 45a0c7064..bb88473fc 100644 --- a/brainpy/version2/integrators/fde/tests/test_Caputo.py +++ b/brainpy/version2/integrators/fde/tests/test_Caputo.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import numpy as np diff --git a/brainpy/version2/integrators/fde/tests/test_GL.py b/brainpy/version2/integrators/fde/tests/test_GL.py index 9ba6d9f3a..e278fa578 100644 --- a/brainpy/version2/integrators/fde/tests/test_GL.py +++ b/brainpy/version2/integrators/fde/tests/test_GL.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/joint_eq.py b/brainpy/version2/integrators/joint_eq.py index 7e479655e..47a241d60 100644 --- a/brainpy/version2/integrators/joint_eq.py +++ b/brainpy/version2/integrators/joint_eq.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect from brainpy._errors import DiffEqError diff --git a/brainpy/version2/integrators/ode/__init__.py b/brainpy/version2/integrators/ode/__init__.py index da4c5cef2..1285c13e4 100644 --- a/brainpy/version2/integrators/ode/__init__.py +++ b/brainpy/version2/integrators/ode/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ Numerical methods for ordinary differential equations (ODEs). """ diff --git a/brainpy/version2/integrators/ode/adaptive_rk.py b/brainpy/version2/integrators/ode/adaptive_rk.py index c291283c6..abca8110c 100644 --- a/brainpy/version2/integrators/ode/adaptive_rk.py +++ b/brainpy/version2/integrators/ode/adaptive_rk.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== r"""This module provides adaptive Runge-Kutta methods for ODEs. Adaptive methods are designed to produce an estimate of the local truncation @@ -55,7 +67,6 @@ import jax.numpy as jnp -from brainpy import _errors from brainpy.version2.integrators import constants as C, utils from brainpy.version2.integrators.ode import common from brainpy.version2.integrators.ode.base import ODEIntegrator diff --git a/brainpy/version2/integrators/ode/base.py b/brainpy/version2/integrators/ode/base.py index 79f357a6b..b68a5aab6 100644 --- a/brainpy/version2/integrators/ode/base.py +++ b/brainpy/version2/integrators/ode/base.py @@ -1,14 +1,26 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Callable, Union +from brainpy._errors import DiffEqError, CodeError from brainpy.version2 import math as bm +from brainpy.version2.check import is_dict_data from brainpy.version2.integrators import constants, utils from brainpy.version2.integrators.base import Integrator from brainpy.version2.integrators.constants import DT -from brainpy.version2.check import is_dict_data -from brainpy._errors import DiffEqError, CodeError __all__ = [ 'ODEIntegrator', diff --git a/brainpy/version2/integrators/ode/common.py b/brainpy/version2/integrators/ode/common.py index 449f23b32..428bc6c87 100644 --- a/brainpy/version2/integrators/ode/common.py +++ b/brainpy/version2/integrators/ode/common.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== def step(vars, dt_var, A, C, code_lines, other_args): # steps for si, sval in enumerate(A): diff --git a/brainpy/version2/integrators/ode/explicit_rk.py b/brainpy/version2/integrators/ode/explicit_rk.py index 7f8f4d9bc..2933b3242 100644 --- a/brainpy/version2/integrators/ode/explicit_rk.py +++ b/brainpy/version2/integrators/ode/explicit_rk.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== r"""This module provides explicit Runge-Kutta methods for ODEs. Given an initial value problem specified as: diff --git a/brainpy/version2/integrators/ode/exponential.py b/brainpy/version2/integrators/ode/exponential.py index 825a31360..d43bb06b3 100644 --- a/brainpy/version2/integrators/ode/exponential.py +++ b/brainpy/version2/integrators/ode/exponential.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== r"""This module provides exponential integrators for ODEs. Exponential integrators are a large class of methods from numerical analysis is based on diff --git a/brainpy/version2/integrators/ode/generic.py b/brainpy/version2/integrators/ode/generic.py index 7c9d66784..97a6a5900 100644 --- a/brainpy/version2/integrators/ode/generic.py +++ b/brainpy/version2/integrators/ode/generic.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict from brainpy.version2.math.delayvars import AbstractDelay, NeuTimeDelay diff --git a/brainpy/version2/integrators/ode/tests/test_delay_ode.py b/brainpy/version2/integrators/ode/tests/test_delay_ode.py index 4e50eace7..67b2379f0 100644 --- a/brainpy/version2/integrators/ode/tests/test_delay_ode.py +++ b/brainpy/version2/integrators/ode/tests/test_delay_ode.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp from absl.testing import parameterized diff --git a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_adaptive_rk.py b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_adaptive_rk.py index 5ab2acb75..96abfdab6 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_adaptive_rk.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_adaptive_rk.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import pytest diff --git a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_exp_euler.py b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_exp_euler.py index e3421a6b2..b3ebbd179 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_exp_euler.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_exp_euler.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import numpy as np diff --git a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_general_rk.py b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_general_rk.py index 9e78be288..3f68e1f44 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_general_rk.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_keywords_for_general_rk.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import pytest diff --git a/brainpy/version2/integrators/ode/tests/test_ode_method_adaptive_rk.py b/brainpy/version2/integrators/ode/tests/test_ode_method_adaptive_rk.py index ef08e35c8..70e16286a 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_method_adaptive_rk.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_method_adaptive_rk.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/ode/tests/test_ode_method_exp_euler.py b/brainpy/version2/integrators/ode/tests/test_ode_method_exp_euler.py index dbe81eea8..b0671488b 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_method_exp_euler.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_method_exp_euler.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/ode/tests/test_ode_method_rk.py b/brainpy/version2/integrators/ode/tests/test_ode_method_rk.py index 5061f6d2b..73d01d145 100644 --- a/brainpy/version2/integrators/ode/tests/test_ode_method_rk.py +++ b/brainpy/version2/integrators/ode/tests/test_ode_method_rk.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax diff --git a/brainpy/version2/integrators/pde/__init__.py b/brainpy/version2/integrators/pde/__init__.py index 40a96afc6..6ca5623cc 100644 --- a/brainpy/version2/integrators/pde/__init__.py +++ b/brainpy/version2/integrators/pde/__init__.py @@ -1 +1,15 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== \ No newline at end of file diff --git a/brainpy/version2/integrators/pde/base.py b/brainpy/version2/integrators/pde/base.py index 72ae4c602..ebea7030e 100644 --- a/brainpy/version2/integrators/pde/base.py +++ b/brainpy/version2/integrators/pde/base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from ..base import Integrator diff --git a/brainpy/version2/integrators/runner.py b/brainpy/version2/integrators/runner.py index 22da22a86..e5ec2b022 100644 --- a/brainpy/version2/integrators/runner.py +++ b/brainpy/version2/integrators/runner.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import time import warnings from functools import partial @@ -11,10 +24,10 @@ import tqdm.auto from jax.tree_util import tree_flatten +from brainpy._errors import RunningError from brainpy.version2 import math as bm from brainpy.version2.math.object_transform.base import Collector from brainpy.version2.running.runner import Runner -from brainpy._errors import RunningError from .base import Integrator __all__ = [ diff --git a/brainpy/version2/integrators/sde/__init__.py b/brainpy/version2/integrators/sde/__init__.py index 98c9f7600..1ef3ec282 100644 --- a/brainpy/version2/integrators/sde/__init__.py +++ b/brainpy/version2/integrators/sde/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ Numerical methods for stochastic differential equations. """ diff --git a/brainpy/version2/integrators/sde/base.py b/brainpy/version2/integrators/sde/base.py index 91de93626..9feecaefe 100644 --- a/brainpy/version2/integrators/sde/base.py +++ b/brainpy/version2/integrators/sde/base.py @@ -1,10 +1,22 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Callable import jax.numpy as jnp -from brainpy import _errors from brainpy.version2 import math as bm from brainpy.version2.integrators import constants, utils from brainpy.version2.integrators.base import Integrator diff --git a/brainpy/version2/integrators/sde/generic.py b/brainpy/version2/integrators/sde/generic.py index 6a45d123e..8e828f1d1 100644 --- a/brainpy/version2/integrators/sde/generic.py +++ b/brainpy/version2/integrators/sde/generic.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Union import brainpy.version2.math as bm diff --git a/brainpy/version2/integrators/sde/normal.py b/brainpy/version2/integrators/sde/normal.py index 81add4ff8..69c5e4f9f 100644 --- a/brainpy/version2/integrators/sde/normal.py +++ b/brainpy/version2/integrators/sde/normal.py @@ -1,10 +1,22 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Dict, Sequence import jax.numpy as jnp -from brainpy import _errors from brainpy.version2 import math as bm from brainpy.version2.integrators import constants, utils, joint_eq from brainpy.version2.integrators.constants import DT diff --git a/brainpy/version2/integrators/sde/srk_scalar.py b/brainpy/version2/integrators/sde/srk_scalar.py index 254637be6..a724dc53c 100644 --- a/brainpy/version2/integrators/sde/srk_scalar.py +++ b/brainpy/version2/integrators/sde/srk_scalar.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2.integrators import constants, utils from brainpy.version2.integrators.sde.base import SDEIntegrator from .generic import register_sde_integrator diff --git a/brainpy/version2/integrators/sde/srk_strong.py b/brainpy/version2/integrators/sde/srk_strong.py index 125fd8947..a23e526f4 100644 --- a/brainpy/version2/integrators/sde/srk_strong.py +++ b/brainpy/version2/integrators/sde/srk_strong.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from brainpy.version2 import math from brainpy.version2.integrators import constants, utils diff --git a/brainpy/version2/integrators/sde/tests/test_normal.py b/brainpy/version2/integrators/sde/tests/test_normal.py index 5727d598a..c113b718a 100644 --- a/brainpy/version2/integrators/sde/tests/test_normal.py +++ b/brainpy/version2/integrators/sde/tests/test_normal.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/sde/tests/test_sde_scalar.py b/brainpy/version2/integrators/sde/tests/test_sde_scalar.py index 1b54198c8..1ea3758bf 100644 --- a/brainpy/version2/integrators/sde/tests/test_sde_scalar.py +++ b/brainpy/version2/integrators/sde/tests/test_sde_scalar.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/tests/test_integ_runner.py b/brainpy/version2/integrators/tests/test_integ_runner.py index 4292ad9dc..4ec684060 100644 --- a/brainpy/version2/integrators/tests/test_integ_runner.py +++ b/brainpy/version2/integrators/tests/test_integ_runner.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from unittest import TestCase import matplotlib.pyplot as plt diff --git a/brainpy/version2/integrators/tests/test_joint_eq.py b/brainpy/version2/integrators/tests/test_joint_eq.py index 189f5ea23..5fef7c056 100644 --- a/brainpy/version2/integrators/tests/test_joint_eq.py +++ b/brainpy/version2/integrators/tests/test_joint_eq.py @@ -1,10 +1,23 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2.math as bm -from brainpy.version2.integrators.joint_eq import _get_args, JointEq from brainpy._errors import DiffEqError +from brainpy.version2.integrators.joint_eq import _get_args, JointEq class TestGetArgs(unittest.TestCase): diff --git a/brainpy/version2/integrators/tests/test_to_math_expr.py b/brainpy/version2/integrators/tests/test_to_math_expr.py index cd6099fbe..c1dd0e14a 100644 --- a/brainpy/version2/integrators/tests/test_to_math_expr.py +++ b/brainpy/version2/integrators/tests/test_to_math_expr.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/brainpy/version2/integrators/utils.py b/brainpy/version2/integrators/utils.py index 2720c7e84..0fe334b2c 100644 --- a/brainpy/version2/integrators/utils.py +++ b/brainpy/version2/integrators/utils.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect from pprint import pprint diff --git a/brainpy/version2/layers.py b/brainpy/version2/layers.py index 9f2776043..1a8433d1b 100644 --- a/brainpy/version2/layers.py +++ b/brainpy/version2/layers.py @@ -1,5 +1,17 @@ - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dnn`` module instead. """ diff --git a/brainpy/version2/losses/__init__.py b/brainpy/version2/losses/__init__.py index 0266acc4b..8b901e0b7 100644 --- a/brainpy/version2/losses/__init__.py +++ b/brainpy/version2/losses/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements several loss functions. """ diff --git a/brainpy/version2/losses/base.py b/brainpy/version2/losses/base.py index e1ea3900b..02de01302 100644 --- a/brainpy/version2/losses/base.py +++ b/brainpy/version2/losses/base.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional from brainpy.version2.dnn.base import Layer diff --git a/brainpy/version2/losses/comparison.py b/brainpy/version2/losses/comparison.py index 980daa8fa..d833a95fc 100644 --- a/brainpy/version2/losses/comparison.py +++ b/brainpy/version2/losses/comparison.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module implements several loss functions. """ diff --git a/brainpy/version2/losses/regularization.py b/brainpy/version2/losses/regularization.py index 8f340a03d..97f85ddbe 100644 --- a/brainpy/version2/losses/regularization.py +++ b/brainpy/version2/losses/regularization.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp from jax.tree_util import tree_flatten, tree_map diff --git a/brainpy/version2/losses/utils.py b/brainpy/version2/losses/utils.py index 52ad14bc5..c70e048e9 100644 --- a/brainpy/version2/losses/utils.py +++ b/brainpy/version2/losses/utils.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax from jax.tree_util import tree_flatten diff --git a/brainpy/version2/math/__init__.py b/brainpy/version2/math/__init__.py index ffb16fe00..3f7db0e33 100644 --- a/brainpy/version2/math/__init__.py +++ b/brainpy/version2/math/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ The ``math`` module for whole BrainPy ecosystem. This module provides basic mathematical operations, including: @@ -28,9 +40,10 @@ # the index update is the same way with the numpy # -import brainstate import braintools +import brainstate + random = brainstate.random surrogate = braintools.surrogate import jax.numpy as jnp diff --git a/brainpy/version2/math/_utils.py b/brainpy/version2/math/_utils.py index 932e22d05..3058d2add 100644 --- a/brainpy/version2/math/_utils.py +++ b/brainpy/version2/math/_utils.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools from typing import Callable diff --git a/brainpy/version2/math/activations.py b/brainpy/version2/math/activations.py index 0efbba4b2..f10998bed 100644 --- a/brainpy/version2/math/activations.py +++ b/brainpy/version2/math/activations.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== r"""This module provides commonly used activation functions. Activation functions are a critical part of the design of a neural network. @@ -19,8 +31,8 @@ import jax.scipy import numpy as np -from .ndarray import Array from brainstate.random import uniform +from .ndarray import Array __all__ = [ 'celu', diff --git a/brainpy/version2/math/compat_numpy.py b/brainpy/version2/math/compat_numpy.py index 535ca698d..0d003d761 100644 --- a/brainpy/version2/math/compat_numpy.py +++ b/brainpy/version2/math/compat_numpy.py @@ -1,8 +1,21 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax -import numpy as np import jax.numpy as jnp +import numpy as np from jax.tree_util import tree_flatten, tree_unflatten, tree_map from ._utils import _compatible_with_brainpy_array, _as_jax_array_ diff --git a/brainpy/version2/math/compat_pytorch.py b/brainpy/version2/math/compat_pytorch.py index 1175ebdae..1728f55f7 100644 --- a/brainpy/version2/math/compat_pytorch.py +++ b/brainpy/version2/math/compat_pytorch.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional, Sequence import jax diff --git a/brainpy/version2/math/compat_tensorflow.py b/brainpy/version2/math/compat_tensorflow.py index 87a2970c8..286e12b0a 100644 --- a/brainpy/version2/math/compat_tensorflow.py +++ b/brainpy/version2/math/compat_tensorflow.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Optional import jax.numpy as jnp diff --git a/brainpy/version2/math/datatypes.py b/brainpy/version2/math/datatypes.py index efa6004f6..cf21ff797 100644 --- a/brainpy/version2/math/datatypes.py +++ b/brainpy/version2/math/datatypes.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp __all__ = [ diff --git a/brainpy/version2/math/defaults.py b/brainpy/version2/math/defaults.py index dfb1ae37a..ff6cd545b 100644 --- a/brainpy/version2/math/defaults.py +++ b/brainpy/version2/math/defaults.py @@ -1,7 +1,21 @@ -import brainstate +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp from jax import config +import brainstate from .modes import NonBatchingMode from .scales import IdScaling diff --git a/brainpy/version2/math/delayvars.py b/brainpy/version2/math/delayvars.py index fc1d023b6..572345a0f 100644 --- a/brainpy/version2/math/delayvars.py +++ b/brainpy/version2/math/delayvars.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numbers from typing import Union, Callable @@ -8,9 +21,9 @@ from jax import vmap from jax.lax import stop_gradient +from brainpy._errors import UnsupportedError from brainpy.version2 import check from brainpy.version2.check import is_float, is_integer, jit_error -from brainpy._errors import UnsupportedError from .compat_numpy import broadcast_to, expand_dims, concatenate from .environment import get_dt, get_float from .interoperability import as_jax diff --git a/brainpy/version2/math/einops.py b/brainpy/version2/math/einops.py index 0d803ab09..b74eeb63e 100644 --- a/brainpy/version2/math/einops.py +++ b/brainpy/version2/math/einops.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools import itertools from collections import OrderedDict diff --git a/brainpy/version2/math/einops_parsing.py b/brainpy/version2/math/einops_parsing.py index 20a358f81..f8ca63cae 100644 --- a/brainpy/version2/math/einops_parsing.py +++ b/brainpy/version2/math/einops_parsing.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import keyword import warnings from typing import List, Optional, Set, Tuple, Union diff --git a/brainpy/version2/math/environment.py b/brainpy/version2/math/environment.py index fa9f57605..4de7da1de 100644 --- a/brainpy/version2/math/environment.py +++ b/brainpy/version2/math/environment.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools import gc import inspect diff --git a/brainpy/version2/math/event/__init__.py b/brainpy/version2/math/event/__init__.py index 6b1d7e1c1..96b6fbcf0 100644 --- a/brainpy/version2/math/event/__init__.py +++ b/brainpy/version2/math/event/__init__.py @@ -1,2 +1,16 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .csr_matmat import * from .csr_matvec import * diff --git a/brainpy/version2/math/event/csr_matmat.py b/brainpy/version2/math/event/csr_matmat.py index 981ebb8fe..abf6eead0 100644 --- a/brainpy/version2/math/event/csr_matmat.py +++ b/brainpy/version2/math/event/csr_matmat.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple import brainevent diff --git a/brainpy/version2/math/event/csr_matvec.py b/brainpy/version2/math/event/csr_matvec.py index aadb536ef..73248d842 100644 --- a/brainpy/version2/math/event/csr_matvec.py +++ b/brainpy/version2/math/event/csr_matvec.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ Key points for the operator customization: diff --git a/brainpy/version2/math/fft.py b/brainpy/version2/math/fft.py index 2f02b596e..a243919af 100644 --- a/brainpy/version2/math/fft.py +++ b/brainpy/version2/math/fft.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy.fft as jfft from ._utils import _compatible_with_brainpy_array diff --git a/brainpy/version2/math/interoperability.py b/brainpy/version2/math/interoperability.py index c54f5ea66..af203abf5 100644 --- a/brainpy/version2/math/interoperability.py +++ b/brainpy/version2/math/interoperability.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp import numpy as np diff --git a/brainpy/version2/math/jitconn/__init__.py b/brainpy/version2/math/jitconn/__init__.py index f9e42ea26..652101f78 100644 --- a/brainpy/version2/math/jitconn/__init__.py +++ b/brainpy/version2/math/jitconn/__init__.py @@ -1,2 +1,16 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .event_matvec import * from .matvec import * diff --git a/brainpy/version2/math/jitconn/event_matvec.py b/brainpy/version2/math/jitconn/event_matvec.py index 1b51f8146..b9216a569 100644 --- a/brainpy/version2/math/jitconn/event_matvec.py +++ b/brainpy/version2/math/jitconn/event_matvec.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Tuple, Optional import brainevent @@ -7,8 +20,8 @@ import numpy as np from brainpy.version2.math.jitconn.matvec import (mv_prob_homo, - mv_prob_uniform, - mv_prob_normal) + mv_prob_uniform, + mv_prob_normal) from brainpy.version2.math.ndarray import Array as Array __all__ = [ diff --git a/brainpy/version2/math/jitconn/matvec.py b/brainpy/version2/math/jitconn/matvec.py index 65513a862..21bc886f6 100644 --- a/brainpy/version2/math/jitconn/matvec.py +++ b/brainpy/version2/math/jitconn/matvec.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Tuple, Optional, Union import brainevent diff --git a/brainpy/version2/math/linalg.py b/brainpy/version2/math/linalg.py index 7257bb1b4..0e3a7057b 100644 --- a/brainpy/version2/math/linalg.py +++ b/brainpy/version2/math/linalg.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from jax.numpy import linalg from ._utils import _compatible_with_brainpy_array diff --git a/brainpy/version2/math/modes.py b/brainpy/version2/math/modes.py index 118af788a..0aec62f87 100644 --- a/brainpy/version2/math/modes.py +++ b/brainpy/version2/math/modes.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import brainstate diff --git a/brainpy/version2/math/ndarray.py b/brainpy/version2/math/ndarray.py index bcceda278..88c6d3eec 100644 --- a/brainpy/version2/math/ndarray.py +++ b/brainpy/version2/math/ndarray.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Any import brainunit as u diff --git a/brainpy/version2/math/object_transform/__init__.py b/brainpy/version2/math/object_transform/__init__.py index 3e509cb99..4002250aa 100644 --- a/brainpy/version2/math/object_transform/__init__.py +++ b/brainpy/version2/math/object_transform/__init__.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ The ``brainpy_object`` module for whole BrainPy ecosystem. diff --git a/brainpy/version2/math/object_transform/_utils.py b/brainpy/version2/math/object_transform/_utils.py index 17b8b6818..191c72252 100644 --- a/brainpy/version2/math/object_transform/_utils.py +++ b/brainpy/version2/math/object_transform/_utils.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from functools import wraps from typing import Dict diff --git a/brainpy/version2/math/object_transform/autograd.py b/brainpy/version2/math/object_transform/autograd.py index 0c01834aa..e64cddf31 100644 --- a/brainpy/version2/math/object_transform/autograd.py +++ b/brainpy/version2/math/object_transform/autograd.py @@ -1,11 +1,23 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Callable, Dict, Sequence, Optional import brainstate.transform - -from .variables import Variable from ._utils import warp_to_no_state_input_output +from .variables import Variable __all__ = [ 'grad', # gradient of scalar function diff --git a/brainpy/version2/math/object_transform/base.py b/brainpy/version2/math/object_transform/base.py index 1b08c91bf..744101d69 100644 --- a/brainpy/version2/math/object_transform/base.py +++ b/brainpy/version2/math/object_transform/base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This file defines the basic classes for BrainPy object-oriented transformations. These transformations include JAX's JIT, autograd, vectorization, parallelization, etc. diff --git a/brainpy/version2/math/object_transform/collectors.py b/brainpy/version2/math/object_transform/collectors.py index 868fec2da..43c87081e 100644 --- a/brainpy/version2/math/object_transform/collectors.py +++ b/brainpy/version2/math/object_transform/collectors.py @@ -1,8 +1,22 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Sequence, Dict, Union -from brainstate._compatible_import import safe_zip from jax.tree_util import register_pytree_node +from brainstate._compatible_import import safe_zip from .variables import Variable __all__ = [ diff --git a/brainpy/version2/math/object_transform/controls.py b/brainpy/version2/math/object_transform/controls.py index 55d128b76..0c3e4e430 100644 --- a/brainpy/version2/math/object_transform/controls.py +++ b/brainpy/version2/math/object_transform/controls.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numbers from typing import Union, Sequence, Any, Dict, Callable, Optional diff --git a/brainpy/version2/math/object_transform/function.py b/brainpy/version2/math/object_transform/function.py index 7838da6c5..e16e23c79 100644 --- a/brainpy/version2/math/object_transform/function.py +++ b/brainpy/version2/math/object_transform/function.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Union, Sequence, Dict, Callable diff --git a/brainpy/version2/math/object_transform/jit.py b/brainpy/version2/math/object_transform/jit.py index 6dbda0997..3e22b65b8 100644 --- a/brainpy/version2/math/object_transform/jit.py +++ b/brainpy/version2/math/object_transform/jit.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ The JIT compilation tools for JAX backend. diff --git a/brainpy/version2/math/object_transform/naming.py b/brainpy/version2/math/object_transform/naming.py index 839cbbfe5..22203d82a 100644 --- a/brainpy/version2/math/object_transform/naming.py +++ b/brainpy/version2/math/object_transform/naming.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from brainpy import _errors as errors diff --git a/brainpy/version2/math/object_transform/tests/test_autograd.py b/brainpy/version2/math/object_transform/tests/test_autograd.py index 678afc3a7..49179a0a5 100644 --- a/brainpy/version2/math/object_transform/tests/test_autograd.py +++ b/brainpy/version2/math/object_transform/tests/test_autograd.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest from pprint import pprint diff --git a/brainpy/version2/math/object_transform/tests/test_base.py b/brainpy/version2/math/object_transform/tests/test_base.py index 88e94cd83..b59e35655 100644 --- a/brainpy/version2/math/object_transform/tests/test_base.py +++ b/brainpy/version2/math/object_transform/tests/test_base.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.tree_util diff --git a/brainpy/version2/math/object_transform/tests/test_circular_reference.py b/brainpy/version2/math/object_transform/tests/test_circular_reference.py index 369143302..63afae5dd 100644 --- a/brainpy/version2/math/object_transform/tests/test_circular_reference.py +++ b/brainpy/version2/math/object_transform/tests/test_circular_reference.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from pprint import pprint import brainpy.version2 as bp diff --git a/brainpy/version2/math/object_transform/tests/test_collector.py b/brainpy/version2/math/object_transform/tests/test_collector.py index 28ff4ccbf..89f59bb32 100644 --- a/brainpy/version2/math/object_transform/tests/test_collector.py +++ b/brainpy/version2/math/object_transform/tests/test_collector.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from pprint import pprint import jax.numpy as jnp diff --git a/brainpy/version2/math/object_transform/tests/test_controls.py b/brainpy/version2/math/object_transform/tests/test_controls.py index 3497e7b5b..8f2c06c89 100644 --- a/brainpy/version2/math/object_transform/tests/test_controls.py +++ b/brainpy/version2/math/object_transform/tests/test_controls.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest from functools import partial diff --git a/brainpy/version2/math/object_transform/tests/test_jit.py b/brainpy/version2/math/object_transform/tests/test_jit.py index 8c13f33b5..396e6d07e 100644 --- a/brainpy/version2/math/object_transform/tests/test_jit.py +++ b/brainpy/version2/math/object_transform/tests/test_jit.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax diff --git a/brainpy/version2/math/object_transform/tests/test_namechecking.py b/brainpy/version2/math/object_transform/tests/test_namechecking.py index 296fed1a1..30c2fa69b 100644 --- a/brainpy/version2/math/object_transform/tests/test_namechecking.py +++ b/brainpy/version2/math/object_transform/tests/test_namechecking.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import brainpy.version2 as bp diff --git a/brainpy/version2/math/object_transform/tests/test_naming.py b/brainpy/version2/math/object_transform/tests/test_naming.py index 06fbf7f53..7e5c0f648 100644 --- a/brainpy/version2/math/object_transform/tests/test_naming.py +++ b/brainpy/version2/math/object_transform/tests/test_naming.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/brainpy/version2/math/object_transform/tests/test_variable.py b/brainpy/version2/math/object_transform/tests/test_variable.py index d6473777e..94921f0c2 100644 --- a/brainpy/version2/math/object_transform/tests/test_variable.py +++ b/brainpy/version2/math/object_transform/tests/test_variable.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import pytest diff --git a/brainpy/version2/math/object_transform/variables.py b/brainpy/version2/math/object_transform/variables.py index df8eff730..305c2e135 100644 --- a/brainpy/version2/math/object_transform/variables.py +++ b/brainpy/version2/math/object_transform/variables.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Any, Sequence import jax diff --git a/brainpy/version2/math/others.py b/brainpy/version2/math/others.py index c2fecb610..28b9afc4a 100644 --- a/brainpy/version2/math/others.py +++ b/brainpy/version2/math/others.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Optional, Union import jax diff --git a/brainpy/version2/math/pre_syn_post.py b/brainpy/version2/math/pre_syn_post.py index c847b9e42..7baacaf1a 100644 --- a/brainpy/version2/math/pre_syn_post.py +++ b/brainpy/version2/math/pre_syn_post.py @@ -1,12 +1,24 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp from jax import vmap, jit, ops as jops +from brainpy._errors import MathError from brainpy.version2.math import event from brainpy.version2.math.interoperability import as_jax -from brainpy._errors import MathError __all__ = [ # pre-to-post diff --git a/brainpy/version2/math/remove_vmap.py b/brainpy/version2/math/remove_vmap.py index adc34c420..40bea94b4 100644 --- a/brainpy/version2/math/remove_vmap.py +++ b/brainpy/version2/math/remove_vmap.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax import jax.numpy as jnp diff --git a/brainpy/version2/math/scales.py b/brainpy/version2/math/scales.py index 406c080ba..738a8eddf 100644 --- a/brainpy/version2/math/scales.py +++ b/brainpy/version2/math/scales.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Sequence, Union __all__ = [ diff --git a/brainpy/version2/math/sharding.py b/brainpy/version2/math/sharding.py index e8934c8fe..9be8b7e44 100644 --- a/brainpy/version2/math/sharding.py +++ b/brainpy/version2/math/sharding.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from contextlib import contextmanager from functools import partial from typing import Optional, Any, Union, Sequence @@ -8,7 +21,7 @@ import numpy as np from jax.sharding import PartitionSpec, Mesh, NamedSharding, Sharding -from .ndarray import Array, ShardedArray, Array +from .ndarray import ShardedArray, Array __all__ = [ 'device_mesh', diff --git a/brainpy/version2/math/sparse/__init__.py b/brainpy/version2/math/sparse/__init__.py index 68439c742..c2769089b 100644 --- a/brainpy/version2/math/sparse/__init__.py +++ b/brainpy/version2/math/sparse/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== # from ._coo_mv import * from .csr_mm import * from .csr_mv import * diff --git a/brainpy/version2/math/sparse/coo_mv.py b/brainpy/version2/math/sparse/coo_mv.py index 43e7383c8..ac5ee06c2 100644 --- a/brainpy/version2/math/sparse/coo_mv.py +++ b/brainpy/version2/math/sparse/coo_mv.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple import brainevent diff --git a/brainpy/version2/math/sparse/csr_mm.py b/brainpy/version2/math/sparse/csr_mm.py index 0da93fa53..e25018ea8 100644 --- a/brainpy/version2/math/sparse/csr_mm.py +++ b/brainpy/version2/math/sparse/csr_mm.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple import brainevent diff --git a/brainpy/version2/math/sparse/csr_mv.py b/brainpy/version2/math/sparse/csr_mv.py index e205927dc..18bc775c0 100644 --- a/brainpy/version2/math/sparse/csr_mv.py +++ b/brainpy/version2/math/sparse/csr_mv.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Tuple import brainevent diff --git a/brainpy/version2/math/sparse/jax_prim.py b/brainpy/version2/math/sparse/jax_prim.py index e3ca0fba6..c3a520dee 100644 --- a/brainpy/version2/math/sparse/jax_prim.py +++ b/brainpy/version2/math/sparse/jax_prim.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict import jax.numpy as jnp diff --git a/brainpy/version2/math/sparse/utils.py b/brainpy/version2/math/sparse/utils.py index 761516d39..5a9e34f18 100644 --- a/brainpy/version2/math/sparse/utils.py +++ b/brainpy/version2/math/sparse/utils.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from functools import partial from typing import Tuple diff --git a/brainpy/version2/math/surrogate/__init__.py b/brainpy/version2/math/surrogate/__init__.py index f88816d70..00f6a61b7 100644 --- a/brainpy/version2/math/surrogate/__init__.py +++ b/brainpy/version2/math/surrogate/__init__.py @@ -1,5 +1,17 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from ._one_input_new import * from ._two_inputs import * diff --git a/brainpy/version2/math/surrogate/_one_input.py b/brainpy/version2/math/surrogate/_one_input.py index 57355bba4..892ea29e8 100644 --- a/brainpy/version2/math/surrogate/_one_input.py +++ b/brainpy/version2/math/surrogate/_one_input.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools from typing import Union diff --git a/brainpy/version2/math/surrogate/_one_input_new.py b/brainpy/version2/math/surrogate/_one_input_new.py index 68a84deb0..94e8a03ed 100644 --- a/brainpy/version2/math/surrogate/_one_input_new.py +++ b/brainpy/version2/math/surrogate/_one_input_new.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union import jax diff --git a/brainpy/version2/math/surrogate/_two_inputs.py b/brainpy/version2/math/surrogate/_two_inputs.py index 533c2eb3e..20aa6f591 100644 --- a/brainpy/version2/math/surrogate/_two_inputs.py +++ b/brainpy/version2/math/surrogate/_two_inputs.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union import jax diff --git a/brainpy/version2/math/surrogate/_utils.py b/brainpy/version2/math/surrogate/_utils.py index 1f0053658..9431a8410 100644 --- a/brainpy/version2/math/surrogate/_utils.py +++ b/brainpy/version2/math/surrogate/_utils.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect import itertools from functools import partial @@ -7,9 +20,9 @@ import jax +from brainpy._errors import UnsupportedError from brainpy.version2 import check from brainpy.version2.math.ndarray import Array as Array -from brainpy._errors import UnsupportedError __all__ = [ 'get_default', diff --git a/brainpy/version2/math/surrogate/tests/test_one_input.py b/brainpy/version2/math/surrogate/tests/test_one_input.py index bfd3142f3..605671849 100644 --- a/brainpy/version2/math/surrogate/tests/test_one_input.py +++ b/brainpy/version2/math/surrogate/tests/test_one_input.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax from absl.testing import parameterized diff --git a/brainpy/version2/math/surrogate/tests/test_two_inputs.py b/brainpy/version2/math/surrogate/tests/test_two_inputs.py index d2c53fef3..ffa98f04f 100644 --- a/brainpy/version2/math/surrogate/tests/test_two_inputs.py +++ b/brainpy/version2/math/surrogate/tests/test_two_inputs.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax from absl.testing import parameterized diff --git a/brainpy/version2/math/tests/test_array_format.py b/brainpy/version2/math/tests/test_array_format.py index 54aaba0d5..bcbf98ac2 100644 --- a/brainpy/version2/math/tests/test_array_format.py +++ b/brainpy/version2/math/tests/test_array_format.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import brainpy.version2.math as bm diff --git a/brainpy/version2/math/tests/test_compat_pytorch.py b/brainpy/version2/math/tests/test_compat_pytorch.py index e21dd0e7c..92bf73e42 100644 --- a/brainpy/version2/math/tests/test_compat_pytorch.py +++ b/brainpy/version2/math/tests/test_compat_pytorch.py @@ -1,10 +1,22 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest -import brainpy.version2.math.compat_pytorch as torch import brainpy.version2.math as bm +import brainpy.version2.math.compat_pytorch as torch from brainpy.version2.math import compat_pytorch diff --git a/brainpy/version2/math/tests/test_defaults.py b/brainpy/version2/math/tests/test_defaults.py index 6ce120db9..0c313922b 100644 --- a/brainpy/version2/math/tests/test_defaults.py +++ b/brainpy/version2/math/tests/test_defaults.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2.math as bm diff --git a/brainpy/version2/math/tests/test_delay_vars.py b/brainpy/version2/math/tests/test_delay_vars.py index b5d4fa0f9..0dccae839 100644 --- a/brainpy/version2/math/tests/test_delay_vars.py +++ b/brainpy/version2/math/tests/test_delay_vars.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.numpy as jnp diff --git a/brainpy/version2/math/tests/test_einops.py b/brainpy/version2/math/tests/test_einops.py index 0f160d6bd..b53a1b77c 100644 --- a/brainpy/version2/math/tests/test_einops.py +++ b/brainpy/version2/math/tests/test_einops.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy import pytest diff --git a/brainpy/version2/math/tests/test_einops_parsing.py b/brainpy/version2/math/tests/test_einops_parsing.py index c79ebe22e..95fde1b01 100644 --- a/brainpy/version2/math/tests/test_einops_parsing.py +++ b/brainpy/version2/math/tests/test_einops_parsing.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import pytest from brainpy.version2.math.einops_parsing import EinopsError, ParsedExpression, AnonymousAxis, _ellipsis diff --git a/brainpy/version2/math/tests/test_environment.py b/brainpy/version2/math/tests/test_environment.py index 2555a8946..de9e95687 100644 --- a/brainpy/version2/math/tests/test_environment.py +++ b/brainpy/version2/math/tests/test_environment.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax diff --git a/brainpy/version2/math/tests/test_ndarray.py b/brainpy/version2/math/tests/test_ndarray.py index 7f729a0ba..c6a6e577b 100644 --- a/brainpy/version2/math/tests/test_ndarray.py +++ b/brainpy/version2/math/tests/test_ndarray.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax diff --git a/brainpy/version2/math/tests/test_oprators.py b/brainpy/version2/math/tests/test_oprators.py index d6b341824..2aff91fdb 100644 --- a/brainpy/version2/math/tests/test_oprators.py +++ b/brainpy/version2/math/tests/test_oprators.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.numpy as jnp diff --git a/brainpy/version2/math/tests/test_others.py b/brainpy/version2/math/tests/test_others.py index 72628a403..dda416478 100644 --- a/brainpy/version2/math/tests/test_others.py +++ b/brainpy/version2/math/tests/test_others.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from unittest import TestCase from scipy.special import exprel diff --git a/brainpy/version2/math/tests/test_random.py b/brainpy/version2/math/tests/test_random.py index a2577e186..fac16f48f 100644 --- a/brainpy/version2/math/tests/test_random.py +++ b/brainpy/version2/math/tests/test_random.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import platform import unittest diff --git a/brainpy/version2/math/tests/test_tifunc.py b/brainpy/version2/math/tests/test_tifunc.py index 43327fc07..d71450aec 100644 --- a/brainpy/version2/math/tests/test_tifunc.py +++ b/brainpy/version2/math/tests/test_tifunc.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax import jax.numpy as jnp import pytest diff --git a/brainpy/version2/measure/firings.py b/brainpy/version2/measure.py similarity index 59% rename from brainpy/version2/measure/firings.py rename to brainpy/version2/measure.py index 8a89d04bd..0c879f446 100644 --- a/brainpy/version2/measure/firings.py +++ b/brainpy/version2/measure.py @@ -1,13 +1,34 @@ -# -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +import braintools import jax.numpy as jnp import numpy as onp from brainpy.version2 import math as bm __all__ = [ + 'cross_correlation', + 'voltage_fluctuation', + 'matrix_correlation', + 'weighted_correlation', + 'functional_connectivity', 'raster_plot', 'firing_rate', + 'unitary_LFP', ] @@ -70,3 +91,11 @@ def firing_rate(spikes, width, dt=None, numpy=True): width1 = int(width / 2 / dt) * 2 + 1 window = np.ones(width1) * 1000 / width return np.convolve(np.mean(spikes, axis=1), window, mode='same') + + +cross_correlation = braintools.metric.cross_correlation +voltage_fluctuation = braintools.metric.voltage_fluctuation +matrix_correlation = braintools.metric.matrix_correlation +functional_connectivity = braintools.metric.functional_connectivity +weighted_correlation = braintools.metric.weighted_correlation +unitary_LFP = braintools.metric.unitary_LFP diff --git a/brainpy/version2/measure/__init__.py b/brainpy/version2/measure/__init__.py deleted file mode 100644 index 168d92fb5..000000000 --- a/brainpy/version2/measure/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -This module aims to provide commonly used analysis methods for simulated neuronal data. -You can access them through ``brainpy.version2.measure.XXX``. -""" - -from . import correlation, firings, lfp - -from .correlation import * -from .firings import * -from .lfp import * diff --git a/brainpy/version2/measure/correlation.py b/brainpy/version2/measure/correlation.py deleted file mode 100644 index 9eb93225e..000000000 --- a/brainpy/version2/measure/correlation.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - - -import braintools - -__all__ = [ - 'cross_correlation', - 'voltage_fluctuation', - 'matrix_correlation', - 'weighted_correlation', - 'functional_connectivity', - # 'functional_connectivity_dynamics', -] - -cross_correlation = braintools.metric.cross_correlation -voltage_fluctuation = braintools.metric.voltage_fluctuation -matrix_correlation = braintools.metric.matrix_correlation -functional_connectivity = braintools.metric.functional_connectivity -weighted_correlation = braintools.metric.weighted_correlation diff --git a/brainpy/version2/measure/lfp.py b/brainpy/version2/measure/lfp.py deleted file mode 100644 index 518f2d247..000000000 --- a/brainpy/version2/measure/lfp.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -import braintools.metric - -__all__ = [ - 'unitary_LFP', -] - -unitary_LFP = braintools.metric.unitary_LFP diff --git a/brainpy/version2/measure/tests/test_correlation.py b/brainpy/version2/measure/tests/test_correlation.py deleted file mode 100644 index 29d722a0b..000000000 --- a/brainpy/version2/measure/tests/test_correlation.py +++ /dev/null @@ -1,100 +0,0 @@ -# -*- coding: utf-8 -*- - - -import unittest -from functools import partial - -from jax import jit - -import brainpy.version2 as bp -import brainpy.version2.math as bm - -bm.set_platform('cpu') - - -class TestCrossCorrelation(unittest.TestCase): - def test_c(self): - bm.random.seed() - spikes = bm.asarray([[1, 0, 1, 0, 1, 0, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0, 0]]).T - cc1 = bp.measure.cross_correlation(spikes, 1., dt=1.) - f_cc = jit(partial(bp.measure.cross_correlation, bin=1, dt=1.)) - cc2 = f_cc(spikes) - print(cc1, cc2) - self.assertTrue(cc1 == cc2) - - def test_cc(self): - bm.random.seed() - spikes = bm.ones((1000, 10)) - cc1 = bp.measure.cross_correlation(spikes, 1.) - self.assertTrue(cc1 == 1.) - - spikes = bm.zeros((1000, 10)) - cc2 = bp.measure.cross_correlation(spikes, 1.) - self.assertTrue(cc2 == 0.) - - def test_cc2(self): - bm.random.seed() - spikes = bm.random.randint(0, 2, (1000, 10)) - print(bp.measure.cross_correlation(spikes, 1.)) - print(bp.measure.cross_correlation(spikes, 0.5)) - - def test_cc3(self): - bm.random.seed() - spikes = bm.random.random((1000, 100)) < 0.8 - print(bp.measure.cross_correlation(spikes, 1.)) - print(bp.measure.cross_correlation(spikes, 0.5)) - - def test_cc4(self): - bm.random.seed() - spikes = bm.random.random((1000, 100)) < 0.2 - print(bp.measure.cross_correlation(spikes, 1.)) - print(bp.measure.cross_correlation(spikes, 0.5)) - - def test_cc5(self): - bm.random.seed() - spikes = bm.random.random((1000, 100)) < 0.05 - print(bp.measure.cross_correlation(spikes, 1.)) - print(bp.measure.cross_correlation(spikes, 0.5)) - - -class TestVoltageFluctuation(unittest.TestCase): - def test_vf1(self): - bm.random.seed() - voltages = bm.random.normal(0, 10, size=(100, 10)) - print(bp.measure.voltage_fluctuation(voltages)) - - bm.enable_x64() - voltages = bm.ones((100, 10)) - r1 = bp.measure.voltage_fluctuation(voltages) - - jit_f = jit(partial(bp.measure.voltage_fluctuation)) - jit_f = jit(lambda a: bp.measure.voltage_fluctuation(a)) - r2 = jit_f(voltages) - print(r1, r2) # TODO: JIT results are different? - # self.assertTrue(r1 == r2) - - bm.disable_x64() - - -class TestFunctionalConnectivity(unittest.TestCase): - def test_cf1(self): - bm.random.seed() - act = bm.random.random((10000, 3)) - r1 = bp.measure.functional_connectivity(act) - - jit_f = jit(partial(bp.measure.functional_connectivity)) - r2 = jit_f(act) - - self.assertTrue(bm.allclose(r1, r2)) - - -class TestMatrixCorrelation(unittest.TestCase): - def test_mc(self): - bm.random.seed() - A = bm.random.random((100, 100)) - B = bm.random.random((100, 100)) - r1 = (bp.measure.matrix_correlation(A, B)) - - jit_f = jit(bp.measure.matrix_correlation) - r2 = jit_f(A, B) - self.assertTrue(bm.allclose(r1, r2)) diff --git a/brainpy/version2/measure/tests/test_firings.py b/brainpy/version2/measure/tests/test_firings.py deleted file mode 100644 index 1eb24ece3..000000000 --- a/brainpy/version2/measure/tests/test_firings.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- - - -import unittest - -import brainpy.version2 as bp - - -class TestFiringRate(unittest.TestCase): - def test_fr1(self): - spikes = bp.math.ones((1000, 10)) - print(bp.measure.firing_rate(spikes, 1.)) - - def test_fr2(self): - bp.math.random.seed() - spikes = bp.math.random.random((1000, 10)) < 0.2 - print(bp.measure.firing_rate(spikes, 1.)) - print(bp.measure.firing_rate(spikes, 10.)) - - def test_fr3(self): - bp.math.random.seed() - spikes = bp.math.random.random((1000, 10)) < 0.02 - print(bp.measure.firing_rate(spikes, 1.)) - print(bp.measure.firing_rate(spikes, 5.)) diff --git a/brainpy/version2/modes.py b/brainpy/version2/modes.py deleted file mode 100644 index 1c1d71012..000000000 --- a/brainpy/version2/modes.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -This module is deprecated since version 2.3.1. -Please use ``brainpy.version2.math.*`` instead. -""" - -from brainpy.version2 import check -from brainpy.version2.deprecations import deprecation_getattr2 -from brainpy.version2.math import modes - -__deprecations = { - 'Mode': ('brainpy.version2.modes.Mode', 'brainpy.version2.math.Mode', modes.Mode), - 'NormalMode': ('brainpy.version2.modes.NormalMode', 'brainpy.version2.math.NonBatchingMode', modes.NonBatchingMode), - 'BatchingMode': ('brainpy.version2.modes.BatchingMode', 'brainpy.version2.math.BatchingMode', modes.BatchingMode), - 'TrainingMode': ('brainpy.version2.modes.TrainingMode', 'brainpy.version2.math.TrainingMode', modes.TrainingMode), - 'normal': ('brainpy.version2.modes.normal', 'brainpy.version2.math.nonbatching_mode', modes.nonbatching_mode), - 'batching': ('brainpy.version2.modes.batching', 'brainpy.version2.math.batching_mode', modes.batching_mode), - 'training': ('brainpy.version2.modes.training', 'brainpy.version2.math.training_mode', modes.training_mode), - 'check_mode': ('brainpy.version2.modes.check_mode', 'brainpy.version2.check.is_subclass', check.is_subclass), -} -__getattr__ = deprecation_getattr2('brainpy.version2.modes', __deprecations) -del deprecation_getattr2 diff --git a/brainpy/version2/neurons.py b/brainpy/version2/neurons.py index cf0e096a0..d7968f264 100644 --- a/brainpy/version2/neurons.py +++ b/brainpy/version2/neurons.py @@ -1,42 +1,88 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ + from brainpy.version2.dynold.neurons.biological_models import ( - HH as HH, - MorrisLecar as MorrisLecar, - PinskyRinzelModel as PinskyRinzelModel, - WangBuzsakiModel as WangBuzsakiModel, + HH as HH, + MorrisLecar as MorrisLecar, + PinskyRinzelModel as PinskyRinzelModel, + WangBuzsakiModel as WangBuzsakiModel, ) from brainpy.version2.dynold.neurons.fractional_models import ( - FractionalNeuron as FractionalNeuron, - FractionalFHR as FractionalFHR, - FractionalIzhikevich as FractionalIzhikevich, + FractionalNeuron as FractionalNeuron, + FractionalFHR as FractionalFHR, + FractionalIzhikevich as FractionalIzhikevich, ) from brainpy.version2.dynold.neurons.reduced_models import ( - LeakyIntegrator as LeakyIntegrator, - LIF as LIF, - ExpIF as ExpIF, - AdExIF as AdExIF, - QuaIF as QuaIF, - AdQuaIF as AdQuaIF, - GIF as GIF, - ALIFBellec2020 as ALIFBellec2020, - Izhikevich as Izhikevich, - HindmarshRose as HindmarshRose, - FHN as FHN, - LIF_SFA_Bellec2020, + LeakyIntegrator as LeakyIntegrator, + LIF as LIF, + ExpIF as ExpIF, + AdExIF as AdExIF, + QuaIF as QuaIF, + AdQuaIF as AdQuaIF, + GIF as GIF, + ALIFBellec2020 as ALIFBellec2020, + Izhikevich as Izhikevich, + HindmarshRose as HindmarshRose, + FHN as FHN, + LIF_SFA_Bellec2020, ) from brainpy.version2.dyn.others import ( - InputGroup as InputGroup, - OutputGroup as OutputGroup, - SpikeTimeGroup as SpikeTimeGroup, - PoissonGroup as PoissonGroup, - Leaky as Leaky, - Integrator as Integrator, - OUProcess as OUProcess, + InputGroup as InputGroup, + OutputGroup as OutputGroup, + SpikeTimeGroup as SpikeTimeGroup, + PoissonGroup as PoissonGroup, + Leaky as Leaky, + Integrator as Integrator, + OUProcess as OUProcess, ) + +if __name__ == '__main__': + HH + MorrisLecar + PinskyRinzelModel + WangBuzsakiModel + + FractionalNeuron + FractionalFHR + FractionalIzhikevich + + LeakyIntegrator + LIF + ExpIF + AdExIF + QuaIF + AdQuaIF + GIF + ALIFBellec2020 + Izhikevich + HindmarshRose + FHN + LIF_SFA_Bellec2020 + + InputGroup + OutputGroup + SpikeTimeGroup + PoissonGroup + Leaky + Integrator + OUProcess + diff --git a/brainpy/version2/optim/__init__.py b/brainpy/version2/optim/__init__.py index ed3b22c6b..dd16fe45c 100644 --- a/brainpy/version2/optim/__init__.py +++ b/brainpy/version2/optim/__init__.py @@ -1,4 +1,17 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .optimizer import * from .scheduler import * diff --git a/brainpy/version2/optim/optimizer.py b/brainpy/version2/optim/optimizer.py index 61460807e..e2e10ddee 100644 --- a/brainpy/version2/optim/optimizer.py +++ b/brainpy/version2/optim/optimizer.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Union, Sequence, Dict, Optional, Tuple @@ -7,9 +20,9 @@ from jax.lax import cond import brainpy.version2.math as bm +from brainpy._errors import MathError from brainpy.version2 import check from brainpy.version2.math.object_transform.base import BrainPyObject, ArrayCollector -from brainpy._errors import MathError from .scheduler import make_schedule, Scheduler __all__ = [ diff --git a/brainpy/version2/optim/scheduler.py b/brainpy/version2/optim/scheduler.py index 2d548182f..04a998c74 100644 --- a/brainpy/version2/optim/scheduler.py +++ b/brainpy/version2/optim/scheduler.py @@ -1,15 +1,29 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import warnings from typing import Sequence, Union -import brainstate import jax import jax.numpy as jnp import brainpy.version2.math as bm +import brainstate +from brainpy._errors import MathError from brainpy.version2 import check from brainpy.version2.math.object_transform.base import BrainPyObject -from brainpy._errors import MathError # learning rate schedules # diff --git a/brainpy/version2/optim/tests/test_ModifyLr.py b/brainpy/version2/optim/tests/test_ModifyLr.py index 8efa39975..480e97d6e 100644 --- a/brainpy/version2/optim/tests/test_ModifyLr.py +++ b/brainpy/version2/optim/tests/test_ModifyLr.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from absl.testing import absltest from absl.testing import parameterized diff --git a/brainpy/version2/optim/tests/test_scheduler.py b/brainpy/version2/optim/tests/test_scheduler.py index 9836a6a43..dcb167c13 100644 --- a/brainpy/version2/optim/tests/test_scheduler.py +++ b/brainpy/version2/optim/tests/test_scheduler.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.numpy diff --git a/brainpy/version2/rates.py b/brainpy/version2/rates.py index 19a447dfd..5a10a91bd 100644 --- a/brainpy/version2/rates.py +++ b/brainpy/version2/rates.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ diff --git a/brainpy/version2/runners.py b/brainpy/version2/runners.py index 0e7283278..2c385498b 100644 --- a/brainpy/version2/runners.py +++ b/brainpy/version2/runners.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect import time import warnings @@ -12,13 +25,13 @@ from jax.tree_util import tree_map, tree_flatten import brainstate.environ +from brainpy._errors import RunningError from brainpy.version2 import math as bm, tools from brainpy.version2.context import share from brainpy.version2.deprecations import _input_deprecate_msg from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.helpers import clear_input from brainpy.version2.running.runner import Runner -from brainpy._errors import RunningError from brainpy.version2.types import Output, Monitor __all__ = [ diff --git a/brainpy/version2/running/__init__.py b/brainpy/version2/running/__init__.py index e68271758..891f4cc11 100644 --- a/brainpy/version2/running/__init__.py +++ b/brainpy/version2/running/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides APIs for parallel brain simulations. """ diff --git a/brainpy/version2/running/constants.py b/brainpy/version2/running/constants.py index 8ce71fc71..36bfd8386 100644 --- a/brainpy/version2/running/constants.py +++ b/brainpy/version2/running/constants.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== __all__ = [ 'TRAIN_PHASE', 'FIT_PHASE', 'TEST_PHASE', diff --git a/brainpy/version2/running/jax_multiprocessing.py b/brainpy/version2/running/jax_multiprocessing.py index f1ff374a5..246122240 100644 --- a/brainpy/version2/running/jax_multiprocessing.py +++ b/brainpy/version2/running/jax_multiprocessing.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Sequence, Dict, Union import numpy as np diff --git a/brainpy/version2/running/native_multiprocessing.py b/brainpy/version2/running/native_multiprocessing.py index ebff9c498..4e69926f2 100644 --- a/brainpy/version2/running/native_multiprocessing.py +++ b/brainpy/version2/running/native_multiprocessing.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import multiprocessing from typing import Union, Sequence, Dict diff --git a/brainpy/version2/running/pathos_multiprocessing.py b/brainpy/version2/running/pathos_multiprocessing.py index a2a47751e..618a2ccae 100644 --- a/brainpy/version2/running/pathos_multiprocessing.py +++ b/brainpy/version2/running/pathos_multiprocessing.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """The parallel execution of a BrainPy func on multiple CPU cores. Specifically, these batch running functions include: diff --git a/brainpy/version2/running/runner.py b/brainpy/version2/running/runner.py index f49d868d5..d63bdf91f 100644 --- a/brainpy/version2/running/runner.py +++ b/brainpy/version2/running/runner.py @@ -1,14 +1,27 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import types import warnings from typing import Callable, Dict, Sequence, Union import numpy as np +from brainpy._errors import MonitorError, RunningError from brainpy.version2 import math as bm, check from brainpy.version2.math.object_transform.base import BrainPyObject -from brainpy._errors import MonitorError, RunningError from brainpy.version2.tools import DotDict from . import constants as C diff --git a/brainpy/version2/running/tests/test_pathos_multiprocessing.py b/brainpy/version2/running/tests/test_pathos_multiprocessing.py index 378e2066b..c2b46d9a8 100644 --- a/brainpy/version2/running/tests/test_pathos_multiprocessing.py +++ b/brainpy/version2/running/tests/test_pathos_multiprocessing.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import sys import jax diff --git a/brainpy/version2/synapses.py b/brainpy/version2/synapses.py index b633dbe05..9775da93e 100644 --- a/brainpy/version2/synapses.py +++ b/brainpy/version2/synapses.py @@ -1,10 +1,33 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ +from brainpy.version2.dyn.synapses.delay_couplings import ( + DiffusiveCoupling, + AdditiveCoupling, +) +from brainpy.version2.dynold.synapses.abstract_models import ( + Delta as Delta, + Exponential as Exponential, + DualExponential as DualExponential, + Alpha as Alpha, + NMDA as NMDA, +) from brainpy.version2.dynold.synapses.base import ( _SynSTP as SynSTP, _SynOut as SynOut, @@ -15,13 +38,6 @@ GABAa as GABAa, BioNMDA as BioNMDA, ) -from brainpy.version2.dynold.synapses.abstract_models import ( - Delta as Delta, - Exponential as Exponential, - DualExponential as DualExponential, - Alpha as Alpha, - NMDA as NMDA, -) from brainpy.version2.dynold.synapses.compat import ( DeltaSynapse as DeltaSynapse, ExpCUBA as ExpCUBA, @@ -31,16 +47,12 @@ AlphaCUBA as AlphaCUBA, AlphaCOBA as AlphaCOBA, ) -from brainpy.version2.dynold.synapses.learning_rules import ( - STP as STP, -) -from brainpy.version2.dyn.synapses.delay_couplings import ( - DiffusiveCoupling, - AdditiveCoupling, -) from brainpy.version2.dynold.synapses.gap_junction import ( GapJunction ) +from brainpy.version2.dynold.synapses.learning_rules import ( + STP as STP, +) if __name__ == '__main__': SynSTP diff --git a/brainpy/version2/synouts.py b/brainpy/version2/synouts.py index da7da59b2..dd51c1908 100644 --- a/brainpy/version2/synouts.py +++ b/brainpy/version2/synouts.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ diff --git a/brainpy/version2/synplast.py b/brainpy/version2/synplast.py index 5bc4ae8f7..9b7d07f62 100644 --- a/brainpy/version2/synplast.py +++ b/brainpy/version2/synplast.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module has been deprecated since brainpy>=2.4.0. Use ``brainpy.version2.dyn`` module instead. """ diff --git a/brainpy/version2/tests/test_access_methods.py b/brainpy/version2/tests/test_access_methods.py index 83794647e..eac2ce698 100644 --- a/brainpy/version2/tests/test_access_methods.py +++ b/brainpy/version2/tests/test_access_methods.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_base_classes.py b/brainpy/version2/tests/test_base_classes.py index 44db8f869..ec35ad08c 100644 --- a/brainpy/version2/tests/test_base_classes.py +++ b/brainpy/version2/tests/test_base_classes.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_check.py b/brainpy/version2/tests/test_check.py index ed4b99929..d7da4e7d2 100644 --- a/brainpy/version2/tests/test_check.py +++ b/brainpy/version2/tests/test_check.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest from brainpy.version2 import check as checking diff --git a/brainpy/version2/tests/test_delay.py b/brainpy/version2/tests/test_delay.py index 3d7082f8f..678e31259 100644 --- a/brainpy/version2/tests/test_delay.py +++ b/brainpy/version2/tests/test_delay.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import jax.numpy as jnp diff --git a/brainpy/version2/tests/test_dyn_runner.py b/brainpy/version2/tests/test_dyn_runner.py index 90256a370..60d8bc08c 100644 --- a/brainpy/version2/tests/test_dyn_runner.py +++ b/brainpy/version2/tests/test_dyn_runner.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_dynsys.py b/brainpy/version2/tests/test_dynsys.py index 262abc930..468052b17 100644 --- a/brainpy/version2/tests/test_dynsys.py +++ b/brainpy/version2/tests/test_dynsys.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_helper.py b/brainpy/version2/tests/test_helper.py index 731a0b5f2..a2ea49fda 100644 --- a/brainpy/version2/tests/test_helper.py +++ b/brainpy/version2/tests/test_helper.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_mixin.py b/brainpy/version2/tests/test_mixin.py index dc0e1d6fa..18488147b 100644 --- a/brainpy/version2/tests/test_mixin.py +++ b/brainpy/version2/tests/test_mixin.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_network.py b/brainpy/version2/tests/test_network.py index e57dd0ca2..fdebe2c09 100644 --- a/brainpy/version2/tests/test_network.py +++ b/brainpy/version2/tests/test_network.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tests/test_pickle.py b/brainpy/version2/tests/test_pickle.py index 720f6746c..298810626 100644 --- a/brainpy/version2/tests/test_pickle.py +++ b/brainpy/version2/tests/test_pickle.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import pickle import unittest diff --git a/brainpy/version2/tests/test_slice_view.py b/brainpy/version2/tests/test_slice_view.py index 4cfdc96a6..17acb099e 100644 --- a/brainpy/version2/tests/test_slice_view.py +++ b/brainpy/version2/tests/test_slice_view.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/tools/__init__.py b/brainpy/version2/tools/__init__.py index aa7833407..24a69ac97 100644 --- a/brainpy/version2/tools/__init__.py +++ b/brainpy/version2/tools/__init__.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from .codes import * from .dicts import * from .functions import * diff --git a/brainpy/version2/tools/codes.py b/brainpy/version2/tools/codes.py index 36e973afb..31ef9feaf 100644 --- a/brainpy/version2/tools/codes.py +++ b/brainpy/version2/tools/codes.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect import re from types import LambdaType diff --git a/brainpy/version2/tools/dicts.py b/brainpy/version2/tools/dicts.py index 4a349ebfe..b58a7d242 100644 --- a/brainpy/version2/tools/dicts.py +++ b/brainpy/version2/tools/dicts.py @@ -1,12 +1,25 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Union, Dict, Sequence import numpy as np -from brainstate._compatible_import import safe_zip from jax.tree_util import register_pytree_node +from brainstate._compatible_import import safe_zip + __all__ = [ 'DotDict', ] diff --git a/brainpy/version2/tools/functions.py b/brainpy/version2/tools/functions.py index 378f2515e..9b6bd6e2d 100644 --- a/brainpy/version2/tools/functions.py +++ b/brainpy/version2/tools/functions.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import inspect from functools import partial from operator import attrgetter diff --git a/brainpy/version2/tools/install.py b/brainpy/version2/tools/install.py index 18ca41863..690325597 100644 --- a/brainpy/version2/tools/install.py +++ b/brainpy/version2/tools/install.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== __all__ = [ 'jaxlib_install_info', ] diff --git a/brainpy/version2/tools/math_util.py b/brainpy/version2/tools/math_util.py index 7aab09350..ca4c5ca7e 100644 --- a/brainpy/version2/tools/math_util.py +++ b/brainpy/version2/tools/math_util.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np __all__ = [ diff --git a/brainpy/version2/tools/others.py b/brainpy/version2/tools/others.py index 1c465462f..728a6e6ce 100644 --- a/brainpy/version2/tools/others.py +++ b/brainpy/version2/tools/others.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import _thread as thread import collections.abc import threading diff --git a/brainpy/version2/tools/package.py b/brainpy/version2/tools/package.py index e793b0646..4a4776ccf 100644 --- a/brainpy/version2/tools/package.py +++ b/brainpy/version2/tools/package.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numpy as np try: diff --git a/brainpy/version2/tools/progress.py b/brainpy/version2/tools/progress.py index c216c5515..16ef61c06 100644 --- a/brainpy/version2/tools/progress.py +++ b/brainpy/version2/tools/progress.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """Python utilities required by Keras.""" import binascii diff --git a/brainpy/version2/tools/tests/test_functions.py b/brainpy/version2/tools/tests/test_functions.py index 0a4f7fd94..ac479cf9f 100644 --- a/brainpy/version2/tools/tests/test_functions.py +++ b/brainpy/version2/tools/tests/test_functions.py @@ -1,3 +1,17 @@ +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import unittest import brainpy.version2 as bp diff --git a/brainpy/version2/train/__init__.py b/brainpy/version2/train/__init__.py index 1d0bdb276..54a927a57 100644 --- a/brainpy/version2/train/__init__.py +++ b/brainpy/version2/train/__init__.py @@ -1,6 +1,18 @@ # -*- coding: utf-8 -*- - - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== """ This module provides various running and training algorithms for various neural networks. diff --git a/brainpy/version2/train/_utils.py b/brainpy/version2/train/_utils.py index d7e6e526e..8b4efb188 100644 --- a/brainpy/version2/train/_utils.py +++ b/brainpy/version2/train/_utils.py @@ -1,10 +1,23 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import jax.numpy as jnp import brainpy.version2.math as bm -from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.check import is_dict_data +from brainpy.version2.dynsys import DynamicalSystem __all__ = [ 'format_ys' diff --git a/brainpy/version2/train/back_propagation.py b/brainpy/version2/train/back_propagation.py index 43d632111..a4a4ec54c 100644 --- a/brainpy/version2/train/back_propagation.py +++ b/brainpy/version2/train/back_propagation.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import time from collections.abc import Iterable from typing import Union, Dict, Callable, Sequence, Optional @@ -12,13 +25,13 @@ import brainpy.version2.losses as losses import brainpy.version2.math as bm import brainstate.environ +from brainpy._errors import UnsupportedError, NoLongerSupportError from brainpy.version2 import optim from brainpy.version2 import tools from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.helpers import clear_input from brainpy.version2.running import constants as c -from brainpy._errors import UnsupportedError, NoLongerSupportError from brainpy.version2.types import ArrayType, Output from ._utils import msg from .base import DSTrainer diff --git a/brainpy/version2/train/base.py b/brainpy/version2/train/base.py index 2f85dc75b..5b2125e2d 100644 --- a/brainpy/version2/train/base.py +++ b/brainpy/version2/train/base.py @@ -1,12 +1,25 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Sequence, Any, Optional import brainpy.version2.math as bm +from brainpy._errors import NoLongerSupportError from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.runners import DSRunner from brainpy.version2.running import constants as c -from brainpy._errors import NoLongerSupportError from brainpy.version2.types import Output __all__ = [ diff --git a/brainpy/version2/train/offline.py b/brainpy/version2/train/offline.py index ac6649f09..52390f040 100644 --- a/brainpy/version2/train/offline.py +++ b/brainpy/version2/train/offline.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== from typing import Dict, Sequence, Union, Callable, Any import jax @@ -8,12 +21,12 @@ import brainpy.version2.math as bm import brainstate.environ +from brainpy.mixin import SupportOffline from brainpy.version2 import tools +from brainpy.version2.algorithms.offline import get, RidgeRegression, OfflineAlgorithm from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem -from brainpy.version2.mixin import SupportOffline from brainpy.version2.runners import _call_fun_with_share -from brainpy.version2.algorithms.offline import get, RidgeRegression, OfflineAlgorithm from brainpy.version2.types import ArrayType, Output from ._utils import format_ys from .base import DSTrainer diff --git a/brainpy/version2/train/online.py b/brainpy/version2/train/online.py index ca43693df..42bc304a4 100644 --- a/brainpy/version2/train/online.py +++ b/brainpy/version2/train/online.py @@ -1,4 +1,18 @@ # -*- coding: utf-8 -*- +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools from typing import Dict, Sequence, Union, Callable @@ -8,13 +22,13 @@ from jax.tree_util import tree_map import brainstate.environ +from brainpy.mixin import SupportOnline from brainpy.version2 import math as bm, tools +from brainpy.version2.algorithms.online import get, OnlineAlgorithm, RLS from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.helpers import clear_input -from brainpy.version2.mixin import SupportOnline from brainpy.version2.runners import _call_fun_with_share -from brainpy.version2.algorithms.online import get, OnlineAlgorithm, RLS from brainpy.version2.types import ArrayType, Output from ._utils import format_ys from .base import DSTrainer diff --git a/brainpy/version2/transform.py b/brainpy/version2/transform.py index d84ad241d..6e37d688a 100644 --- a/brainpy/version2/transform.py +++ b/brainpy/version2/transform.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import functools from typing import Union, Optional, Dict, Sequence @@ -7,10 +20,10 @@ import jax.numpy as jnp from brainpy.version2 import tools, math as bm +from brainpy.version2.check import is_float, is_integer from brainpy.version2.context import share from brainpy.version2.dynsys import DynamicalSystem from brainpy.version2.helpers import clear_input -from brainpy.version2.check import is_float, is_integer from brainpy.version2.types import PyTree __all__ = [ diff --git a/brainpy/version2/types.py b/brainpy/version2/types.py index bd33d77e9..76b0c7e5c 100644 --- a/brainpy/version2/types.py +++ b/brainpy/version2/types.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- - +# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== import numbers from typing import TypeVar, Tuple, Union, Callable, Sequence diff --git a/brainpy/version2/visualization.py b/brainpy/version2/visualization.py index 2b057bd74..8a8f40bc2 100644 --- a/brainpy/version2/visualization.py +++ b/brainpy/version2/visualization.py @@ -1,4 +1,4 @@ -# Copyright 2024 BDP Ecosystem Limited. All Rights Reserved. +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/changelog.md b/changelog.md new file mode 100644 index 000000000..010f595e9 --- /dev/null +++ b/changelog.md @@ -0,0 +1,7 @@ +# Changelog + + +## Version 3.0.0 + + + diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..2de4207a5 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,21 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SPHINXPROJ = brainpy +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css new file mode 100644 index 000000000..b8207032d --- /dev/null +++ b/docs/_static/css/theme.css @@ -0,0 +1,23 @@ +@import url("theme.css"); + +.wy-nav-content { + max-width: 1290px; +} + +.rst-content table.docutils { + width: 100%; +} + +.rst-content table.docutils td { + vertical-align: top; + padding: 0; +} + +.rst-content table.docutils td p { + padding: 8px; +} + +.rst-content div[class^=highlight] { + border: 0; + margin: 0; +} diff --git a/docs/_static/snn-simulation1.png b/docs/_static/snn-simulation1.png new file mode 100644 index 000000000..72772d3ce Binary files /dev/null and b/docs/_static/snn-simulation1.png differ diff --git a/docs/_templates/classtemplate.rst b/docs/_templates/classtemplate.rst new file mode 100644 index 000000000..eeb823a96 --- /dev/null +++ b/docs/_templates/classtemplate.rst @@ -0,0 +1,9 @@ +.. role:: hidden + :class: hidden-section +.. currentmodule:: {{ module }} + + +{{ name | underline}} + +.. autoclass:: {{ name }} + :members: diff --git a/docs/apis.rst b/docs/apis.rst new file mode 100644 index 000000000..10a1c5652 --- /dev/null +++ b/docs/apis.rst @@ -0,0 +1,115 @@ +API Reference +============= + +This page provides a comprehensive reference for all BrainPy APIs. + +.. currentmodule:: brainpy +.. automodule:: brainpy + + + +Neuron Models +------------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + Neuron + LIF + LIFRef + ALIF + Izhikevich + IF + ExpIF + AdExIF + + +Synapse Models +-------------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + Synapse + Delta + Exponential + DualExponential + Alpha + NMDA + AMPA + GABAa + + +Short-Term Plasticity +--------------------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + STP + STD + STF + + +Synaptic Output +--------------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + CUBA + COBA + MgBlock + + +Projection +---------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + Projection + FullProjDelta + FullProjAlignPostDelta + + +Readout +------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + Readout + Dense + Linear + + +Input Generators +---------------- + +.. autosummary:: + :toctree: generated/ + :nosignatures: + :template: classtemplate.rst + + + spike_input + latency_input + diff --git a/docs/checkpointing-en.ipynb b/docs/checkpointing-en.ipynb new file mode 100644 index 000000000..6968d398b --- /dev/null +++ b/docs/checkpointing-en.ipynb @@ -0,0 +1,675 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dbdef1f7bce3a135", + "metadata": { + "collapsed": false + }, + "source": [ + "# Save and Load Checkpoints" + ] + }, + { + "cell_type": "markdown", + "id": "43f961f5", + "metadata": {}, + "source": [ + "In this tutorial, we will explore how to save and load checkpoints in `brainstate` by using the `orbax` library and `braintools` library which provide a more lightweight approach. This is particularly useful for saving the state of your model during training so that you can resume training from where you left off or use the trained model for inference later. The following example demonstrates how to use `orbax` and `braintools`'s checkpointing functionality with a simple MLP model." + ] + }, + { + "cell_type": "markdown", + "id": "343e09cf", + "metadata": {}, + "source": [ + "First you can install the `orbax` library by running the following command:\n", + "\n", + "`pip install orbax-checkpoint`\n", + "\n", + "You may also install directly from GitHub, using the following command. This can be used to obtain the most recent version of Orbax.\n", + "\n", + "`pip install 'git+https://github.com/google/orbax/#subdirectory=checkpoint'`\n", + "\n", + "You can install the `braintools` library by running the following command:\n", + "\n", + "`pip install braintools`" + ] + }, + { + "cell_type": "markdown", + "id": "ee756112", + "metadata": {}, + "source": [ + "First, let's import the necessary libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b7741c32", + "metadata": {}, + "outputs": [], + "source": [ + "import tempfile\n", + "import os\n", + "\n", + "import jax\n", + "import jax.numpy as jnp\n", + "import orbax.checkpoint as orbax\n", + "import braintools\n", + "\n", + "import brainstate " + ] + }, + { + "cell_type": "markdown", + "id": "a6eb2d76", + "metadata": {}, + "source": [ + "## Define the Model\n", + "We define a simple Multi-Layer Perceptron (MLP) model using `brainstate`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7e020098", + "metadata": {}, + "outputs": [], + "source": [ + "class MLP(brainstate.nn.Module):\n", + " def __init__(self, din: int, dmid: int, dout: int):\n", + " super().__init__()\n", + " self.dense1 = brainstate.nn.Linear(din, dmid)\n", + " self.dense2 = brainstate.nn.Linear(dmid, dout)\n", + "\n", + " def __call__(self, x: jax.Array) -> jax.Array:\n", + " x = self.dense1(x)\n", + " x = jax.nn.relu(x)\n", + " x = self.dense2(x)\n", + " return x" + ] + }, + { + "cell_type": "markdown", + "id": "e5bf157c", + "metadata": {}, + "source": [ + "## Create the Model\n", + "We create an instance of the model with a given seed for reproducibility." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "39619169", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MLP(\n", + " dense1=Linear(\n", + " in_size=(10,),\n", + " out_size=(20,),\n", + " w_mask=None,\n", + " weight=ParamState(\n", + " value={'weight': Array([[ 0.74939334, 0.3148138 , 0.60089725, -0.7131149 , 0.6790908 ,\n", + " -0.44663328, 0.03113358, -0.5250644 , 0.1614144 , -0.39722365,\n", + " -0.23442519, 0.118144 , 0.7669531 , 0.06876656, 0.6045511 ,\n", + " 0.12086334, -0.88447595, -0.19188431, -0.85868365, 0.00500867],\n", + " [ 0.20412642, 0.07092498, 0.37392026, 0.34958398, -0.57214 ,\n", + " 0.71724516, -0.08160591, 0.50068825, -0.17175189, -0.08275215,\n", + " 0.6508336 , 0.28279537, 0.08821856, 0.83949256, 0.49844882,\n", + " -0.04159267, -0.47324428, 0.27084318, -0.58236146, -0.09787997],\n", + " [-0.04382031, -0.20300323, -0.04449642, 0.41578326, 0.5507486 ,\n", + " -0.15913244, -0.8612537 , 0.19072336, -0.16082875, -0.24696219,\n", + " -0.30372635, 0.6850187 , 0.32007053, 0.24253711, 0.28217098,\n", + " -0.8014343 , 0.48989874, -0.0160339 , 0.32790813, -0.49864978],\n", + " [-0.61840117, 0.21017133, 0.07593305, -0.02365256, -0.03401124,\n", + " -0.05115725, 0.6195931 , 0.15402867, 0.40200788, 0.34128165,\n", + " 0.00860781, -0.54993343, -0.5615623 , -0.09946032, -0.02702298,\n", + " 0.3336504 , -0.29341814, 0.3551176 , 0.20545702, -0.11665206],\n", + " [-0.16712527, -0.2531548 , 0.49188057, -0.1302325 , -0.12142995,\n", + " -0.03277557, 0.06477631, -0.30021554, -0.35658783, -0.5185722 ,\n", + " 0.15650164, -0.7464921 , -0.67454183, 0.09733332, -0.5153455 ,\n", + " 0.1480032 , -0.20877242, 0.16675173, 0.12827559, 0.5268865 ],\n", + " [-0.7994777 , -0.40662575, 0.28858158, -0.39780638, 0.6637344 ,\n", + " 0.09075797, -0.75130516, -0.26124355, 0.4175534 , -0.28502613,\n", + " -0.4241315 , 0.6746936 , 0.40870044, 0.94398546, -0.9198975 ,\n", + " -0.29775584, -0.09658122, -0.16053742, -0.05611025, 0.01059594],\n", + " [ 0.5480607 , -0.09164569, -0.7853424 , 0.74901533, -0.5906064 ,\n", + " -0.51409346, 0.10472732, -0.13107914, -0.45577446, -0.24654518,\n", + " 0.5399041 , -0.09071468, -0.5162382 , -0.01967659, -0.47176114,\n", + " -0.01017519, -0.5026951 , 0.05103482, 0.37542912, -0.25549397],\n", + " [-0.2706877 , 0.64187187, -0.505112 , -0.17481704, -0.88211423,\n", + " -0.8674219 , 0.5660908 , -0.20833156, 0.3285284 , 0.92883885,\n", + " -0.26592234, -0.47405127, 0.79681754, -0.5791843 , -0.27389136,\n", + " -0.3449671 , 0.509086 , 0.76971966, 0.10998839, -0.24425419],\n", + " [ 0.8046176 , -0.0295862 , 0.14252356, -0.1579972 , -0.20274054,\n", + " 0.01246137, -0.15756735, 0.32074738, 0.14097062, 0.03186554,\n", + " -0.1414449 , 0.4591949 , -0.21690284, -0.41089386, 0.26250118,\n", + " -0.0720875 , -0.05566718, -0.08271056, -0.37073353, 0.09257671],\n", + " [ 0.44894424, 0.22119072, -0.5117801 , -0.7407342 , -0.8777072 ,\n", + " 0.34723184, 0.0638053 , -0.10916334, 0.67356414, -0.21106955,\n", + " -0.24140975, 0.12431782, 0.2585294 , 0.06849731, -0.2997454 ,\n", + " -0.39390567, -0.25709096, -0.15120856, -0.10684931, 0.69015896]], dtype=float32), 'bias': Array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0.], dtype=float32)}\n", + " )\n", + " ),\n", + " dense2=Linear(\n", + " in_size=(20,),\n", + " out_size=(30,),\n", + " w_mask=None,\n", + " weight=ParamState(\n", + " value={'weight': Array([[ 0.62046814, 0.5301044 , -0.4739194 , -0.14099996, -0.14287984,\n", + " 0.1282555 , 0.3935479 , 0.21227883, 0.5402896 , -0.32984453,\n", + " 0.1054924 , -0.02015361, -0.24927817, 0.16467251, 0.5784846 ,\n", + " 0.2914683 , 0.35762057, 0.29866996, -0.19128309, 0.09088683,\n", + " -0.11386324, -0.22595015, 0.11267622, 0.5419977 , -0.37829107,\n", + " -0.09838869, -0.04575922, -0.7129366 , -0.32915255, 0.00509653],\n", + " [ 0.21818087, 0.08530099, 0.3571782 , 0.70128685, -0.04413987,\n", + " 0.5709911 , 0.12656331, 0.29721373, 0.47632915, -0.17275095,\n", + " -0.08733549, -0.22514656, -0.05714319, -0.27718347, -0.39045587,\n", + " 0.21975726, 0.18346666, -0.0382327 , 0.13839035, 0.1998283 ,\n", + " -0.09052311, 0.38183472, 0.4496051 , -0.23680712, -0.28785107,\n", + " 0.16122147, -0.33963904, 0.14983557, -0.43373275, -0.09495756],\n", + " [ 0.2568711 , 0.5197295 , -0.13442262, -0.6316247 , -0.6276094 ,\n", + " 0.396733 , 0.09978731, 0.37479848, 0.05811005, 0.38287428,\n", + " -0.23015432, 0.26524863, 0.40986276, 0.51085615, -0.16390967,\n", + " -0.08889349, 0.14242767, -0.04773026, 0.0186008 , 0.08168013,\n", + " 0.22218394, 0.45948145, 0.15798983, 0.11101982, -0.22625342,\n", + " -0.3179377 , 0.08289661, -0.35810882, -0.11701918, -0.07404168],\n", + " [ 0.3988777 , 0.09341867, -0.10675149, 0.24498817, 0.57484835,\n", + " 0.13964735, -0.09232395, 0.49800253, -0.11388287, -0.23314221,\n", + " -0.20017506, 0.17043568, -0.5916637 , -0.5033429 , -0.03982058,\n", + " -0.29196522, -0.06229761, -0.12120344, -0.04843295, 0.14077553,\n", + " -0.23975037, 0.25233614, -0.00446404, 0.6632397 , -0.32990777,\n", + " -0.42914438, -0.372548 , 0.30960974, 0.31027737, 0.3736987 ],\n", + " [-0.32519445, -0.0722824 , -0.06813759, 0.15726727, 0.52653533,\n", + " -0.39247712, -0.37830523, 0.20171025, -0.06937496, 0.24201019,\n", + " 0.1104718 , 0.62304336, 0.4803775 , -0.26503193, 0.5813743 ,\n", + " -0.22703817, 0.14889193, -0.09937828, 0.45811605, -0.53927666,\n", + " 0.38610622, 0.25877175, -0.57717675, -0.16893166, -0.17705517,\n", + " 0.2077132 , -0.24225888, -0.11191322, -0.00921882, -0.10405794],\n", + " [ 0.41278893, -0.27192885, 0.28467888, -0.21523082, 0.37667713,\n", + " 0.07426698, 0.22414407, -0.1354481 , -0.23419291, 0.2381074 ,\n", + " -0.24765436, 0.08778596, -0.00406975, -0.615931 , -0.09067997,\n", + " 0.26324016, -0.03728105, 0.29038942, 0.678011 , -0.6540893 ,\n", + " -0.5934551 , -0.16575795, 0.14227462, -0.0928836 , 0.24194399,\n", + " -0.04459891, 0.15232474, -0.21208623, -0.21339062, 0.07757895],\n", + " [-0.6379539 , 0.31518504, -0.11890189, -0.19096668, 0.21524261,\n", + " -0.06361473, 0.56184316, 0.028249 , -0.14510861, 0.08830918,\n", + " 0.08343762, -0.25384745, -0.33789673, 0.03700592, -0.19126455,\n", + " -0.01024354, -0.37079507, 0.24292567, 0.19478266, 0.5580041 ,\n", + " -0.35604435, 0.3915089 , -0.21796615, 0.0528199 , -0.13147084,\n", + " -0.05164728, -0.0625616 , 0.36192182, -0.05759151, 0.4186158 ],\n", + " [-0.04047865, 0.02108607, 0.41284686, 0.29146758, 0.20885086,\n", + " 0.20158692, -0.17301778, 0.27862224, 0.27474535, -0.19628745,\n", + " 0.15615414, 0.20871529, -0.314695 , -0.24115679, 0.33787283,\n", + " -0.14589988, -0.10813709, -0.039655 , -0.03082952, -0.66367936,\n", + " -0.2642637 , 0.2510051 , -0.08893799, 0.21589737, 0.51835227,\n", + " -0.44741842, -0.33786973, 0.6091706 , -0.3753065 , -0.37535354],\n", + " [ 0.11531412, 0.6267082 , -0.15149857, -0.3794238 , 0.55059415,\n", + " 0.23017633, -0.32434496, 0.2958217 , 0.41106105, 0.4731116 ,\n", + " -0.50055134, 0.01790522, -0.54518443, 0.04447998, -0.13089894,\n", + " -0.15774457, 0.09551436, -0.08697572, -0.05562068, -0.06885753,\n", + " 0.20314606, 0.14044988, -0.19203717, -0.4179157 , 0.18612123,\n", + " -0.14104603, -0.35670066, -0.24597271, 0.10614085, -0.12170368],\n", + " [ 0.23700227, 0.30524203, -0.3694181 , 0.33033338, 0.02095676,\n", + " -0.05125551, 0.11001365, -0.20992021, -0.05562193, -0.26372904,\n", + " -0.2967057 , -0.14012977, -0.14321879, -0.17379181, 0.5104145 ,\n", + " 0.11991877, -0.1430745 , -0.04331772, -0.41226274, 0.00449552,\n", + " -0.08277246, -0.12151891, -0.45340443, 0.12951623, -0.27139285,\n", + " 0.4472014 , 0.19157353, -0.4412653 , -0.04408614, 0.41542286],\n", + " [ 0.04913985, -0.04957955, -0.40214545, -0.24126607, -0.11509801,\n", + " -0.51304626, -0.3825655 , 0.34506062, -0.0222565 , -0.27472144,\n", + " -0.5477002 , -0.03630246, 0.17396483, 0.6892827 , 0.02867843,\n", + " 0.36273733, -0.34478036, 0.2839792 , 0.15002191, -0.20483544,\n", + " 0.15306501, -0.06504299, -0.00701311, 0.0804052 , 0.44663915,\n", + " 0.11938784, -0.05011488, 0.06942522, -0.1151372 , 0.2728172 ],\n", + " [-0.30464825, 0.11323573, 0.02953907, -0.7024937 , -0.04522578,\n", + " 0.10622236, -0.1298965 , 0.0872021 , -0.36016473, -0.11690426,\n", + " -0.07054564, -0.32576308, -0.30710763, -0.6661573 , 0.13130474,\n", + " 0.00769307, 0.00603968, -0.5331483 , -0.00946458, -0.08804175,\n", + " 0.01258891, 0.19920264, -0.52920264, 0.11547033, 0.0503376 ,\n", + " 0.2710771 , 0.20577058, -0.16118994, 0.03479335, 0.30332327],\n", + " [-0.11540684, -0.21528308, -0.09639532, -0.38324118, 0.08790598,\n", + " -0.05113763, -0.22907412, 0.08176684, -0.13504112, -0.14580515,\n", + " -0.10574839, -0.13816664, 0.25279123, -0.35016036, -0.02811426,\n", + " 0.1878024 , 0.33833987, -0.44787505, 0.05859555, -0.12482259,\n", + " 0.4109398 , -0.3567587 , 0.4436607 , -0.13256377, 0.42250675,\n", + " 0.33017033, 0.28086263, 0.33791474, 0.24015151, -0.23016477],\n", + " [ 0.46682912, -0.63216 , 0.43159592, 0.21971288, -0.07587896,\n", + " -0.25639635, -0.42970398, -0.4962936 , -0.21198583, 0.18351796,\n", + " 0.01911162, -0.3004833 , -0.41785267, -0.04077749, -0.20676233,\n", + " -0.11401828, 0.12992048, 0.03491049, 0.05013497, 0.57222587,\n", + " -0.12001502, -0.17038153, -0.31871405, -0.32121637, 0.66278815,\n", + " 0.61774564, -0.01240813, -0.06011448, 0.29245874, -0.3879291 ],\n", + " [ 0.02741514, 0.31249774, -0.15944321, 0.14222006, 0.611036 ,\n", + " 0.02716783, 0.48367155, -0.59191144, -0.260246 , 0.29856846,\n", + " 0.36217022, 0.26721174, 0.1436277 , 0.2510483 , 0.63455343,\n", + " 0.22804502, 0.21089312, -0.03622444, 0.24770333, 0.12762095,\n", + " -0.11348359, 0.71003526, -0.6399693 , 0.2956937 , -0.40721762,\n", + " 0.07830685, -0.12750737, 0.09320084, -0.37348104, 0.6469367 ],\n", + " [-0.21946031, 0.58491176, 0.6910229 , -0.38729444, -0.22691855,\n", + " 0.09827446, -0.27745098, 0.3286477 , -0.28397417, 0.3331472 ,\n", + " -0.10511833, 0.04856022, 0.6826674 , -0.19410591, -0.03848339,\n", + " 0.2877471 , 0.42053938, -0.3121656 , 0.1115057 , 0.3940428 ,\n", + " 0.22287792, -0.11617415, -0.15520288, -0.17891021, 0.08283449,\n", + " -0.45727572, -0.08755263, -0.30042952, 0.04397725, -0.32858402],\n", + " [-0.04652168, 0.22256051, 0.34796244, -0.57714033, -0.19478762,\n", + " -0.04000793, -0.22230573, -0.1784827 , 0.18552966, 0.3517072 ,\n", + " -0.43350866, 0.3370349 , 0.34543782, -0.25484002, -0.06113737,\n", + " -0.29600585, 0.55229264, 0.26264954, -0.12024187, 0.06554315,\n", + " 0.33039162, -0.4056347 , -0.22326599, -0.20423931, -0.20365807,\n", + " 0.5614395 , -0.33278635, 0.3678192 , -0.38601917, -0.12349749],\n", + " [ 0.21260151, -0.6383393 , -0.04182729, 0.21110533, -0.16549559,\n", + " 0.20241106, 0.42155504, 0.2782736 , -0.5695076 , 0.3197464 ,\n", + " 0.3593777 , 0.15281492, -0.16649725, -0.32258078, -0.19450592,\n", + " -0.5648749 , 0.14112377, -0.08617025, 0.2822599 , 0.65894157,\n", + " 0.06424519, -0.02703291, 0.41351956, -0.06962998, -0.03156902,\n", + " -0.3027034 , -0.15010884, 0.3097132 , -0.01670518, 0.13812247],\n", + " [-0.35231128, -0.06400244, -0.5534636 , 0.08153537, -0.1431605 ,\n", + " 0.19649687, -0.57627857, 0.14731233, -0.5345133 , 0.14830953,\n", + " 0.11090186, -0.5130216 , 0.07951056, 0.042261 , 0.0088584 ,\n", + " 0.0693031 , -0.25705618, 0.07637526, -0.2910843 , 0.26884285,\n", + " -0.3668523 , -0.51732624, 0.32633176, 0.4078384 , 0.07319385,\n", + " 0.24243955, -0.39059573, -0.14434972, -0.20902094, 0.03081408],\n", + " [-0.29074088, -0.340606 , 0.24403909, 0.28382063, 0.57466537,\n", + " 0.24103518, -0.53504395, -0.12040613, -0.21954668, -0.11855581,\n", + " 0.20805535, -0.6497588 , 0.03112273, -0.06355662, 0.22711465,\n", + " -0.00476316, -0.4368407 , -0.26775414, 0.02075309, -0.0473614 ,\n", + " -0.12880138, 0.15983032, 0.18893135, -0.06872427, -0.14535248,\n", + " 0.27104148, -0.31298438, 0.14454837, -0.1837953 , 0.4652801 ]], dtype=float32), 'bias': Array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)}\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SEED = 42\n", + "brainstate.random.seed(SEED) # set seed in brainstate\n", + "model1 = MLP(10, 20, 30) # create model\n", + "model1" + ] + }, + { + "cell_type": "markdown", + "id": "26ded981", + "metadata": {}, + "source": [ + "## Save the Model State\n", + "\n", + "### Save the Model State Using `orbax`\n", + "We save the model's parameters to a checkpoint file." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "14d1d552", + "metadata": {}, + "outputs": [], + "source": [ + "tmpdir = tempfile.mkdtemp() # create temporary directory\n", + "state_tree = brainstate.graph.treefy_states(model1) # convert model to state tree\n", + "checkpointer = orbax.PyTreeCheckpointer() # create checkpointer\n", + "checkpointer.save(os.path.join(tmpdir, 'state'), state_tree) # save state tree" + ] + }, + { + "cell_type": "markdown", + "id": "27209868", + "metadata": {}, + "source": [ + "Now, we've saved the model's parameters to the checkpoint files in `tmpdir/state` by using the `orbax` library." + ] + }, + { + "cell_type": "markdown", + "id": "fb36ffc3", + "metadata": {}, + "source": [ + "### Save the Model State Using `braintools`" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "2b03606b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving checkpoint into C:\\Users\\13107\\AppData\\Local\\Temp\\tmptjdpy0vf\\state.msgpack\n" + ] + } + ], + "source": [ + "checkpoint = brainstate.graph.states(model1).to_nest() # convert model to nest\n", + "braintools.file.msgpack_save(os.path.join(tmpdir, 'state.msgpack'), checkpoint) # save checkpoint" + ] + }, + { + "cell_type": "markdown", + "id": "76030ac1", + "metadata": {}, + "source": [ + "Now, we've saved the model's parameters to the checkpoint files in `tmpdir/state.msgpack` by using the `braintools` library." + ] + }, + { + "cell_type": "markdown", + "id": "6faf01ec", + "metadata": {}, + "source": [ + "## Load the Model State\n", + "\n", + "### Load the Model State Using `orbax`\n", + "Let's load the model's parameters from the checkpoint files." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "26ba3c3e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\routhleck_app\\miniconda\\envs\\brainstate\\lib\\site-packages\\orbax\\checkpoint\\_src\\serialization\\type_handlers.py:1123: UserWarning: Couldn't find sharding info under RestoreArgs. Populating sharding info from sharding file. Please note restoration time will be slightly increased due to reading from file instead of directly from RestoreArgs. Note also that this option is unsafe when restoring on a different topology than the checkpoint was saved with.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# create that model with abstract shapes\n", + "brainstate.random.seed(0)\n", + "model2 = brainstate.augment.abstract_init(lambda: MLP(10, 20, 30))\n", + "state_tree = brainstate.graph.treefy_states(model2)\n", + "\n", + "# Load the parameters from checkpoint files\n", + "checkpointer = orbax.PyTreeCheckpointer()\n", + "state_tree = checkpointer.restore(os.path.join(tmpdir, 'state'), item=state_tree)\n", + "\n", + "# update the model with the loaded state\n", + "brainstate.graph.update_states(model2, state_tree)" + ] + }, + { + "cell_type": "markdown", + "id": "79929f4a", + "metadata": {}, + "source": [ + "### Load the Model State Using `braintools`\n", + "Let's load the model's parameters from the checkpoint files." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "7a6d1de0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading checkpoint from C:\\Users\\13107\\AppData\\Local\\Temp\\tmptjdpy0vf\\state.msgpack\n" + ] + }, + { + "data": { + "text/plain": [ + "{'dense1': {'weight': ParamState(\n", + " value={'bias': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0.], dtype=float32), 'weight': array([[ 0.74939334, 0.3148138 , 0.60089725, -0.7131149 , 0.6790908 ,\n", + " -0.44663328, 0.03113358, -0.5250644 , 0.1614144 , -0.39722365,\n", + " -0.23442519, 0.118144 , 0.7669531 , 0.06876656, 0.6045511 ,\n", + " 0.12086334, -0.88447595, -0.19188431, -0.85868365, 0.00500867],\n", + " [ 0.20412642, 0.07092498, 0.37392026, 0.34958398, -0.57214 ,\n", + " 0.71724516, -0.08160591, 0.50068825, -0.17175189, -0.08275215,\n", + " 0.6508336 , 0.28279537, 0.08821856, 0.83949256, 0.49844882,\n", + " -0.04159267, -0.47324428, 0.27084318, -0.58236146, -0.09787997],\n", + " [-0.04382031, -0.20300323, -0.04449642, 0.41578326, 0.5507486 ,\n", + " -0.15913244, -0.8612537 , 0.19072336, -0.16082875, -0.24696219,\n", + " -0.30372635, 0.6850187 , 0.32007053, 0.24253711, 0.28217098,\n", + " -0.8014343 , 0.48989874, -0.0160339 , 0.32790813, -0.49864978],\n", + " [-0.61840117, 0.21017133, 0.07593305, -0.02365256, -0.03401124,\n", + " -0.05115725, 0.6195931 , 0.15402867, 0.40200788, 0.34128165,\n", + " 0.00860781, -0.54993343, -0.5615623 , -0.09946032, -0.02702298,\n", + " 0.3336504 , -0.29341814, 0.3551176 , 0.20545702, -0.11665206],\n", + " [-0.16712527, -0.2531548 , 0.49188057, -0.1302325 , -0.12142995,\n", + " -0.03277557, 0.06477631, -0.30021554, -0.35658783, -0.5185722 ,\n", + " 0.15650164, -0.7464921 , -0.67454183, 0.09733332, -0.5153455 ,\n", + " 0.1480032 , -0.20877242, 0.16675173, 0.12827559, 0.5268865 ],\n", + " [-0.7994777 , -0.40662575, 0.28858158, -0.39780638, 0.6637344 ,\n", + " 0.09075797, -0.75130516, -0.26124355, 0.4175534 , -0.28502613,\n", + " -0.4241315 , 0.6746936 , 0.40870044, 0.94398546, -0.9198975 ,\n", + " -0.29775584, -0.09658122, -0.16053742, -0.05611025, 0.01059594],\n", + " [ 0.5480607 , -0.09164569, -0.7853424 , 0.74901533, -0.5906064 ,\n", + " -0.51409346, 0.10472732, -0.13107914, -0.45577446, -0.24654518,\n", + " 0.5399041 , -0.09071468, -0.5162382 , -0.01967659, -0.47176114,\n", + " -0.01017519, -0.5026951 , 0.05103482, 0.37542912, -0.25549397],\n", + " [-0.2706877 , 0.64187187, -0.505112 , -0.17481704, -0.88211423,\n", + " -0.8674219 , 0.5660908 , -0.20833156, 0.3285284 , 0.92883885,\n", + " -0.26592234, -0.47405127, 0.79681754, -0.5791843 , -0.27389136,\n", + " -0.3449671 , 0.509086 , 0.76971966, 0.10998839, -0.24425419],\n", + " [ 0.8046176 , -0.0295862 , 0.14252356, -0.1579972 , -0.20274054,\n", + " 0.01246137, -0.15756735, 0.32074738, 0.14097062, 0.03186554,\n", + " -0.1414449 , 0.4591949 , -0.21690284, -0.41089386, 0.26250118,\n", + " -0.0720875 , -0.05566718, -0.08271056, -0.37073353, 0.09257671],\n", + " [ 0.44894424, 0.22119072, -0.5117801 , -0.7407342 , -0.8777072 ,\n", + " 0.34723184, 0.0638053 , -0.10916334, 0.67356414, -0.21106955,\n", + " -0.24140975, 0.12431782, 0.2585294 , 0.06849731, -0.2997454 ,\n", + " -0.39390567, -0.25709096, -0.15120856, -0.10684931, 0.69015896]],\n", + " dtype=float32)}\n", + " )},\n", + " 'dense2': {'weight': ParamState(\n", + " value={'bias': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), 'weight': array([[ 0.62046814, 0.5301044 , -0.4739194 , -0.14099996, -0.14287984,\n", + " 0.1282555 , 0.3935479 , 0.21227883, 0.5402896 , -0.32984453,\n", + " 0.1054924 , -0.02015361, -0.24927817, 0.16467251, 0.5784846 ,\n", + " 0.2914683 , 0.35762057, 0.29866996, -0.19128309, 0.09088683,\n", + " -0.11386324, -0.22595015, 0.11267622, 0.5419977 , -0.37829107,\n", + " -0.09838869, -0.04575922, -0.7129366 , -0.32915255, 0.00509653],\n", + " [ 0.21818087, 0.08530099, 0.3571782 , 0.70128685, -0.04413987,\n", + " 0.5709911 , 0.12656331, 0.29721373, 0.47632915, -0.17275095,\n", + " -0.08733549, -0.22514656, -0.05714319, -0.27718347, -0.39045587,\n", + " 0.21975726, 0.18346666, -0.0382327 , 0.13839035, 0.1998283 ,\n", + " -0.09052311, 0.38183472, 0.4496051 , -0.23680712, -0.28785107,\n", + " 0.16122147, -0.33963904, 0.14983557, -0.43373275, -0.09495756],\n", + " [ 0.2568711 , 0.5197295 , -0.13442262, -0.6316247 , -0.6276094 ,\n", + " 0.396733 , 0.09978731, 0.37479848, 0.05811005, 0.38287428,\n", + " -0.23015432, 0.26524863, 0.40986276, 0.51085615, -0.16390967,\n", + " -0.08889349, 0.14242767, -0.04773026, 0.0186008 , 0.08168013,\n", + " 0.22218394, 0.45948145, 0.15798983, 0.11101982, -0.22625342,\n", + " -0.3179377 , 0.08289661, -0.35810882, -0.11701918, -0.07404168],\n", + " [ 0.3988777 , 0.09341867, -0.10675149, 0.24498817, 0.57484835,\n", + " 0.13964735, -0.09232395, 0.49800253, -0.11388287, -0.23314221,\n", + " -0.20017506, 0.17043568, -0.5916637 , -0.5033429 , -0.03982058,\n", + " -0.29196522, -0.06229761, -0.12120344, -0.04843295, 0.14077553,\n", + " -0.23975037, 0.25233614, -0.00446404, 0.6632397 , -0.32990777,\n", + " -0.42914438, -0.372548 , 0.30960974, 0.31027737, 0.3736987 ],\n", + " [-0.32519445, -0.0722824 , -0.06813759, 0.15726727, 0.52653533,\n", + " -0.39247712, -0.37830523, 0.20171025, -0.06937496, 0.24201019,\n", + " 0.1104718 , 0.62304336, 0.4803775 , -0.26503193, 0.5813743 ,\n", + " -0.22703817, 0.14889193, -0.09937828, 0.45811605, -0.53927666,\n", + " 0.38610622, 0.25877175, -0.57717675, -0.16893166, -0.17705517,\n", + " 0.2077132 , -0.24225888, -0.11191322, -0.00921882, -0.10405794],\n", + " [ 0.41278893, -0.27192885, 0.28467888, -0.21523082, 0.37667713,\n", + " 0.07426698, 0.22414407, -0.1354481 , -0.23419291, 0.2381074 ,\n", + " -0.24765436, 0.08778596, -0.00406975, -0.615931 , -0.09067997,\n", + " 0.26324016, -0.03728105, 0.29038942, 0.678011 , -0.6540893 ,\n", + " -0.5934551 , -0.16575795, 0.14227462, -0.0928836 , 0.24194399,\n", + " -0.04459891, 0.15232474, -0.21208623, -0.21339062, 0.07757895],\n", + " [-0.6379539 , 0.31518504, -0.11890189, -0.19096668, 0.21524261,\n", + " -0.06361473, 0.56184316, 0.028249 , -0.14510861, 0.08830918,\n", + " 0.08343762, -0.25384745, -0.33789673, 0.03700592, -0.19126455,\n", + " -0.01024354, -0.37079507, 0.24292567, 0.19478266, 0.5580041 ,\n", + " -0.35604435, 0.3915089 , -0.21796615, 0.0528199 , -0.13147084,\n", + " -0.05164728, -0.0625616 , 0.36192182, -0.05759151, 0.4186158 ],\n", + " [-0.04047865, 0.02108607, 0.41284686, 0.29146758, 0.20885086,\n", + " 0.20158692, -0.17301778, 0.27862224, 0.27474535, -0.19628745,\n", + " 0.15615414, 0.20871529, -0.314695 , -0.24115679, 0.33787283,\n", + " -0.14589988, -0.10813709, -0.039655 , -0.03082952, -0.66367936,\n", + " -0.2642637 , 0.2510051 , -0.08893799, 0.21589737, 0.51835227,\n", + " -0.44741842, -0.33786973, 0.6091706 , -0.3753065 , -0.37535354],\n", + " [ 0.11531412, 0.6267082 , -0.15149857, -0.3794238 , 0.55059415,\n", + " 0.23017633, -0.32434496, 0.2958217 , 0.41106105, 0.4731116 ,\n", + " -0.50055134, 0.01790522, -0.54518443, 0.04447998, -0.13089894,\n", + " -0.15774457, 0.09551436, -0.08697572, -0.05562068, -0.06885753,\n", + " 0.20314606, 0.14044988, -0.19203717, -0.4179157 , 0.18612123,\n", + " -0.14104603, -0.35670066, -0.24597271, 0.10614085, -0.12170368],\n", + " [ 0.23700227, 0.30524203, -0.3694181 , 0.33033338, 0.02095676,\n", + " -0.05125551, 0.11001365, -0.20992021, -0.05562193, -0.26372904,\n", + " -0.2967057 , -0.14012977, -0.14321879, -0.17379181, 0.5104145 ,\n", + " 0.11991877, -0.1430745 , -0.04331772, -0.41226274, 0.00449552,\n", + " -0.08277246, -0.12151891, -0.45340443, 0.12951623, -0.27139285,\n", + " 0.4472014 , 0.19157353, -0.4412653 , -0.04408614, 0.41542286],\n", + " [ 0.04913985, -0.04957955, -0.40214545, -0.24126607, -0.11509801,\n", + " -0.51304626, -0.3825655 , 0.34506062, -0.0222565 , -0.27472144,\n", + " -0.5477002 , -0.03630246, 0.17396483, 0.6892827 , 0.02867843,\n", + " 0.36273733, -0.34478036, 0.2839792 , 0.15002191, -0.20483544,\n", + " 0.15306501, -0.06504299, -0.00701311, 0.0804052 , 0.44663915,\n", + " 0.11938784, -0.05011488, 0.06942522, -0.1151372 , 0.2728172 ],\n", + " [-0.30464825, 0.11323573, 0.02953907, -0.7024937 , -0.04522578,\n", + " 0.10622236, -0.1298965 , 0.0872021 , -0.36016473, -0.11690426,\n", + " -0.07054564, -0.32576308, -0.30710763, -0.6661573 , 0.13130474,\n", + " 0.00769307, 0.00603968, -0.5331483 , -0.00946458, -0.08804175,\n", + " 0.01258891, 0.19920264, -0.52920264, 0.11547033, 0.0503376 ,\n", + " 0.2710771 , 0.20577058, -0.16118994, 0.03479335, 0.30332327],\n", + " [-0.11540684, -0.21528308, -0.09639532, -0.38324118, 0.08790598,\n", + " -0.05113763, -0.22907412, 0.08176684, -0.13504112, -0.14580515,\n", + " -0.10574839, -0.13816664, 0.25279123, -0.35016036, -0.02811426,\n", + " 0.1878024 , 0.33833987, -0.44787505, 0.05859555, -0.12482259,\n", + " 0.4109398 , -0.3567587 , 0.4436607 , -0.13256377, 0.42250675,\n", + " 0.33017033, 0.28086263, 0.33791474, 0.24015151, -0.23016477],\n", + " [ 0.46682912, -0.63216 , 0.43159592, 0.21971288, -0.07587896,\n", + " -0.25639635, -0.42970398, -0.4962936 , -0.21198583, 0.18351796,\n", + " 0.01911162, -0.3004833 , -0.41785267, -0.04077749, -0.20676233,\n", + " -0.11401828, 0.12992048, 0.03491049, 0.05013497, 0.57222587,\n", + " -0.12001502, -0.17038153, -0.31871405, -0.32121637, 0.66278815,\n", + " 0.61774564, -0.01240813, -0.06011448, 0.29245874, -0.3879291 ],\n", + " [ 0.02741514, 0.31249774, -0.15944321, 0.14222006, 0.611036 ,\n", + " 0.02716783, 0.48367155, -0.59191144, -0.260246 , 0.29856846,\n", + " 0.36217022, 0.26721174, 0.1436277 , 0.2510483 , 0.63455343,\n", + " 0.22804502, 0.21089312, -0.03622444, 0.24770333, 0.12762095,\n", + " -0.11348359, 0.71003526, -0.6399693 , 0.2956937 , -0.40721762,\n", + " 0.07830685, -0.12750737, 0.09320084, -0.37348104, 0.6469367 ],\n", + " [-0.21946031, 0.58491176, 0.6910229 , -0.38729444, -0.22691855,\n", + " 0.09827446, -0.27745098, 0.3286477 , -0.28397417, 0.3331472 ,\n", + " -0.10511833, 0.04856022, 0.6826674 , -0.19410591, -0.03848339,\n", + " 0.2877471 , 0.42053938, -0.3121656 , 0.1115057 , 0.3940428 ,\n", + " 0.22287792, -0.11617415, -0.15520288, -0.17891021, 0.08283449,\n", + " -0.45727572, -0.08755263, -0.30042952, 0.04397725, -0.32858402],\n", + " [-0.04652168, 0.22256051, 0.34796244, -0.57714033, -0.19478762,\n", + " -0.04000793, -0.22230573, -0.1784827 , 0.18552966, 0.3517072 ,\n", + " -0.43350866, 0.3370349 , 0.34543782, -0.25484002, -0.06113737,\n", + " -0.29600585, 0.55229264, 0.26264954, -0.12024187, 0.06554315,\n", + " 0.33039162, -0.4056347 , -0.22326599, -0.20423931, -0.20365807,\n", + " 0.5614395 , -0.33278635, 0.3678192 , -0.38601917, -0.12349749],\n", + " [ 0.21260151, -0.6383393 , -0.04182729, 0.21110533, -0.16549559,\n", + " 0.20241106, 0.42155504, 0.2782736 , -0.5695076 , 0.3197464 ,\n", + " 0.3593777 , 0.15281492, -0.16649725, -0.32258078, -0.19450592,\n", + " -0.5648749 , 0.14112377, -0.08617025, 0.2822599 , 0.65894157,\n", + " 0.06424519, -0.02703291, 0.41351956, -0.06962998, -0.03156902,\n", + " -0.3027034 , -0.15010884, 0.3097132 , -0.01670518, 0.13812247],\n", + " [-0.35231128, -0.06400244, -0.5534636 , 0.08153537, -0.1431605 ,\n", + " 0.19649687, -0.57627857, 0.14731233, -0.5345133 , 0.14830953,\n", + " 0.11090186, -0.5130216 , 0.07951056, 0.042261 , 0.0088584 ,\n", + " 0.0693031 , -0.25705618, 0.07637526, -0.2910843 , 0.26884285,\n", + " -0.3668523 , -0.51732624, 0.32633176, 0.4078384 , 0.07319385,\n", + " 0.24243955, -0.39059573, -0.14434972, -0.20902094, 0.03081408],\n", + " [-0.29074088, -0.340606 , 0.24403909, 0.28382063, 0.57466537,\n", + " 0.24103518, -0.53504395, -0.12040613, -0.21954668, -0.11855581,\n", + " 0.20805535, -0.6497588 , 0.03112273, -0.06355662, 0.22711465,\n", + " -0.00476316, -0.4368407 , -0.26775414, 0.02075309, -0.0473614 ,\n", + " -0.12880138, 0.15983032, 0.18893135, -0.06872427, -0.14535248,\n", + " 0.27104148, -0.31298438, 0.14454837, -0.1837953 , 0.4652801 ]],\n", + " dtype=float32)}\n", + " )}}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 创建一个有着相同结构的模型\n", + "brainstate.random.seed(0)\n", + "model3 = brainstate.augment.abstract_init(lambda: MLP(10, 20, 30))\n", + "checkpoint = brainstate.graph.states(model3).to_nest()\n", + "\n", + "# 从msgpack文件读取模型参数\n", + "braintools.file.msgpack_load(os.path.join(tmpdir, 'state.msgpack'), checkpoint)" + ] + }, + { + "cell_type": "markdown", + "id": "29dc37c9", + "metadata": {}, + "source": [ + "## Demonstrate the Loaded Model\n", + "Let's run the loaded model and check if it produces the same output as the original model." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "dfe032ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "True\n" + ] + } + ], + "source": [ + "y1 = model1(jnp.ones((1, 10)))\n", + "y2 = model2(jnp.ones((1, 10)))\n", + "y3 = model3(jnp.ones((1, 10)))\n", + "print(jnp.allclose(y1, y2)) # True\n", + "print(jnp.allclose(y1, y3)) # True" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "brainstate", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/checkpointing-zh.ipynb b/docs/checkpointing-zh.ipynb new file mode 100644 index 000000000..cae5420f8 --- /dev/null +++ b/docs/checkpointing-zh.ipynb @@ -0,0 +1,675 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "158db2bb300c7826", + "metadata": { + "collapsed": false + }, + "source": [ + "# 保存和加载检查点" + ] + }, + { + "cell_type": "markdown", + "id": "d775430d", + "metadata": {}, + "source": [ + "在本教程中,我们将探讨如何使用`orbax`库以及`braintools`的轻量级方法在`brainstate`中保存和加载检查点。这对于在训练过程中保存模型状态非常有用,这样您可以从中断的地方继续训练或稍后使用已训练的模型进行推理。以下示例演示了如何将`orbax`和`braintools`的检查点功能与一个简单的多层感知机(MLP)模型结合使用。" + ] + }, + { + "cell_type": "markdown", + "id": "d68c1c72", + "metadata": {}, + "source": [ + "首先,您可以通过运行以下命令安装`orbax`库:\n", + "\n", + "`pip install orbax-checkpoint`\n", + "\n", + "您也可以直接从 GitHub 安装,使用以下命令。这可以用来获取 Orbax 的最新版本。\n", + "\n", + "`pip install 'git+https://github.com/google/orbax/#subdirectory=checkpoint'`\n", + "\n", + "其次,您可以通过运行以下命令安装`braintools`库:\n", + "\n", + "`pip install braintools`" + ] + }, + { + "cell_type": "markdown", + "id": "d9b41392", + "metadata": {}, + "source": [ + "首先,我们将导入所需的库:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "8142091f", + "metadata": {}, + "outputs": [], + "source": [ + "import tempfile\n", + "import os\n", + "\n", + "import jax\n", + "import jax.numpy as jnp\n", + "import orbax.checkpoint as orbax\n", + "import braintools\n", + "\n", + "import brainstate" + ] + }, + { + "cell_type": "markdown", + "id": "3dede059", + "metadata": {}, + "source": [ + "## 定义模型\n", + "我们使用`brainstate`来定义一个简单的多层感知机(MLP)模型。" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d090d2e3", + "metadata": {}, + "outputs": [], + "source": [ + "class MLP(brainstate.nn.Module):\n", + " def __init__(self, din: int, dmid: int, dout: int):\n", + " super().__init__()\n", + " self.dense1 = brainstate.nn.Linear(din, dmid)\n", + " self.dense2 = brainstate.nn.Linear(dmid, dout)\n", + "\n", + " def __call__(self, x: jax.Array) -> jax.Array:\n", + " x = self.dense1(x)\n", + " x = jax.nn.relu(x)\n", + " x = self.dense2(x)\n", + " return x" + ] + }, + { + "cell_type": "markdown", + "id": "066cc966", + "metadata": {}, + "source": [ + "## 创建模型\n", + "我们将设置随机数种子来实例化模型。" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "67ca04d3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MLP(\n", + " dense1=Linear(\n", + " in_size=(10,),\n", + " out_size=(20,),\n", + " w_mask=None,\n", + " weight=ParamState(\n", + " value={'weight': Array([[ 0.74939334, 0.3148138 , 0.60089725, -0.7131149 , 0.6790908 ,\n", + " -0.44663328, 0.03113358, -0.5250644 , 0.1614144 , -0.39722365,\n", + " -0.23442519, 0.118144 , 0.7669531 , 0.06876656, 0.6045511 ,\n", + " 0.12086334, -0.88447595, -0.19188431, -0.85868365, 0.00500867],\n", + " [ 0.20412642, 0.07092498, 0.37392026, 0.34958398, -0.57214 ,\n", + " 0.71724516, -0.08160591, 0.50068825, -0.17175189, -0.08275215,\n", + " 0.6508336 , 0.28279537, 0.08821856, 0.83949256, 0.49844882,\n", + " -0.04159267, -0.47324428, 0.27084318, -0.58236146, -0.09787997],\n", + " [-0.04382031, -0.20300323, -0.04449642, 0.41578326, 0.5507486 ,\n", + " -0.15913244, -0.8612537 , 0.19072336, -0.16082875, -0.24696219,\n", + " -0.30372635, 0.6850187 , 0.32007053, 0.24253711, 0.28217098,\n", + " -0.8014343 , 0.48989874, -0.0160339 , 0.32790813, -0.49864978],\n", + " [-0.61840117, 0.21017133, 0.07593305, -0.02365256, -0.03401124,\n", + " -0.05115725, 0.6195931 , 0.15402867, 0.40200788, 0.34128165,\n", + " 0.00860781, -0.54993343, -0.5615623 , -0.09946032, -0.02702298,\n", + " 0.3336504 , -0.29341814, 0.3551176 , 0.20545702, -0.11665206],\n", + " [-0.16712527, -0.2531548 , 0.49188057, -0.1302325 , -0.12142995,\n", + " -0.03277557, 0.06477631, -0.30021554, -0.35658783, -0.5185722 ,\n", + " 0.15650164, -0.7464921 , -0.67454183, 0.09733332, -0.5153455 ,\n", + " 0.1480032 , -0.20877242, 0.16675173, 0.12827559, 0.5268865 ],\n", + " [-0.7994777 , -0.40662575, 0.28858158, -0.39780638, 0.6637344 ,\n", + " 0.09075797, -0.75130516, -0.26124355, 0.4175534 , -0.28502613,\n", + " -0.4241315 , 0.6746936 , 0.40870044, 0.94398546, -0.9198975 ,\n", + " -0.29775584, -0.09658122, -0.16053742, -0.05611025, 0.01059594],\n", + " [ 0.5480607 , -0.09164569, -0.7853424 , 0.74901533, -0.5906064 ,\n", + " -0.51409346, 0.10472732, -0.13107914, -0.45577446, -0.24654518,\n", + " 0.5399041 , -0.09071468, -0.5162382 , -0.01967659, -0.47176114,\n", + " -0.01017519, -0.5026951 , 0.05103482, 0.37542912, -0.25549397],\n", + " [-0.2706877 , 0.64187187, -0.505112 , -0.17481704, -0.88211423,\n", + " -0.8674219 , 0.5660908 , -0.20833156, 0.3285284 , 0.92883885,\n", + " -0.26592234, -0.47405127, 0.79681754, -0.5791843 , -0.27389136,\n", + " -0.3449671 , 0.509086 , 0.76971966, 0.10998839, -0.24425419],\n", + " [ 0.8046176 , -0.0295862 , 0.14252356, -0.1579972 , -0.20274054,\n", + " 0.01246137, -0.15756735, 0.32074738, 0.14097062, 0.03186554,\n", + " -0.1414449 , 0.4591949 , -0.21690284, -0.41089386, 0.26250118,\n", + " -0.0720875 , -0.05566718, -0.08271056, -0.37073353, 0.09257671],\n", + " [ 0.44894424, 0.22119072, -0.5117801 , -0.7407342 , -0.8777072 ,\n", + " 0.34723184, 0.0638053 , -0.10916334, 0.67356414, -0.21106955,\n", + " -0.24140975, 0.12431782, 0.2585294 , 0.06849731, -0.2997454 ,\n", + " -0.39390567, -0.25709096, -0.15120856, -0.10684931, 0.69015896]], dtype=float32), 'bias': Array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0.], dtype=float32)}\n", + " )\n", + " ),\n", + " dense2=Linear(\n", + " in_size=(20,),\n", + " out_size=(30,),\n", + " w_mask=None,\n", + " weight=ParamState(\n", + " value={'weight': Array([[ 0.62046814, 0.5301044 , -0.4739194 , -0.14099996, -0.14287984,\n", + " 0.1282555 , 0.3935479 , 0.21227883, 0.5402896 , -0.32984453,\n", + " 0.1054924 , -0.02015361, -0.24927817, 0.16467251, 0.5784846 ,\n", + " 0.2914683 , 0.35762057, 0.29866996, -0.19128309, 0.09088683,\n", + " -0.11386324, -0.22595015, 0.11267622, 0.5419977 , -0.37829107,\n", + " -0.09838869, -0.04575922, -0.7129366 , -0.32915255, 0.00509653],\n", + " [ 0.21818087, 0.08530099, 0.3571782 , 0.70128685, -0.04413987,\n", + " 0.5709911 , 0.12656331, 0.29721373, 0.47632915, -0.17275095,\n", + " -0.08733549, -0.22514656, -0.05714319, -0.27718347, -0.39045587,\n", + " 0.21975726, 0.18346666, -0.0382327 , 0.13839035, 0.1998283 ,\n", + " -0.09052311, 0.38183472, 0.4496051 , -0.23680712, -0.28785107,\n", + " 0.16122147, -0.33963904, 0.14983557, -0.43373275, -0.09495756],\n", + " [ 0.2568711 , 0.5197295 , -0.13442262, -0.6316247 , -0.6276094 ,\n", + " 0.396733 , 0.09978731, 0.37479848, 0.05811005, 0.38287428,\n", + " -0.23015432, 0.26524863, 0.40986276, 0.51085615, -0.16390967,\n", + " -0.08889349, 0.14242767, -0.04773026, 0.0186008 , 0.08168013,\n", + " 0.22218394, 0.45948145, 0.15798983, 0.11101982, -0.22625342,\n", + " -0.3179377 , 0.08289661, -0.35810882, -0.11701918, -0.07404168],\n", + " [ 0.3988777 , 0.09341867, -0.10675149, 0.24498817, 0.57484835,\n", + " 0.13964735, -0.09232395, 0.49800253, -0.11388287, -0.23314221,\n", + " -0.20017506, 0.17043568, -0.5916637 , -0.5033429 , -0.03982058,\n", + " -0.29196522, -0.06229761, -0.12120344, -0.04843295, 0.14077553,\n", + " -0.23975037, 0.25233614, -0.00446404, 0.6632397 , -0.32990777,\n", + " -0.42914438, -0.372548 , 0.30960974, 0.31027737, 0.3736987 ],\n", + " [-0.32519445, -0.0722824 , -0.06813759, 0.15726727, 0.52653533,\n", + " -0.39247712, -0.37830523, 0.20171025, -0.06937496, 0.24201019,\n", + " 0.1104718 , 0.62304336, 0.4803775 , -0.26503193, 0.5813743 ,\n", + " -0.22703817, 0.14889193, -0.09937828, 0.45811605, -0.53927666,\n", + " 0.38610622, 0.25877175, -0.57717675, -0.16893166, -0.17705517,\n", + " 0.2077132 , -0.24225888, -0.11191322, -0.00921882, -0.10405794],\n", + " [ 0.41278893, -0.27192885, 0.28467888, -0.21523082, 0.37667713,\n", + " 0.07426698, 0.22414407, -0.1354481 , -0.23419291, 0.2381074 ,\n", + " -0.24765436, 0.08778596, -0.00406975, -0.615931 , -0.09067997,\n", + " 0.26324016, -0.03728105, 0.29038942, 0.678011 , -0.6540893 ,\n", + " -0.5934551 , -0.16575795, 0.14227462, -0.0928836 , 0.24194399,\n", + " -0.04459891, 0.15232474, -0.21208623, -0.21339062, 0.07757895],\n", + " [-0.6379539 , 0.31518504, -0.11890189, -0.19096668, 0.21524261,\n", + " -0.06361473, 0.56184316, 0.028249 , -0.14510861, 0.08830918,\n", + " 0.08343762, -0.25384745, -0.33789673, 0.03700592, -0.19126455,\n", + " -0.01024354, -0.37079507, 0.24292567, 0.19478266, 0.5580041 ,\n", + " -0.35604435, 0.3915089 , -0.21796615, 0.0528199 , -0.13147084,\n", + " -0.05164728, -0.0625616 , 0.36192182, -0.05759151, 0.4186158 ],\n", + " [-0.04047865, 0.02108607, 0.41284686, 0.29146758, 0.20885086,\n", + " 0.20158692, -0.17301778, 0.27862224, 0.27474535, -0.19628745,\n", + " 0.15615414, 0.20871529, -0.314695 , -0.24115679, 0.33787283,\n", + " -0.14589988, -0.10813709, -0.039655 , -0.03082952, -0.66367936,\n", + " -0.2642637 , 0.2510051 , -0.08893799, 0.21589737, 0.51835227,\n", + " -0.44741842, -0.33786973, 0.6091706 , -0.3753065 , -0.37535354],\n", + " [ 0.11531412, 0.6267082 , -0.15149857, -0.3794238 , 0.55059415,\n", + " 0.23017633, -0.32434496, 0.2958217 , 0.41106105, 0.4731116 ,\n", + " -0.50055134, 0.01790522, -0.54518443, 0.04447998, -0.13089894,\n", + " -0.15774457, 0.09551436, -0.08697572, -0.05562068, -0.06885753,\n", + " 0.20314606, 0.14044988, -0.19203717, -0.4179157 , 0.18612123,\n", + " -0.14104603, -0.35670066, -0.24597271, 0.10614085, -0.12170368],\n", + " [ 0.23700227, 0.30524203, -0.3694181 , 0.33033338, 0.02095676,\n", + " -0.05125551, 0.11001365, -0.20992021, -0.05562193, -0.26372904,\n", + " -0.2967057 , -0.14012977, -0.14321879, -0.17379181, 0.5104145 ,\n", + " 0.11991877, -0.1430745 , -0.04331772, -0.41226274, 0.00449552,\n", + " -0.08277246, -0.12151891, -0.45340443, 0.12951623, -0.27139285,\n", + " 0.4472014 , 0.19157353, -0.4412653 , -0.04408614, 0.41542286],\n", + " [ 0.04913985, -0.04957955, -0.40214545, -0.24126607, -0.11509801,\n", + " -0.51304626, -0.3825655 , 0.34506062, -0.0222565 , -0.27472144,\n", + " -0.5477002 , -0.03630246, 0.17396483, 0.6892827 , 0.02867843,\n", + " 0.36273733, -0.34478036, 0.2839792 , 0.15002191, -0.20483544,\n", + " 0.15306501, -0.06504299, -0.00701311, 0.0804052 , 0.44663915,\n", + " 0.11938784, -0.05011488, 0.06942522, -0.1151372 , 0.2728172 ],\n", + " [-0.30464825, 0.11323573, 0.02953907, -0.7024937 , -0.04522578,\n", + " 0.10622236, -0.1298965 , 0.0872021 , -0.36016473, -0.11690426,\n", + " -0.07054564, -0.32576308, -0.30710763, -0.6661573 , 0.13130474,\n", + " 0.00769307, 0.00603968, -0.5331483 , -0.00946458, -0.08804175,\n", + " 0.01258891, 0.19920264, -0.52920264, 0.11547033, 0.0503376 ,\n", + " 0.2710771 , 0.20577058, -0.16118994, 0.03479335, 0.30332327],\n", + " [-0.11540684, -0.21528308, -0.09639532, -0.38324118, 0.08790598,\n", + " -0.05113763, -0.22907412, 0.08176684, -0.13504112, -0.14580515,\n", + " -0.10574839, -0.13816664, 0.25279123, -0.35016036, -0.02811426,\n", + " 0.1878024 , 0.33833987, -0.44787505, 0.05859555, -0.12482259,\n", + " 0.4109398 , -0.3567587 , 0.4436607 , -0.13256377, 0.42250675,\n", + " 0.33017033, 0.28086263, 0.33791474, 0.24015151, -0.23016477],\n", + " [ 0.46682912, -0.63216 , 0.43159592, 0.21971288, -0.07587896,\n", + " -0.25639635, -0.42970398, -0.4962936 , -0.21198583, 0.18351796,\n", + " 0.01911162, -0.3004833 , -0.41785267, -0.04077749, -0.20676233,\n", + " -0.11401828, 0.12992048, 0.03491049, 0.05013497, 0.57222587,\n", + " -0.12001502, -0.17038153, -0.31871405, -0.32121637, 0.66278815,\n", + " 0.61774564, -0.01240813, -0.06011448, 0.29245874, -0.3879291 ],\n", + " [ 0.02741514, 0.31249774, -0.15944321, 0.14222006, 0.611036 ,\n", + " 0.02716783, 0.48367155, -0.59191144, -0.260246 , 0.29856846,\n", + " 0.36217022, 0.26721174, 0.1436277 , 0.2510483 , 0.63455343,\n", + " 0.22804502, 0.21089312, -0.03622444, 0.24770333, 0.12762095,\n", + " -0.11348359, 0.71003526, -0.6399693 , 0.2956937 , -0.40721762,\n", + " 0.07830685, -0.12750737, 0.09320084, -0.37348104, 0.6469367 ],\n", + " [-0.21946031, 0.58491176, 0.6910229 , -0.38729444, -0.22691855,\n", + " 0.09827446, -0.27745098, 0.3286477 , -0.28397417, 0.3331472 ,\n", + " -0.10511833, 0.04856022, 0.6826674 , -0.19410591, -0.03848339,\n", + " 0.2877471 , 0.42053938, -0.3121656 , 0.1115057 , 0.3940428 ,\n", + " 0.22287792, -0.11617415, -0.15520288, -0.17891021, 0.08283449,\n", + " -0.45727572, -0.08755263, -0.30042952, 0.04397725, -0.32858402],\n", + " [-0.04652168, 0.22256051, 0.34796244, -0.57714033, -0.19478762,\n", + " -0.04000793, -0.22230573, -0.1784827 , 0.18552966, 0.3517072 ,\n", + " -0.43350866, 0.3370349 , 0.34543782, -0.25484002, -0.06113737,\n", + " -0.29600585, 0.55229264, 0.26264954, -0.12024187, 0.06554315,\n", + " 0.33039162, -0.4056347 , -0.22326599, -0.20423931, -0.20365807,\n", + " 0.5614395 , -0.33278635, 0.3678192 , -0.38601917, -0.12349749],\n", + " [ 0.21260151, -0.6383393 , -0.04182729, 0.21110533, -0.16549559,\n", + " 0.20241106, 0.42155504, 0.2782736 , -0.5695076 , 0.3197464 ,\n", + " 0.3593777 , 0.15281492, -0.16649725, -0.32258078, -0.19450592,\n", + " -0.5648749 , 0.14112377, -0.08617025, 0.2822599 , 0.65894157,\n", + " 0.06424519, -0.02703291, 0.41351956, -0.06962998, -0.03156902,\n", + " -0.3027034 , -0.15010884, 0.3097132 , -0.01670518, 0.13812247],\n", + " [-0.35231128, -0.06400244, -0.5534636 , 0.08153537, -0.1431605 ,\n", + " 0.19649687, -0.57627857, 0.14731233, -0.5345133 , 0.14830953,\n", + " 0.11090186, -0.5130216 , 0.07951056, 0.042261 , 0.0088584 ,\n", + " 0.0693031 , -0.25705618, 0.07637526, -0.2910843 , 0.26884285,\n", + " -0.3668523 , -0.51732624, 0.32633176, 0.4078384 , 0.07319385,\n", + " 0.24243955, -0.39059573, -0.14434972, -0.20902094, 0.03081408],\n", + " [-0.29074088, -0.340606 , 0.24403909, 0.28382063, 0.57466537,\n", + " 0.24103518, -0.53504395, -0.12040613, -0.21954668, -0.11855581,\n", + " 0.20805535, -0.6497588 , 0.03112273, -0.06355662, 0.22711465,\n", + " -0.00476316, -0.4368407 , -0.26775414, 0.02075309, -0.0473614 ,\n", + " -0.12880138, 0.15983032, 0.18893135, -0.06872427, -0.14535248,\n", + " 0.27104148, -0.31298438, 0.14454837, -0.1837953 , 0.4652801 ]], dtype=float32), 'bias': Array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)}\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SEED = 42\n", + "brainstate.random.seed(SEED) # 在brainstate中设置随机种子\n", + "model1 = MLP(10, 20, 30) # 创建模型\n", + "model1" + ] + }, + { + "cell_type": "markdown", + "id": "1d7e2cc4", + "metadata": {}, + "source": [ + "## 保存模型参数\n", + "\n", + "### 使用`orbax`保存检查点\n", + "我们将模型参数保存到检查点文件中。" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c529099d", + "metadata": {}, + "outputs": [], + "source": [ + "tmpdir = tempfile.mkdtemp() # 创建临时目录\n", + "state_tree = brainstate.graph.treefy_states(model1) # 将模型的状态转换为树结构\n", + "checkpointer = orbax.PyTreeCheckpointer() # 创建检查点对象\n", + "checkpointer.save(os.path.join(tmpdir, 'state'), state_tree) # 保存模型的参数" + ] + }, + { + "cell_type": "markdown", + "id": "92448b34", + "metadata": {}, + "source": [ + "现在,我们已经将模型的参数通过`orbax`保存到`tmpdir/state`的检查点文件中。" + ] + }, + { + "cell_type": "markdown", + "id": "a8b032ba", + "metadata": {}, + "source": [ + "### 使用`braintools`保存检查点" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ed7f1c6e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving checkpoint into C:\\Users\\13107\\AppData\\Local\\Temp\\tmp483fc4t1\\state.msgpack\n" + ] + } + ], + "source": [ + "checkpoint = brainstate.graph.states(model1).to_nest() # 将模型的状态转换为nest结构\n", + "braintools.file.msgpack_save(os.path.join(tmpdir, 'state.msgpack'), checkpoint) # 保存模型的参数" + ] + }, + { + "cell_type": "markdown", + "id": "18976368", + "metadata": {}, + "source": [ + "现在,我们已经将模型的参数通过`braintools`保存到`tmpdir/state.msgpack`的检查点文件中。" + ] + }, + { + "cell_type": "markdown", + "id": "2b4033c6", + "metadata": {}, + "source": [ + "## 加载模型参数\n", + "\n", + "### 使用`orbax`加载检查点\n", + "我们将从检查点文件中加载模型的参数。" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "db238309", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\routhleck_app\\miniconda\\envs\\brainstate\\lib\\site-packages\\orbax\\checkpoint\\_src\\serialization\\type_handlers.py:1123: UserWarning: Couldn't find sharding info under RestoreArgs. Populating sharding info from sharding file. Please note restoration time will be slightly increased due to reading from file instead of directly from RestoreArgs. Note also that this option is unsafe when restoring on a different topology than the checkpoint was saved with.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# 创建一个有着相同结构的模型\n", + "brainstate.random.seed(0)\n", + "model2 = brainstate.augment.abstract_init(lambda: MLP(10, 20, 30))\n", + "state_tree = brainstate.graph.treefy_states(model2)\n", + "\n", + "# 从检查点文件读取模型参数\n", + "checkpointer = orbax.PyTreeCheckpointer()\n", + "state_tree = checkpointer.restore(os.path.join(tmpdir, 'state'), item=state_tree)\n", + "\n", + "# 更新模型的状态\n", + "brainstate.graph.update_states(model2, state_tree)" + ] + }, + { + "cell_type": "markdown", + "id": "aa75ceb7", + "metadata": {}, + "source": [ + "### 使用`braintools`加载检查点\n", + "我们将从检查点文件中加载模型的参数。" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b0fbd6f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading checkpoint from C:\\Users\\13107\\AppData\\Local\\Temp\\tmp483fc4t1\\state.msgpack\n" + ] + }, + { + "data": { + "text/plain": [ + "{'dense1': {'weight': ParamState(\n", + " value={'bias': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0.], dtype=float32), 'weight': array([[ 0.74939334, 0.3148138 , 0.60089725, -0.7131149 , 0.6790908 ,\n", + " -0.44663328, 0.03113358, -0.5250644 , 0.1614144 , -0.39722365,\n", + " -0.23442519, 0.118144 , 0.7669531 , 0.06876656, 0.6045511 ,\n", + " 0.12086334, -0.88447595, -0.19188431, -0.85868365, 0.00500867],\n", + " [ 0.20412642, 0.07092498, 0.37392026, 0.34958398, -0.57214 ,\n", + " 0.71724516, -0.08160591, 0.50068825, -0.17175189, -0.08275215,\n", + " 0.6508336 , 0.28279537, 0.08821856, 0.83949256, 0.49844882,\n", + " -0.04159267, -0.47324428, 0.27084318, -0.58236146, -0.09787997],\n", + " [-0.04382031, -0.20300323, -0.04449642, 0.41578326, 0.5507486 ,\n", + " -0.15913244, -0.8612537 , 0.19072336, -0.16082875, -0.24696219,\n", + " -0.30372635, 0.6850187 , 0.32007053, 0.24253711, 0.28217098,\n", + " -0.8014343 , 0.48989874, -0.0160339 , 0.32790813, -0.49864978],\n", + " [-0.61840117, 0.21017133, 0.07593305, -0.02365256, -0.03401124,\n", + " -0.05115725, 0.6195931 , 0.15402867, 0.40200788, 0.34128165,\n", + " 0.00860781, -0.54993343, -0.5615623 , -0.09946032, -0.02702298,\n", + " 0.3336504 , -0.29341814, 0.3551176 , 0.20545702, -0.11665206],\n", + " [-0.16712527, -0.2531548 , 0.49188057, -0.1302325 , -0.12142995,\n", + " -0.03277557, 0.06477631, -0.30021554, -0.35658783, -0.5185722 ,\n", + " 0.15650164, -0.7464921 , -0.67454183, 0.09733332, -0.5153455 ,\n", + " 0.1480032 , -0.20877242, 0.16675173, 0.12827559, 0.5268865 ],\n", + " [-0.7994777 , -0.40662575, 0.28858158, -0.39780638, 0.6637344 ,\n", + " 0.09075797, -0.75130516, -0.26124355, 0.4175534 , -0.28502613,\n", + " -0.4241315 , 0.6746936 , 0.40870044, 0.94398546, -0.9198975 ,\n", + " -0.29775584, -0.09658122, -0.16053742, -0.05611025, 0.01059594],\n", + " [ 0.5480607 , -0.09164569, -0.7853424 , 0.74901533, -0.5906064 ,\n", + " -0.51409346, 0.10472732, -0.13107914, -0.45577446, -0.24654518,\n", + " 0.5399041 , -0.09071468, -0.5162382 , -0.01967659, -0.47176114,\n", + " -0.01017519, -0.5026951 , 0.05103482, 0.37542912, -0.25549397],\n", + " [-0.2706877 , 0.64187187, -0.505112 , -0.17481704, -0.88211423,\n", + " -0.8674219 , 0.5660908 , -0.20833156, 0.3285284 , 0.92883885,\n", + " -0.26592234, -0.47405127, 0.79681754, -0.5791843 , -0.27389136,\n", + " -0.3449671 , 0.509086 , 0.76971966, 0.10998839, -0.24425419],\n", + " [ 0.8046176 , -0.0295862 , 0.14252356, -0.1579972 , -0.20274054,\n", + " 0.01246137, -0.15756735, 0.32074738, 0.14097062, 0.03186554,\n", + " -0.1414449 , 0.4591949 , -0.21690284, -0.41089386, 0.26250118,\n", + " -0.0720875 , -0.05566718, -0.08271056, -0.37073353, 0.09257671],\n", + " [ 0.44894424, 0.22119072, -0.5117801 , -0.7407342 , -0.8777072 ,\n", + " 0.34723184, 0.0638053 , -0.10916334, 0.67356414, -0.21106955,\n", + " -0.24140975, 0.12431782, 0.2585294 , 0.06849731, -0.2997454 ,\n", + " -0.39390567, -0.25709096, -0.15120856, -0.10684931, 0.69015896]],\n", + " dtype=float32)}\n", + " )},\n", + " 'dense2': {'weight': ParamState(\n", + " value={'bias': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), 'weight': array([[ 0.62046814, 0.5301044 , -0.4739194 , -0.14099996, -0.14287984,\n", + " 0.1282555 , 0.3935479 , 0.21227883, 0.5402896 , -0.32984453,\n", + " 0.1054924 , -0.02015361, -0.24927817, 0.16467251, 0.5784846 ,\n", + " 0.2914683 , 0.35762057, 0.29866996, -0.19128309, 0.09088683,\n", + " -0.11386324, -0.22595015, 0.11267622, 0.5419977 , -0.37829107,\n", + " -0.09838869, -0.04575922, -0.7129366 , -0.32915255, 0.00509653],\n", + " [ 0.21818087, 0.08530099, 0.3571782 , 0.70128685, -0.04413987,\n", + " 0.5709911 , 0.12656331, 0.29721373, 0.47632915, -0.17275095,\n", + " -0.08733549, -0.22514656, -0.05714319, -0.27718347, -0.39045587,\n", + " 0.21975726, 0.18346666, -0.0382327 , 0.13839035, 0.1998283 ,\n", + " -0.09052311, 0.38183472, 0.4496051 , -0.23680712, -0.28785107,\n", + " 0.16122147, -0.33963904, 0.14983557, -0.43373275, -0.09495756],\n", + " [ 0.2568711 , 0.5197295 , -0.13442262, -0.6316247 , -0.6276094 ,\n", + " 0.396733 , 0.09978731, 0.37479848, 0.05811005, 0.38287428,\n", + " -0.23015432, 0.26524863, 0.40986276, 0.51085615, -0.16390967,\n", + " -0.08889349, 0.14242767, -0.04773026, 0.0186008 , 0.08168013,\n", + " 0.22218394, 0.45948145, 0.15798983, 0.11101982, -0.22625342,\n", + " -0.3179377 , 0.08289661, -0.35810882, -0.11701918, -0.07404168],\n", + " [ 0.3988777 , 0.09341867, -0.10675149, 0.24498817, 0.57484835,\n", + " 0.13964735, -0.09232395, 0.49800253, -0.11388287, -0.23314221,\n", + " -0.20017506, 0.17043568, -0.5916637 , -0.5033429 , -0.03982058,\n", + " -0.29196522, -0.06229761, -0.12120344, -0.04843295, 0.14077553,\n", + " -0.23975037, 0.25233614, -0.00446404, 0.6632397 , -0.32990777,\n", + " -0.42914438, -0.372548 , 0.30960974, 0.31027737, 0.3736987 ],\n", + " [-0.32519445, -0.0722824 , -0.06813759, 0.15726727, 0.52653533,\n", + " -0.39247712, -0.37830523, 0.20171025, -0.06937496, 0.24201019,\n", + " 0.1104718 , 0.62304336, 0.4803775 , -0.26503193, 0.5813743 ,\n", + " -0.22703817, 0.14889193, -0.09937828, 0.45811605, -0.53927666,\n", + " 0.38610622, 0.25877175, -0.57717675, -0.16893166, -0.17705517,\n", + " 0.2077132 , -0.24225888, -0.11191322, -0.00921882, -0.10405794],\n", + " [ 0.41278893, -0.27192885, 0.28467888, -0.21523082, 0.37667713,\n", + " 0.07426698, 0.22414407, -0.1354481 , -0.23419291, 0.2381074 ,\n", + " -0.24765436, 0.08778596, -0.00406975, -0.615931 , -0.09067997,\n", + " 0.26324016, -0.03728105, 0.29038942, 0.678011 , -0.6540893 ,\n", + " -0.5934551 , -0.16575795, 0.14227462, -0.0928836 , 0.24194399,\n", + " -0.04459891, 0.15232474, -0.21208623, -0.21339062, 0.07757895],\n", + " [-0.6379539 , 0.31518504, -0.11890189, -0.19096668, 0.21524261,\n", + " -0.06361473, 0.56184316, 0.028249 , -0.14510861, 0.08830918,\n", + " 0.08343762, -0.25384745, -0.33789673, 0.03700592, -0.19126455,\n", + " -0.01024354, -0.37079507, 0.24292567, 0.19478266, 0.5580041 ,\n", + " -0.35604435, 0.3915089 , -0.21796615, 0.0528199 , -0.13147084,\n", + " -0.05164728, -0.0625616 , 0.36192182, -0.05759151, 0.4186158 ],\n", + " [-0.04047865, 0.02108607, 0.41284686, 0.29146758, 0.20885086,\n", + " 0.20158692, -0.17301778, 0.27862224, 0.27474535, -0.19628745,\n", + " 0.15615414, 0.20871529, -0.314695 , -0.24115679, 0.33787283,\n", + " -0.14589988, -0.10813709, -0.039655 , -0.03082952, -0.66367936,\n", + " -0.2642637 , 0.2510051 , -0.08893799, 0.21589737, 0.51835227,\n", + " -0.44741842, -0.33786973, 0.6091706 , -0.3753065 , -0.37535354],\n", + " [ 0.11531412, 0.6267082 , -0.15149857, -0.3794238 , 0.55059415,\n", + " 0.23017633, -0.32434496, 0.2958217 , 0.41106105, 0.4731116 ,\n", + " -0.50055134, 0.01790522, -0.54518443, 0.04447998, -0.13089894,\n", + " -0.15774457, 0.09551436, -0.08697572, -0.05562068, -0.06885753,\n", + " 0.20314606, 0.14044988, -0.19203717, -0.4179157 , 0.18612123,\n", + " -0.14104603, -0.35670066, -0.24597271, 0.10614085, -0.12170368],\n", + " [ 0.23700227, 0.30524203, -0.3694181 , 0.33033338, 0.02095676,\n", + " -0.05125551, 0.11001365, -0.20992021, -0.05562193, -0.26372904,\n", + " -0.2967057 , -0.14012977, -0.14321879, -0.17379181, 0.5104145 ,\n", + " 0.11991877, -0.1430745 , -0.04331772, -0.41226274, 0.00449552,\n", + " -0.08277246, -0.12151891, -0.45340443, 0.12951623, -0.27139285,\n", + " 0.4472014 , 0.19157353, -0.4412653 , -0.04408614, 0.41542286],\n", + " [ 0.04913985, -0.04957955, -0.40214545, -0.24126607, -0.11509801,\n", + " -0.51304626, -0.3825655 , 0.34506062, -0.0222565 , -0.27472144,\n", + " -0.5477002 , -0.03630246, 0.17396483, 0.6892827 , 0.02867843,\n", + " 0.36273733, -0.34478036, 0.2839792 , 0.15002191, -0.20483544,\n", + " 0.15306501, -0.06504299, -0.00701311, 0.0804052 , 0.44663915,\n", + " 0.11938784, -0.05011488, 0.06942522, -0.1151372 , 0.2728172 ],\n", + " [-0.30464825, 0.11323573, 0.02953907, -0.7024937 , -0.04522578,\n", + " 0.10622236, -0.1298965 , 0.0872021 , -0.36016473, -0.11690426,\n", + " -0.07054564, -0.32576308, -0.30710763, -0.6661573 , 0.13130474,\n", + " 0.00769307, 0.00603968, -0.5331483 , -0.00946458, -0.08804175,\n", + " 0.01258891, 0.19920264, -0.52920264, 0.11547033, 0.0503376 ,\n", + " 0.2710771 , 0.20577058, -0.16118994, 0.03479335, 0.30332327],\n", + " [-0.11540684, -0.21528308, -0.09639532, -0.38324118, 0.08790598,\n", + " -0.05113763, -0.22907412, 0.08176684, -0.13504112, -0.14580515,\n", + " -0.10574839, -0.13816664, 0.25279123, -0.35016036, -0.02811426,\n", + " 0.1878024 , 0.33833987, -0.44787505, 0.05859555, -0.12482259,\n", + " 0.4109398 , -0.3567587 , 0.4436607 , -0.13256377, 0.42250675,\n", + " 0.33017033, 0.28086263, 0.33791474, 0.24015151, -0.23016477],\n", + " [ 0.46682912, -0.63216 , 0.43159592, 0.21971288, -0.07587896,\n", + " -0.25639635, -0.42970398, -0.4962936 , -0.21198583, 0.18351796,\n", + " 0.01911162, -0.3004833 , -0.41785267, -0.04077749, -0.20676233,\n", + " -0.11401828, 0.12992048, 0.03491049, 0.05013497, 0.57222587,\n", + " -0.12001502, -0.17038153, -0.31871405, -0.32121637, 0.66278815,\n", + " 0.61774564, -0.01240813, -0.06011448, 0.29245874, -0.3879291 ],\n", + " [ 0.02741514, 0.31249774, -0.15944321, 0.14222006, 0.611036 ,\n", + " 0.02716783, 0.48367155, -0.59191144, -0.260246 , 0.29856846,\n", + " 0.36217022, 0.26721174, 0.1436277 , 0.2510483 , 0.63455343,\n", + " 0.22804502, 0.21089312, -0.03622444, 0.24770333, 0.12762095,\n", + " -0.11348359, 0.71003526, -0.6399693 , 0.2956937 , -0.40721762,\n", + " 0.07830685, -0.12750737, 0.09320084, -0.37348104, 0.6469367 ],\n", + " [-0.21946031, 0.58491176, 0.6910229 , -0.38729444, -0.22691855,\n", + " 0.09827446, -0.27745098, 0.3286477 , -0.28397417, 0.3331472 ,\n", + " -0.10511833, 0.04856022, 0.6826674 , -0.19410591, -0.03848339,\n", + " 0.2877471 , 0.42053938, -0.3121656 , 0.1115057 , 0.3940428 ,\n", + " 0.22287792, -0.11617415, -0.15520288, -0.17891021, 0.08283449,\n", + " -0.45727572, -0.08755263, -0.30042952, 0.04397725, -0.32858402],\n", + " [-0.04652168, 0.22256051, 0.34796244, -0.57714033, -0.19478762,\n", + " -0.04000793, -0.22230573, -0.1784827 , 0.18552966, 0.3517072 ,\n", + " -0.43350866, 0.3370349 , 0.34543782, -0.25484002, -0.06113737,\n", + " -0.29600585, 0.55229264, 0.26264954, -0.12024187, 0.06554315,\n", + " 0.33039162, -0.4056347 , -0.22326599, -0.20423931, -0.20365807,\n", + " 0.5614395 , -0.33278635, 0.3678192 , -0.38601917, -0.12349749],\n", + " [ 0.21260151, -0.6383393 , -0.04182729, 0.21110533, -0.16549559,\n", + " 0.20241106, 0.42155504, 0.2782736 , -0.5695076 , 0.3197464 ,\n", + " 0.3593777 , 0.15281492, -0.16649725, -0.32258078, -0.19450592,\n", + " -0.5648749 , 0.14112377, -0.08617025, 0.2822599 , 0.65894157,\n", + " 0.06424519, -0.02703291, 0.41351956, -0.06962998, -0.03156902,\n", + " -0.3027034 , -0.15010884, 0.3097132 , -0.01670518, 0.13812247],\n", + " [-0.35231128, -0.06400244, -0.5534636 , 0.08153537, -0.1431605 ,\n", + " 0.19649687, -0.57627857, 0.14731233, -0.5345133 , 0.14830953,\n", + " 0.11090186, -0.5130216 , 0.07951056, 0.042261 , 0.0088584 ,\n", + " 0.0693031 , -0.25705618, 0.07637526, -0.2910843 , 0.26884285,\n", + " -0.3668523 , -0.51732624, 0.32633176, 0.4078384 , 0.07319385,\n", + " 0.24243955, -0.39059573, -0.14434972, -0.20902094, 0.03081408],\n", + " [-0.29074088, -0.340606 , 0.24403909, 0.28382063, 0.57466537,\n", + " 0.24103518, -0.53504395, -0.12040613, -0.21954668, -0.11855581,\n", + " 0.20805535, -0.6497588 , 0.03112273, -0.06355662, 0.22711465,\n", + " -0.00476316, -0.4368407 , -0.26775414, 0.02075309, -0.0473614 ,\n", + " -0.12880138, 0.15983032, 0.18893135, -0.06872427, -0.14535248,\n", + " 0.27104148, -0.31298438, 0.14454837, -0.1837953 , 0.4652801 ]],\n", + " dtype=float32)}\n", + " )}}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 创建一个有着相同结构的模型\n", + "brainstate.random.seed(0)\n", + "model3 = brainstate.augment.abstract_init(lambda: MLP(10, 20, 30))\n", + "checkpoint = brainstate.graph.states(model3).to_nest()\n", + "\n", + "# 从msgpack文件读取模型参数\n", + "braintools.file.msgpack_load(os.path.join(tmpdir, 'state.msgpack'), checkpoint)" + ] + }, + { + "cell_type": "markdown", + "id": "11994171", + "metadata": {}, + "source": [ + "## 验证加载的模型\n", + "让我们运行加载的模型并检查它是否产生与原始模型相同的输出。" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "64810e26", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "True\n" + ] + } + ], + "source": [ + "y1 = model1(jnp.ones((1, 10)))\n", + "y2 = model2(jnp.ones((1, 10)))\n", + "y3 = model3(jnp.ones((1, 10)))\n", + "print(jnp.allclose(y1, y2)) # True\n", + "print(jnp.allclose(y1, y3)) # True" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "brainstate", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 000000000..6538d0999 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,138 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# a_list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# + +import os +import shutil +import sys + +sys.path.insert(0, os.path.abspath('./')) +sys.path.insert(0, os.path.abspath('../')) +sys.path.insert(0, r'D:\codes\projects\brainstate') + +import brainpy +shutil.copytree('../images/', './_static/logos/', dirs_exist_ok=True) +shutil.copyfile('../changelog.md', './changelog.md') +shutil.rmtree('./generated') +shutil.rmtree('./_build') + + +# -- Project information ----------------------------------------------------- + +project = 'BrainPy' +copyright = '2020-, BrainPy' +author = 'BrainPy Team' + +from highlight_test_lexer import fix_ipython2_lexer_in_notebooks + +fix_ipython2_lexer_in_notebooks(os.path.dirname(os.path.abspath(__file__))) + +# The full version, including alpha/beta/rc tags +release = brainpy.__version__ + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', + 'sphinx_autodoc_typehints', + 'myst_nb', + 'matplotlib.sphinxext.plot_directive', + 'sphinx_thebe', + 'sphinx_design', + 'sphinx_math_dollar', + # 'sphinx-mathjax-offline', +] +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] +source_suffix = ['.rst', '.ipynb', '.md'] + +# source_suffix = '.rst' +autosummary_generate = True + +# The master toctree document. +master_doc = 'index' +intersphinx_mapping = { + "python": ("https://docs.python.org/3.8", None), + "sphinx": ("https://www.sphinx-doc.org/en/master", None), +} +nitpick_ignore = [ + ("py:class", "docutils.nodes.document"), + ("py:class", "docutils.parsers.rst.directives.body.Sidebar"), +] +suppress_warnings = ["myst.domains", "ref.ref"] +numfig = True +myst_enable_extensions = ["dollarmath", "amsmath", "deflist", "colon_fence"] +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# href with no underline and white bold text color +announcement = """ + + This site covers the new BrainPy 3.0 API. + [Click here for the classical BrainPy 2.0 API] + +""" + +html_theme_options = { + 'repository_url': 'https://github.com/brainpy/BrainPy', + 'use_repository_button': True, # add a 'link to repository' button + 'use_issues_button': False, # add an 'Open an Issue' button + 'path_to_docs': 'docs', # used to compute the path to launch notebooks in colab + 'launch_buttons': { + 'colab_url': 'https://colab.research.google.com/', + }, + 'prev_next_buttons_location': None, + 'show_navbar_depth': 1, + 'announcement': announcement, + 'logo_only': True, + 'show_toc_level': 2, +} + +html_theme = "sphinx_book_theme" +html_logo = "_static/logos/logo.png" +html_title = "BrainPy documentation" +html_copy_source = True +html_sourcelink_suffix = "" +html_favicon = "_static/logos/logo-square.png" +html_last_updated_fmt = "" +html_css_files = ['css/theme.css'] + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] +jupyter_execute_notebooks = "off" +thebe_config = { + "repository_url": "https://github.com/binder-examples/jupyter-stacks-datascience", + "repository_branch": "master", +} + +# -- Options for myst ---------------------------------------------- +# Notebook cell execution timeout; defaults to 30. +execution_timeout = 200 + +autodoc_default_options = { + 'exclude-members': '....,default_rng', +} diff --git a/docs/highlight_test_lexer.py b/docs/highlight_test_lexer.py new file mode 100644 index 000000000..91a53c34a --- /dev/null +++ b/docs/highlight_test_lexer.py @@ -0,0 +1,124 @@ +# Copyright 2024 Brain Simulation Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +import glob +import json +import os +import sys + + +def fix_ipython2_lexer_in_notebooks(directory_path): + """ + 批量修复指定目录中所有 Jupyter Notebook 文件的 ipython2 lexer 问题 + """ + # 查找所有.ipynb文件 + notebook_files = glob.glob(os.path.join(directory_path, "*.ipynb")) + + if not notebook_files: + print(f"在目录 {directory_path} 中未找到任何 .ipynb 文件") + return + + fixed_count = 0 + + for file_path in notebook_files: + try: + with open(file_path, 'r', encoding='utf-8') as f: + data = json.load(f) + + needs_fix = False + + # 检查并修复顶层元数据 + if 'metadata' in data: + # 修复 language_info + if 'language_info' in data['metadata']: + lang_info = data['metadata']['language_info'] + if lang_info.get('name') == 'ipython2': + lang_info['name'] = 'ipython3' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 顶层 language_info.name") + + if lang_info.get('pygments_lexer') == 'ipython2': + lang_info['pygments_lexer'] = 'ipython3' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 顶层 language_info.pygments_lexer") + + # 修复 kernelspec + if 'kernelspec' in data['metadata']: + kernelspec = data['metadata']['kernelspec'] + if kernelspec.get('language') == 'ipython2': + kernelspec['language'] = 'python' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 顶层 kernelspec.language") + + if kernelspec.get('name') == 'ipython2': + kernelspec['name'] = 'python3' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 顶层 kernelspec.name") + + # 检查并修复单元格元数据 + for i, cell in enumerate(data.get('cells', [])): + if 'metadata' in cell: + # 修复单元格级别的语言设置 + if 'language' in cell['metadata'] and cell['metadata']['language'] == 'ipython2': + cell['metadata']['language'] = 'ipython3' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 单元格 {i} 的语言设置") + + # 修复其他可能的 lexer 设置 + if 'pygments_lexer' in cell['metadata'] and cell['metadata']['pygments_lexer'] == 'ipython2': + cell['metadata']['pygments_lexer'] = 'ipython3' + needs_fix = True + print(f"修复 {os.path.basename(file_path)}: 单元格 {i} 的 pygments_lexer 设置") + + # 如果需要修复,保存文件 + if needs_fix: + # 创建备份 + backup_path = file_path + '.backup' + with open(backup_path, 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + # 保存修复后的文件 + with open(file_path, 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + fixed_count += 1 + print(f"已修复并备份: {os.path.basename(file_path)}") + else: + print(f"无需修复: {os.path.basename(file_path)}") + + except Exception as e: + print(f"处理文件 {file_path} 时出错: {str(e)}") + + print(f"\n处理完成! 共修复了 {fixed_count} 个文件") + return fixed_count + + +if __name__ == "__main__": + import os + print(os.path.dirname(os.path.abspath(__file__))) + + # 使用当前目录,或者指定您的文档目录路径 + target_directory = input("请输入包含.ipynb文件的目录路径(直接回车使用当前目录): ").strip() + + if not target_directory: + target_directory = "." + + if not os.path.isdir(target_directory): + print(f"错误: 目录 '{target_directory}' 不存在") + sys.exit(1) + + print(f"开始处理目录: {os.path.abspath(target_directory)}") + fix_ipython2_lexer_in_notebooks(target_directory) diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 000000000..58d3bb32d --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,64 @@ +``brainpy`` documentation +========================= + +`brainpy `_ provides a powerful and flexible framework +for building, simulating, and training spiking neural networks. + + + +Installation +^^^^^^^^^^^^ + +.. tab-set:: + + .. tab-item:: CPU + + .. code-block:: bash + + pip install -U brainpy[cpu] + + .. tab-item:: GPU + + .. code-block:: bash + + pip install -U brainpy[cuda12] + pip install -U brainpy[cuda13] + + .. tab-item:: TPU + + .. code-block:: bash + + pip install -U brainpy[tpu] + +---- + + +See also the ecosystem +^^^^^^^^^^^^^^^^^^^^^^ + + +``brainpy`` is one part of our `brain simulation ecosystem `_. + + + + +.. toctree:: + :hidden: + :maxdepth: 1 + :caption: Quickstart + + quickstart/concepts-en.ipynb + quickstart/concepts-zh.ipynb + + + + + +.. toctree:: + :hidden: + :maxdepth: 2 + :caption: API Reference + + changelog.md + apis.rst + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 000000000..922152e96 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/snn_simulation-en.ipynb b/docs/snn_simulation-en.ipynb new file mode 100644 index 000000000..ec0d5559c --- /dev/null +++ b/docs/snn_simulation-en.ipynb @@ -0,0 +1,680 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b78f6e1b6cb0dada", + "metadata": { + "collapsed": false + }, + "source": [ + "# Simulating Spiking Neural Networks\n", + "\n", + "Building and simulating brain dynamics models is one of the important methods for studying brain dynamics. In spiking neural network simulations, we specify the model and input parameters, and conduct simulation experiments. During this process, parameter learning and updates (such as synaptic weights) are not involved. The main purpose is to simulate and analyze the designed network.\n", + "\n", + "The spiking neural network models of brain dynamics can be divided into **single neuron models** and **neural network models**. We will demonstrate an example for each of these." + ] + }, + { + "cell_type": "markdown", + "id": "c5622779", + "metadata": {}, + "source": [ + "## Simulation of a Single Neuron Model\n", + "\n", + "The **Hodgkin-Huxley (HH) model** is a mathematical model proposed in 1952 by neurophysiologists Allen Hodgkin (1914-1998) and Andrew Huxley (1917-2012) to describe the generation and propagation of action potentials in neurons. The HH model is based on the classical electrical circuit model and links the dynamic changes of the neuron membrane potential with the biophysical properties of the membrane ion channels. It is one of the most important theoretical models in neuroscience and earned the two researchers the Nobel Prize in Physiology or Medicine in 1963. The mathematical definition of the HH model is:\n", + "\n", + "$$\n", + "\\begin{aligned}C \\frac {dV} {dt} = -(\\bar{g}_{Na} m^3 h (V &-E_{Na}) + \\bar{g}_K n^4 (V-E_K) + g_{leak} (V - E_{leak})) + I(t)\\\\\n", + "\\frac {dx} {dt} &= \\alpha_x (1-x) - \\beta_x, \\quad x\\in {\\rm{\\{m, h, n\\}}}\\\\\n", + "&\\alpha_m(V) = \\frac {0.1(V+40)}{1-\\exp(\\frac{-(V + 40)} {10})}\\\\\n", + "&\\beta_m(V) = 4.0 \\exp(\\frac{-(V + 65)} {18})\\\\\n", + "&\\alpha_h(V) = 0.07 \\exp(\\frac{-(V+65)}{20})\\\\\n", + "&\\beta_h(V) = \\frac 1 {1 + \\exp(\\frac{-(V + 35)} {10})}\\\\\n", + "&\\alpha_n(V) = \\frac {0.01(V+55)}{1-\\exp(-(V+55)/10)}\\\\\n", + "&\\beta_n(V) = 0.125 \\exp(\\frac{-(V + 65)} {80})\\end{aligned}\n", + "$$\n", + "\n", + "In this tutorial, we simulate the HH model as an example of a single neuron model.``brainstate`` can run multiple neuron models in parallel, which saves time. We will simulate a group of HH neurons." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9dd07dd9", + "metadata": {}, + "outputs": [], + "source": [ + "import brainunit as u\n", + "import jax.numpy as jnp\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import brainstate" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "051f8f24", + "metadata": {}, + "outputs": [], + "source": "# brainstate.environ.set(platform='gpu')" + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "60058528", + "metadata": {}, + "outputs": [], + "source": "brainstate.random.seed(100)" + }, + { + "cell_type": "markdown", + "id": "a6ba5685", + "metadata": {}, + "source": [ + "## Defining the Single Neuron Model\n", + "\n", + "We can use ``brainstate`` to define custom neuron models. To define a custom neuron model, we need to inherit the base class ``brainstate.nn.Dynamics``.\n", + "\n", + "1. First, define the initialization method ``__init__()``. This method receives the number of neurons running in parallel, ``in_size``, and other model parameters. The base class is initialized with ``in_size``, and the model parameters are set as class attributes for easy access.\n", + "\n", + "2. Then, we can define some common calculations as class methods for later use. Here, we implement functions related to the calculations of m, h, and n. Note that for the drift term function of an ordinary differential equation, the order of the incoming parameters should be, the dynamic variable, the current moment t and the other parameters.\n", + "\n", + "3. Next, define the state initialization method ``init_state()``. Unlike ``__init__()``, this method initializes the model's state, not the model parameters. The state refers to variables that change during the model's operation. In ``brainstate``, all variables that need to change must be encapsulated in a ``State`` object. The hidden state variables, which change during the model's operation, must be encapsulated in a ``HiddenState`` object (a subclass of ``State``).\n", + "\n", + "4. Then, define the method to calculate dV. Similar to the functions for m, h, and n, this method defines some commonly used computations as class methods for easy access. However, in this case, the calculation of dV involves the current I. In this example, the neurons are not connected, but the same process can be used for defining neurons in a network. Therefore, ``I = self.sum_current_inputs(I, V)`` includes both external input currents and currents from other neurons.\n", + "\n", + "5. Finally, define the ``update()`` method, which receives the input for each time step and updates the model variables. ``bst.environ.get('t')`` is used to get the current time t. The ordinary differential equations are solved, and the current values of each variable are obtained using the exponential Euler method ``brainstate.nn.exp_euler_step()`` (where the first argument is the drift term of the ordinary differential equation, and the other arguments are the parameters the equation requires). For neurons in the network, ``V = self.sum_delta_inputs(init=V)`` allows the model to receive inputs from other neurons through delta synaptic transmission. Then, the updated spike information is computed, and the model variables are updated. The output indicates whether the neurons fired an action potential (1 if fired, 0 if not). When using the model, the ``update()`` method is automatically called when the model instance is invoked with input." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f08c361a", + "metadata": {}, + "outputs": [], + "source": [ + "class HH(brainstate.nn.Dynamics):\n", + " def __init__(\n", + " self,\n", + " in_size,\n", + " ENa=50. * u.mV, gNa=120. * u.mS / u.cm ** 2,\n", + " EK=-77. * u.mV, gK=36. * u.mS / u.cm ** 2,\n", + " EL=-54.387 * u.mV, gL=0.03 * u.mS / u.cm ** 2,\n", + " V_th=20. * u.mV,\n", + " C=1.0 * u.uF / u.cm ** 2\n", + " ):\n", + " # Initialization of the neuron model parameters\n", + " super().__init__(in_size)\n", + "\n", + " # Set model parameters based on provided values or defaults\n", + " self.ENa = ENa # Sodium reversal potential (mV)\n", + " self.EK = EK # Potassium reversal potential (mV)\n", + " self.EL = EL # Leak reversal potential (mV)\n", + " self.gNa = gNa # Sodium conductance (mS/cm^2)\n", + " self.gK = gK # Potassium conductance (mS/cm^2)\n", + " self.gL = gL # Leak conductance (mS/cm^2)\n", + " self.C = C # Membrane capacitance (uF/cm^2)\n", + " self.V_th = V_th # Threshold for spike (mV)\n", + "\n", + " # m (sodium activation) channel kinetics\n", + " m_alpha = lambda self, V: 1. / u.math.exprel(-(V / u.mV + 40) / 10) # Alpha function for m\n", + " m_beta = lambda self, V: 4.0 * jnp.exp(-(V / u.mV + 65) / 18) # Beta function for m\n", + " m_inf = lambda self, V: self.m_alpha(V) / (self.m_alpha(V) + self.m_beta(V)) # Steady-state value for m\n", + " dm = lambda self, m, t, V: (self.m_alpha(V) * (1 - m) - self.m_beta(V) * m) / u.ms # Rate of change of m\n", + "\n", + " # h (sodium inactivation) channel kinetics\n", + " h_alpha = lambda self, V: 0.07 * jnp.exp(-(V / u.mV + 65) / 20.) # Alpha function for h\n", + " h_beta = lambda self, V: 1 / (1 + jnp.exp(-(V / u.mV + 35) / 10)) # Beta function for h\n", + " h_inf = lambda self, V: self.h_alpha(V) / (self.h_alpha(V) + self.h_beta(V)) # Steady-state value for h\n", + " dh = lambda self, h, t, V: (self.h_alpha(V) * (1 - h) - self.h_beta(V) * h) / u.ms # Rate of change of h\n", + "\n", + " # n (potassium activation) channel kinetics\n", + " n_alpha = lambda self, V: 0.1 / u.math.exprel(-(V / u.mV + 55) / 10) # Alpha function for n\n", + " n_beta = lambda self, V: 0.125 * jnp.exp(-(V / u.mV + 65) / 80) # Beta function for n\n", + " n_inf = lambda self, V: self.n_alpha(V) / (self.n_alpha(V) + self.n_beta(V)) # Steady-state value for n\n", + " dn = lambda self, n, t, V: (self.n_alpha(V) * (1 - n) - self.n_beta(V) * n) / u.ms # Rate of change of n\n", + "\n", + " def init_state(self, batch_size=None):\n", + " # Initialize the state variables for membrane potential (V) and gating variables (m, h, n)\n", + " self.V = brainstate.HiddenState(\n", + " jnp.ones(self.varshape, brainstate.environ.dftype()) * -65. * u.mV) # Resting potential (mV)\n", + " self.m = brainstate.HiddenState(self.m_inf(self.V.value)) # Sodium activation variable\n", + " self.h = brainstate.HiddenState(self.h_inf(self.V.value)) # Sodium inactivation variable\n", + " self.n = brainstate.HiddenState(self.n_inf(self.V.value)) # Potassium activation variable\n", + "\n", + " def dV(self, V, t, m, h, n, I):\n", + " # Compute the derivative of membrane potential (V) based on the currents and model parameters\n", + " I = self.sum_current_inputs(I, V) # Sum of all incoming currents\n", + " I_Na = (self.gNa * m * m * m * h) * (V - self.ENa) # Sodium current (I_Na)\n", + " n2 = n * n # Squared potassium activation variable\n", + " I_K = (self.gK * n2 * n2) * (V - self.EK) # Potassium current (I_K)\n", + " I_leak = self.gL * (V - self.EL) # Leak current (I_leak)\n", + " dVdt = (- I_Na - I_K - I_leak + I) / self.C # Membrane potential change rate (dV/dt)\n", + " return dVdt\n", + "\n", + " def update(self, x=0. * u.mA / u.cm ** 2):\n", + " # Update the state of the neuron based on current inputs and time\n", + " t = brainstate.environ.get('t') # Retrieve the current time\n", + " V = brainstate.nn.exp_euler_step(self.dV, self.V.value, t, self.m.value, self.h.value, self.n.value,\n", + " x) # Update membrane potential\n", + " m = brainstate.nn.exp_euler_step(self.dm, self.m.value, t, self.V.value) # Update m variable (activation)\n", + " h = brainstate.nn.exp_euler_step(self.dh, self.h.value, t, self.V.value) # Update h variable (inactivation)\n", + " n = brainstate.nn.exp_euler_step(self.dn, self.n.value, t, self.V.value) # Update n variable (activation)\n", + " V = self.sum_delta_inputs(init=V) # Sum the inputs for membrane potential\n", + " spike = jnp.logical_and(self.V.value < self.V_th, V >= self.V_th) # Check if a spike occurs\n", + " self.V.value = V # Update membrane potential\n", + " self.m.value = m # Update m variable\n", + " self.h.value = h # Update h variable\n", + " self.n.value = n # Update n variable\n", + " return spike # Return the spike event (True/False)" + ] + }, + { + "cell_type": "markdown", + "id": "4bd51608", + "metadata": {}, + "source": [ + "## Running the Model Simulation\n", + "\n", + "After instantiating the defined model, we need to initialize the instance with ``bst.nn.init_all_states()``.\n", + "\n", + "Define the model’s time step ``dt``." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "85dca7b9", + "metadata": {}, + "outputs": [], + "source": [ + "hh = HH(10)\n", + "brainstate.nn.init_all_states(hh)\n", + "dt = 0.01 * u.ms" + ] + }, + { + "cell_type": "markdown", + "id": "aab91f0f", + "metadata": {}, + "source": [ + "Define the function ``run()`` for running the model one step at a time.\n", + "\n", + "``with bst.environ.context(t=t, dt=dt):``is used to define environment variables within a code block, and variables can be accessed using ``bst.environ.get()`` (e.g., ``bst.environ.get('t')``). This is necessary because we use ``t = bst.environ.get('t')`` inside the ``update()`` method." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ef0d23e0", + "metadata": {}, + "outputs": [], + "source": [ + "def run(t, inp):\n", + " # Run the simulation for a given time 't' and input current 'inp'\n", + " # `brainstate.environ.context` sets the environment context for this simulation step\n", + " with brainstate.environ.context(t=t, dt=dt):\n", + " hh(inp) # Update the Hodgkin-Huxley model using the input current at time 't'\n", + "\n", + " # Return the membrane potential at the current time step\n", + " return hh.V.value" + ] + }, + { + "cell_type": "markdown", + "id": "3602f2a4", + "metadata": {}, + "source": [ + "Use ``bst.compile.for_loop()`` to iterate the function and run the simulation for a period of time. The first argument is the function to iterate, followed by the parameters the function needs. You can also display a progress bar during the iteration.\n", + "\n", + "This completes the simulation of the single neuron model." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "da2ea460", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-15 18:46:31.392242: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n", + "2024-12-15 18:46:31.392310: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n", + "2024-12-15 18:46:31.392340: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3e6597ac990046f3b6986029f3c87476", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/10000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Define the simulation times, from 0 to 100 ms with a time step of 'dt'\n", + "times = u.math.arange(0. * u.ms, 100. * u.ms, dt)\n", + "\n", + "# Run the simulation using `brainstate.compile.for_loop`:\n", + "# - `run` function is called iteratively with each time step and random input current\n", + "# - Random input current between 1 and 10 uA/cm² is generated at each time step\n", + "# - `pbar` is used to show a progress bar during the simulation\n", + "vs = brainstate.compile.for_loop(\n", + " run,\n", + " times, # Time steps as input\n", + " brainstate.random.uniform(1., 10., times.shape) * u.uA / u.cm ** 2, # Random input current (1 to 10 uA/cm²)\n", + " pbar=brainstate.compile.ProgressBar(count=10)\n", + ") # Show progress bar with 10 steps\n", + "\n", + "# Plot the membrane potential over time\n", + "plt.plot(times, vs)\n", + "plt.show() # Display the plot" + ] + }, + { + "cell_type": "markdown", + "id": "c3f5e7c3", + "metadata": {}, + "source": [ + "# Simulation of Spiking Neural Network Models\n", + "\n", + "One of the goals of neuroscience research is to uncover the possible principles by which the brain encodes information. As a potential encoding rule, we naturally expect neurons to produce the same response to the same stimulus. However, in the 1980s and 1990s, numerous experiments found that when the same external stimulus is presented repeatedly, the spike sequences produced by neurons in the cerebral cortex are different each time, and the spike sequences exhibit highly irregular statistical behaviors. Van Vreeswijk and Haim Sompolinsky proposed the **Excitatory-Inhibitory Balanced Network (E-I balanced network)**. They suggested that there should be both excitatory and inhibitory neurons in the network, and the inputs to both types of neurons must be balanced and counteracting. In this case, the mean input received by the neurons remains very small, and the variance (fluctuation) is large enough to induce irregular firing of neurons. Furthermore, the following conditions must also hold for the network:\n", + "+ Neuron connections are random and sparse, which reduces the statistical correlation between the internal inputs received by different neurons, leading to stronger macroscopic irregularity.\n", + "+ Statistically, the excitatory inputs and inhibitory inputs received by a neuron should approximately cancel each other out, meaning that the excitation and inhibition transmitted within the network are balanced.\n", + "+ The connection strength between neurons within the network is relatively strong, so the activity of the entire network is dominated not by external inputs but by synaptic currents generated by the internal network connections. The random fluctuations in synaptic currents determine the irregular firing of neurons.\n", + "\n", + "
\n", + " \"EI-balance\"\n", + "
\n", + "\n", + "Here, we simulate the Excitatory-Inhibitory Balanced Network model as an example of simulating a spiking neural network model.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "60bc3e45", + "metadata": {}, + "outputs": [], + "source": [ + "import brainunit as u\n", + "import brainstate as brainstate\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "2b06bb4b", + "metadata": {}, + "source": [ + "## Defining Spiking Neural Network Model\n", + "\n", + "We can use ``brainstate`` to define custom neuron models. To define a custom neuron model, we need to inherit the base class ``brainstate.nn.DynamicsGroup``.\n", + "\n", + "1. First, define the initialization method ``__init__()``, which receives model parameters and initializes the model. Note that we need to first call ``super().__init__()`` to initialize the base class. The model initialization mainly includes initializing neurons and synapses:\n", + " - **Initializing Neurons**: Neurons in the network can either use the pre-defined neuron models in ``brainstate.nn`` or use the custom neurons defined in the **Single Neuron Model Definition** section.\n", + " - **Initializing Synapses**: Here, we use ``brainstate.nn.AlignPostProj``, which is suitable for the align-post projection model. In the align-post projection, the dimensions of the synaptic variables and the postsynaptic neuron group are the same. The update order of align-post projection models is: action potential → synaptic communication → synaptic dynamics → output. The update order of align-pre projection models is: action potential → synaptic dynamics → synaptic communication → output. Several parameters need to be set:\n", + " - ``comm``: Describes the connections between the neuron groups.\n", + " - ``syn``: Specifies which synapse model is used.\n", + " - ``out``: Indicates whether the output is based on conductance or current.\n", + " - ``post``: Specifies the postsynaptic neuron group.\n", + "\n", + "2. Next, define the ``update()`` method, which receives the input for each time step and updates the model's current state. As a neuron network, neurons need to receive inputs not only from external sources but also from other neurons. Therefore, in this model, we first compute the inputs received from other neurons, then calculate the external inputs. Finally, we output the firing state of each neuron in the entire network." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "61efc944", + "metadata": {}, + "outputs": [], + "source": [ + "class EINet(brainstate.nn.DynamicsGroup):\n", + " def __init__(self, n_exc, n_inh, prob, JE, JI):\n", + " # Initialize the network with the following parameters:\n", + " # - n_exc: number of excitatory neurons\n", + " # - n_inh: number of inhibitory neurons\n", + " # - prob: connection probability between neurons\n", + " # - JE: synaptic weight for excitatory connections\n", + " # - JI: synaptic weight for inhibitory connections\n", + " super().__init__()\n", + "\n", + " self.n_exc = n_exc # Number of excitatory neurons\n", + " self.n_inh = n_inh # Number of inhibitory neurons\n", + " self.num = n_exc + n_inh # Total number of neurons (excitatory + inhibitory)\n", + "\n", + " # Initialize the neurons as LIF (Leaky Integrate-and-Fire) neurons\n", + " self.N = brainstate.nn.LIF(\n", + " n_exc + n_inh, # Total number of neurons\n", + " V_rest=-52. * u.mV, # Resting potential (mV)\n", + " V_th=-50. * u.mV, # Threshold potential for firing (mV)\n", + " V_reset=-60. * u.mV, # Reset potential after spike (mV)\n", + " tau=10. * u.ms, # Membrane time constant (ms)\n", + " V_initializer=brainstate.nn.Normal(-60., 10., unit=u.mV),\n", + " # Initialize membrane potential with a normal distribution\n", + " spk_reset='soft' # Soft reset for spiking (reset without forcing a specific value)\n", + " )\n", + "\n", + " # Synapse connections from excitatory neurons to all neurons\n", + " self.E = brainstate.nn.AlignPostProj(\n", + " comm=brainstate.nn.EventFixedProb(n_exc, self.num, prob, JE),\n", + " # Fixed probability of synaptic connection with strength JE\n", + " syn=brainstate.nn.Expon.desc(self.num, tau=2. * u.ms), # Exponential decay of synaptic weight\n", + " out=brainstate.nn.CUBA.desc(), # CUBA (Conductance-based) synaptic model\n", + " post=self.N, # Target neurons for these excitatory synapses\n", + " )\n", + "\n", + " # Synapse connections from inhibitory neurons to all neurons\n", + " self.I = brainstate.nn.AlignPostProj(\n", + " comm=brainstate.nn.EventFixedProb(n_inh, self.num, prob, JI),\n", + " # Fixed probability of synaptic connection with strength JI\n", + " syn=brainstate.nn.Expon.desc(self.num, tau=2. * u.ms), # Exponential decay of synaptic weight\n", + " out=brainstate.nn.CUBA.desc(), # CUBA (Conductance-based) synaptic model\n", + " post=self.N, # Target neurons for these inhibitory synapses\n", + " )\n", + "\n", + " def update(self, inp):\n", + " # Get the spike states of the neurons\n", + " spks = self.N.get_spike() != 0. # Non-zero spikes (spike detection)\n", + "\n", + " # Update the synaptic currents for excitatory and inhibitory neurons\n", + " self.E(spks[:self.n_exc]) # Apply excitatory synaptic input based on the excitatory neuron spikes\n", + " self.I(spks[self.n_exc:]) # Apply inhibitory synaptic input based on the inhibitory neuron spikes\n", + "\n", + " # Update the neurons with the provided input current (inp)\n", + " self.N(inp)\n", + "\n", + " # Return the spike states of the neurons (whether each neuron spiked)\n", + " return self.N.get_spike()" + ] + }, + { + "cell_type": "markdown", + "id": "3320eacc", + "metadata": {}, + "source": [ + "## Running the Simulation Experiment\n", + "\n", + "Set some model parameters. In this example, we use the sign (positive or negative) of the connection strength to set the excitatory or inhibitory nature of the neurons." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3e1569f5", + "metadata": {}, + "outputs": [], + "source": [ + "# connectivity\n", + "num_exc = 500\n", + "num_inh = 500\n", + "prob = 0.1\n", + "# external current\n", + "Ib = 3. * u.mA\n", + "# excitatory and inhibitory synaptic weights\n", + "JE = 1 / u.math.sqrt(prob * num_exc) * u.mS\n", + "JI = -1 / u.math.sqrt(prob * num_inh) * u.mS" + ] + }, + { + "cell_type": "markdown", + "id": "f2c2db9e", + "metadata": {}, + "source": [ + "Define the time step ``dt`` for the simulation.\n", + "\n", + "After instantiating the defined model, initialize the instance with ``bst.nn.init_all_states()``." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3aed3747", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "EINet(\n", + " layers_tuple=(),\n", + " layers_dict={},\n", + " n_exc=500,\n", + " n_inh=500,\n", + " num=1000,\n", + " N=LIF(\n", + " in_size=(1000,),\n", + " out_size=(1000,),\n", + " current_inputs={'AlignPostProj0': CUBA(\n", + " scale=volt\n", + " )},\n", + " before_updates={\"(, (1000,), {'tau': 2. * msecond}) // (, (), {})\": _AlignPost(\n", + " syn=Expon(\n", + " in_size=(1000,),\n", + " out_size=(1000,),\n", + " tau=2. * msecond,\n", + " g_initializer=ZeroInit(\n", + " unit=msiemens\n", + " ),\n", + " g=HiddenState(\n", + " value=ArrayImpl([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0.... * msiemens\n", + " )\n", + " ),\n", + " out=CUBA(...)\n", + " )},\n", + " spk_reset='soft',\n", + " spk_fun=ReluGrad(alpha=0.3, width=1.0),\n", + " R=1. * ohm,\n", + " tau=10. * msecond,\n", + " V_th=-50. * mvolt,\n", + " V_rest=-52. * mvolt,\n", + " V_reset=-60. * mvolt,\n", + " V_initializer=Normal(\n", + " scale=10.0,\n", + " mean=-60.0,\n", + " rng=RandomState([2647944946 1939377294]),\n", + " unit=mvolt\n", + " ),\n", + " V=HiddenState(\n", + " value=ArrayImpl([-44.94350815, -49.09746552, -54.77877045, -62.51665115,\n", + " -49.72640991, -53.0278... * mvolt\n", + " )\n", + " ),\n", + " E=AlignPostProj(\n", + " name='AlignPostProj0',\n", + " modules=(),\n", + " merging=True,\n", + " comm=FixedProb(\n", + " in_size=(500,),\n", + " out_size=(1000,),\n", + " n_conn=100,\n", + " float_as_event=True,\n", + " block_size=None,\n", + " indices=Array([[584, 311, 322, ..., 857, 171, 213],\n", + " [502, 87, 501, ..., 176, 239, 808],\n", + " [336, 860, 686, ..., 629, 932, 434],\n", + " ...,\n", + " [838, 631, 745, ..., 767, 427, 536],\n", + " [154, 597, 111, ..., 914, 601, 805],\n", + " [215, 279, 117, ..., 917, 335, 690]], dtype=int32),\n", + " weight=ParamState(\n", + " value=0.14142136 * msiemens\n", + " )\n", + " ),\n", + " syn=Expon(...),\n", + " out=CUBA(...),\n", + " post=LIF(...)\n", + " ),\n", + " I=AlignPostProj(\n", + " name='AlignPostProj1',\n", + " modules=(),\n", + " merging=True,\n", + " comm=FixedProb(\n", + " in_size=(500,),\n", + " out_size=(1000,),\n", + " n_conn=100,\n", + " float_as_event=True,\n", + " block_size=None,\n", + " indices=Array([[257, 901, 935, ..., 722, 965, 139],\n", + " [924, 131, 887, ..., 389, 554, 905],\n", + " [699, 799, 935, ..., 196, 311, 278],\n", + " ...,\n", + " [210, 74, 426, ..., 129, 101, 732],\n", + " [839, 371, 605, ..., 418, 668, 419],\n", + " [924, 822, 688, ..., 137, 877, 855]], dtype=int32),\n", + " weight=ParamState(\n", + " value=-0.14142136 * msiemens\n", + " )\n", + " ),\n", + " syn=Expon(...),\n", + " out=CUBA(...),\n", + " post=LIF(...)\n", + " )\n", + ")" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# network\n", + "brainstate.environ.set(dt=0.1 * u.ms)\n", + "net = EINet(num_exc, num_inh, prob=prob, JE=JE, JI=JI)\n", + "_ = brainstate.nn.init_all_states(net)" + ] + }, + { + "cell_type": "markdown", + "id": "0a52aac5", + "metadata": {}, + "source": [ + "The instantiated network model uses the ``update()`` method to input the current for each time step.\n", + "\n", + "Use ``bst.compile.for_loop()`` to iterate the function and run the simulation for a certain period of time. The first argument is the function to iterate, followed by the parameters that the function requires. You can also display a progress bar during the iteration.\n", + "\n", + "This completes the simulation of the spiking neural network model." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "32e8e8ee", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-15 18:46:36.710433: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n", + "2024-12-15 18:46:36.710492: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n", + "2024-12-15 18:46:36.710519: W external/xla/xla/service/gpu/ir_emitter_unnested.cc:1171] Unable to parse backend config for custom call: Could not convert JSON string to proto: : Root element must be a message.\n", + "Fall back to parse the raw backend config str.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "634f59000ce2482bbb528d119d41b4b5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/10000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualization\n", + "times = times.to_decimal(u.ms)\n", + "t_indices, n_indices = u.math.where(spikes)\n", + "plt.plot(times[t_indices], n_indices, 'k.', markersize=1)\n", + "plt.xlabel('Time (ms)')\n", + "plt.ylabel('Neuron index')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/snn_simulation-zh.ipynb b/docs/snn_simulation-zh.ipynb new file mode 100644 index 000000000..212ad1b2a --- /dev/null +++ b/docs/snn_simulation-zh.ipynb @@ -0,0 +1,723 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b78f6e1b6cb0dada", + "metadata": { + "collapsed": false + }, + "source": [ + "# 仿真脉冲神经网络\n", + "\n", + "建立脑动力学模型并进行仿真是研究脑动力学的重要方法之一。在进行脉冲神经网络仿真时,我们给定模型和输入的各项参数,进行仿真实验。在这个过程中,不涉及参数(如连接权重)的学习与更新。主要应用于对设计好的网络进行仿真与分析。\n", + "\n", + "脑动力学的脉冲神经网络模型可以分为**单个脉冲神经元模型**和**脉冲神经元网络模型**,我们将分别举一个例子进行演示。" + ] + }, + { + "cell_type": "markdown", + "id": "c5622779", + "metadata": {}, + "source": [ + "## 单个脉冲神经元模型的仿真\n", + "\n", + "**Hodgkin-Huxley模型(HH模型)** 是由神经生理学家艾伦·霍奇金(Allen Hodgkin,1914-1998)和安德鲁·赫胥黎(Andrew Huxley,1917-2012)于1952年提出的数学模型,用以描述神经元动作电位的产生和传播过程。HH模型以经典电路模型为基础,将神经元膜电位的动态变化与膜离子通道的生物物理特性联系起来,是神经科学中最重要的理论模型之一,曾为二人赢得1963年的诺贝尔生理学或医学奖。HH模型的数学定义是:\n", + "\n", + "$$\n", + "\\begin{aligned}C \\frac {dV} {dt} = -(\\bar{g}_{Na} m^3 h (V &-E_{Na}) + \\bar{g}_K n^4 (V-E_K) + g_{leak} (V - E_{leak})) + I(t)\\\\\n", + "\\frac {dx} {dt} &= \\alpha_x (1-x) - \\beta_x, \\quad x\\in {\\rm{\\{m, h, n\\}}}\\\\\n", + "&\\alpha_m(V) = \\frac {0.1(V+40)}{1-\\exp(\\frac{-(V + 40)} {10})}\\\\\n", + "&\\beta_m(V) = 4.0 \\exp(\\frac{-(V + 65)} {18})\\\\\n", + "&\\alpha_h(V) = 0.07 \\exp(\\frac{-(V+65)}{20})\\\\\n", + "&\\beta_h(V) = \\frac 1 {1 + \\exp(\\frac{-(V + 35)} {10})}\\\\&\\alpha_n(V) = \\frac {0.01(V+55)}{1-\\exp(-(V+55)/10)}\\\\\n", + "&\\beta_n(V) = 0.125 \\exp(\\frac{-(V + 65)} {80})\\end{aligned}\n", + "$$\n", + "\n", + "在这里我们对HH模型进行仿真,作为单个脉冲神经元模型仿真的示例。``brainstate``可以同时运行多个神经元模型,并行运行节省时间。我们对一群HH神经元进行仿真。" + ] + }, + { + "cell_type": "code", + "id": "9dd07dd9", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:18.527525Z", + "start_time": "2025-05-11T02:51:16.423057Z" + } + }, + "source": [ + "import brainunit as u\n", + "import jax.numpy as jnp\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import brainstate " + ], + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "id": "051f8f24", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:18.542843Z", + "start_time": "2025-05-11T02:51:18.537056Z" + } + }, + "source": "# brainstate.environ.set(platform='gpu')", + "outputs": [], + "execution_count": 2 + }, + { + "cell_type": "code", + "id": "60058528", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:18.815210Z", + "start_time": "2025-05-11T02:51:18.567003Z" + } + }, + "source": "brainstate.random.seed(100)", + "outputs": [], + "execution_count": 3 + }, + { + "cell_type": "markdown", + "id": "a6ba5685", + "metadata": {}, + "source": [ + "## 单神经元模型的定义\n", + "\n", + "我们可以使用``brainstate``自定义神经元模型。自定义神经元模型需要继承模型基类``brainstate.nn.Dynamics``。\n", + "\n", + "1. 首先定义初始化类方法``__init__()``,接收并行运行的神经元个数``in_size``,和其他模型参数。用``in_size``初始化基类,将模型参数设置为模型类属性,便于后续调用。\n", + "\n", + "2. 然后,可以设定一些模型常用计算为类方法,便于后续调用。在这里我们实现了一些计算m、h和n涉及的函数。注意常微分方程的漂移项函数,传入参数的顺序应为,动态变量,当前时刻t和其他参数。\n", + "\n", + "3. 接着,定义模型状态初始化方法``init_state()``。与``__init__()``不同,这里初始化的不是模型参数,而是模型状态,主要是模型运行中会改变的变量的初始化。在``brainstate``中,所有需要改变的量都需封装在 ``State`` 对象中。模型运行时会发生改变的隐变量需封装在``HiddenState``(是``State`` 的子类)对象中。\n", + "\n", + "4. 然后定义dV的计算方法。本质上和上文提到的计算m、h和n涉及的函数一样,都是设定一些模型常用计算为类方法,便于后续调用。但需要注意的地方是,dV的计算涉及到电流I。在这个例子中,我们仿真的神经元是相互之间没有连接的,但这套定义单神经元模型的流程也适用于,定义网络中的神经元。因此,``I = self.sum_current_inputs(I, V)``,I包括外界输入电流和来自其他神经元的电流。\n", + "\n", + "5. 最后定义``update()``方法,接收每个时间步模型的input,把模型中各个变量进行更新。``bst.environ.get('t')``获取当前时刻t。解常微分方程,求得每个变量当前时间步的值,这里使用了指数欧拉法``brainstate.nn.exp_euler_step()``求解方程(接收第一个参数是常微分方程的漂移项,其他参数是方程函数需要接收的参数)。对于网络中的神经元,``V = self.sum_delta_inputs(init=V)``使得模型接收其他神经元通过delta突触传导的输入。然后计算这步更新后哪些神经元产生了动作电位。最后用计算出的值更新模型变量的值。返回值输出神经元是否发放了动作电位,有发放为1,无发放为0。使用时,通过调用模型实例并传入输入,会自动调用``update()``方法。" + ] + }, + { + "cell_type": "code", + "id": "f08c361a", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:19.416821Z", + "start_time": "2025-05-11T02:51:19.404729Z" + } + }, + "source": [ + "class HH(brainstate.nn.Dynamics):\n", + " def __init__(\n", + " self,\n", + " in_size,\n", + " ENa=50. * u.mV, gNa=120. * u.mS / u.cm ** 2,\n", + " EK=-77. * u.mV, gK=36. * u.mS / u.cm ** 2,\n", + " EL=-54.387 * u.mV, gL=0.03 * u.mS / u.cm ** 2,\n", + " V_th=20. * u.mV,\n", + " C=1.0 * u.uF / u.cm ** 2\n", + " ):\n", + " # Initialization of the neuron model parameters\n", + " super().__init__(in_size)\n", + "\n", + " # Set model parameters based on provided values or defaults\n", + " self.ENa = ENa # Sodium reversal potential (mV)\n", + " self.EK = EK # Potassium reversal potential (mV)\n", + " self.EL = EL # Leak reversal potential (mV)\n", + " self.gNa = gNa # Sodium conductance (mS/cm^2)\n", + " self.gK = gK # Potassium conductance (mS/cm^2)\n", + " self.gL = gL # Leak conductance (mS/cm^2)\n", + " self.C = C # Membrane capacitance (uF/cm^2)\n", + " self.V_th = V_th # Threshold for spike (mV)\n", + "\n", + " # m (sodium activation) channel kinetics\n", + " m_alpha = lambda self, V: 1. / u.math.exprel(-(V / u.mV + 40) / 10) # Alpha function for m\n", + " m_beta = lambda self, V: 4.0 * jnp.exp(-(V / u.mV + 65) / 18) # Beta function for m\n", + " m_inf = lambda self, V: self.m_alpha(V) / (self.m_alpha(V) + self.m_beta(V)) # Steady-state value for m\n", + " dm = lambda self, m, t, V: (self.m_alpha(V) * (1 - m) - self.m_beta(V) * m) / u.ms # Rate of change of m\n", + "\n", + " # h (sodium inactivation) channel kinetics\n", + " h_alpha = lambda self, V: 0.07 * jnp.exp(-(V / u.mV + 65) / 20.) # Alpha function for h\n", + " h_beta = lambda self, V: 1 / (1 + jnp.exp(-(V / u.mV + 35) / 10)) # Beta function for h\n", + " h_inf = lambda self, V: self.h_alpha(V) / (self.h_alpha(V) + self.h_beta(V)) # Steady-state value for h\n", + " dh = lambda self, h, t, V: (self.h_alpha(V) * (1 - h) - self.h_beta(V) * h) / u.ms # Rate of change of h\n", + "\n", + " # n (potassium activation) channel kinetics\n", + " n_alpha = lambda self, V: 0.1 / u.math.exprel(-(V / u.mV + 55) / 10) # Alpha function for n\n", + " n_beta = lambda self, V: 0.125 * jnp.exp(-(V / u.mV + 65) / 80) # Beta function for n\n", + " n_inf = lambda self, V: self.n_alpha(V) / (self.n_alpha(V) + self.n_beta(V)) # Steady-state value for n\n", + " dn = lambda self, n, t, V: (self.n_alpha(V) * (1 - n) - self.n_beta(V) * n) / u.ms # Rate of change of n\n", + "\n", + " def init_state(self, batch_size=None):\n", + " # Initialize the state variables for membrane potential (V) and gating variables (m, h, n)\n", + " self.V = brainstate.HiddenState(jnp.ones(self.varshape, brainstate.environ.dftype()) * -65. * u.mV) # Resting potential (mV)\n", + " self.m = brainstate.HiddenState(self.m_inf(self.V.value)) # Sodium activation variable\n", + " self.h = brainstate.HiddenState(self.h_inf(self.V.value)) # Sodium inactivation variable\n", + " self.n = brainstate.HiddenState(self.n_inf(self.V.value)) # Potassium activation variable\n", + "\n", + " def dV(self, V, t, m, h, n, I):\n", + " # Compute the derivative of membrane potential (V) based on the currents and model parameters\n", + " I = self.sum_current_inputs(I, V) # Sum of all incoming currents\n", + " I_Na = (self.gNa * m * m * m * h) * (V - self.ENa) # Sodium current (I_Na)\n", + " n2 = n * n # Squared potassium activation variable\n", + " I_K = (self.gK * n2 * n2) * (V - self.EK) # Potassium current (I_K)\n", + " I_leak = self.gL * (V - self.EL) # Leak current (I_leak)\n", + " dVdt = (- I_Na - I_K - I_leak + I) / self.C # Membrane potential change rate (dV/dt)\n", + " return dVdt\n", + "\n", + " def update(self, x=0. * u.mA / u.cm ** 2):\n", + " # Update the state of the neuron based on current inputs and time\n", + " t = brainstate.environ.get('t') # Retrieve the current time\n", + " V = brainstate.nn.exp_euler_step(self.dV, self.V.value, t, self.m.value, self.h.value, self.n.value, x) # Update membrane potential\n", + " m = brainstate.nn.exp_euler_step(self.dm, self.m.value, t, self.V.value) # Update m variable (activation)\n", + " h = brainstate.nn.exp_euler_step(self.dh, self.h.value, t, self.V.value) # Update h variable (inactivation)\n", + " n = brainstate.nn.exp_euler_step(self.dn, self.n.value, t, self.V.value) # Update n variable (activation)\n", + " V = self.sum_delta_inputs(init=V) # Sum the inputs for membrane potential\n", + " spike = jnp.logical_and(self.V.value < self.V_th, V >= self.V_th) # Check if a spike occurs\n", + " self.V.value = V # Update membrane potential\n", + " self.m.value = m # Update m variable\n", + " self.h.value = h # Update h variable\n", + " self.n.value = n # Update n variable\n", + " return spike # Return the spike event (True/False)" + ], + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "markdown", + "id": "4bd51608", + "metadata": {}, + "source": [ + "## 模型仿真实验运行\n", + "\n", + "实例化定义好的模型后,要先``bst.nn.init_all_states()``初始化这个实例。\n", + "\n", + "定义模型``dt``对应的时间。" + ] + }, + { + "cell_type": "code", + "id": "85dca7b9", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:19.757507Z", + "start_time": "2025-05-11T02:51:19.474202Z" + } + }, + "source": [ + "hh = HH(10)\n", + "brainstate.nn.init_all_states(hh)\n", + "dt = 0.01 * u.ms" + ], + "outputs": [], + "execution_count": 5 + }, + { + "cell_type": "markdown", + "id": "aab91f0f", + "metadata": {}, + "source": [ + "定义模型单步运行函数``run()``。\n", + "\n", + "``with bst.environ.context(t=t, dt=dt):``可以定义代码块内的环境变量,代码块内都可以通过``bst.environ.get()``获取变量值(eg. ``bst.environ.get('t')``)。在这里需要用到是因为我们定义的模型``update()``方法中使用了``t = bst.environ.get('t')``。" + ] + }, + { + "cell_type": "code", + "id": "ef0d23e0", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:19.795400Z", + "start_time": "2025-05-11T02:51:19.790918Z" + } + }, + "source": [ + "def run(t, inp):\n", + " # Run the simulation for a given time 't' and input current 'inp'\n", + " # `brainstate.environ.context` sets the environment context for this simulation step\n", + " with brainstate.environ.context(t=t, dt=dt):\n", + " hh(inp) # Update the Hodgkin-Huxley model using the input current at time 't'\n", + " \n", + " # Return the membrane potential at the current time step\n", + " return hh.V.value" + ], + "outputs": [], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "id": "3602f2a4", + "metadata": {}, + "source": [ + "使用``bst.compile.for_loop()``迭代运行函数,进行一段时间的仿真,第一个参数是要迭代的函数,随后是此函数所需要的参数。可以选择绘制迭代进度条。\n", + "\n", + "这样就完成了单个脉冲神经元模型的仿真。" + ] + }, + { + "cell_type": "code", + "id": "da2ea460", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:20.472914Z", + "start_time": "2025-05-11T02:51:19.840946Z" + } + }, + "source": [ + "# Define the simulation times, from 0 to 100 ms with a time step of 'dt'\n", + "times = u.math.arange(0. * u.ms, 100. * u.ms, dt)\n", + "\n", + "# Run the simulation using `brainstate.compile.for_loop`:\n", + "# - `run` function is called iteratively with each time step and random input current\n", + "# - Random input current between 1 and 10 uA/cm² is generated at each time step\n", + "# - `pbar` is used to show a progress bar during the simulation\n", + "vs = brainstate.compile.for_loop(run,\n", + " times, # Time steps as input\n", + " brainstate.random.uniform(1., 10., times.shape) * u.uA / u.cm ** 2, # Random input current (1 to 10 uA/cm²)\n", + " pbar=brainstate.compile.ProgressBar(count=10)) # Show progress bar with 10 steps\n", + "\n", + "# Plot the membrane potential over time\n", + "plt.plot(times, vs)\n", + "plt.show() # Display the plot" + ], + "outputs": [ + { + "data": { + "text/plain": [ + " 0%| | 0/10000 [00:00" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 7 + }, + { + "cell_type": "markdown", + "id": "f4b57d2a", + "metadata": {}, + "source": [ + "## 脉冲神经元网络模型的仿真" + ] + }, + { + "cell_type": "markdown", + "id": "c3f5e7c3", + "metadata": {}, + "source": [ + "神经科学研究的目的之一是要解开大脑编码信息的可能法则。作为一种编码法则,我们很自然指望神经元在相同刺激下产生相同的反应。但上世纪 80 至 90 年代,大量实验发现,同样的外部刺激重复呈现,大脑皮层中的神经元每次产生的脉冲序列都不同,且单次脉冲序列表现出极不规律的统计行为。范·弗雷斯维克(Van Vreeswijk)和海姆·索姆林斯基(Haim Sompolinsky)提出了**兴奋-抑制平衡网络(E-I balanced network)**。他们提出网络中应同时存在兴奋性神经元和抑制性神经元,且两种神经元的输入必须是平衡的、相互抵消的,此时神经元接收到输入的均值维持在一个很小的值,方差(波动)才足够显著,从而促使神经元无规律发放。除此以外,对网络还有以下要求:\n", + "+ 神经元之间的连接是随机且稀疏的,这使得不同神经元接收到的内部输入的统计相关性很小,宏观上表\n", + "现出更强的不规律性;\n", + "+ 统计上,一个神经元接收到的兴奋性输入和抑制性输入应该能大致抵消,即网络中传递的兴奋和抑制是平衡的;\n", + "+ 网络内部神经元之间的连接强度相对较强,这使得整个网络的活动不是被外部输入而是被网络内部突触\n", + "连接产生的电流主导,突触电流的随机起伏决定了神经元的无规律发放。\n", + "\n", + "
\n", + " \"EI-balance\"\n", + "
\n", + "\n", + "在这里我们对兴奋-抑制平衡网络模型进行仿真,作为脉冲神经元网络模型仿真的示例。" + ] + }, + { + "cell_type": "code", + "id": "60bc3e45", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:20.607864Z", + "start_time": "2025-05-11T02:51:20.604365Z" + } + }, + "source": [ + "import brainunit as u\n", + "import brainstate as brainstate\n", + "import matplotlib.pyplot as plt" + ], + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "markdown", + "id": "2b06bb4b", + "metadata": {}, + "source": [ + "## 脉冲神经网络模型的定义\n", + "\n", + "我们可以使用``brainstate``自定义脉冲神经网络模型。自定义脉冲神经网络模型需要继承模型基类``brainstate.nn.DynamicsGroup``。\n", + "\n", + "1. 首先定义初始化类方法``__init__()``,接收模型参数,初始化模型。注意要先``super().__init__()``初始化基类。初始化模型主要包括初始化神经元和突触:\n", + " - **初始化神经元**:网络中神经元可以选择``brainstate.nn``中已经实现好的各种神经元,也可以选用我们在**单神经元模型的定义**部分自定义的神经元。\n", + " - **初始化突触**:这里使用了``brainstate.nn.AlignPostProj``,适用于align-post投射模型。align-post投射意味着突触变量和突触后神经元群的维度一致。align-post和align-pre模型的更新顺序不同,align-post投射模型更新顺序是动作电位 -> 突触通讯 -> 突触动力学 -> 输出;align-pre投射模型更新顺序是动作电位 -> 突触动力学 -> 突触通讯 -> 输出。它需要设置的几个参数分别是:\n", + " - ``comm``:神经元群之间的连接是怎样的\n", + " - ``syn``:使用哪种突触模型\n", + " - ``out``:设置输出是基于电导还是基于电流的\n", + " - ``post``:指出突触后神经元群。\n", + "\n", + "\n", + "2. 然后定义``update()``方法,接收每个时间步模型的input,更新模型当前状态。作为神经元群,神经元除了外界输入还要接收其它神经元的输入。因此在这个模型中,先计算神经元群接收神经元的输入,再计算接收外界输入。最后输出整个网络每个神经元的发放情况。" + ] + }, + { + "cell_type": "code", + "id": "61efc944", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:20.648750Z", + "start_time": "2025-05-11T02:51:20.641335Z" + } + }, + "source": [ + "class EINet(brainstate.nn.DynamicsGroup):\n", + " def __init__(self, n_exc, n_inh, prob, JE, JI):\n", + " # Initialize the network with the following parameters:\n", + " # - n_exc: number of excitatory neurons\n", + " # - n_inh: number of inhibitory neurons\n", + " # - prob: connection probability between neurons\n", + " # - JE: synaptic weight for excitatory connections\n", + " # - JI: synaptic weight for inhibitory connections\n", + " super().__init__()\n", + "\n", + " self.n_exc = n_exc # Number of excitatory neurons\n", + " self.n_inh = n_inh # Number of inhibitory neurons\n", + " self.num = n_exc + n_inh # Total number of neurons (excitatory + inhibitory)\n", + "\n", + " # Initialize the neurons as LIF (Leaky Integrate-and-Fire) neurons\n", + " self.N = brainstate.nn.LIF(\n", + " n_exc + n_inh, # Total number of neurons\n", + " V_rest=-52. * u.mV, # Resting potential (mV)\n", + " V_th=-50. * u.mV, # Threshold potential for firing (mV)\n", + " V_reset=-60. * u.mV, # Reset potential after spike (mV)\n", + " tau=10. * u.ms, # Membrane time constant (ms)\n", + " V_initializer=brainstate.nn.Normal(-60., 10., unit=u.mV), # Initialize membrane potential with a normal distribution\n", + " spk_reset='soft' # Soft reset for spiking (reset without forcing a specific value)\n", + " )\n", + "\n", + " # Synapse connections from excitatory neurons to all neurons\n", + " self.E = brainstate.nn.AlignPostProj(\n", + " comm=brainstate.nn.EventFixedProb(n_exc, self.num, prob, JE), # Fixed probability of synaptic connection with strength JE\n", + " syn=brainstate.nn.Expon.desc(self.num, tau=2. * u.ms), # Exponential decay of synaptic weight\n", + " out=brainstate.nn.CUBA.desc(), # CUBA (Conductance-based) synaptic model\n", + " post=self.N, # Target neurons for these excitatory synapses\n", + " )\n", + "\n", + " # Synapse connections from inhibitory neurons to all neurons\n", + " self.I = brainstate.nn.AlignPostProj(\n", + " comm=brainstate.nn.EventFixedProb(n_inh, self.num, prob, JI), # Fixed probability of synaptic connection with strength JI\n", + " syn=brainstate.nn.Expon.desc(self.num, tau=2. * u.ms), # Exponential decay of synaptic weight\n", + " out=brainstate.nn.CUBA.desc(), # CUBA (Conductance-based) synaptic model\n", + " post=self.N, # Target neurons for these inhibitory synapses\n", + " )\n", + "\n", + " def update(self, inp):\n", + " # Get the spike states of the neurons\n", + " spks = self.N.get_spike() != 0. # Non-zero spikes (spike detection)\n", + "\n", + " # Update the synaptic currents for excitatory and inhibitory neurons\n", + " self.E(spks[:self.n_exc]) # Apply excitatory synaptic input based on the excitatory neuron spikes\n", + " self.I(spks[self.n_exc:]) # Apply inhibitory synaptic input based on the inhibitory neuron spikes\n", + "\n", + " # Update the neurons with the provided input current (inp)\n", + " self.N(inp)\n", + "\n", + " # Return the spike states of the neurons (whether each neuron spiked)\n", + " return self.N.get_spike()" + ], + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "markdown", + "id": "3320eacc", + "metadata": {}, + "source": [ + "## 模型仿真实验运行\n", + "\n", + "设置一些模型参数。在这个例子中,我们用连接强度的正负来设置神经元的兴奋抑制性。" + ] + }, + { + "cell_type": "code", + "id": "3e1569f5", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:20.704820Z", + "start_time": "2025-05-11T02:51:20.678783Z" + } + }, + "source": [ + "# connectivity\n", + "num_exc = 500\n", + "num_inh = 500\n", + "prob = 0.1\n", + "# external current\n", + "Ib = 3. * u.mA\n", + "# excitatory and inhibitory synaptic weights\n", + "JE = 1 / u.math.sqrt(prob * num_exc) * u.mS\n", + "JI = -1 / u.math.sqrt(prob * num_inh) * u.mS" + ], + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "markdown", + "id": "f2c2db9e", + "metadata": {}, + "source": [ + "定义仿真实验中dt对应的时间。\n", + "\n", + "实例化定义好的模型后,要先``bst.nn.init_all_states()``初始化这个实例。" + ] + }, + { + "cell_type": "code", + "id": "3aed3747", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:20.892699Z", + "start_time": "2025-05-11T02:51:20.762936Z" + } + }, + "source": [ + "# network\n", + "brainstate.environ.set(dt=0.1 * u.ms)\n", + "net = EINet(num_exc, num_inh, prob=prob, JE=JE, JI=JI)\n", + "brainstate.nn.init_all_states(net)" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "EINet(\n", + " layers_tuple=(),\n", + " layers_dict={},\n", + " n_exc=500,\n", + " n_inh=500,\n", + " num=1000,\n", + " N=LIF(\n", + " _name=None,\n", + " in_size=(1000,),\n", + " out_size=(1000,),\n", + " current_inputs={\n", + " 'AlignPostProj0': CUBA(\n", + " _conductance=None,\n", + " scale=volt\n", + " )\n", + " },\n", + " _delta_inputs=None,\n", + " before_updates={\n", + " \"(, (1000,), {'tau': 2. * msecond}) // (, (), {})\": _AlignPost(\n", + " syn=Expon(\n", + " _name=None,\n", + " in_size=(1000,),\n", + " out_size=(1000,),\n", + " _current_inputs=None,\n", + " _delta_inputs=None,\n", + " _before_updates=None,\n", + " _after_updates=None,\n", + " tau=2. * msecond,\n", + " g_initializer=ZeroInit(\n", + " unit=msiemens\n", + " ),\n", + " g=HiddenState(\n", + " value=ShapedArray(float32[1000]) * msiemens\n", + " )\n", + " ),\n", + " out=CUBA(...)\n", + " )\n", + " },\n", + " _after_updates=None,\n", + " spk_reset=soft,\n", + " spk_fun=ReluGrad(alpha=0.3, width=1.0),\n", + " R=1. * ohm,\n", + " tau=10. * msecond,\n", + " V_th=-50. * mvolt,\n", + " V_rest=-52. * mvolt,\n", + " V_reset=-60. * mvolt,\n", + " V_initializer=Normal(\n", + " scale=10.0,\n", + " mean=-60.0,\n", + " rng=RandomState([3549270403 1145628597]),\n", + " unit=mvolt\n", + " ),\n", + " V=HiddenState(\n", + " value=ShapedArray(float32[1000]) * mvolt\n", + " )\n", + " ),\n", + " E=AlignPostProj(\n", + " name=AlignPostProj0,\n", + " modules=(),\n", + " merging=True,\n", + " comm=EventFixedNumConn(\n", + " in_size=(500,),\n", + " out_size=(1000,),\n", + " conn_target=post,\n", + " conn_num=100,\n", + " seed=None,\n", + " allow_multi_conn=True,\n", + " weight=ParamState(\n", + " value=ShapedArray(float32[], weak_type=True) * msiemens\n", + " ),\n", + " conn=FixedPostNumConn(float32[500, 1000], nse=50000)\n", + " ),\n", + " syn=Expon(...),\n", + " out=CUBA(...),\n", + " post=LIF(...)\n", + " ),\n", + " I=AlignPostProj(\n", + " name=AlignPostProj1,\n", + " modules=(),\n", + " merging=True,\n", + " comm=EventFixedNumConn(\n", + " in_size=(500,),\n", + " out_size=(1000,),\n", + " conn_target=post,\n", + " conn_num=100,\n", + " seed=None,\n", + " allow_multi_conn=True,\n", + " weight=ParamState(\n", + " value=ShapedArray(float32[], weak_type=True) * msiemens\n", + " ),\n", + " conn=FixedPostNumConn(float32[500, 1000], nse=50000)\n", + " ),\n", + " syn=Expon(...),\n", + " out=CUBA(...),\n", + " post=LIF(...)\n", + " )\n", + ")" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 + }, + { + "cell_type": "markdown", + "id": "0a52aac5", + "metadata": {}, + "source": [ + "实例化的网络模型使用``update()``方法输入每步的输入电流。\n", + "\n", + "使用``bst.compile.for_loop()``迭代运行函数,进行一段时间的仿真,第一个参数是要迭代的函数,随后是此函数所需要的参数。可以选择绘制迭代进度条。\n", + "\n", + "这样就完成了脉冲神经元网络模型的仿真。" + ] + }, + { + "cell_type": "code", + "id": "32e8e8ee", + "metadata": { + "ExecuteTime": { + "end_time": "2025-05-11T02:51:22.295610Z", + "start_time": "2025-05-11T02:51:20.949200Z" + } + }, + "source": [ + "# Simulation\n", + "# Define the time array from 0 to 1000 ms with a step size of dt\n", + "times = u.math.arange(0. * u.ms, 1000. * u.ms, brainstate.environ.get_dt())\n", + "\n", + "# Run the simulation using `brainstate.compile.for_loop`, iterating over each time step\n", + "# The `lambda t: net.update(Ib)` applies the `update` method of the network `net`\n", + "# for each time step, with `Ib` as the input current at each time step.\n", + "spikes = brainstate.compile.for_loop(\n", + " lambda t: net.update(Ib), # Call net.update with input current Ib\n", + " times, # Time steps\n", + " pbar=brainstate.compile.ProgressBar(10) # Show a progress bar with 10 steps\n", + ")" + ], + "outputs": [ + { + "data": { + "text/plain": [ + " 0%| | 0/10000 [00:00" + ], + "image/png": "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/35UVFQgOjq6zrp3330XcXFxyMnJwfDhw5GUlIRx48Zh7Nix2Lt3Lzp37oxx48ZBGXxPSUnBP//8g61bt+LAgQN48803NSNfer0evXr1wrZt2+ycKSJqDBZERNSi9OzZE6+99hoiIiLw8ssvw8vLCwEBAZg4cSIiIiKQlpaGs2fPYv/+/QCAjz76CFFRUZg3bx4iIyMRFRWFL7/8EpmZmTh27Fi9beTn58Pd3R2BgYF11g0bNgzPPPOM2lZlZSX69u2L0aNH47bbbsPMmTNx+PBhlJSUAAAKCgoQFxcHs9mMW2+9FQ888ADuuecezTZDQkKQn59v50wRUWOwICKiFqVHjx7q3+7u7mjXrh3MZrO6zGQyAQBKS0sBXDk4OjMzUz0myWAwIDIyEgBw4sSJetu4cOECPD096z3w27Z9pa2G2n/++ecxZ84cxMXFYfbs2WqhZsvb21sd0SIi52BBREQtSqtWrTT/63Q6zTKliLFarQCA6upqJCQkIDc3V3M7fvx4nZEaRUBAAM6fP4+ampoG21faaqj9CRMm4OTJk0hKSsKBAwcQHR2NDz/8ULPNsrIytG/f/toSQETNggUREd3UevfujYMHDyI8PBxdunTR3Fq3bl3vfXr16gXgyjxB9hAaGopJkyZh5cqVmD59OhYuXKhZn5eXh6ioKLu0RUTXhwUREd3UUlJSUFZWhjFjxmDPnj04ceIENmzYgPHjx8NisdR7n/bt26N3797Yvn17k9tPTU3Fhg0bcOrUKezduxeZmZno1q2buv706dMoKipCfHx8k9siouvHgoiIbmohISHYsWMHLBYLBg8eDLPZjNTUVBiNRri5Xf0jcMKECVi0aFGT27dYLEhJSUG3bt1w//3347bbbsMnn3yirl+yZAkGDx6Mjh07NrktIrp+nJiRiKgeFy5cQNeuXbFs2TLExMQ0Sxs1NTWIiIjA4sWLERcX1yxtENG14QgREVE9vL298e233zY4gWNTFRQU4JVXXmExRHQD4AgRERERuTyOEBEREZHLY0FERERELo8FEREREbk8FkRERETk8lgQERERkctjQUREREQujwURERERuTwWREREROTyWBARERGRy/s/1EIk+TCYFCMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 13 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/snn_training-en.ipynb b/docs/snn_training-en.ipynb new file mode 100644 index 000000000..03d7a214e --- /dev/null +++ b/docs/snn_training-en.ipynb @@ -0,0 +1,709 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "de646938e4e80791", + "metadata": { + "collapsed": false + }, + "source": [ + "# Training Spiking Neural Networks" + ] + }, + { + "cell_type": "markdown", + "id": "e863dc68", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "In recent years, there has been a surge of interest in training Spiking Neural Networks (SNNs) for meaningful computation. On one hand, this surge is driven by the limited achievements of more traditional, often considered more biologically plausible, learning paradigms in creating functional neural networks that solve interesting computational problems. Deep Neural Networks have undeniably succeeded in solving a variety of challenging computational problems, bridging this limitation. This success has both raised the bar and posed the question of how this progress translates to Spiking Neural Networks.\n", + "\n", + "The rise of deep learning over the past decade is largely attributed to the advancements in GPUs and their computational power, the expansion of training datasets, and perhaps most importantly, the improved understanding of the characteristics and requirements of the backpropagation of error algorithm. For instance, we now know that we must avoid the vanishing and exploding gradient problems, an achievement that can be realized by choosing reasonable nonlinear functions, appropriate weight initialization, and suitable optimizers. Powerful software packages supporting automatic differentiation have made handling deep neural networks easier than ever before. This development raises the question: how much can we learn from deep learning and its tools and apply it to training Spiking Neural Networks? Although these questions cannot be fully answered at present, it seems that we can learn a lot.\n", + "\n", + "In this tutorial, we use [`brainstate`](https://brainstate.readthedocs.io/en/latest/) along with tools from the [Brain Dynamics Programming Ecosystem](https://ecosystem-for-brain-dynamics.readthedocs.io/en/latest/) to build a Spiking Neural Network step by step. To be clear, our goal is to build networks that solve (simple) real-world problems. To this end, we focus on classification problems and use supervised learning in conjunction with the backpropagation algorithm mentioned above. To do so, we must overcome the vanishing gradient problem caused by the binary nature of spikes themselves.\n", + "\n", + "In this tutorial, we will first show how a simple feedforward Leaky Integrate-and-Fire (LIF) neuron-based and conductance-based synaptic Spiking Neural Network (SNN) can be formally mapped to a discrete-time Recurrent Neural Network (RNN). We will leverage this formulation to explain why gradients vanish at the time of spikes and demonstrate a method to mitigate this issue. Specifically, we will introduce surrogate gradients and provide practical examples of how to implement them in Brainstate." + ] + }, + { + "cell_type": "markdown", + "id": "f5e4070f", + "metadata": {}, + "source": [ + "## Mapping LIF Neurons to RNN Dynamics\n", + "\n", + "The de facto standard neuron model in network simulations in computational neuroscience is the Leaky Integrate-and-Fire (LIF) neuron model, which is typically written formally as a time-continuous dynamical system in differential form:\n", + "\n", + "$$\\tau_\\mathrm{mem} \\frac{\\mathrm{d}U_i^{(l)}}{\\mathrm{d}t} = -(U_i^{(l)}-U_\\mathrm{rest}) + RI_i^{(l)}$$\n", + "\n", + "where $U_i$ is the membrane potential of neuron $i$ in layer $l$, $U_\\mathrm{rest}$ is the resting potential, $\\tau_\\mathrm{mem}$ is the membrane time constant, $R$ is the input resistance, and $I_i$ is the input current. The membrane potential $U_i$ characterizes the hidden state of each neuron and, importantly, it is not directly passed to downstream neurons. However, when the membrane voltage of a neuron exceeds a threshold $\\vartheta$, the neuron fires an action potential or spike at time $t$. After firing a spike, the neuron's membrane voltage is reset $U_i \\rightarrow U_\\mathrm{rest}$. We write\n", + "\n", + "$$S_i^{(l)}(t)=\\sum_{k \\in C_i^l} \\delta(t-t_j^k)$$ \n", + "\n", + "to denote the spike train (i.e., the sum of all spikes $C_i^l$ fired by neuron $i$ in layer $l$). Here, $\\delta$ is the Dirac delta function, and $t_i^k$ are the relevant firing times of the neuron.\n", + "\n", + "Spikes propagate along axons and generate postsynaptic currents in connected neurons. Using the above formalism, we can write\n", + "\n", + "$$\\frac{\\mathrm{d}I_i}{\\mathrm{d}t}= -\\frac{I_i(t)}{\\tau_\\mathrm{syn}} + \\sum_j W_{ij} S_j^{(0)}(t) + \\sum_j V_{ij} S_j^{(1)}(t)$$\n", + "\n", + "where we have introduced the synaptic weight matrices $W_{ij}$ (feedforward), $V_{ij}$ (recurrent), and the synaptic decay time constant $\\tau_\\mathrm{syn}$.\n", + "\n", + "To make an explicit connection with RNNs, we now express the above equations in discrete-time form. For brevity, we switch to natural units $U_\\mathrm{rest}=0$, $R=1$, and $\\vartheta=1$. Our argument is not affected by this choice, and all results can be rescaled to physical units. To highlight the nonlinearity of spikes, we first note that we can set\n", + "\n", + "$$S_i^{(l)}(t)=\\Theta(U_i^{(l)}(t)-\\vartheta)$$\n", + "\n", + "where $\\Theta$ denotes the Heaviside step function.\n", + "\n", + "Assuming a small simulation time step $\\Delta_t>0$, we can approximate the synaptic dynamics as follows:\n", + "\n", + "$$I_i^{(l)}(t+1) = \\alpha I_i^{(l)}(t) + \\sum_j W_{ij} S_j^{(l-1)}(t) +\\sum_j V_{ij} S_j^{(l)}(t)$$\n", + "\n", + "where the constant $\\alpha=\\exp\\left(-\\frac{\\Delta_t}{\\tau_\\mathrm{syn}} \\right)$. Additionally, the membrane dynamics can be written as\n", + "\n", + "$$U_i^{(l)}(t+1) = \\underbrace{\\beta U_i^{(l)}(t)}_{\\mathrm{leak}} + \\underbrace{I_i^{(l)}(t)}_{\\mathrm{input}} -\\underbrace{S_i^{(l)}(t)}_{\\mathrm{reset}}$$\n", + "\n", + "where the output $S_i(t) = \\Theta(U_i(t)-1)$ and the constant $\\beta=\\exp\\left(-\\frac{\\Delta_t}{\\tau_\\mathrm{mem}}\\right)$. Note the different terms on the right-hand side of the equation, which are responsible for: i) leakage, ii) synaptic input, and iii) spike reset.\n", + "\n", + "These equations can be succinctly summarized as a computational graph of an RNN with specific connectivity structures.\n", + "\n", + "

\n", + " \"snn_graph\"/\n", + "

\n", + "\n", + "Time flows from left to right. Inputs enter the network at each time step from the bottom of the graph ($S_i^{(0)}$). These inputs successively affect the synaptic currents $I_i^{(1)}$, the membrane potentials $U_i^{(1)}$, and finally the spike outputs $S_i^{(1)}$. Additionally, dynamic quantities are fed directly into future time steps. For clarity, the index $i$ is omitted in the figure.\n", + "\n", + "The computational graph showcases a concept called time unfolding, which emphasizes the duality between deep neural networks and recurrent neural networks, the latter being nothing but deep networks in time (with bound weights). Due to this fact, we can use backpropagation through time (BPTT) to train RNNs. Let us first implement the above dynamics in a three-layer spiking neural network in Brainstate." + ] + }, + { + "cell_type": "markdown", + "id": "ea0355a4", + "metadata": {}, + "source": [ + "## Example of Building and Training a Spiking Neural Network\n", + "\n", + "We start by importing the required libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "efa4ca7d", + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "import braintools as bts\n", + "import brainunit as u\n", + "import jax.numpy as jnp\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "import brainstate " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "023064f2", + "metadata": {}, + "outputs": [], + "source": [ + "num_inputs = 100 # Number of input neurons\n", + "num_hidden = 4 # Number of hidden neurons\n", + "num_outputs = 2 # Number of output neurons" + ] + }, + { + "cell_type": "markdown", + "id": "fd204d11", + "metadata": {}, + "source": [ + "As we have seen above, we are technically simulating an RNN. Thus, we have to simulate our neurons for a certain number of timesteps. We will use 1ms timesteps, and we want to simulate our network for 200 timesteps." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1ca98cde", + "metadata": {}, + "outputs": [], + "source": [ + "time_step = 1 * u.ms\n", + "brainstate.environ.set(dt=time_step) # Set the time step for the simulation\n", + "num_steps = 200" + ] + }, + { + "cell_type": "markdown", + "id": "64a3face", + "metadata": {}, + "source": [ + "To take advantage of parallelism, we will set up our code to work on batches of data like this is usually done for neural networks that are trained in a supervised manner.\n", + "To that end, we specify a batch size here." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "50f08663", + "metadata": {}, + "outputs": [], + "source": [ + "batch_size = 256" + ] + }, + { + "cell_type": "markdown", + "id": "cfea1a1c", + "metadata": {}, + "source": [ + "With these basic design choices made, we can now start building the actual network." + ] + }, + { + "cell_type": "markdown", + "id": "be04ea73", + "metadata": {}, + "source": [ + "### Defining the Spiking Neural Network (SNN)\n", + "\n", + "- **The class inherits from `bst.nn.DynamicsGroup`**:\n", + " - `bst.nn.DynamicsGroup` is a class that contains dynamic neural network components, used to simulate the dynamical behavior of neurons over time.\n", + " - By inheriting from `DynamicsGroup`, the `SNN` class can leverage the tools provided by the framework to manage state updates and activity simulations of the spiking neural network.\n", + "\n", + "- **`__init__` constructor method**:\n", + " - The `__init__` method initializes the network structure, including connections from the input to the recurrent layer, the spiking neuron model of the recurrent layer, connections from the recurrent layer to the output layer, and the processing units of the output layer.\n", + "\n", + "#### Connections from Input Layer to Recurrent Layer (`self.i2r`)\n", + "\n", + "- **`bst.nn.Sequential`**: Used to sequentially combine multiple layers. This contains two layers: a linear layer and an exponential decay layer.\n", + " \n", + "- **Linear Layer (`bst.nn.Linear`)**:\n", + " - **Function**: Transfers signals from the input layer to the recurrent layer.\n", + " - **Parameters**:\n", + " - `num_in`: Number of neurons in the input layer.\n", + " - `num_rec`: Number of neurons in the recurrent layer.\n", + " - `w_init`: Weight initialization method, using Kaiming Normal initialization, suitable for activation functions like ReLU.\n", + " - `b_init`: Bias initialization, set to zero initialization here.\n", + "\n", + "- **Exponential Decay Layer (`bst.nn.Expon`)**:\n", + " - **Function**: Simulates the exponential decay characteristics of input signals over time, making the input signals more consistent with the dynamical characteristics of biological neurons.\n", + " - **Parameters**:\n", + " - `num_rec`: Specifies the number of neurons in the recurrent layer.\n", + " - `tau`: Time constant, controlling the rate of exponential decay, set to `10 ms` here.\n", + " - `g_initializer`: Initializes the value of parameter `g`, set to 0 here, representing zero initial input current.\n", + "\n", + "#### Recurrent Layer (`self.r`)\n", + "\n", + "- **LIF Neuron Model (`bst.nn.LIF`)**:\n", + " - **Function**: The recurrent layer uses the Leaky Integrate-and-Fire (LIF) neuron model, a widely applied biological neuron model for spiking activity.\n", + " - **Parameters**:\n", + " - `num_rec`: Number of neurons in the recurrent layer.\n", + " - `tau`: Time constant, controlling the rate of potential leakage, set to `20 ms` here.\n", + " - `V_reset`: Reset value of the membrane potential after spiking, set to `0 mV` here.\n", + " - `V_rest`: Resting membrane potential value of the neuron, also `0 mV`.\n", + " - `V_th`: Threshold of the membrane potential, set to `1 mV`, exceeding which the neuron will fire a spike.\n", + " - `spk_fun`: Defines the activation function for spiking, using `bst.surrogate.ReluGrad()` as the approximate derivative method for the spike function.\n", + "\n", + "#### Connections from Recurrent Layer to Output Layer (`self.r2o`)\n", + "\n", + "- **Linear Layer**:\n", + " - **Function**: Transfers output signals from the recurrent layer to the output layer.\n", + " - **Parameters**:\n", + " - `num_rec`: Number of neurons in the recurrent layer.\n", + " - `num_out`: Number of neurons in the output layer.\n", + " - `w_init`: Weight initialization method, also using Kaiming Normal initialization.\n", + "\n", + "#### Output Layer (`self.o`)\n", + "\n", + "- **Exponential Decay Layer**:\n", + " - **Function**: Simulates the decay behavior of output layer signals over time.\n", + " - **Parameters**:\n", + " - `num_out`: Number of neurons in the output layer.\n", + " - `tau`: Time constant for decay, set to `10 ms` here.\n", + " - `g_initializer`: Initial value for output current set to zero." + ] + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "class SNN(brainstate.nn.DynamicsGroup):\n", + " def __init__(self, num_in, num_rec, num_out):\n", + " # Initialize the parent class DynamicsGroup\n", + " super(SNN, self).__init__()\n", + "\n", + " # Parameter definitions\n", + " self.num_in = num_in # Number of neurons in the input layer\n", + " self.num_rec = num_rec # Number of neurons in the recurrent layer\n", + " self.num_out = num_out # Number of neurons in the output layer\n", + "\n", + " # Define connections from the input layer to the recurrent layer (synapse: i->r)\n", + " # Use Sequential to connect the linear layer and the exponential decay layer together\n", + " self.i2r = brainstate.nn.Sequential(\n", + " # Linear layer: used to map input signals to the recurrent layer\n", + " brainstate.nn.Linear(\n", + " num_in, num_rec, # Connections from the input layer to the recurrent layer\n", + " w_init=brainstate.nn.KaimingNormal(scale=7 * (1 - (u.math.exp(-brainstate.environ.get_dt() / (1 * u.ms)))), unit=u.mA), # Use Kaiming Normal initialization for weights\n", + " b_init=brainstate.nn.ZeroInit(unit=u.mA) # Bias initialized to zero\n", + " ),\n", + " # Exponential decay layer: decays the signal over time to match biological neuron dynamics\n", + " brainstate.nn.Expon(num_rec, tau=10. * u.ms, g_initializer=brainstate.nn.Constant(0. * u.mA))\n", + " )\n", + "\n", + " # Define the recurrent layer (r), using the LIF neuron model\n", + " self.r = brainstate.nn.LIF(\n", + " num_rec, # Number of neurons in the recurrent layer\n", + " tau=20 * u.ms, # Time constant, controlling the rate of membrane potential decay\n", + " V_reset=0 * u.mV, # Reset value of the membrane potential\n", + " V_rest=0 * u.mV, # Resting membrane potential\n", + " V_th=1. * u.mV, # Threshold of the membrane potential, exceeding which the neuron fires a spike\n", + " spk_fun=braintools.surrogate.ReluGrad() # Approximate derivative function for spike implementation\n", + " )\n", + "\n", + " # Define connections from the recurrent layer to the output layer (synapse: r->o), using a linear layer\n", + " self.r2o = brainstate.nn.Linear(\n", + " num_rec, num_out, # Connections from the recurrent layer to the output layer\n", + " w_init=brainstate.nn.KaimingNormal() # Use Kaiming Normal initialization for weights\n", + " )\n", + "\n", + " # Define the output layer (o), using an exponential decay layer to simulate the time decay of output signals\n", + " self.o = brainstate.nn.Expon(\n", + " num_out, # Number of neurons in the output layer\n", + " tau=10. * u.ms, # Time constant, controlling the rate of output signal decay\n", + " g_initializer=brainstate.nn.Constant(0.) # Initialize current to zero\n", + " )\n", + "\n", + " # update method: used to perform one update of the network, returning the output of the output layer\n", + " def update(self, spike):\n", + " # Sequentially compute through i2r, r, r2o, and o\n", + " return self.o(self.r2o(self.r(self.i2r(spike))))\n", + "\n", + " # predict method: used to predict and obtain the membrane potential values of the recurrent layer, spike outputs, and final output\n", + " def predict(self, spike):\n", + " # Compute the spike outputs of the recurrent layer\n", + " rec_spikes = self.r(self.i2r(spike))\n", + " # Compute the final output\n", + " out = self.o(self.r2o(rec_spikes))\n", + " # Return the membrane potential values of the recurrent layer, recurrent layer spike outputs, and final output\n", + " return self.r.V.value, rec_spikes, out" + ], + "id": "b1f06d6671e6547" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "net = SNN(num_inputs, num_hidden, num_outputs)", + "id": "fa555b53ff2ebc08" + }, + { + "cell_type": "markdown", + "id": "7b2967cf", + "metadata": {}, + "source": [ + "### Simple Synthetic Dataset\n", + "\n", + "We start by generating some random spiking dataset, which we will use as input to our network. Initially, we will work with a single batch of data.\n", + "\n", + "Suppose we want our network to classify a set of different sparse input spike trains into two categories.\n", + "\n", + "To generate some synthetic data, we fill a tensor of shape (batch_size x num_steps x num_inputs) with random uniform numbers between 0 and 1 and use this to generate our input dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "dba0ea3e", + "metadata": {}, + "outputs": [], + "source": [ + "freq = 5 * u.Hz\n", + "x_data = brainstate.random.rand(num_steps, batch_size, net.num_in) < freq * brainstate.environ.get_dt()\n", + "y_data = u.math.asarray(brainstate.random.rand(batch_size) < 0.5, dtype=int)" + ] + }, + { + "cell_type": "markdown", + "id": "ecd09023", + "metadata": {}, + "source": [ + "Note that there is no structure in the data (because it is entirely random). Thus, we won't worry about generalization now and only care about our ability to overfit these data with the spiking neural network we are going to build in a jiffy." + ] + }, + { + "cell_type": "markdown", + "id": "fab42d61", + "metadata": {}, + "source": [ + "If we plot the spike raster of the first input pattern, this synthetic dataset looks as follows." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4023235e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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mz59uvj5z38uX6gQePLJJ0VlZeUZb+vv7xdqtVq8/fbbgWVff/21ACCamppGKeHo+fnPfy6KioqE3+8XQkTn9gYgli1bFvje7/cLi8Uifv3rXweW9ff3C61WK9566y0hhBB79+4VAMTWrVsD9/n000+FJEmitbV11LJfjL9/3WeyZcsWAUAcPXo0sCwvL0/85je/CW24EDrT677rrrvEtdde+52PiZXtfe2114rLLrts2LJI394XK6r3yLjdbjQ3N6OhoSGwTKFQoKGhAU1NTTImCx2r1QoASE5OHrb8jTfeQGpqKsaPH4/HHnsMdrtdjnhBtX//fmRmZqKwsBC33347jh07BgBobm6Gx+MZtt3LysqQm5sbddvd7Xbj9ddfx49+9KNhk6pF4/b+W4cPH0ZHR8ewbWwymVBXVxfYxk1NTUhMTMTEiRMD92loaIBCocDmzZtHPXOoWK1WSJKExMTEYcuffvpppKSkoLq6Gr/+9a/h9XrlCRhEa9asQXp6OkpLS/GTn/wEPT09gdtiYXt3dnbi448/xj333HPabdG4vc9VVE8a2d3dDZ/PB7PZPGy52WzGN998I1Oq0PH7/XjooYcwbdo0jB8/PrD8hz/8IfLy8pCZmYldu3bh0UcfRUtLC9577z0Z016curo6vPrqqygtLUV7ezt++ctf4nvf+x727NmDjo4OaDSa036xm81mdHR0yBM4RN5//3309/fj7rvvDiyLxu39905txzP93z51W0dHB9LT04fdrlKpkJycHDXvA6fTiUcffRS33XbbsIkEf/azn6GmpgbJycnYuHEjHnvsMbS3t+O5556TMe3FueKKK3DDDTegoKAABw8exD//8z/jyiuvRFNTE5RKZUxs79deew1Go/G0w+TRuL3PR1QXmVizYMEC7NmzZ9i5IgCGHSOuqKhARkYGLr/8chw8eBBFRUWjHTMorrzyysC/J0yYgLq6OuTl5eF//ud/oNPpZEw2ul5++WVceeWVyMzMDCyLxu1Np/N4PLj55pshhMAf/vCHYbctXLgw8O8JEyZAo9HgH/7hH7Bo0aKIHeL+1ltvDfy7oqICEyZMQFFREdasWYPLL79cxmSj55VXXsHtt9+OuLi4YcujcXufj6g+tJSamgqlUnna1SqdnZ2wWCwypQqNBx54AB999BFWr16N7OzsEe9bV1cHADhw4MBo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data_id = 0\n", + "plt.imshow(x_data.swapaxes(0, 1)[data_id].transpose(), cmap=plt.cm.gray_r, aspect=\"auto\")\n", + "plt.xlabel(\"Time (ms)\")\n", + "plt.ylabel(\"Unit\")\n", + "sns.despine()" + ] + }, + { + "cell_type": "markdown", + "id": "cb32724d", + "metadata": {}, + "source": [ + "### Visualizing Neuron Membrane Potentials\n", + "\n", + "Define a helper function `plot_voltage_traces` to plot the membrane potentials and spike activities of neurons." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ebb6771f", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_voltage_traces(mem, spk=None, dim=(3, 5), spike_height=5, show=True):\n", + " fig, gs = bts.visualize.get_figure(*dim, 3, 3)\n", + " if spk is not None:\n", + " mem[spk > 0.0] = spike_height\n", + " if isinstance(mem, u.Quantity):\n", + " mem = mem.to_decimal(u.mV)\n", + " for i in range(np.prod(dim)):\n", + " if i == 0:\n", + " a0 = ax = plt.subplot(gs[i])\n", + " else:\n", + " ax = plt.subplot(gs[i], sharey=a0)\n", + " ax.plot(mem[:, i])\n", + " if show:\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d619b651", + "metadata": {}, + "source": [ + "### Testing the Untrained Network Performance\n", + "\n", + "Test the network before training and visualize the changes in membrane potentials using `plot_voltage_traces`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "62367233", + "metadata": {}, + "outputs": [], + "source": [ + "def print_classification_accuracy(output, target):\n", + " \"\"\" Dirty little helper function to compute classification accuracy. \"\"\"\n", + " m = u.math.max(output, axis=0) # max over time\n", + " am = u.math.argmax(m, axis=1) # argmax over output units\n", + " acc = u.math.mean(target == am) # compare to labels\n", + " print(\"Accuracy %.3f\" % acc)\n", + "\n", + "def predict_and_visualize_net_activity(net):\n", + " brainstate.nn.init_all_states(net, batch_size=batch_size)\n", + " vs, spikes, outs = brainstate.compile.for_loop(net.predict, x_data, pbar=brainstate.compile.ProgressBar(10))\n", + " plot_voltage_traces(vs, spikes, spike_height=5 * u.mV, show=False)\n", + " plot_voltage_traces(outs)\n", + " print_classification_accuracy(outs, y_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8d6a6bdb", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0cffa64d16a04a5c8a9e8bbf31ac7681", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/200 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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L79cqFnPPffcmDZtWvzyl7+MiOqe6xOf+ESsX78+7r///jjzzDPL14/l866trW3YP883nmMoeVWcGeVVdc4lr/KRV8WZUV5V51zyKh95VZwZ5VV1ziWv8pFXxZlRXlXnXNWQV8r5YTQ0NMS8efOiu7u7fG1wcDC6u7ujs7NzHHf223nllVfiv//7v+P000+PefPmxcSJE4fMuH379ti5c2ehZjznnHOira1tyBwDAwOxadOm8hydnZ2xd+/e6O3tLa/ZuHFjDA4ORkdHR/Y9H6/nn38+XnrppTj99NMjojrnSinFJz7xifje974XGzdujHPOOWfI88fyedfZ2RlPPfXUkODesGFDNDU1xe/8zu/kGaRA5FVxZpRX1TWXvMpPXhVnRnlVXXPJq/zkVXFmlFfVNZe8yk9eFWdGeVVdc1VVXv32P8/2xHTXXXelxsbGtHbt2rRt27a0bNmy1NLSMuQn8Fa7lStXpgceeCDt2LEj/exnP0tdXV1p2rRpac+ePSmllG644YY0a9astHHjxvTEE0+kzs7O1NnZOc67fqt9+/alLVu2pC1btqSISP/wD/+QtmzZkp577rmUUkpf+MIXUktLS/r+97+fnnzyyXTVVVelc845J7322mvlj3HFFVek9773vWnTpk3p4YcfTuedd15atGjReI2UUhp5rn379qXPfOYzqaenJ+3YsSP95Cc/Sb/7u7+bzjvvvHTgwIHyx6i2uT72sY+l5ubm9MADD6QXXnih/Hj11VfLa0b7vHv99dfTu9/97nT55Zenn//85+nHP/5xmj59elq1atV4jFQI8qp6yCt5Ja9GJq+qh7ySV/JqZPKqesgreSWvRiavqoe8klfHk1fK+RHcdtttadasWamhoSHNnz8/Pfroo+O9pTG55ppr0umnn54aGhrSGWecka655pr0y1/+svz8a6+9lj7+8Y+nd7zjHenkk09OH/jAB9ILL7wwjjse3v33358i4i2PJUuWpJRSGhwcTDfffHNqbW1NjY2N6bLLLkvbt28f8jFeeumltGjRonTqqaempqamdP3116d9+/aNwzRvGmmuV199NV1++eVp+vTpaeLEiemss85Kf/7nf/6W/3OttrmGmyci0j/+4z+W1xzL593//M//pPe///1p8uTJadq0aWnlypXp8OHDmacpFnlVHeSVvJJXo5NX1UFeySt5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AACAjBnOAwAAAABAxgznAQAAAAAgY8M2nD979mysWrUqqqqqorq6OtasWRPnzp0b8JqLFy/G+vXr47bbbosJEybEypUr49SpU/2uPXPmTMycOTPKysqis7NzGBIAo4W+AvJCXwF5oa+AvNBXQDEN23B+1apVcejQodi+fXts27Ytdu/eHWvXrh3wmsceeyxefPHF2Lp1a+zatStOnDgR999/f79r16xZEwsXLhyOrQOjjL4C8kJfAXmhr4C80FdAUaVhcPjw4RQRae/evYVjL730UiorK0tvvPFGv9d0dnamioqKtHXr1sKxV199NUVEam1t7bP2mWeeSZ/+9KdTc3Nzioj03//+d0j76+rqShGRurq6hnQdkL3hvl/1FfBe0Vf6CvJCX+kryAt9pa8gL272fh2Wd863trZGdXV13HXXXYVjDQ0NUV5eHm1tbf1es3///rhy5Uo0NDQUji1YsCBqa2ujtbW1cOzw4cPx7W9/O5577rkoLx/c9i9duhTd3d19HgAR+grID30F5IW+AvJCXwHFNizD+Y6Ojpg6dWqfY2PGjIlJkyZFR0fHO14zduzYqK6u7nN82rRphWsuXboUTU1N8eSTT0Ztbe2g97N58+aYOHFi4TFr1qyhBQJGLH0F5IW+AvJCXwF5oa+AYhvScP5rX/talJWVDfj4xz/+MVx7jccffzw+8pGPxIMPPjjk67q6ugqP119/fZh2CJQKfQXkhb4C8kJfAXmhr4C8GDOUxRs3boyHHnpowDVz586NmpqaOH36dJ/jV69ejbNnz0ZNTU2/19XU1MTly5ejs7Ozz08fT506VbimpaUlDh48GL/61a8iIiKlFBERkydPjq9//evxrW99q9+vXVlZGZWVlYOJCIwQ+grIC30F5IW+AvJCXwF5MaTh/JQpU2LKlCk3XFdfXx+dnZ2xf//+WLJkSUT8bzH19vZGXV1dv9csWbIkKioqorm5OVauXBkREe3t7XHs2LGor6+PiIhf//rXceHChcI1e/fujS984Qvxhz/8IW6//fahRAFGOH0F5IW+AvJCXwF5oa+A3HjvP5v2fzU2NqbFixentra2tGfPnjRv3rzU1NRUOH/8+PE0f/781NbWVji2bt26VFtbm1paWtK+fftSfX19qq+vf8d/Y8eOHT7tGka4LO5XfQW8F/SVvoK80Ff6CvJCX+kryIubvV+H9M75ofjZz34WGzZsiKVLl0Z5eXmsXLkynnrqqcL5K1euRHt7e5w/f75w7Ic//GFh7aVLl2L58uXxzDPPDNcWASJCXwH5oa+AvNBXQF7oK6CYylL6v198NYp0d3fHxIkTo6urK6qqqoq9HWAAo/1+He35IU9G+/062vNDnoz2+3W054c8Ge3362jPD3lys/dr+TDuCQAAAAAA6IfhPAAAAAAAZMxwHgAAAAAAMmY4DwAAAAAAGTOcBwAAAACAjBnOAwAAAABAxgznAQAAAAAgY4bzAAAAAACQMcN5AAAAAADImOE8AAAAAABkzHAeAAAAAAAyZjgPAAAAAAAZM5wHAAAAAICMGc4DAAAAAEDGDOcBAAAAACBjhvMAAAAAAJAxw3kAAAAAAMiY4TwAAAAAAGTMcB4AAAAAADJmOA8AAAAAABkznAcAAAAAgIwZzgMAAAAAQMYM5wEAAAAAIGOG8wAAAAAAkDHDeQAAAAAAyJjhPAAAAAAAZMxwHgAAAAAAMmY4DwAAAAAAGRtT7A0UQ0opIiK6u7uLvBPgRt66T9+6b0cbfQX5oa/0FeSFvtJXkBf6Sl9BXtxsX43K4XxPT09ERMyaNavIOwEGq6enJyZOnFjsbWROX0H+6Ct9BXmhr/QV5IW+0leQF0Ptq7I0Cn/82NvbGydOnIhbbrklysrKBlzb3d0ds2bNitdffz2qqqoy2uHwkytfRmKuwWZKKUVPT0/MmDEjystH32/i0ldy5c1IzKWvBkdfyZU3IzGXvhocfSVX3ozEXPpqcPSVXHkzEnMNd1+NynfOl5eXx8yZM4d0TVVV1Yh5Uf2/5MqXkZhrMJlG4zsk3qKvrpMrX0ZiLn01MH11nVz5MhJz6auB6avr5MqXkZhLXw1MX10nV76MxFzD1Vej78eOAAAAAABQZIbzAAAAAACQMcP5G6isrIxNmzZFZWVlsbfynpIrX0ZirpGYqdhG6vdUrnwZiblGYqZiG6nfU7nyZSTmGomZim2kfk/lypeRmGskZiq2kfo9lStfRmKu4c40Kj8QFgAAAAAAisk75wEAAAAAIGOG8wAAAAAAkDHDeQAAAAAAyJjhPAAAAAAAZMxwHgAAAAAAMmY4P4Cnn346PvShD8X73//+qKuriz//+c/F3tKQfPOb34yysrI+jwULFhTOX7x4MdavXx+33XZbTJgwIVauXBmnTp0q4o77t3v37vjsZz8bM2bMiLKysvjNb37T53xKKZ544omYPn16jBs3LhoaGuK1117rs+bs2bOxatWqqKqqiurq6lizZk2cO3cuwxRvd6NcDz300Nuev8bGxj5rSi3X5s2b4xOf+ETccsstMXXq1Pjc5z4X7e3tfdYM5nV37NixuOeee2L8+PExderU+OpXvxpXr17NMkru6KvSoK/0lb66MX1VGvSVvtJXN6avSoO+0lf66sb0VWnQV/rqZvrKcP4d/OIXv4gvf/nLsWnTpvjLX/4SixYtiuXLl8fp06eLvbUh+djHPhYnT54sPPbs2VM499hjj8WLL74YW7dujV27dsWJEyfi/vvvL+Ju+/fmm2/GokWL4umnn+73/Pe///146qmn4sc//nG0tbXFBz7wgVi+fHlcvHixsGbVqlVx6NCh2L59e2zbti12794da9euzSpCv26UKyKisbGxz/P3/PPP9zlfarl27doV69evj1deeSW2b98eV65ciWXLlsWbb75ZWHOj1921a9finnvuicuXL8ef/vSn+OlPfxpbtmyJJ554ohiRckFflQ59pa/01cD0VenQV/pKXw1MX5UOfaWv9NXA9FXp0Ff66qb6KtGvu+++O61fv77w92vXrqUZM2akzZs3F3FXQ7Np06a0aNGifs91dnamioqKtHXr1sKxV199NUVEam1tzWiHQxcR6YUXXij8vbe3N9XU1KQnn3yycKyzszNVVlam559/PqWU0uHDh1NEpL179xbWvPTSS6msrCy98cYbme19IP9/rpRSWr16dbr33nvf8Zo85Dp9+nSKiLRr166U0uBed7/73e9SeXl56ujoKKx59tlnU1VVVbp06VK2AXJCX5UmfXVdHnLpq2zoq9Kkr67LQy59lQ19VZr01XV5yKWvsqGvSpO+ui4PuYrZV94534/Lly/H/v37o6GhoXCsvLw8GhoaorW1tYg7G7rXXnstZsyYEXPnzo1Vq1bFsWPHIiJi//79ceXKlT4ZFyxYELW1tbnKePTo0ejo6OiTY+LEiVFXV1fI0draGtXV1XHXXXcV1jQ0NER5eXm0tbVlvueh2LlzZ0ydOjXmz58fjzzySJw5c6ZwLg+5urq6IiJi0qRJETG4111ra2vceeedMW3atMKa5cuXR3d3dxw6dCjD3eeDvspPRn1V2rn01fDTV/nJqK9KO5e+Gn76Kj8Z9VVp59JXw09f5SejvirtXMXsK8P5fvznP/+Ja9eu9fnmRkRMmzYtOjo6irSroaurq4stW7bEyy+/HM8++2wcPXo0PvWpT0VPT090dHTE2LFjo7q6us81ecv41l4Heq46Ojpi6tSpfc6PGTMmJk2aVNJZGxsb47nnnovm5ub43ve+F7t27YoVK1bEtWvXIqL0c/X29saXvvSl+OQnPxl33HFHRMSgXncdHR39Pp9vnaMvfZWfjPqqdHPpq2zoq/xk1Felm0tfZUNf5SejvirdXPoqG/oqPxn1VenmKnZfjXkXe6fErVixovDnhQsXRl1dXcyePTt++ctfxrhx44q4Mwbj85//fOHPd955ZyxcuDBuv/322LlzZyxdurSIOxuc9evXx9///vc+vycO3om+yjd9xWiir/JNXzGa6Kt801eMJvoq3/TVu+Od8/2YPHlyvO9973vbJ/CeOnUqampqirSrd6+6ujo+/OEPx5EjR6KmpiYuX74cnZ2dfdbkLeNbex3ouaqpqXnbB6FcvXo1zp49m6usc+fOjcmTJ8eRI0ciorRzbdiwIbZt2xY7duyImTNnFo4P5nVXU1PT7/P51jn60lf5yaivSjOXvsqOvspPRn1Vmrn0VXb0VX4y6qvSzKWvsqOv8pNRX5VmrlLoK8P5fowdOzaWLFkSzc3NhWO9vb3R3Nwc9fX1RdzZu3Pu3Ln45z//GdOnT48lS5ZERUVFn4zt7e1x7NixXGWcM2dO1NTU9MnR3d0dbW1thRz19fXR2dkZ+/fvL6xpaWmJ3t7eqKury3zPN+v48eNx5syZmD59ekSUZq6UUmzYsCFeeOGFaGlpiTlz5vQ5P5jXXX19fRw8eLBPcW/fvj2qqqriox/9aDZBckRf5SejviqtXPoqe/oqPxn1VWnl0lfZ01f5yaivSiuXvsqevspPRn1VWrlKqq/e/efZjkw///nPU2VlZdqyZUs6fPhwWrt2baquru7zCbylbuPGjWnnzp3p6NGj6Y9//GNqaGhIkydPTqdPn04ppbRu3bpUW1ubWlpa0r59+1J9fX2qr68v8q7frqenJx04cCAdOHAgRUT6wQ9+kA4cOJD+/e9/p5RS+u53v5uqq6vTb3/72/S3v/0t3XvvvWnOnDnpwoULha/R2NiYFi9enNra2tKePXvSvHnzUlNTU7EipZQGztXT05O+8pWvpNbW1nT06NH0+9//Pn384x9P8+bNSxcvXix8jVLL9cgjj6SJEyemnTt3ppMnTxYe58+fL6y50evu6tWr6Y477kjLli1Lf/3rX9PLL7+cpkyZkh5//PFiRMoFfVU69JW+0lcD01elQ1/pK301MH1VOvSVvtJXA9NXpUNf6aub6SvD+QH86Ec/SrW1tWns2LHp7rvvTq+88kqxtzQkDzzwQJo+fXoaO3Zs+uAHP5geeOCBdOTIkcL5CxcupEcffTTdeuutafz48em+++5LJ0+eLOKO+7djx44UEW97rF69OqWUUm9vb/rGN76Rpk2bliorK9PSpUtTe3t7n69x5syZ1NTUlCZMmJCqqqrSww8/nHp6eoqQ5rqBcp0/fz4tW7YsTZkyJVVUVKTZs2enL37xi2/7z7XUcvWXJyLST37yk8Kawbzu/vWvf6UVK1akcePGpcmTJ6eNGzemK1euZJwmX/RVadBX+kpf3Zi+Kg36Sl/pqxvTV6VBX+krfXVj+qo06Ct9dTN9VfZ/GwIAAAAAADLid84DAAAAAEDGDOcBAAAAACBjhvMAAAAAAJAxw3kAAAAAAMiY4TwAAAAAAGTMcB4AAAAAADJmOA8AAAAAABkznAcAAAAAgIwZzgMAAAAAQMYM5wEAAAAAIGOG8wAAAAAAkLH/AT8kNjJ7W3WnAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy 0.496\n" + ] + } + ], + "source": [ + "predict_and_visualize_net_activity(net)" + ] + }, + { + "cell_type": "markdown", + "id": "a8c2b98d", + "metadata": {}, + "source": [ + "As you can see, our random initialization gives us some sporadic spikes. And calculate the classification accuracy of this random network. We will see that this accuracy is around 50%, as it should be since that corresponds to the chance level of our synthetic task." + ] + }, + { + "cell_type": "markdown", + "id": "757151c6", + "metadata": {}, + "source": [ + "### Defining the Optimizer and Loss Function\n", + "\n", + "Use the Adam optimizer and define the loss function as cross-entropy loss." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "166e0c28", + "metadata": {}, + "outputs": [], + "source": [ + "optimizer = brainstate.optim.Adam(lr=3e-3, beta1=0.9, beta2=0.999)\n", + "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n", + "\n", + "def loss_fn():\n", + " predictions = brainstate.compile.for_loop(net.update, x_data)\n", + " predictions = u.math.mean(predictions, axis=0)\n", + " return bts.metric.softmax_cross_entropy_with_integer_labels(predictions, y_data).mean()" + ] + }, + { + "cell_type": "markdown", + "id": "22456aa4", + "metadata": {}, + "source": [ + "### Training the Network\n", + "\n", + "Define the training function and train the network." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8e4a0a93", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 100, Loss = 0.5864\n", + "Epoch 200, Loss = 0.5374\n", + "Epoch 300, Loss = 0.5120\n", + "Epoch 400, Loss = 0.4886\n", + "Epoch 500, Loss = 0.4733\n", + "Epoch 600, Loss = 0.4521\n", + "Epoch 700, Loss = 0.4292\n", + "Epoch 800, Loss = 0.4113\n", + "Epoch 900, Loss = 0.3859\n", + "Epoch 1000, Loss = 0.3626\n", + "Epoch 1100, Loss = 0.3427\n", + "Epoch 1200, Loss = 0.3142\n", + "Epoch 1300, Loss = 0.2934\n", + "Epoch 1400, Loss = 0.2753\n", + "Epoch 1500, Loss = 0.2541\n", + "Epoch 1600, Loss = 0.2364\n", + "Epoch 1700, Loss = 0.2169\n", + "Epoch 1800, Loss = 0.2026\n", + "Epoch 1900, Loss = 0.1876\n", + "Epoch 2000, Loss = 0.1705\n", + "Epoch 2100, Loss = 0.1524\n", + "Epoch 2200, Loss = 0.1412\n", + "Epoch 2300, Loss = 0.1283\n", + "Epoch 2400, Loss = 0.1178\n", + "Epoch 2500, Loss = 0.1072\n", + "Epoch 2600, Loss = 0.0983\n", + "Epoch 2700, Loss = 0.0881\n", + "Epoch 2800, Loss = 0.0861\n", + "Epoch 2900, Loss = 0.0772\n", + "Epoch 3000, Loss = 0.0709\n" + ] + } + ], + "source": [ + "@brainstate.compile.jit\n", + "def train_fn():\n", + " brainstate.nn.init_all_states(net, batch_size=batch_size)\n", + " grads, l = brainstate.augment.grad(loss_fn, net.states(brainstate.ParamState), return_value=True)()\n", + " optimizer.update(grads)\n", + " return l\n", + "\n", + "train_losses = []\n", + "for i in range(1, 3001):\n", + " loss = train_fn()\n", + " train_losses.append(loss)\n", + " if i % 100 == 0:\n", + " print(f'Epoch {i}, Loss = {loss:.4f}')" + ] + }, + { + "cell_type": "markdown", + "id": "682c4cf0", + "metadata": {}, + "source": [ + "### Visualizing Training Loss" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "98a6781f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(np.asarray(jnp.asarray(train_losses)))\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Training Loss\")\n", + "plt.title(\"Training Loss vs Epoch\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f8bcdcdd", + "metadata": {}, + "source": [ + "### Testing Network Performance" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "dfeacdd6", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1b6460c4d972456488da81e00f0684dd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/200 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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UUKMVwlYK+cBAC6gvD7rmxJlvJXzRA7FeEVETsF4RUROwXhFRLmU857zW7duRX19PVatWoX//M//hKZpce8fDAbR19dn+iIiyoaijVcum4+KigbAk7Hzu8lrWy22r3V5rreEKK8UbbwiIsdhvCIip2C8IqJMyGlm5Rvf+AbOOusslJeX47HHHsN1112HgYEBfPazn435O3fccUfkrCYRUbYUdbwKDUVflw8tbQBg+WXAovOMCnoiKu54RUSOwnhFRE7BeEVEmZJS5fxNN91kuwiG+rV3796kH++rX/0qTjnlFHR0dODLX/4yvvSlL+E73/lO3N+5+eab0dvbG/k6cOBAKrtAREWC8SqNRuyS83mwGKzExDw5HOMVETkF4xUROQXjFRE5RUqV8zfeeCOuuOKKuPeZMWPGuDdm9erVuO222xAMBuH32/cP9vv9MW8jIpIYr9KopDT6unypnCcqAIxXROQUjFdE5BSMV0TkFCkl5xsaGtDQ0JCpbcHu3btRW1vL4EVEE8Z4lUZn/R3Q9QoAF3Bkj7gunyrniRyO8YqInILxioicgvGKiJwiYz3n9+/fj+PHj2P//v0Ih8PYvXs3AGDWrFmorKzEQw89hMOHD+Pkk09GaWkptm/fjm9+85v4whe+kKlNIiKyxXiVQKAduG4X8Kf7gQc/I65j5TxRTjBeEZFTMF4RkVMwXhFRLmUsOX/LLbfgvvvui/zc0dEBANixYwfOOOMMeL1e3HXXXbjhhhugaRpmzZqF733ve7jqqqsytUlERLYYr5JUWmNcZuU8UU4wXhGRUzBeEZFTMF4RUS65NE3Tcr0RE9HX14eamhr09vaiuro615tDRBlQKO9zx+/Hu88C924Sly9/GJh+Wm63hygPOf59riuU/SCi2ArlfV4o+0FEsRXK+7xQ9oOIYhvP+9yd4W0iIqJCYaqcZ1sbIiIiIiIiIqKJYHKeiIiSw7Y2RERERERERERpk7Ge80REVGAqm4H6uYC/ypyoJyIiIiIiIiKilDE5T0REyfGUANc+C7jcgMuV660hIiIiIiIiInI0JueJiCh5Hn5sEBERERERERGlA3vOExERERERERERERFlGZPzRERERERERERERERZxuQ8EREREREREREREVGWMTlPRERERERERERERJRlTM4TEREREREREREREWUZk/NERERERERERERERFnG5DwRERERERERERERUZYxOU9ERERERERERERElGVMzhMRERERERERERERZRmT80REREREREREREREWcbkPBERERERERERERFRljE5T0RERERERERERESUZUzOExERERERERERERFlGZPzRERERERERERERERZxuQ8EREREREREREREVGWMTlPRERERERERERERJRlTM4TEREREREREREREWVZSa43YKI0TQMA9PX15XhLiChT5Ptbvt+divGKqPAxXhGRUzBeEZFTMF4RkVOMJ145Pjnf398PAGhra8vxlhBRpvX396OmpibXmzFujFdExYPxioicgvGKiJyC8YqInCKVeOXSHH7qcWxsDAcPHkRVVRVcLlfc+/b19aGtrQ0HDhxAdXV1lrYwu7iPhYH7aKZpGvr7+9Ha2gq327nduBivzLiPhYH7aMZ4xdeAU3EfCwPjFeMV97EwcB/NGK/4GnAq7mNhyHS8cnzlvNvtxpQpU1L6nerq6oJ9wUjcx8LAfTQ4uUJCYryyx30sDNxHA+NV4eI+Fgbuo4HxqnBxHwsD99HAeFW4uI+FgftoSDVeOfeUIxERERERERERERGRQzE5T0RERERERERERESUZUWVnPf7/bj11lvh9/tzvSkZw30sDNxHKoa/D/exMHAfqRj+PtzHwsB9pGL4+3AfCwP3kYrh78N9LAzcx4lz/IKwREREREREREREREROU1SV80RERERERERERERE+YDJeSIiIiIiIiIiIiKiLGNynoiIiIiIiIiIiIgoy5icJyIiIiIiIiIiIiLKMibniYiIiIiIiIiIiIiyrKiS83fddRemTZuG0tJSrF69Gi+88EKuN2ncvva1r8Hlcpm+5s2bF7l9eHgYW7duxaRJk1BZWYnzzz8fhw8fzuEWJ/b000/jnHPOQWtrK1wuF371q1+Zbtc0DbfccgtaWlpQVlaGdevW4Y033jDd5/jx47j00ktRXV2NQCCAK6+8EgMDA1nci/gS7eMVV1wR9X/duHGj6T75vI933HEHVq5ciaqqKjQ2NuKjH/0oXn/9ddN9knlt7t+/H5s3b0Z5eTkaGxvxxS9+EaOjo9nclZxjvGK8yjXGK8arZDFeMV7lGuMV41WyGK8Yr3KN8YrxKlmMV4xXucZ4lb14VTTJ+Z/+9Kf4/Oc/j1tvvRUvvfQSli5dig0bNuDIkSO53rRxW7hwIQ4dOhT5+v3vfx+57YYbbsBDDz2EBx54AE899RQOHjyI8847L4dbm9jg4CCWLl2Ku+66y/b2O++8E9///vfxr//6r3j++edRUVGBDRs2YHh4OHKfSy+9FHv27MH27dvx8MMP4+mnn8bVV1+drV1IKNE+AsDGjRtN/9ef/OQnptvzeR+feuopbN26Fc899xy2b9+OkZERrF+/HoODg5H7JHpthsNhbN68GaFQCM8++yzuu+8+bNu2DbfccksudiknGK8Yr/IB4xXjVTIYrxiv8gHjFeNVMhivGK/yAeMV41UyGK8Yr/IB41UW45VWJFatWqVt3bo18nM4HNZaW1u1O+64I4dbNX633nqrtnTpUtvbenp6NK/Xqz3wwAOR61577TUNgLZr164sbeHEANAefPDByM9jY2Nac3Oz9p3vfCdyXU9Pj+b3+7Wf/OQnmqZp2quvvqoB0P7whz9E7vPb3/5Wc7lc2vvvv5+1bU+WdR81TdMuv/xybcuWLTF/x2n7eOTIEQ2A9tRTT2maltxr85FHHtHcbrfW1dUVuc/dd9+tVVdXa8FgMLs7kCOMV4xX+YbxSmC8isZ4xXiVbxivBMaraIxXjFf5hvFKYLyKxnjFeJVvGK+ETMWroqicD4VCePHFF7Fu3brIdW63G+vWrcOuXbtyuGUT88Ybb6C1tRUzZszApZdeiv379wMAXnzxRYyMjJj2d968eWhvb3fs/r799tvo6uoy7VNNTQ1Wr14d2addu3YhEAhgxYoVkfusW7cObrcbzz//fNa3ebx27tyJxsZGzJ07F9deey26u7sjtzltH3t7ewEAdXV1AJJ7be7atQuLFy9GU1NT5D4bNmxAX18f9uzZk8Wtzw3GK8arfHwvx8J4xXjFeMV45RSMV4xXjFeMV07BeMV4xXjFeOUUjFfpiVdFkZw/duwYwuGw6Y8FAE1NTejq6srRVk3M6tWrsW3bNjz66KO4++678fbbb+O0005Df38/urq64PP5EAgETL/j5P2V2x3vf9jV1YXGxkbT7SUlJairq3PMfm/cuBE//OEP8cQTT+Db3/42nnrqKWzatAnhcBiAs/ZxbGwMn/vc53DKKadg0aJFAJDUa7Orq8v2/yxvK3SMV4KT95fxivFK3lboGK8EJ+8v4xXjlbyt0DFeCU7eX8Yrxit5W6FjvBKcvL+MV4xX8rZklUxg2ymHNm3aFLm8ZMkSrF69GlOnTsXPfvYzlJWV5XDLaCI+/vGPRy4vXrwYS5YswcyZM7Fz506sXbs2h1uWuq1bt+Ivf/mLqZccFSfGq8LEeEWFiPGqMDFeUSFivCpMjFdUiBivChPjVfoUReV8fX09PB5P1Iq6hw8fRnNzc462Kr0CgQDmzJmDffv2obm5GaFQCD09Pab7OHl/5XbH+x82NzdHLZAyOjqK48ePO3a/Z8yYgfr6euzbtw+Ac/bx+uuvx8MPP4wdO3ZgypQpkeuTeW02Nzfb/p/lbYWO8Upw8v4yXjFeydsKHeOV4OT9ZbxivJK3FTrGK8HJ+8t4xXglbyt0jFeCk/eX8YrxSt6WrKJIzvt8Ppx00kl44oknIteNjY3hiSeeQGdnZw63LH0GBgbw5ptvoqWlBSeddBK8Xq9pf19//XXs37/fsfs7ffp0NDc3m/apr68Pzz//fGSfOjs70dPTgxdffDFynyeffBJjY2NYvXp11rc5Hd577z10d3ejpaUFQP7vo6ZpuP766/Hggw/iySefxPTp0023J/Pa7OzsxJ///GdTEN++fTuqq6uxYMGC7OxIDjFeMV7lw3t5PBivBMYrxisnYbxivGK8YrxyCsYrxivGK8Yrp2C8YrxKOV5NfD1bZ7j//vs1v9+vbdu2TXv11Ve1q6++WgsEAqYVdZ3kxhtv1Hbu3Km9/fbb2jPPPKOtW7dOq6+v144cOaJpmqZdc801Wnt7u/bkk09qf/zjH7XOzk6ts7Mzx1sdX39/v/byyy9rL7/8sgZA+973vqe9/PLL2rvvvqtpmqZ961vf0gKBgPbrX/9ae+WVV7QtW7Zo06dP106cOBF5jI0bN2odHR3a888/r/3+97/XZs+erV1yySW52qUo8faxv79f+8IXvqDt2rVLe/vtt7XHH39cW758uTZ79mxteHg48hj5vI/XXnutVlNTo+3cuVM7dOhQ5GtoaChyn0SvzdHRUW3RokXa+vXrtd27d2uPPvqo1tDQoN1888252KWcYLxivMoHjFeMV8lgvGK8ygeMV4xXyWC8YrzKB4xXjFfJYLxivMoHjFfZi1dFk5zXNE37wQ9+oLW3t2s+n09btWqV9txzz+V6k8bt4osv1lpaWjSfz6dNnjxZu/jii7V9+/ZFbj9x4oR23XXXabW1tVp5ebn2sY99TDt06FAOtzixHTt2aACivi6//HJN0zRtbGxM++pXv6o1NTVpfr9fW7t2rfb666+bHqO7u1u75JJLtMrKSq26ulr71Kc+pfX39+dgb+zF28ehoSFt/fr1WkNDg+b1erWpU6dqV111VdQHcD7vo92+AdDuvffeyH2SeW2+88472qZNm7SysjKtvr5eu/HGG7WRkZEs701uMV4xXuUa4xXjVbIYrxivco3xivEqWYxXjFe5xnjFeJUsxivGq1xjvMpevHLpG0RERERERERERERERFlSFD3niYiIiIiIiIiIiIjyCZPzRERERERERERERERZxuQ8EREREREREREREVGWMTlPRERERERERERERJRlTM4TEREREREREREREWUZk/NERERERERERERERFnG5DwRERERERERERERUZYxOU9ERERERERERERElGVMzhMRERERERERERERZRmT80REREREREREREREWcbkPBERERERERERERFRlv1/1H+gRlRcR5MAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy 0.852\n" + ] + } + ], + "source": [ + "predict_and_visualize_net_activity(net)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "brainpy-dev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/snn_training-zh.ipynb b/docs/snn_training-zh.ipynb new file mode 100644 index 000000000..37f60222f --- /dev/null +++ b/docs/snn_training-zh.ipynb @@ -0,0 +1,709 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "de646938e4e80791", + "metadata": { + "collapsed": false + }, + "source": [ + "# 训练脉冲神经网络" + ] + }, + { + "cell_type": "markdown", + "id": "576ef80e", + "metadata": {}, + "source": [ + "## 介绍\n", + "近几年,人们对训练脉冲神经网络(SNN)进行有意义的计算的兴趣激增。一方面,这种激增是由于更传统的、通常被认为在生物学上更合理的学习范式在创建解决有趣计算问题的功能神经网络方面取得的有限成就所推动的。深度神经网络在解决各种具有挑战性的计算问题方面取得了不可否认的成功,弥补了这一限制。这一成功既提高了标准,也提出了这一进展如何转化为脉冲神经网络的问题。\n", + "\n", + "过去十年深度学习的兴起在很大程度上归功于GPU及其计算能力的提升、训练数据集的扩大,以及——或许最重要的是——对误差反向传播算法的特点和需求的理解进步。例如,我们现在知道必须避免梯度消失和爆炸问题,这一成就可以通过选择合理的非线性函数、适当的权重初始化和合适的优化器来实现。支持自动微分的强大软件包使得处理深度神经网络变得比以往更加轻松。这一发展提出了一个问题:我们能从深度学习和其工具中获得多少知识,并将其用于训练脉冲神经网络。尽管目前无法完全回答这些问题,但似乎我们可以从中学习很多。\n", + "\n", + "在本教程中,我们使用[`brainstate`](https://brainstate.readthedocs.io/en/latest/)以及[Brain Dynamics Programming Ecosystem](https://ecosystem-for-brain-dynamics.readthedocs.io/en/latest/)中的工具,逐步构建一个脉冲神经网络。明确地说,我们的目标是构建解决(简单)现实世界问题的网络。为此,我们专注于分类问题,并结合上述的反向传播算法使用监督学习。为此,我们必须克服由脉冲本身的二元性质引起的梯度消失问题。\n", + "\n", + "在本教程中,我们将首先展示如何将一个简单的前向传播的基于泄露整合发放(LIF)神经元和基于电导的突触脉冲神经网络(SNN)形式化地映射到离散时间循环神经网络 (RNN)。我们将利用这一公式来解释为什么在脉冲时梯度会消失,并展示一种缓解该问题的方法。具体来说,我们将引入代理梯度,并提供在Brainstate中如何实现它们的实际示例。" + ] + }, + { + "cell_type": "markdown", + "id": "d23db264", + "metadata": {}, + "source": [ + "## 将LIF神经元映射到RNN动力学\n", + "\n", + "计算神经科学中网络模拟的事实上的标准神经元模型是LIF神经元模型,它通常被正式写成微分形式的时间连续动力系统:\n", + "\n", + "$$\\tau_\\mathrm{mem} \\frac{\\mathrm{d}U_i^{(l)}}{\\mathrm{d}t} = -(U_i^{(l)}-U_\\mathrm{rest}) + RI_i^{(l)}$$\n", + "\n", + "其中 $U_i$ 是第 $l$ 层神经元 $i$ 的膜电位,$U_\\mathrm{rest}$ 是静息电位,$\\tau_\\mathrm{mem}$ 是膜时间常数,$R$ 是输入电阻,$I_i$ 是输入电流。膜电位 $U_i$ 表征每个神经元的隐藏状态,并且重要的是,它不会直接传递给下游神经元。然而,当神经元的膜电压超过阈值 $\\vartheta$ 时,神经元会在时间 $t$ 发射动作电位或脉冲。发射脉冲后,神经元的膜电压被重置 $U_i \\rightarrow U_\\mathrm{rest}$。我们写作\n", + "\n", + "$$S_i^{(l)}(t)=\\sum_{k \\in C_i^l} \\delta(t-t_j^k)$$ \n", + "\n", + "表示脉冲序列(即神经元 $i$ 在第 $l$ 层发射的所有脉冲 $C_i^l$ 的总和)。这里 $\\delta$ 是狄拉克δ函数,$t_i^k$ 是神经元的相关发射时间。\n", + "\n", + "脉冲沿着轴突传播并在连接的神经元中产生突触后电流。使用上述形式,我们可以写作\n", + "\n", + "$$\\frac{\\mathrm{d}I_i}{\\mathrm{d}t}= -\\frac{I_i(t)}{\\tau_\\mathrm{syn}} + \\sum_j W_{ij} S_j^{(0)}(t) + \\sum_j V_{ij} S_j^{(1)}(t)$$\n", + "\n", + "其中我们引入了突触权重矩阵 $W_{ij}$(前馈),$V_{ij}$(递归),以及突触衰减时间常数 $\\tau_\\mathrm{syn}$。\n", + "\n", + "为了与RNN明显联系起来,我们现在将上述方程表达为离散时间形式。为了简洁起见,我们切换到自然单位 $U_\\mathrm{rest}=0$,$R=1$,和 $\\vartheta=1$。我们的论点不受此选择的影响,所有结果都可以重新缩放到物理单位。为了突出脉冲的非线性特征,我们首先注意到可以设置\n", + "\n", + "$$S_i^{(l)}(t)=\\Theta(U_i^{(l)}(t)-\\vartheta)$$\n", + "\n", + "其中 $\\Theta$ 表示赫维赛德阶跃函数。\n", + "\n", + "假设一个小的模拟时间步长 $\\Delta_t>0$,我们可以通过以下方式近似突触动力学:\n", + "\n", + "$$I_i^{(l)}(t+1) = \\alpha I_i^{(l)}(t) + \\sum_j W_{ij} S_j^{(l-1)}(t) +\\sum_j V_{ij} S_j^{(l)}(t)$$\n", + "\n", + "其中常数 $\\alpha=\\exp\\left(-\\frac{\\Delta_t}{\\tau_\\mathrm{syn}} \\right)$。此外,膜动力学可以写成\n", + "\n", + "$$U_i^{(l)}(t+1) = \\underbrace{\\beta U_i^{(l)}(t)}_{\\mathrm{leak}} + \\underbrace{I_i^{(l)}(t)}_{\\mathrm{input}} -\\underbrace{S_i^{(l)}(t)}_{\\mathrm{reset}}$$\n", + "\n", + "其中输出 $S_i(t) = \\Theta(U_i(t)-1)$ 和常数 $\\beta=\\exp\\left(-\\frac{\\Delta_t}{\\tau_\\mathrm{mem}}\\right)$。注意方程右侧的不同项,它们分别负责:i) 泄漏,ii) 突触输入,和 iii) 脉冲重置。\n", + "\n", + "这些方程可以简洁地总结为具有特定连接结构的RNN的计算图。\n", + "\n", + "

\n", + " \"snn_graph\"/\n", + "

\n", + "\n", + "\n", + "时间从左到右流动。输入在每个时间步从图的底部进入网络($S_i^{(0)}$)。这些输入依次影响突触电流 $I_i^{(1)}$,膜电位 $U_i^{(1)}$,最后是脉冲输出 $S_i^{(1)}$。此外,动态量直接输入到未来的时间步。为了清晰起见,在图中省略了索引 $i$。\n", + "\n", + "计算图展示了一个称为时间展开的概念,它强调了深度神经网络和循环神经网络之间的对偶性,后者只不过是时间上的深度网络(具有绑定权重)。由于这一事实,我们可以使用时间反向传播(BPTT)来训练RNN。让我们首先在Brainstate中实现上述动力学的三层脉冲神经网络。" + ] + }, + { + "cell_type": "markdown", + "id": "89169346", + "metadata": {}, + "source": [ + "## 脉冲神经网络构建与训练示例\n", + "\n", + "我们首先导入所需的库。" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5b5143f3", + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "import braintools as bts\n", + "import brainunit as u\n", + "import jax.numpy as jnp\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "import brainstate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bce4a582", + "metadata": {}, + "outputs": [], + "source": [ + "num_inputs = 100 # 输入层神经元个数\n", + "num_hidden = 4 # 隐藏层神经元个数\n", + "num_outputs = 2 # 输出层神经元个数" + ] + }, + { + "cell_type": "markdown", + "id": "10251302", + "metadata": {}, + "source": [ + "正如我们上面所看到的,我们实际上是在模拟一个RNN。因此,我们必须为一定数量的时间步长模拟我们的神经元。我们将使用1毫秒的时间步长,并且我们希望模拟我们的网络200个时间步长。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72c128c1", + "metadata": {}, + "outputs": [], + "source": [ + "time_step = 1 * u.ms\n", + "brainstate.environ.set(dt=time_step) # 设置仿真时间步长\n", + "num_steps = 200" + ] + }, + { + "cell_type": "markdown", + "id": "f42b8e71", + "metadata": {}, + "source": [ + "为了利用并行性,我们将设置代码以处理数据批次,就像通常对以监督方式训练的神经网络所做的那样。\n", + "为此,我们在这里指定一个批次大小。" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0592f1f0", + "metadata": {}, + "outputs": [], + "source": [ + "batch_size = 256" + ] + }, + { + "cell_type": "markdown", + "id": "7556e61a", + "metadata": {}, + "source": [ + "在做出这些基本设计选择之后,我们现在可以开始构建实际的网络了" + ] + }, + { + "cell_type": "markdown", + "id": "f7ffda5a", + "metadata": {}, + "source": [ + "### 定义脉冲神经网络(SNN)\n", + "\n", + "- **该类继承自`bst.nn.DynamicsGroup`**:\n", + " - `bst.nn.DynamicsGroup` 是一个包含动态神经网络组件的类,用于在时间维度上模拟神经元的动力学行为。\n", + " - 通过继承`DynamicsGroup`,`SNN`类可以利用框架提供的工具来管理脉冲神经网络的状态更新和活动模拟。\n", + "\n", + "- **`__init__`构造方法**:\n", + " - `__init__`方法初始化网络结构,包括输入到递归层的连接、递归层的脉冲神经元模型、递归层到输出层的连接,以及输出层的处理单元。\n", + "\n", + "#### 输入层到递归层的连接 (`self.i2r`)\n", + "\n", + "- **`bst.nn.Sequential`**:用于顺序地组合多个层。这里包含两个层:一个线性层和一个指数衰减层。\n", + " \n", + "- **线性层 (`bst.nn.Linear`)**:\n", + " - 作用:将输入层的信号传递到递归层。\n", + " - 参数:\n", + " - `num_in`: 输入层的神经元数量。\n", + " - `num_rec`: 递归层的神经元数量。\n", + " - `w_init`:权重初始化方法,采用Kaiming Normal初始化,适用于ReLU等激活函数。\n", + " - `b_init`:偏置初始化,这里设为零初始化。\n", + "\n", + "- **指数衰减层 (`bst.nn.Expon`)**:\n", + " - 作用:模拟输入信号随时间的指数衰减特性,使输入信号更符合生物神经元的动力学特性。\n", + " - 参数:\n", + " - `num_rec`: 指定递归层的神经元数量。\n", + " - `tau`: 时间常数,控制指数衰减的速率,这里设置为`10 ms`。\n", + " - `g_initializer`:初始化参数`g`的值,这里设为0,代表初始输入电流为零。\n", + "\n", + "#### 递归层 (`self.r`)\n", + "\n", + "- **LIF神经元模型 (`bst.nn.LIF`)**:\n", + " - 作用:递归层使用脉冲发放的Leaky Integrate-and-Fire(LIF)神经元模型,这是一种广泛应用的生物神经元模型。\n", + " - 参数:\n", + " - `num_rec`: 递归层的神经元数量。\n", + " - `tau`: 时间常数,控制电位的泄露速度,设为`20 ms`。\n", + " - `V_reset`:脉冲发放后膜电位的复位值,这里设为`0 mV`。\n", + " - `V_rest`:神经元静息膜电位值,也是`0 mV`。\n", + " - `V_th`:膜电位的阈值,设为`1 mV`,超过此值神经元会发放脉冲。\n", + " - `spk_fun`:定义脉冲发放的激活函数,这里使用`bst.surrogate.ReluGrad()`作为脉冲函数的近似求导方法。\n", + "\n", + "#### 递归层到输出层的连接 (`self.r2o`)\n", + "\n", + "- **线性层**:\n", + " - 作用:将递归层的输出信号传递到输出层。\n", + " - 参数:\n", + " - `num_rec`: 递归层神经元数。\n", + " - `num_out`: 输出层神经元数。\n", + " - `w_init`:权重初始化方法,同样使用Kaiming Normal初始化。\n", + "\n", + "#### 输出层 (`self.o`)\n", + "\n", + "- **指数衰减层**:\n", + " - 作用:模拟输出层信号随时间的衰减行为。\n", + " - 参数:\n", + " - `num_out`: 输出层神经元数。\n", + " - `tau`: 衰减的时间常数,这里为`10 ms`。\n", + " - `g_initializer`:输出电流初始化值设为零。" + ] + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "class SNN(brainstate.nn.DynamicsGroup):\n", + " def __init__(self, num_in, num_rec, num_out):\n", + " # 初始化父类DynamicsGroup\n", + " super(SNN, self).__init__()\n", + "\n", + " # 参数定义\n", + " self.num_in = num_in # 输入层神经元数量\n", + " self.num_rec = num_rec # 递归层神经元数量\n", + " self.num_out = num_out # 输出层神经元数量\n", + "\n", + " # 定义从输入层到递归层的连接(突触: i->r)\n", + " # 使用Sequential将线性层和指数衰减层连接在一起\n", + " self.i2r = brainstate.nn.Sequential(\n", + " # 线性层:用于将输入信号映射到递归层\n", + " brainstate.nn.Linear(\n", + " num_in, num_rec, # 从输入层到递归层的连接数\n", + " w_init=brainstate.nn.KaimingNormal(scale=7 * (1 - (u.math.exp(-brainstate.environ.get_dt() / (1 * u.ms)))), unit=u.mA), # 使用Kaiming Normal初始化权重\n", + " b_init=brainstate.nn.ZeroInit(unit=u.mA) # 偏置初始化为零\n", + " ),\n", + " # 指数衰减层:对信号进行时间上的衰减,使其符合生物神经元动力学\n", + " brainstate.nn.Expon(num_rec, tau=10. * u.ms, g_initializer=brainstate.nn.Constant(0. * u.mA))\n", + " )\n", + "\n", + " # 定义递归层(r),采用LIF神经元模型\n", + " self.r = brainstate.nn.LIF(\n", + " num_rec, # 递归层神经元数量\n", + " tau=20 * u.ms, # 时间常数,控制膜电位衰减速率\n", + " V_reset=0 * u.mV, # 膜电位复位值\n", + " V_rest=0 * u.mV, # 静息膜电位\n", + " V_th=1. * u.mV, # 膜电位阈值,超过此值时神经元发放脉冲\n", + " spk_fun=braintools.surrogate.ReluGrad() # 近似求导函数,用于实现脉冲发放\n", + " )\n", + "\n", + " # 定义从递归层到输出层的连接(突触: r->o),采用线性层\n", + " self.r2o = brainstate.nn.Linear(\n", + " num_rec, num_out, # 从递归层到输出层的连接数\n", + " w_init=brainstate.nn.KaimingNormal() # 使用Kaiming Normal初始化权重\n", + " )\n", + "\n", + " # 定义输出层(o),使用指数衰减层模拟输出信号的时间衰减\n", + " self.o = brainstate.nn.Expon(\n", + " num_out, # 输出层神经元数量\n", + " tau=10. * u.ms, # 时间常数,控制输出信号的衰减速率\n", + " g_initializer=brainstate.nn.Constant(0.) # 初始化电流为零\n", + " )\n", + "\n", + " # update方法:用于执行网络的一次更新,返回输出层的输出\n", + " def update(self, spike):\n", + " # 依次通过 i2r、r、r2o 和 o 计算输出\n", + " return self.o(self.r2o(self.r(self.i2r(spike))))\n", + "\n", + " # predict方法:用于预测并获取递归层的膜电位值、脉冲输出和最终输出\n", + " def predict(self, spike):\n", + " # 计算递归层的脉冲输出\n", + " rec_spikes = self.r(self.i2r(spike))\n", + " # 计算最终输出\n", + " out = self.o(self.r2o(rec_spikes))\n", + " # 返回递归层的膜电位值、递归层脉冲输出和最终输出\n", + " return self.r.V.value, rec_spikes, out" + ], + "id": "6e64b8fa9effc5fa" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "net = SNN(num_inputs, num_hidden, num_outputs)", + "id": "57595eb27e88376b" + }, + { + "cell_type": "markdown", + "id": "b150b27d", + "metadata": {}, + "source": [ + "### 简单的合成数据集\n", + "\n", + "我们首先生成一些随机的脉冲数据集,我们将用它作为网络的输入。最初,我们将使用单个批次的数据。\n", + "\n", + "假设我们希望网络将一组不同的稀疏输入脉冲序列分类为两个类别。\n", + "\n", + "为了生成一些合成数据,我们用0到1之间的随机均匀数填充一个形状为 (batch_size x num_steps x num_inputs) 的张量,并使用它来生成我们的输入数据集:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "309544fc", + "metadata": {}, + "outputs": [], + "source": [ + "freq = 5 * u.Hz\n", + "x_data = brainstate.random.rand(num_steps, batch_size, net.num_in) < freq * brainstate.environ.get_dt()\n", + "y_data = u.math.asarray(brainstate.random.rand(batch_size) < 0.5, dtype=int)" + ] + }, + { + "cell_type": "markdown", + "id": "ac38ce7e", + "metadata": {}, + "source": [ + "请注意,数据中没有结构(因为它是完全随机的)。因此,我们现在不会担心泛化问题,只关心我们能否用即将构建的脉冲神经网络过度拟合这些数据。" + ] + }, + { + "cell_type": "markdown", + "id": "8a19dbff", + "metadata": {}, + "source": [ + "如果绘制第一个输入模式的脉冲光栅图,这个合成数据集看起来如下所示。" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4ff6cfeb", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/u3fhNlslrbwy3TrrbeKrKwsoVarRU5Ojrj11lvFoUOHAvc7HA7xr//6ryIlJUXEx8eLG2+8UbS0tEhYcXCtWrVKABBNTU19tkfT+f7888/P+tqeO3euEOK7IdhPPfWUMBqNQqPRiGuuueaM30dXV5e4/fbbhU6nE0lJSWLevHmit7dXgmdz8c73vI8ePXrOv/nPP/9cCCHEzp07xejRo4VerxdarVaUl5eL3/3ud30+8MPR+Z633W4XU6ZMEenp6UKlUomCggLxwAMPnPEPabSd7x+8/PLLIi4uTphMpjN+PlLPdzDJhBAipE0+RERERCES1X1kiIiIKLoxyBAREVHEYpAhIiKiiMUgQ0RERBGLQYaIiIgiFoMMERERRSwGGSIiIopYDDJEREQUsRhkiCgk7rnnHsycOVOy499111343e9+F7L979+/H7m5ubDZbCE7BhFdGGf2JaJLJpPJznv/M888g5///OcQQiA5OXlgivqRr776CpMmTcLx48eh0+lCdpybbroJNTU1eOqpp0J2DCI6PwYZIrpkra2tga+XLFmCp59+Gk1NTYFtOp0upAHiQu6//34olUq89NJLIT3OJ598ggceeAAnTpyAUqkM6bGI6Ox4aYmILllmZmbgptfrIZPJ+mzT6XRnXFqaOHEiHnnkETz22GNISUmB0WjEq6++CpvNhnnz5iExMRGDBw/GypUr+xxr3759mDZtGnQ6HYxGI+666y50dnaeszafz4f3338fM2bM6LO9sLAQzz77LO6++27odDoUFBTgww8/REdHB2644QbodDpUV1djx44dgZ85fvw4ZsyYgZSUFCQkJKCiogIrVqwI3D958mR0d3djw4YNl/kbJaL+YpAhogGzePFipKWlYdu2bXjkkUfw0EMP4eabb8bYsWPR2NiIKVOm4K677oLdbgcAmEwmTJo0CXV1ddixYwc+/fRTtLW14ZZbbjnnMfbs2QOz2YwRI0accd+f//xnXHnlldi1axeuu+463HXXXbj77rtx5513orGxEcXFxbj77rvxQ0P1/Pnz4XK5sHHjRuzduxf/9V//1aelSa1Wo7a2Fl988UWQf1NEdNGkW3ibiKLBG2+8IfR6/Rnb586dK2644YbA9xMmTBDjxo0LfO/1ekVCQoK46667AttaWloEANHQ0CCEEOI///M/xZQpU/rst7m5WQAQTU1NZ61n2bJlQqFQCL/f32d7QUGBuPPOO8841lNPPRXY1tDQIACIlpYWIYQQVVVV4j/+4z/O+/xvvPFGcc8995z3MUQUOmyRIaIBU11dHfhaoVDAYDCgqqoqsM1oNAIA2tvbAXzXaffzzz8P9LnR6XQoKysDABw+fPisx3A4HNBoNGftkPzj4/9wrPMd/9FHH8Wzzz6LK6+8Es888wz27Nlzxj7j4uICLUhENPAYZIhowKhUqj7fy2SyPtt+CB9+vx8AYLVaMWPGDOzevbvP7eDBg7jqqqvOeoy0tDTY7Xa43e7zHv+HY53v+Pfffz+OHDmCu+66C3v37sWIESPw17/+tc8+u7u7kZ6efnG/ACIKOgYZIgpbw4YNw9dff43CwkIMHjy4zy0hIeGsP1NbWwvgu3legiEvLw8//elPsXTpUjz++ON49dVX+9y/b98+1NXVBeVYRHTpGGSIKGzNnz8f3d3duP3227F9+3YcPnwYq1atwrx58+Dz+c76M+np6Rg2bBg2bdp02cd/7LHHsGrVKhw9ehSNjY34/PPPUV5eHrj/2LFjOHXqFOrr6y/7WETUPwwyRBS2srOz8eWXX8Ln82HKlCmoqqrCY489huTkZMjl5377uv/++/H3v//9so/v8/kwf/58lJeX49prr8WQIUPwwgsvBO5/++23MWXKFBQUFFz2sYiofzghHhFFHYfDgdLSUixZsgRjxowJyTHcbjdKSkrw1ltv4corrwzJMYjowtgiQ0RRJy4uDn/729/OO3He5Tpx4gR+9atfMcQQSYwtMkRERBSx2CJDREREEYtBhoiIiCIWgwwRERFFLAYZIiIiilgMMkRERBSxGGSIiIgoYjHIEBERUcRikCEiIqKIxSBDREREEev/A9kduGLkT4gZAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data_id = 0\n", + "plt.imshow(x_data.swapaxes(0, 1)[data_id].transpose(), cmap=plt.cm.gray_r, aspect=\"auto\")\n", + "plt.xlabel(\"Time (ms)\")\n", + "plt.ylabel(\"Unit\")\n", + "sns.despine()" + ] + }, + { + "cell_type": "markdown", + "id": "9ed7f8c4", + "metadata": {}, + "source": [ + "### 可视化神经元膜电位\n", + "\n", + "定义一个辅助函数`plot_voltage_traces`,用于绘制神经元的膜电位和脉冲活动。" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0796f03d", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_voltage_traces(mem, spk=None, dim=(3, 5), spike_height=5, show=True):\n", + " fig, gs = bts.visualize.get_figure(*dim, 3, 3)\n", + " if spk is not None:\n", + " mem[spk > 0.0] = spike_height\n", + " if isinstance(mem, u.Quantity):\n", + " mem = mem.to_decimal(u.mV)\n", + " for i in range(np.prod(dim)):\n", + " if i == 0:\n", + " a0 = ax = plt.subplot(gs[i])\n", + " else:\n", + " ax = plt.subplot(gs[i], sharey=a0)\n", + " ax.plot(mem[:, i])\n", + " if show:\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e31fd03c", + "metadata": {}, + "source": [ + "### 测试未训练的网络性能\n", + "\n", + "在训练前测试网络,并用`plot_voltage_traces`可视化膜电位变化。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd6ed2fb", + "metadata": {}, + "outputs": [], + "source": [ + "def print_classification_accuracy(output, target):\n", + " \"\"\"一个简易的小工具函数,用于计算分类准确率\"\"\"\n", + " m = u.math.max(output, axis=0) # 获取最大值\n", + " am = u.math.argmax(m, axis=1) # 获取最大值的索引\n", + " acc = u.math.mean(target == am) # 与目标值比较\n", + " print(\"准确率 %.3f\" % acc)\n", + "\n", + "def predict_and_visualize_net_activity(net):\n", + " brainstate.nn.init_all_states(net, batch_size=batch_size)\n", + " vs, spikes, outs = brainstate.compile.for_loop(net.predict, x_data, pbar=brainstate.compile.ProgressBar(10))\n", + " plot_voltage_traces(vs, spikes, spike_height=5 * u.mV, show=False)\n", + " plot_voltage_traces(outs)\n", + " print_classification_accuracy(outs, y_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7923aa08", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0b6e7e32acf74ca7a0d6259ba3e97bc2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/200 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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L79cqFnPPffcmDZtWvzyl7+MiOqe6xOf+ESsX78+7r///jjzzDPL14/l866trW3YP883nmMoeVWcGeVVdc4lr/KRV8WZUV5V51zyKh95VZwZ5VV1ziWv8pFXxZlRXlXnXNWQV8r5YTQ0NMS8efOiu7u7fG1wcDC6u7ujs7NzHHf223nllVfiv//7v+P000+PefPmxcSJE4fMuH379ti5c2ehZjznnHOira1tyBwDAwOxadOm8hydnZ2xd+/e6O3tLa/ZuHFjDA4ORkdHR/Y9H6/nn38+XnrppTj99NMjojrnSinFJz7xifje974XGzdujHPOOWfI88fyedfZ2RlPPfXUkODesGFDNDU1xe/8zu/kGaRA5FVxZpRX1TWXvMpPXhVnRnlVXXPJq/zkVXFmlFfVNZe8yk9eFWdGeVVdc1VVXv32P8/2xHTXXXelxsbGtHbt2rRt27a0bNmy1NLSMuQn8Fa7lStXpgceeCDt2LEj/exnP0tdXV1p2rRpac+ePSmllG644YY0a9astHHjxvTEE0+kzs7O1NnZOc67fqt9+/alLVu2pC1btqSISP/wD/+QtmzZkp577rmUUkpf+MIXUktLS/r+97+fnnzyyXTVVVelc845J7322mvlj3HFFVek9773vWnTpk3p4YcfTuedd15atGjReI2UUhp5rn379qXPfOYzqaenJ+3YsSP95Cc/Sb/7u7+bzjvvvHTgwIHyx6i2uT72sY+l5ubm9MADD6QXXnih/Hj11VfLa0b7vHv99dfTu9/97nT55Zenn//85+nHP/5xmj59elq1atV4jFQI8qp6yCt5Ja9GJq+qh7ySV/JqZPKqesgreSWvRiavqoe8klfHk1fK+RHcdtttadasWamhoSHNnz8/Pfroo+O9pTG55ppr0umnn54aGhrSGWecka655pr0y1/+svz8a6+9lj7+8Y+nd7zjHenkk09OH/jAB9ILL7wwjjse3v33358i4i2PJUuWpJRSGhwcTDfffHNqbW1NjY2N6bLLLkvbt28f8jFeeumltGjRonTqqaempqamdP3116d9+/aNwzRvGmmuV199NV1++eVp+vTpaeLEiemss85Kf/7nf/6W/3OttrmGmyci0j/+4z+W1xzL593//M//pPe///1p8uTJadq0aWnlypXp8OHDmacpFnlVHeSVvJJXo5NX1UFeySt5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AACAjBnOAwAAAABAxgznAQAAAAAgY8M2nD979mysWrUqqqqqorq6OtasWRPnzp0b8JqLFy/G+vXr47bbbosJEybEypUr49SpU/2uPXPmTMycOTPKysqis7NzGBIAo4W+AvJCXwF5oa+AvNBXQDEN23B+1apVcejQodi+fXts27Ytdu/eHWvXrh3wmsceeyxefPHF2Lp1a+zatStOnDgR999/f79r16xZEwsXLhyOrQOjjL4C8kJfAXmhr4C80FdAUaVhcPjw4RQRae/evYVjL730UiorK0tvvPFGv9d0dnamioqKtHXr1sKxV199NUVEam1t7bP2mWeeSZ/+9KdTc3Nzioj03//+d0j76+rqShGRurq6hnQdkL3hvl/1FfBe0Vf6CvJCX+kryAt9pa8gL272fh2Wd863trZGdXV13HXXXYVjDQ0NUV5eHm1tbf1es3///rhy5Uo0NDQUji1YsCBqa2ujtbW1cOzw4cPx7W9/O5577rkoLx/c9i9duhTd3d19HgAR+grID30F5IW+AvJCXwHFNizD+Y6Ojpg6dWqfY2PGjIlJkyZFR0fHO14zduzYqK6u7nN82rRphWsuXboUTU1N8eSTT0Ztbe2g97N58+aYOHFi4TFr1qyhBQJGLH0F5IW+AvJCXwF5oa+AYhvScP5rX/talJWVDfj4xz/+MVx7jccffzw+8pGPxIMPPjjk67q6ugqP119/fZh2CJQKfQXkhb4C8kJfAXmhr4C8GDOUxRs3boyHHnpowDVz586NmpqaOH36dJ/jV69ejbNnz0ZNTU2/19XU1MTly5ejs7Ozz08fT506VbimpaUlDh48GL/61a8iIiKlFBERkydPjq9//evxrW99q9+vXVlZGZWVlYOJCIwQ+grIC30F5IW+AvJCXwF5MaTh/JQpU2LKlCk3XFdfXx+dnZ2xf//+WLJkSUT8bzH19vZGXV1dv9csWbIkKioqorm5OVauXBkREe3t7XHs2LGor6+PiIhf//rXceHChcI1e/fujS984Qvxhz/8IW6//fahRAFGOH0F5IW+AvJCXwF5oa+A3HjvP5v2fzU2NqbFixentra2tGfPnjRv3rzU1NRUOH/8+PE0f/781NbWVji2bt26VFtbm1paWtK+fftSfX19qq+vf8d/Y8eOHT7tGka4LO5XfQW8F/SVvoK80Ff6CvJCX+kryIubvV+H9M75ofjZz34WGzZsiKVLl0Z5eXmsXLkynnrqqcL5K1euRHt7e5w/f75w7Ic//GFh7aVLl2L58uXxzDPPDNcWASJCXwH5oa+AvNBXQF7oK6CYylL6v198NYp0d3fHxIkTo6urK6qqqoq9HWAAo/1+He35IU9G+/062vNDnoz2+3W054c8Ge3362jPD3lys/dr+TDuCQAAAAAA6IfhPAAAAAAAZMxwHgAAAAAAMmY4DwAAAAAAGTOcBwAAAACAjBnOAwAAAABAxgznAQAAAAAgY4bzAAAAAACQMcN5AAAAAADImOE8AAAAAABkzHAeAAAAAAAyZjgPAAAAAAAZM5wHAAAAAICMGc4DAAAAAEDGDOcBAAAAACBjhvMAAAAAAJAxw3kAAAAAAMiY4TwAAAAAAGTMcB4AAAAAADJmOA8AAAAAABkznAcAAAAAgIwZzgMAAAAAQMYM5wEAAAAAIGOG8wAAAAAAkDHDeQAAAAAAyJjhPAAAAAAAZMxwHgAAAAAAMmY4DwAAAAAAGRtT7A0UQ0opIiK6u7uLvBPgRt66T9+6b0cbfQX5oa/0FeSFvtJXkBf6Sl9BXtxsX43K4XxPT09ERMyaNavIOwEGq6enJyZOnFjsbWROX0H+6Ct9BXmhr/QV5IW+0leQF0Ptq7I0Cn/82NvbGydOnIhbbrklysrKBlzb3d0ds2bNitdffz2qqqoy2uHwkytfRmKuwWZKKUVPT0/MmDEjystH32/i0ldy5c1IzKWvBkdfyZU3IzGXvhocfSVX3ozEXPpqcPSVXHkzEnMNd1+NynfOl5eXx8yZM4d0TVVV1Yh5Uf2/5MqXkZhrMJlG4zsk3qKvrpMrX0ZiLn01MH11nVz5MhJz6auB6avr5MqXkZhLXw1MX10nV76MxFzD1Vej78eOAAAAAABQZIbzAAAAAACQMcP5G6isrIxNmzZFZWVlsbfynpIrX0ZirpGYqdhG6vdUrnwZiblGYqZiG6nfU7nyZSTmGomZim2kfk/lypeRmGskZiq2kfo9lStfRmKu4c40Kj8QFgAAAAAAisk75wEAAAAAIGOG8wAAAAAAkDHDeQAAAAAAyJjhPAAAAAAAZMxwHgAAAAAAMmY4P4Cnn346PvShD8X73//+qKuriz//+c/F3tKQfPOb34yysrI+jwULFhTOX7x4MdavXx+33XZbTJgwIVauXBmnTp0q4o77t3v37vjsZz8bM2bMiLKysvjNb37T53xKKZ544omYPn16jBs3LhoaGuK1117rs+bs2bOxatWqqKqqiurq6lizZk2cO3cuwxRvd6NcDz300Nuev8bGxj5rSi3X5s2b4xOf+ETccsstMXXq1Pjc5z4X7e3tfdYM5nV37NixuOeee2L8+PExderU+OpXvxpXr17NMkru6KvSoK/0lb66MX1VGvSVvtJXN6avSoO+0lf66sb0VWnQV/rqZvrKcP4d/OIXv4gvf/nLsWnTpvjLX/4SixYtiuXLl8fp06eLvbUh+djHPhYnT54sPPbs2VM499hjj8WLL74YW7dujV27dsWJEyfi/vvvL+Ju+/fmm2/GokWL4umnn+73/Pe///146qmn4sc//nG0tbXFBz7wgVi+fHlcvHixsGbVqlVx6NCh2L59e2zbti12794da9euzSpCv26UKyKisbGxz/P3/PPP9zlfarl27doV69evj1deeSW2b98eV65ciWXLlsWbb75ZWHOj1921a9finnvuicuXL8ef/vSn+OlPfxpbtmyJJ554ohiRckFflQ59pa/01cD0VenQV/pKXw1MX5UOfaWv9NXA9FXp0Ff66qb6KtGvu+++O61fv77w92vXrqUZM2akzZs3F3FXQ7Np06a0aNGifs91dnamioqKtHXr1sKxV199NUVEam1tzWiHQxcR6YUXXij8vbe3N9XU1KQnn3yycKyzszNVVlam559/PqWU0uHDh1NEpL179xbWvPTSS6msrCy98cYbme19IP9/rpRSWr16dbr33nvf8Zo85Dp9+nSKiLRr166U0uBed7/73e9SeXl56ujoKKx59tlnU1VVVbp06VK2AXJCX5UmfXVdHnLpq2zoq9Kkr67LQy59lQ19VZr01XV5yKWvsqGvSpO+ui4PuYrZV94534/Lly/H/v37o6GhoXCsvLw8GhoaorW1tYg7G7rXXnstZsyYEXPnzo1Vq1bFsWPHIiJi//79ceXKlT4ZFyxYELW1tbnKePTo0ejo6OiTY+LEiVFXV1fI0draGtXV1XHXXXcV1jQ0NER5eXm0tbVlvueh2LlzZ0ydOjXmz58fjzzySJw5c6ZwLg+5urq6IiJi0qRJETG4111ra2vceeedMW3atMKa5cuXR3d3dxw6dCjD3eeDvspPRn1V2rn01fDTV/nJqK9KO5e+Gn76Kj8Z9VVp59JXw09f5SejvirtXMXsK8P5fvznP/+Ja9eu9fnmRkRMmzYtOjo6irSroaurq4stW7bEyy+/HM8++2wcPXo0PvWpT0VPT090dHTE2LFjo7q6us81ecv41l4Heq46Ojpi6tSpfc6PGTMmJk2aVNJZGxsb47nnnovm5ub43ve+F7t27YoVK1bEtWvXIqL0c/X29saXvvSl+OQnPxl33HFHRMSgXncdHR39Pp9vnaMvfZWfjPqqdHPpq2zoq/xk1Felm0tfZUNf5SejvirdXPoqG/oqPxn1VenmKnZfjXkXe6fErVixovDnhQsXRl1dXcyePTt++ctfxrhx44q4Mwbj85//fOHPd955ZyxcuDBuv/322LlzZyxdurSIOxuc9evXx9///vc+vycO3om+yjd9xWiir/JNXzGa6Kt801eMJvoq3/TVu+Od8/2YPHlyvO9973vbJ/CeOnUqampqirSrd6+6ujo+/OEPx5EjR6KmpiYuX74cnZ2dfdbkLeNbex3ouaqpqXnbB6FcvXo1zp49m6usc+fOjcmTJ8eRI0ciorRzbdiwIbZt2xY7duyImTNnFo4P5nVXU1PT7/P51jn60lf5yaivSjOXvsqOvspPRn1Vmrn0VXb0VX4y6qvSzKWvsqOv8pNRX5VmrlLoK8P5fowdOzaWLFkSzc3NhWO9vb3R3Nwc9fX1RdzZu3Pu3Ln45z//GdOnT48lS5ZERUVFn4zt7e1x7NixXGWcM2dO1NTU9MnR3d0dbW1thRz19fXR2dkZ+/fvL6xpaWmJ3t7eqKury3zPN+v48eNx5syZmD59ekSUZq6UUmzYsCFeeOGFaGlpiTlz5vQ5P5jXXX19fRw8eLBPcW/fvj2qqqriox/9aDZBckRf5SejviqtXPoqe/oqPxn1VWnl0lfZ01f5yaivSiuXvsqevspPRn1VWrlKqq/e/efZjkw///nPU2VlZdqyZUs6fPhwWrt2baquru7zCbylbuPGjWnnzp3p6NGj6Y9//GNqaGhIkydPTqdPn04ppbRu3bpUW1ubWlpa0r59+1J9fX2qr68v8q7frqenJx04cCAdOHAgRUT6wQ9+kA4cOJD+/e9/p5RS+u53v5uqq6vTb3/72/S3v/0t3XvvvWnOnDnpwoULha/R2NiYFi9enNra2tKePXvSvHnzUlNTU7EipZQGztXT05O+8pWvpNbW1nT06NH0+9//Pn384x9P8+bNSxcvXix8jVLL9cgjj6SJEyemnTt3ppMnTxYe58+fL6y50evu6tWr6Y477kjLli1Lf/3rX9PLL7+cpkyZkh5//PFiRMoFfVU69JW+0lcD01elQ1/pK301MH1VOvSVvtJXA9NXpUNf6aub6SvD+QH86Ec/SrW1tWns2LHp7rvvTq+88kqxtzQkDzzwQJo+fXoaO3Zs+uAHP5geeOCBdOTIkcL5CxcupEcffTTdeuutafz48em+++5LJ0+eLOKO+7djx44UEW97rF69OqWUUm9vb/rGN76Rpk2bliorK9PSpUtTe3t7n69x5syZ1NTUlCZMmJCqqqrSww8/nHp6eoqQ5rqBcp0/fz4tW7YsTZkyJVVUVKTZs2enL37xi2/7z7XUcvWXJyLST37yk8Kawbzu/vWvf6UVK1akcePGpcmTJ6eNGzemK1euZJwmX/RVadBX+kpf3Zi+Kg36Sl/pqxvTV6VBX+krfXVj+qo06Ct9dTN9VfZ/GwIAAAAAADLid84DAAAAAEDGDOcBAAAAACBjhvMAAAAAAJAxw3kAAAAAAMiY4TwAAAAAAGTMcB4AAAAAADJmOA8AAAAAABkznAcAAAAAgIwZzgMAAAAAQMYM5wEAAAAAIGOG8wAAAAAAkLH/AT8kNjJ7W3WnAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "准确率 0.488\n" + ] + } + ], + "source": [ + "predict_and_visualize_net_activity(net)" + ] + }, + { + "cell_type": "markdown", + "id": "6c1489e2", + "metadata": {}, + "source": [ + "如您所见,我们的随机初始化给了我们一些零星的脉冲。并且计算出这个随机网络的分类准确率。我们将看到这个准确率大约在50%左右,因为这对应于我们合成任务的随机水平。" + ] + }, + { + "cell_type": "markdown", + "id": "8b6ada2f", + "metadata": {}, + "source": [ + "### 定义优化器和损失函数\n", + "\n", + "使用Adam优化器,并定义损失函数为交叉熵损失。" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3e2f0329", + "metadata": {}, + "outputs": [], + "source": [ + "optimizer = brainstate.optim.Adam(lr=3e-3, beta1=0.9, beta2=0.999)\n", + "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n", + "\n", + "def loss_fn():\n", + " predictions = brainstate.compile.for_loop(net.update, x_data)\n", + " predictions = u.math.mean(predictions, axis=0)\n", + " return bts.metric.softmax_cross_entropy_with_integer_labels(predictions, y_data).mean()" + ] + }, + { + "cell_type": "markdown", + "id": "9beeb216", + "metadata": {}, + "source": [ + "### 训练网络\n", + "\n", + "定义训练函数并训练网络。" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "0f8d8238", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 100, Loss = 0.5674\n", + "Epoch 200, Loss = 0.5032\n", + "Epoch 300, Loss = 0.4646\n", + "Epoch 400, Loss = 0.4378\n", + "Epoch 500, Loss = 0.4075\n", + "Epoch 600, Loss = 0.3852\n", + "Epoch 700, Loss = 0.3579\n", + "Epoch 800, Loss = 0.3289\n", + "Epoch 900, Loss = 0.3047\n", + "Epoch 1000, Loss = 0.2796\n", + "Epoch 1100, Loss = 0.2526\n", + "Epoch 1200, Loss = 0.2323\n", + "Epoch 1300, Loss = 0.2134\n", + "Epoch 1400, Loss = 0.1925\n", + "Epoch 1500, Loss = 0.1792\n", + "Epoch 1600, Loss = 0.1626\n", + "Epoch 1700, Loss = 0.1468\n", + "Epoch 1800, Loss = 0.1360\n", + "Epoch 1900, Loss = 0.1211\n", + "Epoch 2000, Loss = 0.1116\n", + "Epoch 2100, Loss = 0.1035\n", + "Epoch 2200, Loss = 0.0945\n", + "Epoch 2300, Loss = 0.0868\n", + "Epoch 2400, Loss = 0.0770\n", + "Epoch 2500, Loss = 0.0700\n", + "Epoch 2600, Loss = 0.0657\n", + "Epoch 2700, Loss = 0.0593\n", + "Epoch 2800, Loss = 0.0555\n", + "Epoch 2900, Loss = 0.0504\n", + "Epoch 3000, Loss = 0.0465\n" + ] + } + ], + "source": [ + "@brainstate.compile.jit\n", + "def train_fn():\n", + " brainstate.nn.init_all_states(net, batch_size=batch_size)\n", + " grads, l = brainstate.augment.grad(loss_fn, net.states(brainstate.ParamState), return_value=True)()\n", + " optimizer.update(grads)\n", + " return l\n", + "\n", + "train_losses = []\n", + "for i in range(1, 3001):\n", + " loss = train_fn()\n", + " train_losses.append(loss)\n", + " if i % 100 == 0:\n", + " print(f'Epoch {i}, Loss = {loss:.4f}')" + ] + }, + { + "cell_type": "markdown", + "id": "a65a495e", + "metadata": {}, + "source": [ + "### 可视化训练损失" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "79b0c8fd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(np.asarray(jnp.asarray(train_losses)))\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Training Loss\")\n", + "plt.title(\"Training Loss vs Epoch\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9ce3b843", + "metadata": {}, + "source": [ + "### 测试网络性能\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f7dde304", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7830b10243a94ecd94c36bbc33ebe5d4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/200 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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wWCAwWAI97Cpmyb1L0j0IRCFjfGKiFIF4xURpQrGKyJKFYxXRJQKwk7Ol5SUoKSkJKT7Hj9+HKeddhqmTJmC5557Dlqtd6H+rFmz8Mtf/hJ2ux3p6aIie+nSpRgxYgQKCpgMJqLuYbwiolTBeEVEqYLxiohSBeMVEaWCmPWcP378OObOnYv+/fvjkUceQV1dHaqrq716cV155ZXQ6/W46aabsGPHDrz++uv4+9//jrvuuitWh0VE1AnjFRGlCsYrIkoVjFdElCoYr4gokcKunA/V0qVLsW/fPuzbtw/9+vXzuk2SJABAXl4ePvvsMyxZsgRTpkxBcXEx7rvvPtx6662xOiwiok4Yr4goVTBeEVGqYLwiolTBeEVEiaSR5EiTokwmE/Ly8tDS0gKj0ZjowyGiGOgp7/Oe8jyIKLCe8j7vKc+DiALrKe/znvI8iCiwnvI+7ynPg4gCi+R9HrO2NkRERERERERERERE5B+T80REREREREREREREccbkPBERERERERERERFRnDE5T0REREREREREREQUZ0zOExERERERERERERHFGZPzRERERERERERERERxxuQ8EREREREREREREVGcMTlPRERERERERERERBRnTM4TEREREREREREREcUZk/NERERERERERERERHHG5DwRERERERERERERUZwxOU9EREREREREREREFGdMzhMRERERERERERERxRmT80REREREREREREREccbkPBERERERERERERFRnDE5T0REREREREREREQUZ0zOExERERERERERERHFGZPzRERERERERERERERxxuQ8EREREREREREREVGcMTlPRERERERERERERBRnTM4TEREREREREREREcUZk/NERERERERERERERHHG5DwRERERERERERERUZwxOU9EREREREREREREFGdMzhMRERERERERERERxRmT80REREREREREREREcaZL9AF0lyRJAACTyZTgIyGiWJHf3/L7PVUxXhH1fIxXRJQqGK+IKFUwXhFRqogkXqV8cr61tRUAUFlZmeAjIaJYa21tRV5eXqIPI2KMV0S9B+MVEaUKxisiShWMV0SUKsKJVxopxaceXS4XqqqqkJubC41GE/S+JpMJlZWVOHr0KIxGY5yOML74HHsGPkdvkiShtbUVffr0gVabut24GK+88Tn2DHyO3hiv+BpIVXyOPQPjFeMVn2PPwOfojfGKr4FUxefYM8Q6XqV85bxWq0W/fv3C+hmj0dhjXzAyPseegc/RI5UrJGSMV/7xOfYMfI4ejFc9F59jz8Dn6MF41XPxOfYMfI4ejFc9F59jz8Dn6BFuvErdKUciIiIiIiIiIiIiohTF5DwRERERERERERERUZz1quS8wWDA/fffD4PBkOhDiRk+x56Bz5F6w/8Pn2PPwOdIveH/h8+xZ+BzpN7w/8Pn2DPwOVJv+P/hc+wZ+By7L+U3hCUiIiIiIiIiIiIiSjW9qnKeiIiIiIiIiIiIiCgZMDlPRERERERERERERBRnTM4TEREREREREREREcUZk/NERERERERERERERHHG5DwRERERERERERERUZz1quT8Y489hoEDByIjIwMzZszA+vXrE31IEfvNb34DjUbj9W/kyJHK7RaLBUuWLEFRURFycnJw0UUXoaamJoFH3LVVq1bhnHPOQZ8+faDRaPDuu+963S5JEu677z5UVFQgMzMT8+bNw969e73u09jYiKuuugpGoxH5+fm46aab0NbWFsdnEVxXz/H666/v9HdduHCh132S+Tk++OCDmDZtGnJzc1FaWorzzz8fu3fv9rpPKK/NI0eOYPHixcjKykJpaSl++tOfwuFwxPOpJBzjFeNVojFeMV6FivGK8SrRGK8Yr0LFeMV4lWiMV4xXoWK8YrxKNMar+MWrXpOcf/3113HXXXfh/vvvx6ZNmzBhwgQsWLAAtbW1iT60iI0ZMwYnTpxQ/q1evVq57c4778T777+PN998EytXrkRVVRUuvPDCBB5t18xmMyZMmIDHHnvM7+0PPfQQHn30UTz55JNYt24dsrOzsWDBAlgsFuU+V111FXbs2IGlS5figw8+wKpVq3DrrbfG6yl0qavnCAALFy70+ru++uqrXrcn83NcuXIllixZgq+//hpLly6F3W7H/PnzYTablft09dp0Op1YvHgxbDYb1qxZgxdeeAHPP/887rvvvkQ8pYRgvGK8SgaMV4xXoWC8YrxKBoxXjFehYLxivEoGjFeMV6FgvGK8SgaMV3GMV1IvMX36dGnJkiXK906nU+rTp4/04IMPJvCoInf//fdLEyZM8Htbc3OzlJ6eLr355pvKdd99950EQFq7dm2cjrB7AEjvvPOO8r3L5ZLKy8ulhx9+WLmu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KfLy8nDTTTfhrrvuQmFhIYxGI374wx9i1qxZIe90TUQULYxXRJQqGK+IKFUwXhFRqmC8IqJEiWlyvra2Ftdeey1OnDiBvLw8jB8/Hp9++inOPPNMAMBf//pXaLVaXHTRRbBarViwYAEef/zxWB4SEZFfjFdElCoYr4goVTBeEVGqYLwiokTRSJIkJfogusNkMiEvLw8tLS0wGo2JPhwiioGe8j7vKc+DiALrKe/znvI8iCiwnvI+7ynPg4gC6ynv857yPIgosEje53HvOU9ERERERERERERE1NsxOU9EREREREREREREFGdMzhMRERERERERERERxRmT80REREREREREREREccbkPBERERERERERERFRnDE5T0REREREREREREQUZ0zOExERERERERERERHFGZPzRERERERERERERERxxuQ8EREREREREREREVGcMTlPRERERERERERERBRnTM4TEREREREREREREcUZk/NERERERERERERERHHG5DwRERERERERERERUZwxOU9EREREREREREREFGdMzhMRERERERERERERxRmT80REREREREREREREccbkPBERERERERERERFRnDE5T0REREREREREREQUZ0zOExERERERERERERHFGZPzRERERERERERERERxxuQ8EREREREREREREVGcMTlPRERERERERERERBRnTM4TEREREREREREREcUZk/NERERERERERERERHHG5DwRERERERERERERUZwxOU9EREREREREREREFGdMzhMRERERERERERERxRmT80REREREREREREREccbkPBERERERERERERFRnDE5T0REREREREREREQUZ0zOExERERERERERERHFGZPzRERERERERERERERxxuQ8EREREREREREREVGcMTlPRERERERERERERBRnMU3OP/jgg5g2bRpyc3NRWlqK888/H7t37/a6j8ViwZIlS1BUVIScnBxcdNFFqKmpieVhERF1wnhFRKmC8YqIUgXjFRGlCsYrIkqUmCbnV65ciSVLluDrr7/G0qVLYbfbMX/+fJjNZuU+d955J95//328+eabWLlyJaqqqnDhhRfG8rCIiDphvCKiVMF4RUSpgvGKiFIF4xURJYpGkiQpXr+srq4OpaWlWLlyJU455RS0tLSgpKQEr7zyCi6++GIAwK5duzBq1CisXbsWM2fO7PQYVqsVVqtV+d5kMqGyshItLS0wGo3xeipEFEcmkwl5eXlxfZ8zXhFRJBiviChVMF4RUapgvCKiVBFJvIprz/mWlhYAQGFhIQBg48aNsNvtmDdvnnKfkSNHon///li7dq3fx3jwwQeRl5en/KusrIz9gRNRr8N4RUSpgvGKiFIF4xURpQrGKyKKl7gl510uF3784x9j9uzZGDt2LACguroaer0e+fn5XvctKytDdXW138e599570dLSovw7evRorA+diHoZxisiShWMV0SUKhiviChVMF4RUTzp4vWLlixZgu3bt2P16tXdehyDwQCDwRCloyIi6ozxiohSBeMVEaUKxisiShWMV0QUT3GpnL/99tvxwQcfYPny5ejXr59yfXl5OWw2G5qbm73uX1NTg/Ly8ngcGhGRF8YrIkoVjFdElCoYr4goVTBeEVG8xTQ5L0kSbr/9drzzzjv44osvMGjQIK/bp0yZgvT0dCxbtky5bvfu3Thy5AhmzZoVy0MjIvLCeEVEqYLxiohSBeMVEaUKxisiSpSYtrVZsmQJXnnlFbz33nvIzc1V+nDl5eUhMzMTeXl5uOmmm3DXXXehsLAQRqMRP/zhDzFr1iy/O10TEcUK4xURpQrGKyJKFYxXRJQqGK+IKFE0kiRJMXtwjcbv9c899xyuv/56AIDFYsHdd9+NV199FVarFQsWLMDjjz8e8rIgk8mEvLw8tLS0wGg0RuvQiSiJxON9znhFRNHAeEVEqYLxiohSBeMVEaWKSN7nMU3OxwODG1HP11Pe5z3leRBRYD3lfd5Tnkdv8OiyvdhytBlPXj0Fel1ctpOiHqKnvM97yvMgosB6yvu8pzwPIgoskvc5R/BERERERCnqmS8P4Itdtdh0pCnRh0JERERERGFicp6IiIiIKAVZHU60WhwAgIP15gQfDRERERERhYvJeSIiIiKiFNRotimXD9S1JfBIiIgo2Ww83Igz/rwCy3fXJvpQiIgoCCbniYiIiIhSUEObJznPynkiIlL7aFs19teZ8fam44k+FCIiCoLJeSIiIiKiFONySahvsyrfH6hjcp6IiDxqTBYAwP5arqwiIkpmukQfABERERERha7N6sCCv67C8eYO5bojje2wO11IT2PtDRFRbydJEmpNYgL3QH0bXC4JWq0mwUdFRET+cPRORERE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UNPWg0nFmYPfmYbGO3Pe2QvUbhfnJy4Hdr0uzo+aCxyUa8/r69ETEVHYMThPREThVzBB/CMiosAowfn2o6KuqtLYWAnGA4DHBTTsFueV4PzYE8U/IqIImVySicklDMyHVGqu8fKRTYDbDiSnA2OWaNePmqcLzneFb3xERNQHy9oQEREREcUKJTjv6gF6WkSAHgBqt/W9b3ohy9gQESUS5YCtwi2XrCmZCWSO1K4fpWvI63GFflxERNQvBueJiIiIiGJFcorWVPv3s4C/Lwc8HqBuV9/7jpjdN1BDRETxrcxH2cgRswGLFSiaDlgzgLJF4R8XERH5xOA8EREREVEsUbIfHR1A9XqgeT/QViWuGzlXu593M1giIop/V/4TuHmNaA6uUH4PbngH+NYmID0fGHmMuK54RvjHSEREKgbniYiIiIhiSZZXqZr9H4jTzJFA4RTtegbniYgST0o2MHKOsYyN8nuQkqU1jb3sH8DibwGX/yPsQyQiIg2D80REREREscS7jnzFanFaPA3ILNauZ3CeiChxKUH4JBtQOLnv7dmjgGU/B3LHhHVYRERkxOA8EREREVEsyRplvHzoE3FaNA3IkIMxKdlATnl4x0VERNEjS86cL54GJCVHdixERNQvS6QHQEREREREAfAua+PsFqfFM7RmsaUL2QyWiCiR5Y4Vp6PmRXYcREQ0IAbniYiIiIhiiS3T9/XF04Ci6aKO8Ki5vu9DRESJYf6NgMUGzLo00iMhIqIBMDhPRERERBRLimf2vc6UBBRMAsxmYOo54R8TERFFl7Q8YMm3Iz0KIiIaBGvOExERERHFkoIJwA3vAmf/VnfdRJEhSUREREREMYOZ80REREREsabsOGN5m6JpkRsLERERERENCTPniYiIiIhiUaauMWwxg/NERERERLGGwXkiIiIioliUmgskyaVsimdEdixERERERBQwBueJiIiIiGKRyQSMPVEE6UsXRno0REREREQUINacJyIiIiKKVVe+DLjtQHJqpEdCREREREQBYnCeiIiIiChWmc2AmYF5IiIiIqJYxLI2RERERERERERERERhxuA8EREREREREREREVGYMThPRERERERERERERBRmDM4TEREREREREREREYUZg/NERERERERERERERGHG4DwRERERERERERERUZgxOE9EREREREREREREFGYMzhMRERERERERERERhRmD80REREREREREREREYcbgPBERERERERERERFRmDE4T0REREREREREREQUZgzOExERERERERERERGFGYPzRERERERERERERERhFrLg/KFDh3DjjTdi7NixSE1Nxfjx43HvvffC4XAY7rdt2zaccMIJSElJQWlpKR566KFQDYmIyCfOV0QUKzhfEVGs4HxFRLGC8xURRZIlVE+8e/dueDwePP7445gwYQJ27NiBm266CV1dXfj1r38NAGhvb8eyZcuwdOlSPPbYY9i+fTtuuOEG5OTk4Oabbw7V0IiIDDhfEVGs4HxFRLGC8xURxQrOV0QUSSZJkqRwvdjDDz+MRx99FAcOHAAAPProo/jRj36E2tpaWK1WAMBdd92F1157Dbt37/brOdvb25GdnY22tjZkZWWFbOxEFDmR+J5zviKioeB8RUSxgvMVEcUKzldEFCuG8j0Pa835trY25OXlqZfXrVuHE088UZ3YAGD58uXYs2cPWlpafD6H3W5He3u74R8RUbBxviKiWMH5iohiBecrIooVnK+IKFzCFpyvqKjAn/70J3zjG99Qr6utrUVxcbHhfsrl2tpan8/zwAMPIDs7W/1XWloaukETUULifEVEsYLzFRHFCs5XRBQrOF8RUTgFHJy/6667YDKZBvznvaTnyJEjOOOMM3DJJZfgpptuGtaA7777brS1tan/qqurh/V8RBS/OF8RUazgfEVEsYLzFRHFCs5XRBQLAm4Ie+edd+K6664b8D7jxo1Tz9fU1OCUU07B4sWL8cQTTxjuV1JSgrq6OsN1yuWSkhKfz22z2WCz2QIdNhElIM5XRBQrOF8RUazgfEVEsYLzFRHFgoCD84WFhSgsLPTrvkeOHMEpp5yCefPm4amnnoLZbEzUX7RoEX70ox/B6XQiOTkZALBq1SpMnjwZubm5gQ6NiMiA8xURxQrOV0QUKzhfEVGs4HxFRLEgZDXnjxw5gpNPPhllZWX49a9/jYaGBtTW1hpqcV155ZWwWq248cYbsXPnTrz00kv4wx/+gDvuuCNUwyIi6oPzFRHFCs5XRBQrOF8RUazgfEVEkRRw5ry/Vq1ahYqKClRUVGD06NGG2yRJAgBkZ2fjvffew8qVKzFv3jwUFBTgnnvuwc033xyqYRER9cH5iohiBecrIooVnK+IKFZwviKiSDJJykwTo9rb25GdnY22tjZkZWVFejhEFALx8j2Pl/dBRP2Ll+95vLwPIupfvHzP4+V9EFH/4uV7Hi/vg4j6N5TvecjK2hARERERERERERERkW8MzhMRERERERERERERhRmD80REREREREREREREYcbgPBERERERERERERFRmDE4T0REREREREREREQUZgzOExERERERERERERGFGYPzRERERERERERERERhxuA8EREREREREREREVGYMThPRERERERERERERBRmDM4TEREREREREREREYUZg/NERERERERERERERGHG4DwRERERERERERERUZgxOE9EREREREREREREFGYMzhMRERERERERERERhRmD80REREREREREREREYcbgPBERERERERERERFRmDE4T0REREREREREREQUZgzOExERERERERERERGFGYPzRERERERERERERERhxuA8EREREREREREREVGYMThPRERERERERERERBRmDM4TEREREREREREREYUZg/NERERERERERERERGHG4DwRERERERERERERUZgxOE9EREREREREREREFGYMzhMRERERERERERERhZkl0gMYLkmSAADt7e0RHgkRhYry/Va+77GK8xVR/ON8RUSxgvMVEcUKzldEFCuGMl/FfHC+o6MDAFBaWhrhkRBRqHV0dCA7OzvSwxgyzldEiYPzFRHFCs5XRBQrOF8RUawIZL4ySTF+6NHj8aCmpgaZmZkwmUwD3re9vR2lpaWorq5GVlZWmEYYXnyP8YHv0UiSJHR0dGDkyJEwm2O3GhfnKyO+x/jA92jE+YqfgVjF9xgfOF9xvuJ7jA98j0acr/gZiFV8j/Eh1PNVzGfOm81mjB49OqDHZGVlxe0HRsH3GB/4HjWxnCGh4HzlG99jfOB71HC+il98j/GB71HD+Sp+8T3GB75HDeer+MX3GB/4HjWBzlexe8iRiIiIiIiIiIiIiChGMThPRERERERERERERBRmCRWct9lsuPfee2Gz2SI9lJDhe4wPfI+UCP8/fI/xge+REuH/h+8xPvA9UiL8//A9xge+R0qE/x++x/jA9zh8Md8QloiIiIiIiIiIiIgo1iRU5jwRERERERERERERUTRgcJ6IiIiIiIiIiIiIKMwYnCciIiIiIiIiIiIiCjMG54mIiIiIiIiIiIiIwozBeSIiIiIi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rbR582apsrJSkiRJevDBB6WcnBzp9ddfl7Zt2yadf/750tixY6Wenh71Oc444wzpmGOOkdavXy99+umn0sSJE6UrrrgiUm+pj4HeY0dHh/S9731PWrdunXTw4EHp/fffl+bOnStNnDhR6u3tVZ8jmt/jLbfcImVnZ0sfffSRdPToUfVfd3e3ep/BPpsul0uaMWOGtGzZMmnLli3SO++8IxUWFkp33313JN5SRHC+4nwVDThfcb7yB+crzlfRgPMV5yt/cL7ifBUNOF9xvvIH5yvOV9GA81X45quECc5LkiT96U9/ksrKyiSr1SotWLBA+vzzzyM9pCG77LLLpBEjRkhWq1UaNWqUdNlll0kVFRXq7T09PdKtt94q5ebmSmlpadKFF14oHT16NIIjHtyHH34oAejz79prr5UkSZI8Ho/0k5/8RCouLpZsNpt02mmnSXv27DE8R1NTk3TFFVdIGRkZUlZWlnT99ddLHR0dEXg3vg30Hru7u6Vly5ZJhYWFUnJyslReXi7ddNNNfX6Ao/k9+npvAKSnnnpKvY8/n81Dhw5JZ555ppSamioVFBRId955p+R0OsP8biKL8xXnq0jjfMX5yl+crzhfRRrnK85X/uJ8xfkq0jhfcb7yF+crzleRxvkqfPOVSR4QERERERERERERERGFSULUnCciIiIiIiIiIiIiiiYMzhMRERERERERERERhRmD80REREREREREREREYcbgPBERERERERERERFRmDE4T0REREREREREREQUZgzOExERERERERERERGFGYPzRERERERERERERERhxuA8EREREREREREREVGYWSI9gOHyeDyoqalBZmYmTCZTpIdDRCEgSRI6OjowcuRImM2xe0yR8xVR/ON8RUSxgvMVEcUKzldEFCuGMl/FfHC+pqYGpaWlkR4GEYVBdXU1Ro8eHelhDBnnK6LEwfmKiGIF5ysiihWcr4goVgQyX8V8cD4zMxOAeNNZWVkRHg0RhUJ7eztKS0vV73us4nxFFP84XxFRrOB8RUSxgvMVEcWKocxXMR+cV5YCZWVlcXIjinOxvvSP8xVR4uB8RUSxgvMVEcUKzldEFCsCma9it1gXEREREREREREREVGMYnCeiIiIiIiIiIiIiCjMGJwnIiIiIiIiIiIiIgozBueJiIiIiIiIiIiIiMIspMH5Rx99FLNmzVKbXSxatAhvv/22entvby9WrlyJ/Px8ZGRkYMWKFairqwvlkIiIfOJ8RUSxgvMVEcUKzldEFCs4XxFRpIQ0OD969Gg8+OCD2LRpEzZu3IhTTz0V559/Pnbu3AkAuP322/HGG2/glVdewZo1a1BTU4OLLroolEMiIvKJ8xURxQrOV0QUKzhfEVGs4HxFRJFikiRJCucL5uXl4eGHH8bFF1+MwsJCvPDCC7j44osBALt378bUqVOxbt06HHfccX49X3t7O7Kzs9HW1oasrKxQDp2IIiRS33POV0QUKM5XRBQrOF8RUazgfEVEsWIo3/Ow1Zx3u9345z//ia6uLixatAibNm2C0+nE0qVL1ftMmTIFZWVlWLduXb/PY7fb0d7ebvhHRBRMnK+IKFZwviKiWMH5iohiBecrIgqnkAfnt2/fjoyMDNhsNnzzm9/Eq6++imnTpqG2thZWqxU5OTmG+xcXF6O2trbf53vggQeQnZ2t/istLQ3xOyCiRMH5iohiBecrIooVnK+IKFZwviIKj/d21uKjPfWRHkbUCHlwfvLkydiyZQvWr1+PW265Bddeey127do15Oe7++670dbWpv6rrq4O4miJKJFxviKiWMH5iohiBecrIooVnK+IQq+x046bn9uE6576Ag6XJ9LDiQqWUL+A1WrFhAkTAADz5s3DF198gT/84Q+47LLL4HA40Nraajj6WFdXh5KSkn6fz2azwWazhXrYRJSAOF8RUazgfEVEsYLzFRHFCs5XRKFX2dSlnm/qsmNEdmoERxMdwlZzXuHxeGC32zFv3jwkJydj9erV6m179uxBVVUVFi1aFO5hERH1wfmKiGIF5ysiihWcr4goVnC+Igq+Q43d6vnGDkcERxI9Qpo5f/fdd+PMM89EWVkZOjo68MILL+Cjjz7Cu+++i+zsbNx444244447kJeXh6ysLHzrW9/CokWL/O50TUQULJyviChWcL4ioljB+YqIYgXnK6LwOKTLnG/stKPX6UZKclIERxR5IQ3O19fX42tf+xqOHj2K7OxszJo1C++++y5OP/10AMDvfvc7mM1mrFixAna7HcuXL8df/vKXUA6JiMgnzldEFCs4XxFRrOB8RUSxgvMVUXgcaNSC8998fhNMJuCd75yIMQXpERxVZJkkSZIiPYjhaG9vR3Z2Ntra2pCVlRXp4RBRCMTL9zxe3gcR9S9evufx8j6IqH/x8j2Pl/dBRP2Ll+95vLwPouE4+4+fYGdNu+G66xaPwX3nTY/QiIJrKN/zsNecJyIiIiIiIiIiIqLEIUkSDuky5xXJSaYIjCZ6MDhPRERERERERERERCHT0GlHl8Pd53pPTNd0GT4G54mIiIiIiIiIiIgoZKqaun1e39BhD/NIoguD80REREREREREREQUModbenxeX9/RG+aRRBcG54mIiIiIiIiIiIgoZA63iMz56SONjVLrmTlPRERERERERERERBQaSub8nNIcw/UN7QzOExERERERERERERGFhBKcnzU623B9h92FHh+NYhMFg/NEREQUtaqauvH4mv3osrsiPRQiIiIiIiIaIqWsTXl+OmwWY0g6kevOWyI9ACIiIqL+XPToWjR22lHfYcdPzpkW6eEQERERERFRgDweCUdaReb86NxUfPLDU9DW7cQNz3yB6uYeNHTYUZ6fHuFRRgaD80RERBS1GjtF/cG3th+F2yPh/DkjcUxZboRHRURERERERP6q77DD6ZaQZDahJCsFliQzijJTUJSZgurmnoRuCsuyNkRERBT1jrb14um1h/D79/dFeihEREREREQUgCOtoqTNiGwRmFcUZdoAAPXtiVvWhsF5IiIiikrdjr515mvkpZBEREREREQUG5RmsKNyUg3XK8H52nY7Ptxdj6bOxMugZ3CeiIiIopKvQHxtAmdUEBERERERxSIlOD86N81wfVFWCgDg318exvVPf4H73tgV9rFFGoPzREREFJWqW/oG5zt6XT4z6omIiIiIiCg6HW4RZW1G5xoz5wvlzPkGueb8vrqO8A4sCjA4T0RERFHpiI/gPADUtjF7noiIiIiIKFZomfO+g/OKRFwpzeA8ERERRaUj/dSXZ3CeiIiIiIgodvRb1sYrON/a7USPwx22cUUDBueJiIgoKvWbOZ+A2RRERERERESxyOOR1H0778z5osyUPvdPtP09BueJiIgoKil1Cb0l2sYaERERERFRrGrstMPh9iDJbMKIbGMwPj/diiSzyXBdoq2UZnCeiIiIolJVswjOl+YZsyvqEmxjjYiIiIiIKFZVy1nzJVkpsCQZQ9FmswkFGVbDdbXtvldQxysG54mIiCjqdPQ60djpAADMH5MHAFASKvSZ890OFzZVNqOt24mfvrEL2w+3hX2sRERERERE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "准确率 0.836\n" + ] + } + ], + "source": [ + "predict_and_visualize_net_activity(net)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "brainpy-dev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/spiking_neural_networks-en.ipynb b/docs/spiking_neural_networks-en.ipynb new file mode 100644 index 000000000..c548e5217 --- /dev/null +++ b/docs/spiking_neural_networks-en.ipynb @@ -0,0 +1,35 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Building Spiking Neural Networks" + ], + "metadata": { + "collapsed": false + }, + "id": "a39cf07d62caa659" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/docs/spiking_neural_networks-zh.ipynb b/docs/spiking_neural_networks-zh.ipynb new file mode 100644 index 000000000..41b5854cd --- /dev/null +++ b/docs/spiking_neural_networks-zh.ipynb @@ -0,0 +1,35 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# 构建脉冲神经网络" + ], + "metadata": { + "collapsed": false + }, + "id": "540ea47d24c27831" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/docs_version2/_static/css/theme.css b/docs_version2/_static/css/theme.css new file mode 100644 index 000000000..b8207032d --- /dev/null +++ b/docs_version2/_static/css/theme.css @@ -0,0 +1,23 @@ +@import url("theme.css"); + +.wy-nav-content { + max-width: 1290px; +} + +.rst-content table.docutils { + width: 100%; +} + +.rst-content table.docutils td { + vertical-align: top; + padding: 0; +} + +.rst-content table.docutils td p { + padding: 8px; +} + +.rst-content div[class^=highlight] { + border: 0; + margin: 0; +} diff --git a/docs_version2/_static/logo.png b/docs_version2/_static/logo.png deleted file mode 100644 index 8c1d9eddd..000000000 Binary files a/docs_version2/_static/logo.png and /dev/null differ diff --git a/brainpy-changelog.md b/docs_version2/brainpy-changelog.md similarity index 99% rename from brainpy-changelog.md rename to docs_version2/brainpy-changelog.md index 97b0ea9a8..f9e7f6b32 100644 --- a/brainpy-changelog.md +++ b/docs_version2/brainpy-changelog.md @@ -5,7 +5,7 @@ ## brainpy 3.0.0 -### Version 3.0.0 +See [brainpy version 3.0 changelog](https://brainpy.readthedocs.io/changelog.html). diff --git a/brainpylib-changelog.md b/docs_version2/brainpylib-changelog.md similarity index 100% rename from brainpylib-changelog.md rename to docs_version2/brainpylib-changelog.md diff --git a/docs_version2/conf.py b/docs_version2/conf.py index fa3b0f41b..c0b6339a9 100644 --- a/docs_version2/conf.py +++ b/docs_version2/conf.py @@ -12,8 +12,8 @@ # import os -import sys import shutil +import sys sys.path.insert(0, os.path.abspath('./')) sys.path.insert(0, os.path.abspath('../')) @@ -40,14 +40,7 @@ # auto_generater.generate_mixin_docs() # sys.exit() -changelogs = [ - ('../brainpy-changelog.md', 'apis/auto/brainpy-changelog.md'), - ('../brainpylib-changelog.md', 'apis/auto/brainpylib-changelog.md'), -] -for source, dest in changelogs: - if os.path.exists(dest): - os.remove(dest) - shutil.copyfile(source, dest) +shutil.copytree('../images/', './_static/logos/', dirs_exist_ok=True) # -- Project information ----------------------------------------------------- @@ -64,18 +57,18 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.autosummary', - 'sphinx.ext.intersphinx', - 'sphinx.ext.mathjax', - 'sphinx.ext.napoleon', - 'sphinx.ext.viewcode', - 'sphinx_autodoc_typehints', - 'myst_nb', - 'matplotlib.sphinxext.plot_directive', - 'sphinx_thebe', - 'sphinx_design' - # 'sphinx-mathjax-offline', + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', + 'sphinx_autodoc_typehints', + 'myst_nb', + 'matplotlib.sphinxext.plot_directive', + 'sphinx_thebe', + 'sphinx_design' + # 'sphinx-mathjax-offline', ] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -84,7 +77,6 @@ templates_path = ['_templates'] source_suffix = ['.rst', '.ipynb', '.md'] - # source_suffix = '.rst' autosummary_generate = True @@ -101,33 +93,43 @@ ] suppress_warnings = ["myst.domains", "ref.ref"] - numfig = True - -myst_enable_extensions = [ - "dollarmath", - "amsmath", - "deflist", - "colon_fence", - # "html_admonition", - # "html_image", - # "smartquotes", - # "replacements", - # "linkify", - # "substitution", -] +myst_enable_extensions = ["dollarmath", "amsmath", "deflist", "colon_fence"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +# href with no underline and white bold text color +announcement = """ + + This site covers the old BrainPy 2.0 API. [Explore the new BrainPy 3.0 API ✨] + +""" + +html_theme_options = { + 'repository_url': 'https://github.com/brainpy/BrainPy', + 'use_repository_button': True, # add a 'link to repository' button + 'use_issues_button': False, # add an 'Open an Issue' button + 'path_to_docs': 'docs', # used to compute the path to launch notebooks in colab + 'launch_buttons': { + 'colab_url': 'https://colab.research.google.com/', + }, + 'prev_next_buttons_location': None, + 'show_navbar_depth': 1, + 'announcement': announcement, + 'logo_only': True, + 'show_toc_level': 2, +} + html_theme = "sphinx_book_theme" -html_logo = "_static/logo.png" +html_logo = "_static/logos/logo.png" html_title = "BrainPy documentation" html_copy_source = True html_sourcelink_suffix = "" -html_favicon = "_static/logo-square.png" +html_favicon = "_static/logos/logo-square.png" html_last_updated_fmt = "" +html_css_files = ['css/theme.css'] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -139,12 +141,6 @@ "repository_branch": "master", } - -html_theme_options = { - 'logo_only': True, - 'show_toc_level': 2, -} - # -- Options for myst ---------------------------------------------- # Notebook cell execution timeout; defaults to 30. execution_timeout = 200 diff --git a/docs_version2/index.rst b/docs_version2/index.rst index a48d7176d..2bd495d0a 100644 --- a/docs_version2/index.rst +++ b/docs_version2/index.rst @@ -6,11 +6,29 @@ general-purpose Brain Dynamics Programming (BDP). +.. _BrainPy: https://github.com/brainpy/BrainPy -.. _BrainPy: https://github.com/brainpy/BrainPy +.. note:: + + From September 2025, BrainPy has been upgraded to version 3.x. + To compatible apis within version 2.x. Please change your code: + + .. code-block:: python + + # Old version (v2.x) + import brainpy as bp + import brainpy.math as bm + to the new version: + + + .. code-block:: python + + # New version (v3.x) + import brainpy.version2 as bp + import brainpy.version2.math as bm @@ -26,12 +44,14 @@ Installation pip install -U brainpy[cpu] - .. tab-item:: GPU (CUDA 12) + .. tab-item:: GPU .. code-block:: bash pip install -U brainpy[cuda12] + pip install -U brainpy[cuda13] + .. tab-item:: TPU .. code-block:: bash @@ -42,13 +62,7 @@ Installation .. code-block:: bash - pip install -U BrainX[cpu] - - # or - pip install -U BrainX[cuda12] - - # or - pip install -U BrainX[tpu] + pip install -U BrainX @@ -143,6 +157,7 @@ Learn more :maxdepth: 1 :caption: Quickstart + quickstart/installation.rst quickstart/simulation quickstart/training quickstart/analysis @@ -160,5 +175,5 @@ Learn more advanced_tutorials.rst FAQ.rst api.rst - apis/auto/brainpy-changelog.md - apis/auto/brainpylib-changelog.md + brainpy-changelog.md + brainpylib-changelog.md diff --git a/examples/102_EI_net_1996.py b/examples/102_EI_net_1996.py new file mode 100644 index 000000000..06f4ed912 --- /dev/null +++ b/examples/102_EI_net_1996.py @@ -0,0 +1,107 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the EI network from Brunel (1996) with the brainstate package. +# +# - Van Vreeswijk, Carl, and Haim Sompolinsky. “Chaos in neuronal networks with balanced +# excitatory and inhibitory activity.” Science 274.5293 (1996): 1724-1726. +# +# Dynamic of membrane potential is given as: +# +# $$ \tau \frac {dV_i}{dt} = -(V_i - V_{rest}) + I_i^{ext} + I_i^{net} (t) $$ +# +# where $I_i^{net}(t)$ represents the synaptic current, which describes the sum of excitatory and inhibitory neurons. +# +# $$ I_i^{net} (t) = J_E \sum_{j=1}^{pN_e} \sum_{t_j^\alpha < t} f(t-t_j^\alpha ) - J_I \sum_{j=1}^{pN_i} \sum_{t_j^\alpha < t} f(t-t_j^\alpha )$$ +# +# where +# +# $$ f(t) = \begin{cases} {\rm exp} (-\frac t {\tau_s} ), \quad t \geq 0 \\ +# 0, \quad t < 0 \end{cases} $$ +# +# Parameters: $J_E = \frac 1 {\sqrt {pN_e}}, J_I = \frac 1 {\sqrt {pN_i}}$ +# + + +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + + +class EINet(brainstate.nn.Module): + def __init__(self, n_exc, n_inh, prob, JE, JI): + super().__init__() + self.n_exc = n_exc + self.n_inh = n_inh + self.num = n_exc + n_inh + + # neurons + self.N = brainpy.LIF( + n_exc + n_inh, + V_rest=-52. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=10. * u.ms, + V_initializer=braintools.init.Normal(-60., 10., unit=u.mV), spk_reset='soft' + ) + + # synapses + self.E = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(n_exc, self.num, prob, JE), + syn=brainpy.Expon.desc(self.num, tau=2. * u.ms), + out=brainpy.CUBA.desc(), + post=self.N, + ) + self.I = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(n_inh, self.num, prob, JI), + syn=brainpy.Expon.desc(self.num, tau=2. * u.ms), + out=brainpy.CUBA.desc(), + post=self.N, + ) + + def update(self, inp): + spks = self.N.get_spike() != 0. + self.E(spks[:self.n_exc]) + self.I(spks[self.n_exc:]) + self.N(inp) + return self.N.get_spike() + + +# connectivity +num_exc = 500 +num_inh = 500 +prob = 0.1 +# external current +Ib = 3. * u.mA +# excitatory and inhibitory synaptic weights +JE = 1 / u.math.sqrt(prob * num_exc) * u.mS +JI = -1 / u.math.sqrt(prob * num_inh) * u.mS + +# network +brainstate.environ.set(dt=0.1 * u.ms) +net = EINet(num_exc, num_inh, prob=prob, JE=JE, JI=JI) +brainstate.nn.init_all_states(net) + +# simulation +times = u.math.arange(0. * u.ms, 1000. * u.ms, brainstate.environ.get_dt()) +spikes = brainstate.transform.for_loop(lambda t: net.update(Ib), times, pbar=brainstate.transform.ProgressBar(10)) + +# visualization +t_indices, n_indices = u.math.where(spikes) +plt.scatter(times[t_indices], n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/103_COBA_2005.py b/examples/103_COBA_2005.py new file mode 100644 index 000000000..d86f71868 --- /dev/null +++ b/examples/103_COBA_2005.py @@ -0,0 +1,86 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Brette, R., Rudolph, M., Carnevale, T., Hines, M., Beeman, D., Bower, J. M., et al. (2007), +# Simulation of networks of spiking neurons: a review of tools and strategies., J. Comput. Neurosci., 23, 3, 349–98 +# +# which is based on the balanced network proposed by: +# +# - Vogels, T. P. and Abbott, L. F. (2005), Signal propagation and logic gating in networks of integrate-and-fire neurons., J. Neurosci., 25, 46, 10786–95 +# + + +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + + +class EINet(brainstate.nn.Module): + def __init__(self): + super().__init__() + self.n_exc = 3200 + self.n_inh = 800 + self.num = self.n_exc + self.n_inh + self.N = brainpy.LIFRef( + self.num, V_rest=-60. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, + tau=20. * u.ms, tau_ref=5. * u.ms, + V_initializer=braintools.init.Normal(-55., 2., unit=u.mV) + ) + self.E = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=0.6 * u.mS), + syn=brainpy.Expon.desc(self.num, tau=5. * u.ms), + out=brainpy.COBA.desc(E=0. * u.mV), + post=self.N + ) + self.I = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=6.7 * u.mS), + syn=brainpy.Expon.desc(self.num, tau=10. * u.ms), + out=brainpy.COBA.desc(E=-80. * u.mV), + post=self.N + ) + + def update(self, t, inp): + with brainstate.environ.context(t=t): + spk = self.N.get_spike() != 0. + self.E(spk[:self.n_exc]) + self.I(spk[self.n_exc:]) + self.N(inp) + return self.N.get_spike() + + +# network +net = EINet() +brainstate.nn.init_all_states(net) + +# simulation +with brainstate.environ.context(dt=0.1 * u.ms): + times = u.math.arange(0. * u.ms, 1000. * u.ms, brainstate.environ.get_dt()) + spikes = brainstate.transform.for_loop( + lambda t: net.update(t, 20. * u.mA), times, + pbar=brainstate.transform.ProgressBar(10) + ) + +# visualization +t_indices, n_indices = u.math.where(spikes) +plt.scatter(times[t_indices], n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/104_CUBA_2005.py b/examples/104_CUBA_2005.py new file mode 100644 index 000000000..60973ecb2 --- /dev/null +++ b/examples/104_CUBA_2005.py @@ -0,0 +1,84 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Brette, R., Rudolph, M., Carnevale, T., Hines, M., Beeman, D., Bower, J. M., et al. (2007), +# Simulation of networks of spiking neurons: a review of tools and strategies., J. Comput. Neurosci., 23, 3, 349–98 +# +# which is based on the balanced network proposed by: +# +# - Vogels, T. P. and Abbott, L. F. (2005), Signal propagation and logic gating in networks of integrate-and-fire neurons., J. Neurosci., 25, 46, 10786–95 +# + + +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + + +class EINet(brainstate.nn.Module): + def __init__(self): + super().__init__() + self.n_exc = 3200 + self.n_inh = 800 + self.num = self.n_exc + self.n_inh + self.N = brainpy.LIFRef( + self.num, V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, + tau=20. * u.ms, tau_ref=5. * u.ms, + V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) + ) + self.E = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=1.62 * u.mS), + syn=brainpy.Expon.desc(self.num, tau=5. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.N + ) + self.I = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=-9.0 * u.mS), + syn=brainpy.Expon.desc(self.num, tau=10. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.N + ) + + def update(self, t, inp): + with brainstate.environ.context(t=t): + spk = self.N.get_spike() != 0. + self.E(spk[:self.n_exc]) + self.I(spk[self.n_exc:]) + self.N(inp) + return self.N.get_spike() + + +# network +net = EINet() +brainstate.nn.init_all_states(net) + +# simulation +with brainstate.environ.context(dt=0.1 * u.ms): + times = u.math.arange(0. * u.ms, 1000. * u.ms, brainstate.environ.get_dt()) + spikes = brainstate.transform.for_loop(lambda t: net.update(t, 20. * u.mA), times, + pbar=brainstate.transform.ProgressBar(10)) + +# visualization +t_indices, n_indices = u.math.where(spikes) +plt.scatter(times[t_indices], n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/104_CUBA_2005_version2.py b/examples/104_CUBA_2005_version2.py new file mode 100644 index 000000000..55ab33bdb --- /dev/null +++ b/examples/104_CUBA_2005_version2.py @@ -0,0 +1,115 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Brette, R., Rudolph, M., Carnevale, T., Hines, M., Beeman, D., Bower, J. M., et al. (2007), +# Simulation of networks of spiking neurons: a review of tools and strategies., J. Comput. Neurosci., 23, 3, 349–98 +# +# which is based on the balanced network proposed by: +# +# - Vogels, T. P. and Abbott, L. F. (2005), Signal propagation and logic gating in networks of integrate-and-fire neurons., J. Neurosci., 25, 46, 10786–95 +# + + +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + + +class EINet(brainstate.nn.Module): + def __init__(self): + super().__init__() + self.n_exc = 3200 + self.n_inh = 800 + self.E = brainpy.LIFRef( + self.n_exc, + V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, + tau=20. * u.ms, tau_ref=5. * u.ms, + V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) + ) + self.I = brainpy.LIFRef( + self.n_inh, + V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, + tau=20. * u.ms, tau_ref=5. * u.ms, + V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) + ) + self.E2E = brainpy.AlignPostProj( + self.E.prefetch('V'), + lambda x: self.E.get_spike(x) != 0., + comm=brainstate.nn.EventFixedProb(self.n_exc, self.n_exc, conn_num=0.02, conn_weight=1.62 * u.mS), + syn=brainpy.Expon.desc(self.n_exc, tau=5. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.E + ) + self.E2I = brainpy.AlignPostProj( + self.E.prefetch('V'), + lambda x: self.E.get_spike(x) != 0., + comm=brainstate.nn.EventFixedProb(self.n_exc, self.n_inh, conn_num=0.02, conn_weight=1.62 * u.mS), + syn=brainpy.Expon.desc(self.n_inh, tau=5. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.I + ) + self.I2E = brainpy.AlignPostProj( + self.I.prefetch('V'), + lambda x: self.I.get_spike(x) != 0., + comm=brainstate.nn.EventFixedProb(self.n_inh, self.n_exc, conn_num=0.02, conn_weight=-9.0 * u.mS), + syn=brainpy.Expon.desc(self.n_exc, tau=10. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.E + ) + self.I2I = brainpy.AlignPostProj( + self.I.prefetch('V'), + lambda x: self.I.get_spike(x) != 0., + comm=brainstate.nn.EventFixedProb(self.n_inh, self.n_inh, conn_num=0.02, conn_weight=-9.0 * u.mS), + syn=brainpy.Expon.desc(self.n_inh, tau=10. * u.ms), + out=brainpy.CUBA.desc(scale=u.volt), + post=self.I + ) + + def update(self, t): + with brainstate.environ.context(t=t): + self.E2E() + self.E2I() + self.I2E() + self.I2I() + self.E(20. * u.mA) + self.I(20. * u.mA) + return self.E.get_spike() + + +# network +net = EINet() +brainstate.nn.init_all_states(net) + +# simulation +with brainstate.environ.context(dt=0.1 * u.ms): + times = u.math.arange(0. * u.ms, 1000. * u.ms, brainstate.environ.get_dt()) + spikes = brainstate.transform.for_loop( + net.update, + times, + pbar=brainstate.transform.ProgressBar(10) + ) + +# visualization +t_indices, n_indices = u.math.where(spikes) +plt.scatter(times[t_indices], n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/106_COBA_HH_2007.py b/examples/106_COBA_HH_2007.py new file mode 100644 index 000000000..9cd90cd35 --- /dev/null +++ b/examples/106_COBA_HH_2007.py @@ -0,0 +1,176 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Brette, R., Rudolph, M., Carnevale, T., Hines, M., Beeman, D., Bower, J. M., et al. (2007), +# Simulation of networks of spiking neurons: a review of tools and strategies., J. Comput. Neurosci., 23, 3, 349–98 +# + +import brainunit as u +import matplotlib.pyplot as plt +import numpy as np + +import brainpy +import brainstate + +# brainstate.environ.set(precision='bf16') + +num_exc = 3200 +num_inh = 800 + +area = 20000 * u.um ** 2 +area = area.in_unit(u.cm ** 2) +Cm = (1 * u.uF * u.cm ** -2) * area # Membrane Capacitance [pF] + +gl = (5. * u.nS * u.cm ** -2) * area # Leak Conductance [nS] +g_Na = (100. * u.mS * u.cm ** -2) * area # Sodium Conductance [nS] +g_Kd = (30. * u.mS * u.cm ** -2) * area # K Conductance [nS] + +El = -60. * u.mV # Resting Potential [mV] +ENa = 50. * u.mV # reversal potential (Sodium) [mV] +EK = -90. * u.mV # reversal potential (Potassium) [mV] +VT = -63. * u.mV # Threshold Potential [mV] +V_th = -20. * u.mV # Spike Threshold [mV] + +# Time constants +taue = 5. * u.ms # Excitatory synaptic time constant [ms] +taui = 10. * u.ms # Inhibitory synaptic time constant [ms] + +# Reversal potentials +Ee = 0. * u.mV # Excitatory reversal potential (mV) +Ei = -80. * u.mV # Inhibitory reversal potential (Potassium) [mV] + +# excitatory synaptic weight +we = 6. * u.nS # excitatory synaptic conductance [nS] + +# inhibitory synaptic weight +wi = 67. * u.nS # inhibitory synaptic conductance [nS] + + +class HH(brainstate.nn.Dynamics): + """ + Hodgkin-Huxley neuron model. + """ + + def __init__(self, in_size): + super().__init__(in_size) + + def init_state(self, *args, **kwargs): + # variables + self.V = brainstate.HiddenState(El + (brainstate.random.randn(*self.varshape) * 5 - 5) * u.mV) + self.m = brainstate.HiddenState(u.math.zeros(self.varshape, dtype=brainstate.environ.dftype())) + self.n = brainstate.HiddenState(u.math.zeros(self.varshape, dtype=brainstate.environ.dftype())) + self.h = brainstate.HiddenState(u.math.zeros(self.varshape, dtype=brainstate.environ.dftype())) + self.spike = brainstate.HiddenState(u.math.zeros(self.varshape, dtype=bool)) + + def reset_state(self, *args, **kwargs): + self.V.value = El + (brainstate.random.randn(self.varshape) * 5 - 5) + self.m.value = u.math.zeros(self.varshape) + self.n.value = u.math.zeros(self.varshape) + self.h.value = u.math.zeros(self.varshape) + self.spike.value = u.math.zeros(self.varshape, dtype=bool) + + def dV(self, V, m, h, n, Isyn): + gna = g_Na * (m * m * m) * h + gkd = g_Kd * (n * n * n * n) + dVdt = (-gl * (V - El) - gna * (V - ENa) - gkd * (V - EK) + self.sum_current_inputs(Isyn, V)) / Cm + return dVdt + + def dm(self, m, V, ): + a = (- V + VT) / u.mV + 13 + b = (V - VT) / u.mV - 40 + m_alpha = 0.32 * 4 / u.math.exprel(a / 4) + m_beta = 0.28 * 5 / u.math.exprel(b / 5) + dmdt = (m_alpha * (1 - m) - m_beta * m) / u.ms + return dmdt + + def dh(self, h, V): + c = (- V + VT) / u.mV + 17 + d = (V - VT) / u.mV - 40 + h_alpha = 0.128 * u.math.exp(c / 18) + h_beta = 4. / (1 + u.math.exp(-d / 5)) + dhdt = (h_alpha * (1 - h) - h_beta * h) / u.ms + return dhdt + + def dn(self, n, V): + c = (- V + VT) / u.mV + 15 + d = (- V + VT) / u.mV + 10 + n_alpha = 0.032 * 5 / u.math.exprel(c / 5) + n_beta = .5 * u.math.exp(d / 40) + dndt = (n_alpha * (1 - n) - n_beta * n) / u.ms + return dndt + + def update(self, x=0. * u.mA): + last_V = self.V.value + V = brainstate.nn.exp_euler_step(self.dV, last_V, self.m.value, self.h.value, self.n.value, x) + m = brainstate.nn.exp_euler_step(self.dm, self.m.value, last_V) + h = brainstate.nn.exp_euler_step(self.dh, self.h.value, last_V) + n = brainstate.nn.exp_euler_step(self.dn, self.n.value, last_V) + self.spike.value = u.math.logical_and(last_V < V_th, V >= V_th) + self.m.value = m + self.h.value = h + self.n.value = n + self.V.value = V + return self.spike.value + + +class EINet(brainstate.nn.Module): + def __init__(self): + super().__init__() + self.n_exc = 3200 + self.n_inh = 800 + self.varshape = self.n_exc + self.n_inh + self.N = HH(self.varshape) + + self.E = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_exc, self.varshape, conn_num=0.02, conn_weight=we), + syn=brainpy.Expon(self.varshape, tau=taue), + out=brainpy.COBA(E=Ee), + post=self.N + ) + self.I = brainpy.AlignPostProj( + comm=brainstate.nn.EventFixedProb(self.n_inh, self.varshape, conn_num=0.02, conn_weight=wi), + syn=brainpy.Expon(self.varshape, tau=taui), + out=brainpy.COBA(E=Ei), + post=self.N + ) + + def update(self, t): + with brainstate.environ.context(t=t): + spk = self.N.spike.value + self.E(spk[:self.n_exc]) + self.I(spk[self.n_exc:]) + r = self.N() + return r + + +# network +net = EINet() +brainstate.nn.init_all_states(net) + +# simulation +with brainstate.environ.context(dt=0.04 * u.ms): + times = u.math.arange(0. * u.ms, 300. * u.ms, brainstate.environ.get_dt()) + times = u.math.asarray(times, dtype=brainstate.environ.dftype()) + spikes = brainstate.transform.for_loop(net.update, times, pbar=brainstate.transform.ProgressBar(100)) + +# visualization +t_indices, n_indices = u.math.where(spikes) +plt.scatter(u.math.asarray(times[t_indices] / u.ms, dtype=np.float32), n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/107_gamma_oscillation_1996.py b/examples/107_gamma_oscillation_1996.py new file mode 100644 index 000000000..d2866086e --- /dev/null +++ b/examples/107_gamma_oscillation_1996.py @@ -0,0 +1,156 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +# +# Implementation of the paper: +# +# - Wang X J, Buzsáki G. Gamma oscillation by synaptic inhibition in a hippocampal interneuronal network model[J]. Journal of neuroscience, 1996, 16(20): 6402-6413. +# + +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + + +class HH(brainpy.Neuron): + def __init__( + self, in_size, ENa=55. * u.mV, EK=-90. * u.mV, EL=-65 * u.mV, C=1.0 * u.uF, + gNa=35. * u.msiemens, gK=9. * u.msiemens, gL=0.1 * u.msiemens, V_th=20. * u.mV, phi=5.0 + ): + super().__init__(in_size) + + # parameters + self.ENa = ENa + self.EK = EK + self.EL = EL + self.C = C + self.gNa = gNa + self.gK = gK + self.gL = gL + self.V_th = V_th + self.phi = phi + + def init_state(self, *args, **kwargs): + # variables + self.V = brainstate.HiddenState(-70. * u.mV + brainstate.random.randn(*self.varshape) * 20 * u.mV) + self.h = brainstate.HiddenState(braintools.init.param(braintools.init.Constant(0.6), self.varshape)) + self.n = brainstate.HiddenState(braintools.init.param(braintools.init.Constant(0.3), self.varshape)) + self.spike = brainstate.HiddenState( + braintools.init.param(lambda s: u.math.zeros(s, dtype=bool), self.varshape)) + + def dh(self, h, t, V): + alpha = 0.07 * u.math.exp(-(V / u.mV + 58) / 20) + beta = 1 / (u.math.exp(-0.1 * (V / u.mV + 28)) + 1) + dhdt = alpha * (1 - h) - beta * h + return self.phi * dhdt / u.ms + + def dn(self, n, t, V): + alpha = -0.01 * (V / u.mV + 34) / (u.math.exp(-0.1 * (V / u.mV + 34)) - 1) + beta = 0.125 * u.math.exp(-(V / u.mV + 44) / 80) + dndt = alpha * (1 - n) - beta * n + return self.phi * dndt / u.ms + + def dV(self, V, t, h, n, Iext): + m_alpha = -0.1 * (V / u.mV + 35) / (u.math.exp(-0.1 * (V / u.mV + 35)) - 1) + m_beta = 4 * u.math.exp(-(V / u.mV + 60) / 18) + m = m_alpha / (m_alpha + m_beta) + INa = self.gNa * m ** 3 * h * (V - self.ENa) + IK = self.gK * n ** 4 * (V - self.EK) + IL = self.gL * (V - self.EL) + dVdt = (- INa - IK - IL + self.sum_current_inputs(Iext, V)) / self.C + return dVdt + + def update(self, x=0. * u.uA): + t = brainstate.environ.get('t') + V = brainstate.nn.exp_euler_step(self.dV, self.V.value, t, self.h.value, self.n.value, x) + h = brainstate.nn.exp_euler_step(self.dh, self.h.value, t, V) + n = brainstate.nn.exp_euler_step(self.dn, self.n.value, t, V) + self.spike.value = u.math.logical_and(self.V.value < self.V_th, V >= self.V_th) + self.V.value = V + self.h.value = h + self.n.value = n + return self.V.value + + +class Synapse(brainpy.Synapse): + def __init__(self, in_size, alpha=12 / u.ms, beta=0.1 / u.ms): + super().__init__(in_size=in_size) + self.alpha = alpha + self.beta = beta + + def init_state(self, *args, **kwargs): + self.g = brainstate.HiddenState( + braintools.init.param(braintools.init.ZeroInit(), self.varshape) + ) + + def update(self, pre_V): + f_v = lambda v: 1 / (1 + u.math.exp(-v / u.mV / 2)) + ds = lambda s: self.alpha * f_v(pre_V) * (1 - s) - self.beta * s + self.g.value = brainstate.nn.exp_euler_step(ds, self.g.value) + return self.g.value + + +class GammaNet(brainstate.nn.Module): + def __init__(self, num: int = 100): + super().__init__() + self.neu = HH(num) + # self.syn = brainstate.nn.GABAa(num, alpha=12 / (u.ms * u.mM), beta=0.1 / u.ms) + self.syn = Synapse(num) + self.proj = brainpy.CurrentProj( + self.syn.prefetch('g'), + comm=brainstate.nn.AllToAll( + self.neu.varshape, self.neu.varshape, include_self=False, w_init=0.1 * u.msiemens / num + ), + out=brainpy.COBA(E=-75. * u.mV), + post=self.neu + ) + + def update(self, t): + with brainstate.environ.context(t=t): + self.proj() + self.syn(self.neu(I_inp)) + # visualize spikes and membrane potentials of the first 5 neurons + return self.neu.spike.value, self.neu.V.value[:5] + + +# background input +I_inp = 1.0 * u.uA + +# network +net = GammaNet() +brainstate.nn.init_all_states(net) + +# simulation +with brainstate.environ.context(dt=0.01 * u.ms): + times = u.math.arange(0. * u.ms, 500. * u.ms, brainstate.environ.get_dt()) + spikes, vs = brainstate.transform.for_loop(net.update, times, pbar=brainstate.transform.ProgressBar(10)) + +# visualization +fig, gs = braintools.visualize.get_figure(1, 2, 4, 4) +fig.add_subplot(gs[0, 0]) +plt.plot(times, vs.to_decimal(u.mV)) +plt.xlabel('Time (ms)') +plt.ylabel('Membrane potential (mV)') + +fig.add_subplot(gs[0, 1]) +t_indices, n_indices = u.math.where(spikes) +plt.plot(times[t_indices], n_indices, 'k.') +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.show() diff --git a/examples/108_synfire_chains_199.py b/examples/108_synfire_chains_199.py new file mode 100644 index 000000000..1c3ef3c56 --- /dev/null +++ b/examples/108_synfire_chains_199.py @@ -0,0 +1,163 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Diesmann, Markus, Marc-Oliver Gewaltig, and Ad Aertsen. “Stable propagation of synchronous spiking in cortical neural networks.” Nature 402.6761 (1999): 529-533. +# + +import brainunit as u +import jax +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + +duration = 100. * u.ms + +# Neuron model parameters +Vr = -70. * u.mV +Vt = -55. * u.mV +tau_m = 10. * u.ms +tau_ref = 1. * u.ms +tau_psp = 0.325 * u.ms +weight = 4.86 * u.mV +noise = 39.24 * u.mV +spike_sigma = 1. * u.ms + +# Neuron groups +n_groups = 10 +group_size = 100 + +# Synapse parameter +delay = 5.0 * u.ms # ms + + +# neuron model +# ------------ + + +class Population(brainpy.Neuron): + def __init__(self, in_size, **kwargs): + super().__init__(in_size, **kwargs) + + def init_state(self, *args, **kwargs): + self.V = brainstate.HiddenState(Vr + brainstate.random.random(self.varshape) * (Vt - Vr)) + self.x = brainstate.HiddenState(u.math.zeros(self.varshape) * u.mV) + self.y = brainstate.HiddenState(u.math.zeros(self.varshape) * u.mV) + self.spike = brainstate.ShortTermState(u.math.zeros(self.varshape, dtype=bool)) + self.t_last_spike = brainstate.ShortTermState(u.math.ones(self.varshape) * -1e7 * u.ms) + + def update(self): + dv = lambda V, x: (-(V - Vr) + x) / tau_m + dx = lambda x, y: (-x + y) / tau_psp + dy_f = lambda y: -y / tau_psp + 25.27 * u.mV / u.ms + dy_g = lambda y: noise / u.ms ** 0.5 + + t = brainstate.environ.get('t') + x = brainstate.nn.exp_euler_step(dx, self.x.value, self.y.value) + y = brainstate.nn.exp_euler_step(dy_f, dy_g, self.y.value) + V = brainstate.nn.exp_euler_step(dv, self.V.value, self.x.value) + in_ref = (t - self.t_last_spike.value) < tau_ref + V = u.math.where(in_ref, self.V.value, V) + self.x.value = x + self.y.value = y + self.spike.value = V >= Vt + self.t_last_spike.value = u.math.where(self.spike.value, t, self.t_last_spike.value) + self.V.value = u.math.where(self.spike.value, Vr, V) + return self.spike.value + + +# synaptic model +# --------------- + +class Projection(brainpy.Synapse): + def __init__(self, group, **kwargs): + super().__init__(group.varshape, **kwargs) + + # neuron group + self.group = group + + # variables + self.g = brainstate.nn.Delay( + jax.ShapeDtypeStruct(self.group.varshape, brainstate.environ.dftype()) * u.mV, + entries={'I': delay} + ) + + def update(self, ext_spike): + # synapse model between external and group 1 + g = u.math.zeros(self.group.varshape, unit=u.mV) + g[:group_size] = weight * ext_spike.sum() + # feed-forward connection + for i in range(1, n_groups): + s1 = (i - 1) * group_size + s2 = i * group_size + s3 = (i + 1) * group_size + g[s2: s3] = weight * self.group.spike.value[s1: s2].sum() + # delay push + self.g.update(g) + # delay pull + g = self.g.retrieve_at_step(u.math.asarray(delay / brainstate.environ.get_dt(), dtype=int)) + # update group + self.group.y.value += g + + +# network model +# --------------- + +class Net(brainstate.nn.Module): + def __init__(self, n_spike): + super().__init__() + times = brainstate.random.randn(n_spike) * spike_sigma + 20 * u.ms + self.ext = brainpy.SpikeTime(n_spike, times=times, indices=u.math.arange(n_spike), need_sort=False) + self.pop = Population(in_size=n_groups * group_size) + self.syn = Projection(self.pop) + + def update(self, t, i): + with brainstate.environ.context(t=t, i=i): + self.syn(self.ext()) + return self.pop() + + +# network running +# --------------- + +def run_network(spike_num: int, ax): + brainstate.random.seed(1) + + with brainstate.environ.context(dt=0.1 * u.ms): + # initialization + net = Net(spike_num) + brainstate.nn.init_all_states(net) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(times.size) + spikes = brainstate.transform.for_loop(net.update, times, indices, pbar=brainstate.transform.ProgressBar(10)) + + # visualization + times = times.to_decimal(u.ms) + t_indices, n_indices = u.math.where(spikes) + ax.scatter(times[t_indices], n_indices, s=1) + ax.set_xlabel('Time (ms)') + ax.set_ylabel('Neuron index') + + +fig, gs = braintools.visualize.get_figure(1, 2, 4, 4) +run_network(spike_num=40, ax=fig.add_subplot(gs[0, 0])) +run_network(spike_num=30, ax=fig.add_subplot(gs[0, 1])) +plt.show() diff --git a/examples/109_fast_global_oscillation.py b/examples/109_fast_global_oscillation.py new file mode 100644 index 000000000..9cd2f14c4 --- /dev/null +++ b/examples/109_fast_global_oscillation.py @@ -0,0 +1,111 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +# +# Implementation of the paper: +# +# - Brunel, Nicolas, and Vincent Hakim. “Fast global oscillations in networks of integrate-and-fire neurons with low firing rates.” Neural computation 11.7 (1999): 1621-1671. +# + + +import brainunit as u +import jax +import matplotlib.pyplot as plt + +import brainpy +import brainstate +import braintools + +Vr = 10. * u.mV +theta = 20. * u.mV +tau = 20. * u.ms +delta = 2. * u.ms +taurefr = 2. * u.ms +duration = 100. * u.ms +J = .1 * u.mV +muext = 25. * u.mV +sigmaext = 1.0 * u.mV +C = 1000 +N = 5000 +sparseness = C / N + + +class LIF(brainpy.Neuron): + def __init__(self, in_size, **kwargs): + super().__init__(in_size, **kwargs) + + def init_state(self, *args, **kwargs): + # variables + self.V = brainstate.HiddenState(braintools.init.param(braintools.init.Constant(Vr), self.varshape)) + self.t_last_spike = brainstate.ShortTermState( + braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape) + ) + + def update(self): + # integrate membrane potential + fv = lambda V: (-V + self.sum_current_inputs(muext, V)) / tau + gv = lambda V: sigmaext / u.math.sqrt(tau) + V = brainstate.nn.exp_euler_step(fv, gv, self.V.value) + V = self.sum_delta_inputs(V) + + # refractory period + t = brainstate.environ.get('t') + in_ref = (t - self.t_last_spike.value) <= taurefr + V = u.math.where(in_ref, self.V.value, V) + + # spike + spike = V >= theta + self.V.value = u.math.where(spike, Vr, V) + self.t_last_spike.value = u.math.where(spike, t, self.t_last_spike.value) + return spike + + +class Net(brainstate.nn.Module): + def __init__(self, num): + super().__init__() + self.group = LIF(num) + self.delay = brainstate.nn.Delay(jax.ShapeDtypeStruct((num,), bool), delta) + self.syn = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(num, num, sparseness, -J), + post=self.group + ) + + def update(self, t, i): + with brainstate.environ.context(t=t, i=i): + self.syn(self.delay.retrieve_at_step(jax.numpy.asarray(delta / brainstate.environ.get_dt(), dtype=int))) + spike = self.group() + self.delay(spike) + return spike + + +with brainstate.environ.context(dt=0.1 * u.ms): + # initialize network + net = Net(N) + brainstate.nn.init_all_states(net) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(times.size) + spikes = brainstate.transform.for_loop(net.update, times, indices, pbar=brainstate.transform.ProgressBar(10)) + +# visualization +times = times.to_decimal(u.ms) +t_indices, n_indices = u.math.where(spikes) +plt.scatter(times[t_indices], n_indices, s=1) +plt.xlabel('Time (ms)') +plt.ylabel('Neuron index') +plt.xlim([0, duration.to_decimal(u.ms)]) +plt.show() diff --git a/examples/110_Susin_Destexhe_2021_gamma_oscillation_AI.py b/examples/110_Susin_Destexhe_2021_gamma_oscillation_AI.py new file mode 100644 index 000000000..94ad80df3 --- /dev/null +++ b/examples/110_Susin_Destexhe_2021_gamma_oscillation_AI.py @@ -0,0 +1,195 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Susin, Eduarda, and Alain Destexhe. “Integration, coincidence detection and resonance in networks +# of spiking neurons expressing gamma oscillations and asynchronous states.” +# PLoS computational biology 17.9 (2021): e1009416. +# +# Asynchronous Network + + +import braintools +import brainunit as u +import matplotlib.pyplot as plt + +import brainpy +import brainstate +from Susin_Destexhe_2021_gamma_oscillation import ( + get_inputs, visualize_simulation_results, + RS_par, FS_par, Ch_par, AdEx +) + + +def simulate_adex_neuron(ax_v, ax_I, pars, title): + with brainstate.environ.context(dt=0.1 * u.ms): + # neuron + adex = brainstate.nn.init_all_states(AdEx(1, **pars)) + + def run_step(t, x): + with brainstate.environ.context(t=t): + adex.update(x) + return adex.V.value + + # simulation + duration = 1.5e3 * u.ms + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + inputs = get_inputs(0. * u.nA, 0.5 * u.nA, t_transition=50. * u.ms, + t_min_plato=500 * u.ms, t_max_plato=500 * u.ms, + t_gap=500 * u.ms, t_total=duration) + vs = brainstate.transform.for_loop(run_step, times, inputs, pbar=brainstate.transform.ProgressBar(10)) + + # visualization + ax_v.plot(times.to_decimal(u.ms), vs.to_decimal(u.mV)) + ax_v.set_title(title) + ax_v.set_ylabel('V (mV)') + ax_v.set_xlim(0.4 * u.second / u.ms, 1.2 * u.second / u.ms) + + ax_I.plot(times.to_decimal(u.ms), inputs.to_decimal(u.nA)) + ax_I.set_ylabel('I (nA)') + ax_I.set_xlabel('Time (ms)') + ax_I.set_xlim(0.4 * u.second / u.ms, 1.2 * u.second / u.ms) + + +def simulate_adex_neurons(): + fig, gs = braintools.visualize.get_figure(2, 3, 4, 6) + simulate_adex_neuron(fig.add_subplot(gs[0, 0]), fig.add_subplot(gs[1, 0]), RS_par, 'Regular Spiking') + simulate_adex_neuron(fig.add_subplot(gs[0, 1]), fig.add_subplot(gs[1, 1]), FS_par, 'Fast Spiking') + simulate_adex_neuron(fig.add_subplot(gs[0, 2]), fig.add_subplot(gs[1, 2]), Ch_par, 'Chattering') + plt.show() + + +class AINet(brainstate.nn.DynamicsGroup): + def __init__(self): + super().__init__() + + self.num_exc = 20000 + self.num_inh = 5000 + self.exc_syn_tau = 5. * u.ms + self.inh_syn_tau = 5. * u.ms + self.exc_syn_weight = 1. * u.nS + self.inh_syn_weight = 5. * u.nS + self.delay = 1.5 * u.ms + self.ext_weight = 1.0 * u.nS + + # neuronal populations + RS_par_ = RS_par.copy() + FS_par_ = FS_par.copy() + RS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + self.fs_pop = AdEx(self.num_inh, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) + self.rs_pop = AdEx(self.num_exc, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) + self.ext_pop = brainpy.PoissonEncoder(self.num_exc) + + # Poisson inputs + self.ext_to_FS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.ext_weight), + post=self.fs_pop, + label='ge' + ) + self.ext_to_RS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.ext_weight), + post=self.rs_pop, + label='ge' + ) + + # synaptic projections + self.RS_to_FS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.exc_syn_weight), + post=self.fs_pop, + label='ge' + ) + self.RS_to_RS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.exc_syn_weight), + post=self.rs_pop, + label='ge' + ) + self.FS_to_FS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_inh, 0.02, self.inh_syn_weight), + post=self.fs_pop, + label='gi' + ) + self.FS_to_RS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_exc, 0.02, self.inh_syn_weight), + post=self.rs_pop, + label='gi' + ) + + def update(self, i, t, freq): + with brainstate.environ.context(t=t, i=i): + ext_spikes = self.ext_pop(freq) + self.ext_to_FS(ext_spikes) + self.ext_to_RS(ext_spikes) + self.RS_to_RS() + self.RS_to_FS() + self.FS_to_FS() + self.FS_to_RS() + self.rs_pop() + self.fs_pop() + return { + 'FS.V0': self.fs_pop.V.value[0], + 'RS.V0': self.rs_pop.V.value[0], + 'FS.spike': self.fs_pop.spike.value, + 'RS.spike': self.rs_pop.spike.value + } + + +def simulate_ai_net(): + with brainstate.environ.context(dt=0.1 * u.ms): + # inputs + duration = 2e3 * u.ms + varied_rates = get_inputs(2. * u.Hz, 2. * u.Hz, 50. * u.ms, 150 * u.ms, 600 * u.ms, 1e3 * u.ms, duration) + + # network + net = brainstate.nn.init_all_states(AINet()) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(0, len(times)) + returns = brainstate.transform.for_loop(net.update, indices, times, varied_rates, + pbar=brainstate.transform.ProgressBar(100)) + + # # spike raster plot + # spikes = returns['FS.spike'] + # fig, gs = braintools.visualize.get_figure(1, 1, 4., 5.) + # fig.add_subplot(gs[0, 0]) + # times2 = times.to_decimal(u.ms) + # t_indices, n_indices = u.math.where(spikes) + # plt.scatter(times2[t_indices], n_indices, s=1, c='k') + # plt.xlabel('Time (ms)') + # plt.ylabel('Neuron index') + # plt.title('Spike raster plot') + # plt.show() + + # visualization + visualize_simulation_results( + times=times, + spikes={'FS': (returns['FS.spike'], 'inh'), + 'RS': (returns['RS.spike'], 'exc')}, + example_potentials={'FS': returns['FS.V0'], + 'RS': returns['RS.V0']}, + varied_rates=varied_rates + ) + + +if __name__ == '__main__': + # simulate_adex_neurons() + simulate_ai_net() diff --git a/examples/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py b/examples/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py new file mode 100644 index 000000000..ed1190d26 --- /dev/null +++ b/examples/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py @@ -0,0 +1,203 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Susin, Eduarda, and Alain Destexhe. “Integration, coincidence detection and resonance in networks of +# spiking neurons expressing gamma oscillations and asynchronous states.” PLoS computational biology 17.9 (2021): e1009416. +# +# CHING Network for Generating Gamma Oscillation + + +import brainunit as u + +import brainpy +import brainstate +from Susin_Destexhe_2021_gamma_oscillation import ( + get_inputs, visualize_simulation_results, RS_par, FS_par, Ch_par, AdEx +) + + +class CHINGNet(brainstate.nn.DynamicsGroup): + def __init__(self): + super().__init__() + + self.num_rs = 19000 + self.num_fs = 5000 + self.num_ch = 1000 + self.exc_syn_tau = 5. * u.ms + self.inh_syn_tau = 5. * u.ms + self.exc_syn_weight = 1. * u.nS + self.inh_syn_weight1 = 7. * u.nS + self.inh_syn_weight2 = 5. * u.nS + self.ext_weight1 = 1. * u.nS + self.ext_weight2 = 0.75 * u.nS + self.delay = 1.5 * u.ms + + # neuronal populations + RS_par_ = RS_par.copy() + FS_par_ = FS_par.copy() + Ch_par_ = Ch_par.copy() + RS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + Ch_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + self.rs_pop = AdEx(self.num_rs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) + self.fs_pop = AdEx(self.num_fs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) + self.ch_pop = AdEx(self.num_ch, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **Ch_par_) + self.ext_pop = brainpy.PoissonEncoder(self.num_rs) + + # Poisson inputs + self.ext_to_FS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.ext_weight2), + post=self.fs_pop, + label='ge', + ) + self.ext_to_RS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.ext_weight1), + post=self.rs_pop, + label='ge', + ) + self.ext_to_CH = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_ch, 0.02, self.ext_weight1), + post=self.ch_pop, + label='ge', + ) + + # synaptic projections + self.RS_to_FS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.exc_syn_weight), + post=self.fs_pop, + label='ge', + ) + self.RS_to_RS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.exc_syn_weight), + post=self.rs_pop, + label='ge', + ) + self.RS_to_Ch = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_ch, 0.02, self.exc_syn_weight), + post=self.ch_pop, + label='ge', + ) + + # inhibitory projections + self.FS_to_RS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_rs, 0.02, self.inh_syn_weight1), + post=self.rs_pop, + label='gi', + ) + self.FS_to_FS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs, 0.02, self.inh_syn_weight2), + post=self.fs_pop, + label='gi', + ) + self.FS_to_Ch = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_ch, 0.02, self.inh_syn_weight1), + post=self.ch_pop, + label='gi', + ) + + # chatter cell projections + self.Ch_to_RS = brainpy.DeltaProj( + self.ch_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_rs, 0.02, self.exc_syn_weight), + post=self.rs_pop, + label='ge', + ) + self.Ch_to_FS = brainpy.DeltaProj( + self.ch_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_fs, 0.02, self.exc_syn_weight), + post=self.fs_pop, + label='ge', + ) + self.Ch_to_Ch = brainpy.DeltaProj( + self.ch_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_ch, 0.02, self.exc_syn_weight), + post=self.ch_pop, + label='ge', + ) + + def update(self, i, t, freq): + with brainstate.environ.context(i=i, t=t): + ext_spikes = self.ext_pop(freq) + self.ext_to_FS(ext_spikes) + self.ext_to_RS(ext_spikes) + self.ext_to_CH(ext_spikes) + + self.RS_to_FS() + self.RS_to_RS() + self.RS_to_Ch() + + self.FS_to_RS() + self.FS_to_FS() + self.FS_to_Ch() + + self.Ch_to_RS() + self.Ch_to_FS() + self.Ch_to_Ch() + + self.rs_pop() + self.fs_pop() + self.ch_pop() + + return { + 'FS.V0': self.fs_pop.V.value[0], + 'CH.V0': self.ch_pop.V.value[0], + 'RS.V0': self.rs_pop.V.value[0], + 'FS.spike': self.fs_pop.spike.value, + 'CH.spike': self.ch_pop.spike.value, + 'RS.spike': self.rs_pop.spike.value + } + + +def simulate_ching_net(): + with brainstate.environ.context(dt=0.1 * u.ms): + # inputs + duration = 6e3 * u.ms + varied_rates = get_inputs(1. * u.Hz, 2. * u.Hz, 50. * u.ms, 150 * u.ms, 600 * u.ms, 1e3 * u.ms, duration) + + # network + net = brainstate.nn.init_all_states(CHINGNet()) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(0, len(times)) + returns = brainstate.transform.for_loop(net.update, indices, times, varied_rates, + pbar=brainstate.transform.ProgressBar(100)) + + # visualization + visualize_simulation_results( + times=times, + spikes={'FS': (returns['FS.spike'], 'inh'), + 'CH': (returns['CH.spike'], 'exc'), + 'RS': (returns['RS.spike'], 'exc')}, + example_potentials={'FS': returns['FS.V0'], + 'CH': returns['CH.V0'], + 'RS': returns['RS.V0']}, + varied_rates=varied_rates, + xlim=(2e3 * u.ms, 3.4e3 * u.ms), + t_lfp_start=1e3 * u.ms, + t_lfp_end=5e3 * u.ms + ) + + +simulate_ching_net() diff --git a/examples/112_Susin_Destexhe_2021_gamma_oscillation_ING.py b/examples/112_Susin_Destexhe_2021_gamma_oscillation_ING.py new file mode 100644 index 000000000..a8f6b67d6 --- /dev/null +++ b/examples/112_Susin_Destexhe_2021_gamma_oscillation_ING.py @@ -0,0 +1,200 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +# +# Implementation of the paper: +# +# - Susin, Eduarda, and Alain Destexhe. “Integration, coincidence detection and resonance in networks of +# spiking neurons expressing gamma oscillations and asynchronous states.” PLoS computational biology 17.9 (2021): e1009416. +# +# ING Network for Generating Gamma Oscillation + + +import brainunit as u + +import brainpy +import brainstate +from Susin_Destexhe_2021_gamma_oscillation import ( + get_inputs, visualize_simulation_results, RS_par, FS_par, AdEx +) + + +class INGNet(brainstate.nn.DynamicsGroup): + def __init__(self): + super().__init__() + + self.num_rs = 20000 + self.num_fs = 4000 + self.num_fs2 = 1000 + self.exc_syn_tau = 5. * u.ms + self.inh_syn_tau = 5. * u.ms + self.ext_weight = 0.9 * u.nS + self.exc_syn_weight = 1. * u.nS + self.inh_syn_weight = 5. * u.nS + self.delay = 1.5 * u.ms + + # neuronal populations + RS_par_ = RS_par.copy() + FS_par_ = FS_par.copy() + FS2_par_ = FS_par.copy() + RS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + FS2_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + self.rs_pop = AdEx(self.num_rs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) + self.fs_pop = AdEx(self.num_fs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) + self.fs2_pop = AdEx(self.num_fs2, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS2_par_) + self.ext_pop = brainpy.PoissonEncoder(self.num_rs) + + # Poisson inputs + self.ext_to_FS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.ext_weight), + post=self.fs_pop, + label='ge' + ) + self.ext_to_RS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.ext_weight), + post=self.rs_pop, + label='ge' + ) + self.ext_to_RS2 = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs2, 0.02, self.ext_weight), + post=self.fs2_pop, + label='ge' + ) + + # synaptic projections + self.RS_to_FS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.exc_syn_weight), + post=self.fs_pop, + label='ge' + ) + self.RS_to_RS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.exc_syn_weight), + post=self.rs_pop, + label='ge' + ) + self.RS_to_FS2 = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs2, 0.15, self.exc_syn_weight), + post=self.fs2_pop, + label='ge' + ) + + self.FS_to_RS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_rs, 0.02, self.inh_syn_weight), + post=self.rs_pop, + label='gi' + ) + self.FS_to_FS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs, 0.02, self.inh_syn_weight), + post=self.fs_pop, + label='gi' + ) + self.FS_to_FS2 = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs2, 0.03, self.inh_syn_weight), + post=self.fs2_pop, + label='gi' + ) + + self.FS2_to_RS = brainpy.DeltaProj( + self.fs2_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_rs, 0.15, self.exc_syn_weight), + post=self.rs_pop, + label='gi' + ) + self.FS2_to_FS = brainpy.DeltaProj( + self.fs2_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_fs, 0.15, self.exc_syn_weight), + post=self.fs_pop, + label='gi' + ) + self.FS2_to_FS2 = brainpy.DeltaProj( + self.fs2_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_fs2, 0.6, self.exc_syn_weight), + post=self.fs2_pop, + label='gi' + ) + + def update(self, i, t, freq): + with brainstate.environ.context(t=t, i=i): + ext_spikes = self.ext_pop(freq) + self.ext_to_FS(ext_spikes) + self.ext_to_RS(ext_spikes) + self.ext_to_RS2(ext_spikes) + + self.RS_to_RS() + self.RS_to_FS() + self.RS_to_FS2() + + self.FS_to_RS() + self.FS_to_FS() + self.FS_to_FS2() + + self.FS2_to_RS() + self.FS2_to_FS() + self.FS2_to_FS2() + + self.rs_pop() + self.fs_pop() + self.fs2_pop() + + return { + 'FS.V0': self.fs_pop.V.value[0], + 'FS2.V0': self.fs2_pop.V.value[0], + 'RS.V0': self.rs_pop.V.value[0], + 'FS.spike': self.fs_pop.spike.value, + 'FS2.spike': self.fs2_pop.spike.value, + 'RS.spike': self.rs_pop.spike.value + } + + +def simulate_ing_net(): + with brainstate.environ.context(dt=0.1 * u.ms): + # inputs + duration = 6e3 * u.ms + varied_rates = get_inputs(2. * u.Hz, 3. * u.Hz, 50. * u.ms, 350 * u.ms, 600 * u.ms, 1e3 * u.ms, duration) + + # network + net = brainstate.nn.init_all_states(INGNet()) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(0, len(times)) + returns = brainstate.transform.for_loop(net.update, indices, times, varied_rates, + pbar=brainstate.transform.ProgressBar(100)) + + # visualization + visualize_simulation_results( + times=times, + spikes={'FS': (returns['FS.spike'], 'inh'), + 'FS2': (returns['FS2.spike'], 'inh'), + 'RS': (returns['RS.spike'], 'exc')}, + example_potentials={'FS': returns['FS.V0'], + 'FS2': returns['FS2.V0'], + 'RS': returns['RS.V0']}, + varied_rates=varied_rates, + xlim=(2e3 * u.ms, 3.4e3 * u.ms), + t_lfp_start=1e3 * u.ms, + t_lfp_end=5e3 * u.ms + ) + + +simulate_ing_net() diff --git a/examples/113_Susin_Destexhe_2021_gamma_oscillation_PING.py b/examples/113_Susin_Destexhe_2021_gamma_oscillation_PING.py new file mode 100644 index 000000000..3ee47aa92 --- /dev/null +++ b/examples/113_Susin_Destexhe_2021_gamma_oscillation_PING.py @@ -0,0 +1,147 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +# +# Implementation of the paper: +# +# - Susin, Eduarda, and Alain Destexhe. “Integration, coincidence detection and resonance in networks of +# spiking neurons expressing gamma oscillations and asynchronous states.” PLoS computational biology 17.9 (2021): e1009416. +# +# PING Network for Generating Gamma Oscillation + + +import brainunit as u + +import brainpy +import brainstate +from Susin_Destexhe_2021_gamma_oscillation import ( + get_inputs, visualize_simulation_results, RS_par, FS_par, AdEx +) + + +class PINGNet(brainstate.nn.DynamicsGroup): + def __init__(self): + super().__init__() + + self.num_exc = 20000 + self.num_inh = 5000 + self.exc_syn_tau = 1. * u.ms + self.inh_syn_tau = 7.5 * u.ms + self.exc_syn_weight = 5. * u.nS + self.inh_syn_weight = 3.34 * u.nS + self.ext_weight = 4. * u.nS + self.delay = 1.5 * u.ms + + # neuronal populations + RS_par_ = RS_par.copy() + FS_par_ = FS_par.copy() + RS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) + self.rs_pop = AdEx(self.num_exc, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) + self.fs_pop = AdEx(self.num_inh, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) + self.ext_pop = brainpy.PoissonEncoder(self.num_exc) + + # Poisson inputs + self.ext_to_FS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.ext_weight), + post=self.fs_pop, + label='ge' + ) + self.ext_to_RS = brainpy.DeltaProj( + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.ext_weight), + post=self.rs_pop, + label='ge' + ) + + # synaptic projections + self.RS_to_FS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.exc_syn_weight), + post=self.fs_pop, + label='ge' + ) + self.RS_to_RS = brainpy.DeltaProj( + self.rs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.exc_syn_weight), + post=self.rs_pop, + label='ge' + ) + self.FS_to_RS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_exc, 0.02, self.inh_syn_weight), + post=self.rs_pop, + label='gi' + ) + self.FS_to_FS = brainpy.DeltaProj( + self.fs_pop.prefetch('spike').delay.at(self.delay), + comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_inh, 0.02, self.inh_syn_weight), + post=self.fs_pop, + label='gi' + ) + + def update(self, i, t, freq): + with brainstate.environ.context(t=t, i=i): + ext_spikes = self.ext_pop(freq) + self.ext_to_FS(ext_spikes) + self.ext_to_RS(ext_spikes) + + self.RS_to_RS() + self.RS_to_FS() + + self.FS_to_RS() + self.FS_to_FS() + + self.rs_pop() + self.fs_pop() + + return { + 'FS.V0': self.fs_pop.V.value[0], + 'RS.V0': self.rs_pop.V.value[0], + 'FS.spike': self.fs_pop.spike.value, + 'RS.spike': self.rs_pop.spike.value + } + + +def simulate_ping_net(): + with brainstate.environ.context(dt=0.1 * u.ms): + # inputs + duration = 6e3 * u.ms + varied_rates = get_inputs(2. * u.Hz, 3. * u.Hz, 50. * u.ms, 3150 * u.ms, 600 * u.ms, 1e3 * u.ms, duration) + + # network + net = brainstate.nn.init_all_states(PINGNet()) + + # simulation + times = u.math.arange(0. * u.ms, duration, brainstate.environ.get_dt()) + indices = u.math.arange(0, len(times)) + returns = brainstate.transform.for_loop(net.update, indices, times, varied_rates, + pbar=brainstate.transform.ProgressBar(100)) + + # visualization + visualize_simulation_results( + times=times, + spikes={'FS': (returns['FS.spike'], 'inh'), + 'RS': (returns['RS.spike'], 'exc')}, + example_potentials={'FS': returns['FS.V0'], + 'RS': returns['RS.V0']}, + varied_rates=varied_rates, + xlim=(2e3 * u.ms, 3.4e3 * u.ms), + t_lfp_start=1e3 * u.ms, + t_lfp_end=5e3 * u.ms + ) + + +simulate_ping_net() diff --git a/examples/200_surrogate_grad_lif.py b/examples/200_surrogate_grad_lif.py new file mode 100644 index 000000000..19186f3e4 --- /dev/null +++ b/examples/200_surrogate_grad_lif.py @@ -0,0 +1,156 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +""" +Reproduce the results of the``spytorch`` tutorial 1: + +- https://github.com/surrogate-gradient-learning/spytorch/blob/master/notebooks/SpyTorchTutorial1.ipynb + +""" + +import time + +import brainunit as u +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np + +import brainpy +import brainstate +import braintools + + +class SNN(brainstate.nn.Module): + def __init__(self, num_in, num_rec, num_out): + super(SNN, self).__init__() + + # parameters + self.num_in = num_in + self.num_rec = num_rec + self.num_out = num_out + + # synapse: i->r + scale = 7 * (1 - (u.math.exp(-brainstate.environ.get_dt() / (1 * u.ms)))) + self.i2r = brainstate.nn.Sequential( + brainstate.nn.Linear( + num_in, num_rec, + w_init=braintools.init.KaimingNormal(scale=scale, unit=u.mA), + b_init=braintools.init.ZeroInit(unit=u.mA) + ), + brainpy.Expon(num_rec, tau=5. * u.ms, g_initializer=braintools.init.Constant(0. * u.mA)) + ) + # recurrent: r + self.r = brainpy.LIF( + num_rec, tau=20 * u.ms, V_reset=0 * u.mV, + V_rest=0 * u.mV, V_th=1. * u.mV, + spk_fun=braintools.surrogate.ReluGrad() + ) + # synapse: r->o + self.r2o = brainstate.nn.Linear(num_rec, num_out, w_init=braintools.init.KaimingNormal()) + # # output: o + self.o = brainpy.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.Constant(0.)) + + def update(self, spike): + return self.o(self.r2o(self.r(self.i2r(spike)))) + + def predict(self, spike): + rec_spikes = self.r(self.i2r(spike)) + out = self.o(self.r2o(rec_spikes)) + return self.r.V.value, rec_spikes, out + + +def plot_voltage_traces(mem, spk=None, dim=(3, 5), spike_height=5, show=True): + fig, gs = braintools.visualize.get_figure(*dim, 3, 3) + if spk is not None: + mem[spk > 0.0] = spike_height + if isinstance(mem, u.Quantity): + mem = mem.to_decimal(u.mV) + for i in range(np.prod(dim)): + if i == 0: + a0 = ax = plt.subplot(gs[i]) + else: + ax = plt.subplot(gs[i], sharey=a0) + ax.plot(mem[:, i]) + if show: + plt.show() + + +def print_classification_accuracy(output, target): + """ Dirty little helper function to compute classification accuracy. """ + m = u.math.max(output, axis=0) # max over time + am = u.math.argmax(m, axis=1) # argmax over output units + acc = u.math.mean(target == am) # compare to labels + print("Accuracy %.3f" % acc) + + +def predict_and_visualize_net_activity(net): + brainstate.nn.init_all_states(net, batch_size=num_sample) + vs, spikes, outs = brainstate.transform.for_loop(net.predict, x_data, pbar=brainstate.transform.ProgressBar(10)) + plot_voltage_traces(vs, spikes, spike_height=5 * u.mV, show=False) + plot_voltage_traces(outs) + print_classification_accuracy(outs, y_data) + + +with brainstate.environ.context(dt=1.0 * u.ms): + # network + net = SNN(100, 4, 2) + + # dataset + num_step = 200 + num_sample = 256 + freq = 5 * u.Hz + x_data = brainstate.random.rand(num_step, num_sample, net.num_in) < freq * brainstate.environ.get_dt() + y_data = u.math.asarray(brainstate.random.rand(num_sample) < 0.5, dtype=int) + + # Before training + predict_and_visualize_net_activity(net) + + # brainstate optimizer + optimizer = braintools.optim.Adam(lr=3e-3) + optimizer.register_trainable_weights(net.states(brainstate.ParamState)) + + def loss_fn(): + predictions = brainstate.compile.for_loop(net.update, x_data) + predictions = u.math.mean(predictions, axis=0) # [T, B, C] -> [B, C] + return braintools.metric.softmax_cross_entropy_with_integer_labels(predictions, y_data).mean() + + + @brainstate.compile.jit + def train_fn(): + brainstate.nn.init_all_states(net, batch_size=num_sample) + grads, l = brainstate.transform.grad(loss_fn, net.states(brainstate.ParamState), return_value=True)() + optimizer.update(grads) + return l + + + # train the network + train_losses = [] + t0 = time.time() + for i in range(1, 3001): + loss = train_fn() + train_losses.append(loss) + if i % 100 == 0: + print(f'Train {i} epoch, loss = {loss:.4f}, used time {time.time() - t0:.4f} s') + t0 = time.time() + + # visualize the training losses + plt.plot(np.asarray(jnp.asarray(train_losses))) + plt.xlabel("Epoch") + plt.ylabel("Training Loss") + plt.title("Training Loss vs Epoch") + + # predict the output according to the input data + predict_and_visualize_net_activity(net) diff --git a/examples/201_surrogate_grad_lif_fashion_mnist.py b/examples/201_surrogate_grad_lif_fashion_mnist.py new file mode 100644 index 000000000..e8f2dc9c1 --- /dev/null +++ b/examples/201_surrogate_grad_lif_fashion_mnist.py @@ -0,0 +1,221 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +""" +Reproduce the results of the``spytorch`` tutorial 2 & 3: + +- https://github.com/surrogate-gradient-learning/spytorch/blob/master/notebooks/SpyTorchTutorial2.ipynb +- https://github.com/surrogate-gradient-learning/spytorch/blob/master/notebooks/SpyTorchTutorial3.ipynb + +""" + +import time + +import brainunit as u +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np +from datasets import load_dataset + +import brainpy +import brainstate +import braintools + +dataset = load_dataset("zalando-datasets/fashion_mnist") + +# images +X_train = np.array(np.stack(dataset['train']['image']), dtype=np.uint8) +X_test = np.array(np.stack(dataset['test']['image']), dtype=np.uint8) +X_train = (X_train / 255).reshape(-1, 28 * 28).astype(jnp.float32) +X_test = (X_test / 255).reshape(-1, 28 * 28).astype(jnp.float32) +print(f'Training image shape: {X_train.shape}, testing image shape: {X_test.shape}') +# labels +Y_train = np.array(dataset['train']['label'], dtype=np.int32) +Y_test = np.array(dataset['test']['label'], dtype=np.int32) + + +class SNN(brainstate.nn.DynamicsGroup): + """ + This class implements a spiking neural network model with three layers: + + i >> r >> o + + Each two layers are connected through the exponential synapse model. + """ + + def __init__(self, num_in, num_rec, num_out): + super().__init__() + + # parameters + self.num_in = num_in + self.num_rec = num_rec + self.num_out = num_out + + # synapse: i->r + self.i2r = brainstate.nn.Sequential( + brainstate.nn.Linear(num_in, num_rec, w_init=braintools.init.KaimingNormal(scale=40.)), + brainpy.Expon(num_rec, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) + ) + # recurrent: r + self.r = brainpy.LIF(num_rec, tau=10 * u.ms, V_reset=0 * u.mV, V_rest=0 * u.mV, V_th=1. * u.mV) + # synapse: r->o + self.r2o = brainstate.nn.Sequential( + brainstate.nn.Linear(num_rec, num_out, w_init=braintools.init.KaimingNormal(scale=2.)), + brainpy.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) + ) + + def update(self, spikes): + r_spikes = self.r(self.i2r(spikes) * u.mA) + out = self.r2o(r_spikes) + return out, r_spikes + + def predict(self, spikes): + r_spikes = self.r(self.i2r(spikes) * u.mA) + out = self.r2o(r_spikes) + return out, r_spikes, self.r.V.value + + +with brainstate.environ.context(dt=1.0 * u.ms): + # inputs + batch_size = 256 + + # spiking neural networks + net = SNN(num_in=X_train.shape[-1], num_rec=100, num_out=10) + + # encoding inputs as spikes + encoder = braintools.LatencyEncoder(tau=100 * u.ms) + + + @brainstate.transform.jit + def predict(xs): + brainstate.nn.init_all_states(net, xs.shape[0]) + xs = encoder(xs) + outs, spikes, vs = brainstate.transform.for_loop(net.predict, xs) + return outs, spikes, vs + + + def visualize(xs): + # visualization function + outs, spikes, vs = predict(xs) + xs = np.asarray(encoder(xs)) + vs = np.asarray(vs.to_decimal(u.mV)) + # vs = np.where(spikes, vs, 5.0) + fig, gs = braintools.visualize.get_figure(4, 4, 3., 4.) + for i in range(4): + ax = fig.add_subplot(gs[i, 0]) + i_indice, n_indices = np.where(xs[:, i]) + ax.plot(i_indice, n_indices, 'r.', markersize=1) + plt.title('Input spikes') + ax = fig.add_subplot(gs[i, 1]) + i_indice, n_indices = np.where(spikes[:, i]) + ax.plot(i_indice, n_indices, 'r.', markersize=1) + plt.title('Recurrent spikes') + ax = fig.add_subplot(gs[i, 2]) + ax.plot(vs[:, i]) + plt.title('Membrane potential') + ax = fig.add_subplot(gs[i, 3]) + ax.plot(outs[:, i]) + plt.title('Output') + plt.show() + + + # visualization of the spiking activity + visualize(X_test[:4]) + + # optimizer + optimizer = braintools.optim.Adam(lr=1e-3) + optimizer.register_trainable_weights(net.states(brainstate.ParamState)) + + + def loss_fun(xs, ys): + # initialize states + brainstate.nn.init_all_states(net, xs.shape[0]) + + # encode inputs + xs = encoder(xs) + + # predictions + outs, r_spikes = brainstate.transform.for_loop(net.update, xs) + + # Here we set up our regularize loss + # The strength parameters here are merely a guess and there should be ample + # room for improvement by tuning these parameters. + l1_loss = 1e-5 * u.math.sum(r_spikes) # L1 loss on total number of spikes + l2_loss = 1e-5 * u.math.mean( + u.math.sum(u.math.sum(r_spikes, axis=0), axis=0) ** 2) # L2 loss on spikes per neuron + + # predictions + predicts = u.math.max(outs, axis=0) # max over time, [T, B, C] -> [B, C] + loss = braintools.metric.softmax_cross_entropy_with_integer_labels(predicts, ys).mean() + correct_n = u.math.sum(ys == u.math.argmax(predicts, axis=1)) # compare to labels + return loss + l2_loss + l1_loss, correct_n + + + @brainstate.transform.jit + def train_fn(xs, ys): + grads, loss, correct_n = brainstate.transform.grad( + loss_fun, net.states(brainstate.ParamState), has_aux=True, return_value=True)(xs, ys) + optimizer.update(grads) + return loss, correct_n + + + n_epoch = 20 + train_losses, train_accs = [], [] + indices = np.arange(X_train.shape[0]) + + for epoch_i in range(n_epoch): + indices = brainstate.random.shuffle(indices) + + # training phase + t0 = time.time() + loss, train_acc = [], 0. + for i in range(0, X_train.shape[0], batch_size): + X = X_train[indices[i: i + batch_size]] + Y = Y_train[indices[i: i + batch_size]] + l, correct_num = train_fn(X, Y) + loss.append(l) + train_acc += correct_num + train_acc /= X_train.shape[0] + train_loss = jnp.mean(jnp.asarray(loss)) + optimizer.lr.step_epoch() + + # testing phase + loss, test_acc = [], 0. + for i in range(0, X_test.shape[0], batch_size): + X = X_test[i: i + batch_size] + Y = Y_test[i: i + batch_size] + l, correct_num = loss_fun(X, Y) + loss.append(l) + test_acc += correct_num + test_acc /= X_test.shape[0] + test_loss = jnp.mean(jnp.asarray(loss)) + + t = (time.time() - t0) / 60 + print(f"Epoch {epoch_i}: train loss={train_loss:.3f}, acc={train_acc:.3f}, " + f"test loss={test_loss:.3f}, acc={test_acc:.3f}, time={t:.2f} min") + train_losses.append(train_loss) + train_accs.append(train_acc) + + fig, gs = braintools.visualize.get_figure(1, 2, 3, 4) + fig.add_subplot(gs[0]) + plt.plot(np.asarray(train_losses)) + plt.xlabel("Epoch") + plt.ylabel("Loss") + fig.add_subplot(gs[1]) + plt.plot(np.asarray(train_accs)) + plt.xlabel("Epoch") + plt.ylabel("Accuracy") + + visualize(X_test[:4]) diff --git a/examples/202_mnist_lif_readout.py b/examples/202_mnist_lif_readout.py new file mode 100644 index 000000000..3b7433e4a --- /dev/null +++ b/examples/202_mnist_lif_readout.py @@ -0,0 +1,176 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +import argparse +import time + +import brainpy +import braintools +import brainunit as u +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np +from datasets import load_dataset + +import brainstate + +parser = argparse.ArgumentParser(description='LIF MNIST Training') +parser.add_argument('-T', default=100, type=int, help='simulating time-steps') +parser.add_argument('-platform', default='cpu', help='device') +parser.add_argument('-batch', default=64, type=int, help='batch size') +parser.add_argument('-epochs', default=15, type=int, metavar='N', help='number of total epochs to run') +parser.add_argument('-out-dir', type=str, default='./logs', help='root dir for saving logs and checkpoint') +parser.add_argument('-lr', default=1e-3, type=float, help='learning rate') +parser.add_argument('-tau', default=2.0, type=float, help='parameter tau of LIF neuron') +args = parser.parse_args() +print(args) + + +class SNN(brainstate.nn.Module): + def __init__(self, tau): + super().__init__() + self.l1 = brainstate.nn.Linear( + 28 * 28, 10, b_init=None, w_init=braintools.init.LecunNormal(scale=10., unit=u.mA)) + self.l2 = brainpy.LIF(10, V_rest=0. * u.mV, V_reset=0. * u.mV, V_th=1. * u.mV, tau=tau * u.ms) + + def update(self, x): + return self.l2(self.l1(x)) + + def predict(self, x): + spikes = self.l2(self.l1(x)) + return self.l2.V.value, spikes + + +with brainstate.environ.context(dt=1.0 * u.ms): + net = SNN(args.tau) + + dataset = load_dataset('mnist') + # images + X_train = np.array(np.stack(dataset['train']['image']), dtype=np.uint8) + X_test = np.array(np.stack(dataset['test']['image']), dtype=np.uint8) + X_train = (X_train / 255).reshape(-1, 28 * 28).astype(jnp.float32) + X_test = (X_test / 255).reshape(-1, 28 * 28).astype(jnp.float32) + # labels + Y_train = np.array(dataset['train']['label'], dtype=np.int32) + Y_test = np.array(dataset['test']['label'], dtype=np.int32) + + + @brainstate.transform.jit + def predict(xs): + brainstate.nn.init_all_states(net, xs.shape[0]) + xs = (xs + 0.02) + xs = brainstate.random.rand(args.T, *xs.shape) < xs + vs, outs = brainstate.transform.for_loop(net.predict, xs) + return vs, outs + + + def visualize(xs): + vs, outs = predict(xs) + vs = np.asarray(vs.to_decimal(u.mV)) + fig, gs = braintools.visualize.get_figure(4, 2, 3., 6.) + for i in range(4): + ax = fig.add_subplot(gs[i, 0]) + i_indice, n_indices = np.where(outs[:, i]) + ax.plot(i_indice, n_indices, 'r.', markersize=1) + ax.set_xlim([0, args.T]) + ax.set_ylim([0, net.l2.varshape[0]]) + ax = fig.add_subplot(gs[i, 1]) + ax.plot(vs[:, i]) + ax.set_xlim([0, args.T]) + plt.show() + + + # visualization of the spiking activity + visualize(X_test[:4]) + + + @brainstate.transform.jit + def loss_fun(xs, ys): + # initialize states + brainstate.nn.init_all_states(net, xs.shape[0]) + + # encoding inputs as spikes + xs = brainstate.random.rand(args.T, *xs.shape) < xs + + # shared arguments for looping over time + outs = brainstate.transform.for_loop(net.update, xs) + out_fr = u.math.mean(outs, axis=0) # [T, B, C] -> [B, C] + ys_onehot = brainstate.nn.one_hot(ys, 10, dtype=float) + l = braintools.metric.squared_error(out_fr, ys_onehot).mean() + n = u.math.sum(out_fr.argmax(1) == ys) + return l, n + + + # gradient function + grad_fun = brainstate.transform.grad(loss_fun, net.states(brainstate.ParamState), has_aux=True, return_value=True) + + # optimizer + optimizer = braintools.optim.Adam(lr=args.lr) + optimizer.register_trainable_weights(net.states(brainstate.ParamState)) + + + # train + @brainstate.transform.jit + def train(xs, ys): + print('compiling...') + + grads, l, n = grad_fun(xs, ys) + optimizer.update(grads) + return l, n + + + # training loop + for epoch_i in range(args.epochs): + key = brainstate.random.split_key() + X_train = brainstate.random.shuffle(X_train, key=key) + Y_train = brainstate.random.shuffle(Y_train, key=key) + + # training phase + t0 = time.time() + loss, train_acc = [], 0. + for i in range(0, X_train.shape[0], args.batch): + X = X_train[i: i + args.batch] + Y = Y_train[i: i + args.batch] + l, correct_num = train(X, Y) + loss.append(l) + train_acc += correct_num + train_acc /= X_train.shape[0] + train_loss = jnp.mean(jnp.asarray(loss)) + optimizer.lr.step_epoch() + + # testing phase + loss, test_acc = [], 0. + for i in range(0, X_test.shape[0], args.batch): + X = X_test[i: i + args.batch] + Y = Y_test[i: i + args.batch] + l, correct_num = loss_fun(X, Y) + loss.append(l) + test_acc += correct_num + test_acc /= X_test.shape[0] + test_loss = jnp.mean(jnp.asarray(loss)) + + t = (time.time() - t0) / 60 + print(f'epoch {epoch_i}, used {t:.3f} min, ' + f'train loss = {train_loss:.4f}, acc = {train_acc:.4f}, ' + f'test loss = {test_loss:.4f}, acc = {test_acc:.4f}') + + # inference + correct_num = 0. + for i in range(0, X_test.shape[0], 512): + X = X_test[i: i + 512] + Y = Y_test[i: i + 512] + correct_num += loss_fun(X, Y)[1] + print('Max test accuracy: ', correct_num / X_test.shape[0]) diff --git a/examples/Susin_Destexhe_2021_gamma_oscillation.py b/examples/Susin_Destexhe_2021_gamma_oscillation.py new file mode 100644 index 000000000..2024abb2b --- /dev/null +++ b/examples/Susin_Destexhe_2021_gamma_oscillation.py @@ -0,0 +1,273 @@ +# Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# +# Implementation of the paper: +# +# - Susin, Eduarda, and Alain Destexhe. “Integration, coincidence detection and resonance in networks of spiking neurons expressing gamma oscillations and asynchronous states.” PLoS computational biology 17.9 (2021): e1009416. +# + +import braintools +import brainunit as u +import matplotlib.pyplot as plt +import numpy as np +from scipy.signal import kaiserord, lfilter, firwin, hilbert + +import brainpy +import brainstate + +# Table 1: specific neuron model parameters +RS_par = dict( + Vth=-40 * u.mV, delta=2. * u.mV, tau_ref=5. * u.ms, tau_w=500 * u.ms, + a=4 * u.nS, b=20 * u.pA, C=150 * u.pF, gL=10 * u.nS, EL=-65 * u.mV, V_reset=-65 * u.mV, + E_e=0. * u.mV, E_i=-80. * u.mV +) +FS_par = dict( + Vth=-47.5 * u.mV, delta=0.5 * u.mV, tau_ref=5. * u.ms, tau_w=500 * u.ms, + a=0 * u.nS, b=0 * u.pA, C=150 * u.pF, gL=10 * u.nS, EL=-65 * u.mV, V_reset=-65 * u.mV, + E_e=0. * u.mV, E_i=-80. * u.mV +) +Ch_par = dict( + Vth=-47.5 * u.mV, delta=0.5 * u.mV, tau_ref=1. * u.ms, tau_w=50 * u.ms, + a=80 * u.nS, b=150 * u.pA, C=150 * u.pF, gL=10 * u.nS, EL=-58 * u.mV, V_reset=-65 * u.mV, + E_e=0. * u.mV, E_i=-80. * u.mV, +) + + +class AdEx(brainpy.Neuron): + def __init__( + self, + in_size, + # neuronal parameters + Vth=-40 * u.mV, delta=2. * u.mV, tau_ref=5. * u.ms, tau_w=500 * u.ms, + a=4 * u.nS, b=20 * u.pA, C=150 * u.pF, + gL=10 * u.nS, EL=-65 * u.mV, V_reset=-65 * u.mV, V_sp_th=-40. * u.mV, + # synaptic parameters + tau_e=1.5 * u.ms, tau_i=7.5 * u.ms, E_e=0. * u.mV, E_i=-80. * u.mV, + # other parameters + V_initializer=braintools.init.Uniform(-65., -50., unit=u.mV), + w_initializer=braintools.init.Constant(0. * u.pA), + ge_initializer=braintools.init.Constant(0. * u.nS), + gi_initializer=braintools.init.Constant(0. * u.nS), + ): + super().__init__(in_size=in_size) + + # neuronal parameters + self.Vth = Vth + self.delta = delta + self.tau_ref = tau_ref + self.tau_w = tau_w + self.a = a + self.b = b + self.C = C + self.gL = gL + self.EL = EL + self.V_reset = V_reset + self.V_sp_th = V_sp_th + + # synaptic parameters + self.tau_e = tau_e + self.tau_i = tau_i + self.E_e = E_e + self.E_i = E_i + + # other parameters + self.V_initializer = V_initializer + self.w_initializer = w_initializer + self.ge_initializer = ge_initializer + self.gi_initializer = gi_initializer + + def init_state(self): + # neuronal variables + self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape)) + self.w = brainstate.HiddenState(braintools.init.param(self.w_initializer, self.varshape)) + self.t_last_spike = brainstate.HiddenState( + braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape) + ) + self.spike = brainstate.HiddenState(braintools.init.param(lambda s: u.math.zeros(s, bool), self.varshape)) + + # synaptic parameters + self.ge = brainstate.HiddenState(braintools.init.param(self.ge_initializer, self.varshape)) + self.gi = brainstate.HiddenState(braintools.init.param(self.gi_initializer, self.varshape)) + + def dV(self, V, w, ge, gi, Iext): + I = ge * (self.E_e - V) + gi * (self.E_i - V) + Iext = self.sum_current_inputs(Iext) + dVdt = (self.gL * self.delta * u.math.exp((V - self.Vth) / self.delta) + - w + self.gL * (self.EL - V) + I + Iext) / self.C + return dVdt + + def dw(self, w, V): + dwdt = (self.a * (V - self.EL) - w) / self.tau_w + return dwdt + + def update(self, x=0. * u.pA): + # numerical integration + ge = brainstate.nn.exp_euler_step(lambda g: -g / self.tau_e, self.ge.value) + ge = self.sum_delta_inputs(ge, label='ge') + gi = brainstate.nn.exp_euler_step(lambda g: -g / self.tau_i, self.gi.value) + gi = self.sum_delta_inputs(gi, label='gi') + V = brainstate.nn.exp_euler_step(self.dV, self.V.value, self.w.value, self.ge.value, self.gi.value, x) + V = self.sum_delta_inputs(V, label='V') + w = brainstate.nn.exp_euler_step(self.dw, self.w.value, self.V.value) + # spike detection + t = brainstate.environ.get('t') + refractory = (t - self.t_last_spike.value) <= self.tau_ref + V = u.math.where(refractory, self.V.value, V) + spike = V >= self.V_sp_th + self.V.value = u.math.where(spike, self.V_reset, V) + self.w.value = u.math.where(spike, w + self.b, w) + self.ge.value = ge + self.gi.value = gi + self.spike.value = spike + self.t_last_spike.value = u.math.where(spike, t, self.t_last_spike.value) + return spike + + +def get_inputs(c_low, c_high, t_transition, t_min_plato, t_max_plato, t_gap, t_total): + t = 0 + dt = brainstate.environ.get_dt() + num_gap = int(t_gap / dt) + num_total = int(t_total / dt) + num_transition = int(t_transition / dt) + + inputs = [] + ramp_up = u.math.linspace(c_low, c_high, num_transition) + ramp_down = u.math.linspace(c_high, c_low, num_transition) + plato_base = u.math.ones(num_gap) * c_low + while t < num_total: + num_plato = int(brainstate.random.uniform(low=t_min_plato, high=t_max_plato) / dt) + inputs.extend([plato_base, ramp_up, np.ones(num_plato) * c_high, ramp_down]) + t += (num_gap + num_transition + num_plato + num_transition) + return u.math.concatenate(inputs)[:num_total] + + +def signal_phase_by_Hilbert(signal, signal_time, low_cut, high_cut, sampling_space): + # sampling_space: in seconds (no units) + # signal_time: in seconds (no units) + # low_cut: in Hz (no units)(band to filter) + # high_cut: in Hz (no units)(band to filter) + + signal = signal - np.mean(signal) + width = 5.0 # The desired width in Hz of the transition from pass to stop + ripple_db = 60.0 # The desired attenuation in the stop band, in dB. + sampling_rate = 1. / sampling_space + Nyquist = sampling_rate / 2. + + num_taps, beta = kaiserord(ripple_db, width / Nyquist) + if num_taps % 2 == 0: + num_taps = num_taps + 1 # Numtaps must be odd + taps = firwin(num_taps, [low_cut / Nyquist, high_cut / Nyquist], window=('kaiser', beta), + pass_zero=False, scale=True) + filtered_signal = lfilter(taps, 1.0, signal) + delay = 0.5 * (num_taps - 1) / sampling_rate # To corrected to zero-phase + delay_index = int(np.floor(delay * sampling_rate)) + filtered_signal = filtered_signal[num_taps - 1:] # taking out the "corrupted" signal + # correcting the delay and taking out the "corrupted" signal part + filtered_time = signal_time[num_taps - 1:] - delay + cutted_signal = signal[(num_taps - 1 - delay_index): (len(signal) - (num_taps - 1 - delay_index))] + + # -------------------------------------------------------------------------- + # The hilbert transform are very slow when the signal has odd lenght, + # This part check if the length is odd, and if this is the case it adds a zero in the end + # of all the vectors related to the filtered Signal: + if len(filtered_signal) % 2 != 0: # If the lengh is odd + tmp1 = filtered_signal.tolist() + tmp1.append(0) + tmp2 = filtered_time.tolist() + tmp2.append((len(filtered_time) + 1) * sampling_space + filtered_time[0]) + tmp3 = cutted_signal.tolist() + tmp3.append(0) + filtered_signal = np.asarray(tmp1) + filtered_time = np.asarray(tmp2) + cutted_signal = np.asarray(tmp3) + # -------------------------------------------------------------------------- + + ht_filtered_signal = hilbert(filtered_signal) + envelope = np.abs(ht_filtered_signal) + phase = np.angle(ht_filtered_signal) # The phase is between -pi and pi in radians + + return filtered_time, filtered_signal, cutted_signal, envelope, phase + + +def visualize_simulation_results( + times, spikes, example_potentials, varied_rates, + xlim=None, t_lfp_start=None, t_lfp_end=None, filename=None +): + times = times.to_decimal(u.ms) + varied_rates = varied_rates.to_decimal(u.Hz) + example_potentials = {k: v.to_decimal(u.mV) for k, v in example_potentials.items()} + + fig, gs = braintools.visualize.get_figure(7, 1, 1, 12) + # 1. input firing rate + ax = fig.add_subplot(gs[0]) + plt.plot(times, varied_rates) + if xlim is None: + xlim = (0, times[-1]) + else: + xlim = (xlim[0].to_decimal(u.ms), xlim[1].to_decimal(u.ms)) + ax.set_xlim(*xlim) + ax.set_xticks([]) + ax.set_ylabel('External\nRate (Hz)') + + # 2. inhibitory cell rater plot + ax = fig.add_subplot(gs[1: 3]) + i = 0 + y_ticks = ([], []) + for key, (sp_matrix, sp_type) in spikes.items(): + iis, sps = np.where(sp_matrix) + tts = times[iis] + plt.scatter(tts, sps + i, s=1, label=key) + y_ticks[0].append(i + sp_matrix.shape[1] / 2) + y_ticks[1].append(key) + i += sp_matrix.shape[1] + ax.set_xlim(*xlim) + ax.set_xlabel('') + ax.set_ylabel('Neuron Index') + ax.set_xticks([]) + ax.set_yticks(*y_ticks) + + # 3. example membrane potential + ax = fig.add_subplot(gs[3: 5]) + for key, potential in example_potentials.items(): + vs = np.where(spikes[key][0][:, 0], 0, potential) + plt.plot(times, vs, label=key) + ax.set_xlim(*xlim) + ax.set_xticks([]) + ax.set_ylabel('V (mV)') + ax.legend() + + # 4. LFP + ax = fig.add_subplot(gs[5:7]) + ax.set_xlim(*xlim) + t1 = int(t_lfp_start / brainstate.environ.get_dt()) if t_lfp_start is not None else 0 + t2 = int(t_lfp_end / brainstate.environ.get_dt()) if t_lfp_end is not None else len(times) + times = times[t1: t2] + lfp = 0 + for sp_matrix, sp_type in spikes.values(): + lfp += braintools.metric.unitary_LFP(times, sp_matrix[t1: t2], sp_type) + phase_ts, filtered, cutted, envelope, _ = signal_phase_by_Hilbert( + lfp, times * 1e-3, 30, 50, brainstate.environ.get_dt() / u.second + ) + plt.plot(phase_ts * 1e3, cutted, color='k', label='Raw LFP') + plt.plot(phase_ts * 1e3, filtered, color='orange', label="Filtered LFP (30-50 Hz)") + plt.plot(phase_ts * 1e3, envelope, color='purple', label="Hilbert Envelope") + plt.legend(loc='best') + plt.xlabel('Time (ms)') + + # save or show + if filename: + plt.savefig(filename, dpi=500) + plt.show() diff --git a/examples/dynamics_analysis/1d_qif.py b/examples_version2/dynamics_analysis/1d_qif.py similarity index 100% rename from examples/dynamics_analysis/1d_qif.py rename to examples_version2/dynamics_analysis/1d_qif.py diff --git a/examples/dynamics_analysis/2d_fitzhugh_nagumo_model.py b/examples_version2/dynamics_analysis/2d_fitzhugh_nagumo_model.py similarity index 100% rename from examples/dynamics_analysis/2d_fitzhugh_nagumo_model.py rename to examples_version2/dynamics_analysis/2d_fitzhugh_nagumo_model.py diff --git a/examples/dynamics_analysis/2d_mean_field_QIF.py b/examples_version2/dynamics_analysis/2d_mean_field_QIF.py similarity index 100% rename from examples/dynamics_analysis/2d_mean_field_QIF.py rename to examples_version2/dynamics_analysis/2d_mean_field_QIF.py diff --git a/examples/dynamics_analysis/3d_reduced_trn_model.py b/examples_version2/dynamics_analysis/3d_reduced_trn_model.py similarity index 100% rename from examples/dynamics_analysis/3d_reduced_trn_model.py rename to examples_version2/dynamics_analysis/3d_reduced_trn_model.py diff --git a/examples/dynamics_analysis/4d_HH_model.py b/examples_version2/dynamics_analysis/4d_HH_model.py similarity index 100% rename from examples/dynamics_analysis/4d_HH_model.py rename to examples_version2/dynamics_analysis/4d_HH_model.py diff --git a/examples/dynamics_analysis/highdim_RNN_Analysis.py b/examples_version2/dynamics_analysis/highdim_RNN_Analysis.py similarity index 100% rename from examples/dynamics_analysis/highdim_RNN_Analysis.py rename to examples_version2/dynamics_analysis/highdim_RNN_Analysis.py diff --git a/examples/dynamics_simulation/COBA.py b/examples_version2/dynamics_simulation/COBA.py similarity index 100% rename from examples/dynamics_simulation/COBA.py rename to examples_version2/dynamics_simulation/COBA.py diff --git a/examples/dynamics_simulation/decision_making_network.py b/examples_version2/dynamics_simulation/decision_making_network.py similarity index 100% rename from examples/dynamics_simulation/decision_making_network.py rename to examples_version2/dynamics_simulation/decision_making_network.py diff --git a/examples/dynamics_simulation/ei_nets.py b/examples_version2/dynamics_simulation/ei_nets.py similarity index 100% rename from examples/dynamics_simulation/ei_nets.py rename to examples_version2/dynamics_simulation/ei_nets.py diff --git a/examples/dynamics_simulation/hh_model.py b/examples_version2/dynamics_simulation/hh_model.py similarity index 100% rename from examples/dynamics_simulation/hh_model.py rename to examples_version2/dynamics_simulation/hh_model.py diff --git a/examples/dynamics_simulation/stdp.py b/examples_version2/dynamics_simulation/stdp.py similarity index 100% rename from examples/dynamics_simulation/stdp.py rename to examples_version2/dynamics_simulation/stdp.py diff --git a/examples/dynamics_simulation/whole_brain_simulation_with_fhn.py b/examples_version2/dynamics_simulation/whole_brain_simulation_with_fhn.py similarity index 100% rename from examples/dynamics_simulation/whole_brain_simulation_with_fhn.py rename to examples_version2/dynamics_simulation/whole_brain_simulation_with_fhn.py diff --git a/examples/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py b/examples_version2/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py similarity index 100% rename from examples/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py rename to examples_version2/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py diff --git a/examples/dynamics_training/Song_2016_EI_RNN.py b/examples_version2/dynamics_training/Song_2016_EI_RNN.py similarity index 100% rename from examples/dynamics_training/Song_2016_EI_RNN.py rename to examples_version2/dynamics_training/Song_2016_EI_RNN.py diff --git a/examples/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py b/examples_version2/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py similarity index 100% rename from examples/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py rename to examples_version2/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py diff --git a/examples/dynamics_training/echo_state_network.py b/examples_version2/dynamics_training/echo_state_network.py similarity index 100% rename from examples/dynamics_training/echo_state_network.py rename to examples_version2/dynamics_training/echo_state_network.py diff --git a/examples/dynamics_training/integrate_brainpy_into_flax-convlstm.py b/examples_version2/dynamics_training/integrate_brainpy_into_flax-convlstm.py similarity index 100% rename from examples/dynamics_training/integrate_brainpy_into_flax-convlstm.py rename to examples_version2/dynamics_training/integrate_brainpy_into_flax-convlstm.py diff --git a/examples/dynamics_training/integrate_brainpy_into_flax-lif.py b/examples_version2/dynamics_training/integrate_brainpy_into_flax-lif.py similarity index 100% rename from examples/dynamics_training/integrate_brainpy_into_flax-lif.py rename to examples_version2/dynamics_training/integrate_brainpy_into_flax-lif.py diff --git a/examples/dynamics_training/integrate_flax_into_brainpy.py b/examples_version2/dynamics_training/integrate_flax_into_brainpy.py similarity index 100% rename from examples/dynamics_training/integrate_flax_into_brainpy.py rename to examples_version2/dynamics_training/integrate_flax_into_brainpy.py diff --git a/examples/dynamics_training/integrator_rnn.py b/examples_version2/dynamics_training/integrator_rnn.py similarity index 100% rename from examples/dynamics_training/integrator_rnn.py rename to examples_version2/dynamics_training/integrator_rnn.py diff --git a/examples/dynamics_training/reservoir-mnist.py b/examples_version2/dynamics_training/reservoir-mnist.py similarity index 100% rename from examples/dynamics_training/reservoir-mnist.py rename to examples_version2/dynamics_training/reservoir-mnist.py diff --git a/examples/training_ann_models/mnist-cnn.py b/examples_version2/training_ann_models/mnist-cnn.py similarity index 100% rename from examples/training_ann_models/mnist-cnn.py rename to examples_version2/training_ann_models/mnist-cnn.py diff --git a/examples/training_ann_models/mnist_ResNet.py b/examples_version2/training_ann_models/mnist_ResNet.py similarity index 100% rename from examples/training_ann_models/mnist_ResNet.py rename to examples_version2/training_ann_models/mnist_ResNet.py diff --git a/examples/training_snn_models/readme.md b/examples_version2/training_snn_models/readme.md similarity index 100% rename from examples/training_snn_models/readme.md rename to examples_version2/training_snn_models/readme.md diff --git a/examples/training_snn_models/spikebased_bp_for_cifar10.py b/examples_version2/training_snn_models/spikebased_bp_for_cifar10.py similarity index 100% rename from examples/training_snn_models/spikebased_bp_for_cifar10.py rename to examples_version2/training_snn_models/spikebased_bp_for_cifar10.py diff --git a/images/logo-banner.png b/images/logo-banner.png new file mode 100644 index 000000000..1f3e0a2f4 Binary files /dev/null and b/images/logo-banner.png differ diff --git a/docs_version2/_static/logo-square.png b/images/logo-square.png similarity index 100% rename from docs_version2/_static/logo-square.png rename to images/logo-square.png diff --git a/images/logo.png b/images/logo.png index 1f3e0a2f4..8c1d9eddd 100644 Binary files a/images/logo.png and b/images/logo.png differ diff --git a/requirements-doc.txt b/requirements-doc.txt index eded93d73..453a5c79f 100644 --- a/requirements-doc.txt +++ b/requirements-doc.txt @@ -15,3 +15,4 @@ sphinx-copybutton>=0.5.0 sphinx-remove-toctrees jupyter-sphinx>=0.3.2 sphinx-design +sphinx_math_dollar diff --git a/requirements.txt b/requirements.txt index b8271d137..f926fc0b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,6 @@ numpy brainstate>=0.1.6 brainunit brainevent>=0.0.4 -braintools>=0.0.9 +braintools>=0.1.0 jax tqdm