diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index e8f70602b..670530eb5 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -3,13 +3,12 @@
name: Continuous Integration
+
on:
push:
branches:
- - '**' # matches every branch
+ - main
pull_request:
- branches:
- - '**' # matches every branch
permissions:
diff --git a/.gitignore b/.gitignore
index 528109d43..7d3278d07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -236,5 +236,4 @@ cython_debug/
/docs_state/_build/
/docs_state/_static/logos/
/docs_state/changelog.md
-/examples_classic/dynamics_training/data/
-/docs/
+/examples/dynamics_training/data/
diff --git a/brainpy/__init__.py b/brainpy/__init__.py
index 336e5b88f..07da9136f 100644
--- a/brainpy/__init__.py
+++ b/brainpy/__init__.py
@@ -14,8 +14,8 @@
# limitations under the License.
# ==============================================================================
-__version__ = "2.7.3"
-__version_info__ = (2, 7, 3)
+__version__ = "2.7.4"
+__version_info__ = tuple(map(int, __version__.split(".")))
from brainpy import _errors as errors
@@ -142,7 +142,6 @@
ArrayCollector as ArrayCollector,
Collector as Collector,
)
-from brainpy import state
from brainpy.deprecations import deprecation_getattr
@@ -151,7 +150,6 @@
if __name__ == '__main__':
- state
connect
initialize, # weight initialization
optim, # gradient descent optimizers
diff --git a/brainpy/context.py b/brainpy/context.py
index 769389bd8..d9d6db78a 100644
--- a/brainpy/context.py
+++ b/brainpy/context.py
@@ -21,6 +21,7 @@
from typing import Any, Union
import brainstate
+from brainpy.math.defaults import env
from brainpy.tools.dicts import DotDict
__all__ = [
@@ -40,14 +41,14 @@ def __init__(self):
@property
def dt(self):
- return brainstate.environ.get_dt()
+ return brainstate.environ.get_dt(env=env)
@dt.setter
def dt(self, dt):
self.set_dt(dt)
def set_dt(self, dt: Union[int, float]):
- brainstate.environ.set(dt=dt)
+ brainstate.environ.set(dt=dt, env=env)
def load(self, key, value: Any = None, desc: str = None):
"""Load the shared data by the ``key``.
@@ -57,7 +58,7 @@ def load(self, key, value: Any = None, desc: str = None):
value (Any): the default value when ``key`` is not defined in the shared.
desc: (str): the description of the key.
"""
- return brainstate.environ.get(key, value, desc)
+ return brainstate.environ.get(key, value, desc, env=env)
def save(self, *args, **kwargs) -> None:
"""Save shared arguments in the global context."""
@@ -65,8 +66,8 @@ def save(self, *args, **kwargs) -> None:
for i in range(0, len(args), 2):
identifier = args[i]
data = args[i + 1]
- brainstate.environ.set(**{identifier: data})
- brainstate.environ.set(**kwargs)
+ brainstate.environ.set(**{identifier: data}, env=env)
+ brainstate.environ.set(**kwargs, env=env)
def __setitem__(self, key, value):
"""Enable setting the shared item by ``bp.share[key] = value``."""
@@ -78,7 +79,7 @@ def __getitem__(self, item):
def get_shargs(self) -> DotDict:
"""Get all shared arguments in the global context."""
- return DotDict(brainstate.environ.all())
+ return DotDict(brainstate.environ.all(env=env))
share = _ShareContext()
diff --git a/brainpy/dyn/others/input.py b/brainpy/dyn/others/input.py
index 7a3d4a5d8..d8732fdd8 100644
--- a/brainpy/dyn/others/input.py
+++ b/brainpy/dyn/others/input.py
@@ -228,7 +228,7 @@ def __init__(
self.reset_state(self.mode)
def update(self):
- spikes = bm.random.rand_like(self.spike) <= (self.freqs * share['dt'] / 1000.)
+ spikes = bm.random.rand_like(self.spike.value) <= (self.freqs * share['dt'] / 1000.)
spikes = bm.asarray(spikes, dtype=self.spk_type)
# import jax
# jax.debug.print('PoissonGroup: freqs = {f}, spikes = {s}', f=self.freqs, s=spikes)
diff --git a/brainpy/inputs/currents.py b/brainpy/inputs/currents.py
index 09d3f58fe..6f313700a 100644
--- a/brainpy/inputs/currents.py
+++ b/brainpy/inputs/currents.py
@@ -18,6 +18,7 @@
import braintools
import brainstate
+import brainpy.math
__all__ = [
'section_input',
@@ -59,7 +60,7 @@ def section_input(values, durations, dt=None, return_length=False):
current_and_duration
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.section(values, durations, return_length=return_length)
@@ -88,7 +89,7 @@ def constant_input(I_and_duration, dt=None):
current_and_duration : tuple
(The formatted current, total duration)
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.constant(I_and_duration)
@@ -136,7 +137,7 @@ def spike_input(sp_times, sp_lens, sp_sizes, duration, dt=None):
current : bm.ndarray
The formatted input current.
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.spike(sp_times, sp_lens, sp_sizes, duration)
@@ -175,7 +176,7 @@ def ramp_input(c_start, c_end, duration, t_start=0, t_end=None, dt=None):
current : bm.ndarray
The formatted current
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.ramp(c_start, c_end, duration, t_start, t_end)
@@ -210,7 +211,7 @@ def wiener_process(duration, dt=None, n=1, t_start=0., t_end=None, seed=None):
seed: int
The noise seed.
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.wiener_process(duration, sigma=1.0, n=n, t_start=t_start, t_end=t_end, seed=seed)
@@ -242,7 +243,7 @@ def ou_process(mean, sigma, tau, duration, dt=None, n=1, t_start=0., t_end=None,
seed: optional, int
The random seed.
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.ou_process(mean, sigma, tau, duration, n=n, t_start=t_start, t_end=t_end, seed=seed)
@@ -267,7 +268,7 @@ 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).
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else dt):
return braintools.input.sinusoidal(amplitude, frequency, duration, t_start=t_start, t_end=t_end, bias=bias)
@@ -292,5 +293,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).
"""
- with brainstate.environ.context(dt=brainstate.environ.get_dt() if dt is None else dt):
+ with brainstate.environ.context(dt=brainpy.math.get_dt() if dt is None else 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/math/defaults.py b/brainpy/math/defaults.py
index ff6cd545b..6ffb50146 100644
--- a/brainpy/math/defaults.py
+++ b/brainpy/math/defaults.py
@@ -19,6 +19,8 @@
from .modes import NonBatchingMode
from .scales import IdScaling
+env = brainstate.environ.EnvironmentState()
+
class setting:
def __init__(self):
@@ -42,79 +44,80 @@ def __init__(self):
# default return array type
# numpy_func_return='jax_array', # 'bp_array','jax_array'
numpy_func_return='bp_array', # 'bp_array','jax_array'
+ env=env,
)
@property
def mode(self):
- return brainstate.environ.get('mode')
+ return brainstate.environ.get('mode', env=env)
@property
def membrane_scaling(self):
- return brainstate.environ.get('membrane_scaling')
+ return brainstate.environ.get('membrane_scaling', env=env)
@property
def dt(self):
- return brainstate.environ.get('dt')
+ return brainstate.environ.get('dt', env=env)
@property
def bool_(self):
- return brainstate.environ.get('bool_')
+ return brainstate.environ.get('bool_', env=env)
@property
def int_(self):
- return brainstate.environ.get('int_')
+ return brainstate.environ.get('int_', env=env)
@property
def float_(self):
- return brainstate.environ.get('float_')
+ return brainstate.environ.get('float_', env=env)
@property
def complex_(self):
- return brainstate.environ.get('complex_')
+ return brainstate.environ.get('complex_', env=env)
@property
def bp_object_as_pytree(self):
- return brainstate.environ.get('bp_object_as_pytree')
+ return brainstate.environ.get('bp_object_as_pytree', env=env)
@property
def numpy_func_return(self):
- return brainstate.environ.get('numpy_func_return')
+ return brainstate.environ.get('numpy_func_return', env=env)
@mode.setter
def mode(self, value):
- brainstate.environ.set(mode=value)
+ brainstate.environ.set(mode=value, env=env)
@membrane_scaling.setter
def membrane_scaling(self, value):
- brainstate.environ.set(membrane_scaling=value)
+ brainstate.environ.set(membrane_scaling=value, env=env)
@dt.setter
def dt(self, value):
- brainstate.environ.set(dt=value)
+ brainstate.environ.set(dt=value, env=env)
@bool_.setter
def bool_(self, value):
- brainstate.environ.set(bool_=value)
+ brainstate.environ.set(bool_=value, env=env)
@int_.setter
def int_(self, value):
- brainstate.environ.set(int_=value)
+ brainstate.environ.set(int_=value, env=env)
@float_.setter
def float_(self, value):
- brainstate.environ.set(float_=value)
+ brainstate.environ.set(float_=value, env=env)
@complex_.setter
def complex_(self, value):
- brainstate.environ.set(complex_=value)
+ brainstate.environ.set(complex_=value, env=env)
@bp_object_as_pytree.setter
def bp_object_as_pytree(self, value):
- brainstate.environ.set(bp_object_as_pytree=value)
+ brainstate.environ.set(bp_object_as_pytree=value, env=env)
@numpy_func_return.setter
def numpy_func_return(self, value):
- brainstate.environ.set(numpy_func_return=value)
+ brainstate.environ.set(numpy_func_return=value, env=env)
defaults = setting()
diff --git a/brainpy/state/__init__.py b/brainpy/state/__init__.py
deleted file mode 100644
index 8fbeed141..000000000
--- a/brainpy/state/__init__.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 ._base import __all__ as base_all
-from ._exponential import *
-from ._exponential import __all__ as exp_all
-from ._hh import *
-from ._hh import __all__ as hh_all
-from ._inputs import *
-from ._inputs import __all__ as inputs_all
-from ._izhikevich import *
-from ._izhikevich import __all__ as izh_all
-from ._lif import *
-from ._lif import __all__ as neuron_all
-from ._projection import *
-from ._projection import __all__ as proj_all
-from ._readout import *
-from ._readout import __all__ as readout_all
-from ._stp import *
-from ._stp import __all__ as stp_all
-from ._synapse import *
-from ._synapse import __all__ as synapse_all
-from ._synaptic_projection import *
-from ._synaptic_projection import __all__ as synproj_all
-from ._synouts import *
-from ._synouts import __all__ as synout_all
-
-__main__ = inputs_all + neuron_all + izh_all + hh_all + readout_all + stp_all + synapse_all
-__main__ = __main__ + synout_all + base_all + exp_all + proj_all + synproj_all
-del inputs_all, neuron_all, izh_all, hh_all, readout_all, stp_all, synapse_all, synout_all, base_all
-del exp_all, proj_all, synproj_all
diff --git a/brainpy/state/_base.py b/brainpy/state/_base.py
deleted file mode 100644
index 7b17dd78f..000000000
--- a/brainpy/state/_base.py
+++ /dev/null
@@ -1,854 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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, Union, TypeVar, Callable, Optional
-
-import brainstate
-import braintools
-import numpy as np
-from brainstate.mixin import ParamDescriber
-from brainstate.typing import ArrayLike, Size
-
-T = TypeVar('T')
-
-__all__ = [
- 'Dynamics', 'Neuron', 'Synapse',
-]
-
-
-def _input_label_start(label: str):
- # unify the input label repr.
- return f'{label} // '
-
-
-def _input_label_repr(name: str, label: Optional[str] = None):
- # unify the input label repr.
- return name if label is None else (_input_label_start(label) + str(name))
-
-
-class Dynamics(brainstate.nn.Dynamics):
- __module__ = 'brainpy.state'
-
- def __init__(self, in_size: Size, name: Optional[str] = None):
- # initialize
- super().__init__(name=name, in_size=in_size)
-
- # current inputs
- self._current_inputs = None
-
- # delta inputs
- self._delta_inputs = None
-
- @property
- def current_inputs(self):
- """
- Get the dictionary of current inputs registered with this dynamics model.
-
- Current inputs represent direct input currents that flow into the model.
-
- Returns
- -------
- dict or None
- A dictionary mapping keys to current input functions or values,
- or None if no current inputs have been registered.
-
- See Also
- --------
- add_current_input : Register a new current input
- sum_current_inputs : Apply and sum all current inputs
- delta_inputs : Dictionary of instantaneous change inputs
- """
- return self._current_inputs
-
- @property
- def delta_inputs(self):
- """
- Get the dictionary of delta inputs registered with this dynamics model.
-
- Delta inputs represent instantaneous changes to state variables (dX/dt).
-
- Returns
- -------
- dict or None
- A dictionary mapping keys to delta input functions or values,
- or None if no delta inputs have been registered.
-
- See Also
- --------
- add_delta_input : Register a new delta input
- sum_delta_inputs : Apply and sum all delta inputs
- current_inputs : Dictionary of direct current inputs
- """
- return self._delta_inputs
-
- def add_current_input(
- self,
- key: str,
- inp: Union[Callable, ArrayLike],
- label: Optional[str] = None
- ):
- """
- Add a current input function or array to the dynamics model.
-
- Current inputs represent direct input currents that can be accessed during
- model updates through the `sum_current_inputs()` method.
-
- Parameters
- ----------
- key : str
- Unique identifier for this current input. Used to retrieve or reference
- the input later.
- inp : Union[Callable, ArrayLike]
- The input data or function that generates input data.
- - If callable: Will be called during updates with arguments passed to `sum_current_inputs()`
- - If array-like: Will be applied once and then automatically removed from available inputs
- label : Optional[str], default=None
- Optional grouping label for the input. When provided, allows selective
- processing of inputs by label in `sum_current_inputs()`.
-
- Raises
- ------
- ValueError
- If the key has already been used for a different current input.
-
- Notes
- -----
- - Inputs with the same label can be processed together using the `label`
- parameter in `sum_current_inputs()`.
- - Non-callable inputs are consumed when used (removed after first use).
- - Callable inputs persist and can be called repeatedly.
-
- See Also
- --------
- sum_current_inputs : Sum all current inputs matching a given label
- add_delta_input : Add a delta input function or array
- """
- key = _input_label_repr(key, label)
- if self._current_inputs is None:
- self._current_inputs = dict()
- if key in self._current_inputs:
- if id(self._current_inputs[key]) != id(inp):
- raise ValueError(f'Key "{key}" has been defined and used in the current inputs of {self}.')
- self._current_inputs[key] = inp
-
- def add_delta_input(
- self,
- key: str,
- inp: Union[Callable, ArrayLike],
- label: Optional[str] = None
- ):
- """
- Add a delta input function or array to the dynamics model.
-
- Delta inputs represent instantaneous changes to the model state (i.e., dX/dt contributions).
- This method registers a function or array that provides delta inputs which will be
- accessible during model updates through the `sum_delta_inputs()` method.
-
- Parameters
- ----------
- key : str
- Unique identifier for this delta input. Used to retrieve or reference
- the input later.
- inp : Union[Callable, ArrayLike]
- The input data or function that generates input data.
- - If callable: Will be called during updates with arguments passed to `sum_delta_inputs()`
- - If array-like: Will be applied once and then automatically removed from available inputs
- label : Optional[str], default=None
- Optional grouping label for the input. When provided, allows selective
- processing of inputs by label in `sum_delta_inputs()`.
-
- Raises
- ------
- ValueError
- If the key has already been used for a different delta input.
-
- Notes
- -----
- - Inputs with the same label can be processed together using the `label`
- parameter in `sum_delta_inputs()`.
- - Non-callable inputs are consumed when used (removed after first use).
- - Callable inputs persist and can be called repeatedly.
-
- See Also
- --------
- sum_delta_inputs : Sum all delta inputs matching a given label
- add_current_input : Add a current input function or array
- """
- key = _input_label_repr(key, label)
- if self._delta_inputs is None:
- self._delta_inputs = dict()
- if key in self._delta_inputs:
- if id(self._delta_inputs[key]) != id(inp):
- raise ValueError(f'Key "{key}" has been defined and used.')
- self._delta_inputs[key] = inp
-
- def get_input(self, key: str):
- """
- Get a registered input function by its key.
-
- Retrieves either a current input or a delta input function that was previously
- registered with the given key. This method checks both current_inputs and
- delta_inputs dictionaries for the specified key.
-
- Parameters
- ----------
- key : str
- The unique identifier used when the input function was registered.
-
- Returns
- -------
- Callable or ArrayLike
- The input function or array associated with the given key.
-
- Raises
- ------
- ValueError
- If no input function is found with the specified key in either
- current_inputs or delta_inputs.
-
- See Also
- --------
- add_current_input : Register a current input function
- add_delta_input : Register a delta input function
-
- Examples
- --------
- >>> model = Dynamics(10)
- >>> model.add_current_input('stimulus', lambda t: np.sin(t))
- >>> input_func = model.get_input('stimulus')
- >>> input_func(0.5) # Returns sin(0.5)
- """
- if self._current_inputs is not None and key in self._current_inputs:
- return self._current_inputs[key]
- elif self._delta_inputs is not None and key in self._delta_inputs:
- return self._delta_inputs[key]
- else:
- raise ValueError(f'Input key {key} is not in current/delta inputs of the module {self}.')
-
- def sum_current_inputs(
- self,
- init: Any,
- *args,
- label: Optional[str] = None,
- **kwargs
- ):
- """
- Summarize all current inputs by applying and summing all registered current input functions.
-
- This method iterates through all registered current input functions (from `.current_inputs`)
- and applies them to calculate the total input current for the dynamics model. It adds all results
- to the initial value provided.
-
- Parameters
- ----------
- init : Any
- The initial value to which all current inputs will be added.
- *args
- Variable length argument list passed to each current input function.
- label : Optional[str], default=None
- If provided, only process current inputs with this label prefix.
- When None, process all current inputs regardless of label.
- **kwargs
- Arbitrary keyword arguments passed to each current input function.
-
- Returns
- -------
- Any
- The initial value plus all applicable current inputs summed together.
-
- Notes
- -----
- - Non-callable current inputs are applied once and then automatically removed from
- the current_inputs dictionary.
- - Callable current inputs remain registered for subsequent calls.
- - When a label is provided, only current inputs with keys starting with that label
- are applied.
- """
- if self._current_inputs is None:
- return init
- if label is None:
- filter_fn = lambda k: True
- else:
- label_repr = _input_label_start(label)
- filter_fn = lambda k: k.startswith(label_repr)
- for key in tuple(self._current_inputs.keys()):
- if filter_fn(key):
- out = self._current_inputs[key]
- if callable(out):
- try:
- init = init + out(*args, **kwargs)
- except Exception as e:
- raise ValueError(
- f'Error in current input value {key}: {out}\n'
- f'Error: {e}'
- ) from e
- else:
- try:
- init = init + out
- except Exception as e:
- raise ValueError(
- f'Error in current input value {key}: {out}\n'
- f'Error: {e}'
- ) from e
- self._current_inputs.pop(key)
- return init
-
- def sum_delta_inputs(
- self,
- init: Any,
- *args,
- label: Optional[str] = None,
- **kwargs
- ):
- """
- Summarize all delta inputs by applying and summing all registered delta input functions.
-
- This method iterates through all registered delta input functions (from `.delta_inputs`)
- and applies them to calculate instantaneous changes to model states. It adds all results
- to the initial value provided.
-
- Parameters
- ----------
- init : Any
- The initial value to which all delta inputs will be added.
- *args
- Variable length argument list passed to each delta input function.
- label : Optional[str], default=None
- If provided, only process delta inputs with this label prefix.
- When None, process all delta inputs regardless of label.
- **kwargs
- Arbitrary keyword arguments passed to each delta input function.
-
- Returns
- -------
- Any
- The initial value plus all applicable delta inputs summed together.
-
- Notes
- -----
- - Non-callable delta inputs are applied once and then automatically removed from
- the delta_inputs dictionary.
- - Callable delta inputs remain registered for subsequent calls.
- - When a label is provided, only delta inputs with keys starting with that label
- are applied.
- """
- if self._delta_inputs is None:
- return init
- if label is None:
- filter_fn = lambda k: True
- else:
- label_repr = _input_label_start(label)
- filter_fn = lambda k: k.startswith(label_repr)
- for key in tuple(self._delta_inputs.keys()):
- if filter_fn(key):
- out = self._delta_inputs[key]
- if callable(out):
- try:
- init = init + out(*args, **kwargs)
- except Exception as e:
- raise ValueError(
- f'Error in delta input function {key}: {out}\n'
- f'Error: {e}'
- ) from e
- else:
- try:
- init = init + out
- except Exception as e:
- raise ValueError(
- f'Error in delta input value {key}: {out}\n'
- f'Error: {e}'
- ) from e
- self._delta_inputs.pop(key)
- return init
-
- def align_pre(self, dyn: Union[ParamDescriber[T], T]) -> T:
- """
- Registers a dynamics module to execute after this module.
-
- This method establishes a sequential execution relationship where the specified
- dynamics module will be called after this module completes its update. This
- creates a feed-forward connection in the computational graph.
-
- Parameters
- ----------
- dyn : Union[ParamDescriber[T], T]
- The dynamics module to be executed after this module. Can be either:
- - An instance of Dynamics
- - A ParamDescriber that can instantiate a Dynamics object
-
- Returns
- -------
- T
- The dynamics module that was registered, allowing for method chaining.
-
- Raises
- ------
- TypeError
- If the input is not a Dynamics instance or a ParamDescriber that creates
- a Dynamics instance.
-
- Examples
- --------
- >>> import brainstate
- >>> n1 = brainpy.state.LIF(10)
- >>> n1.align_pre(brainpy.state.Expon.desc(n1.varshape)) # n2 will run after n1
- """
- if isinstance(dyn, Dynamics):
- self.add_after_update(id(dyn), dyn)
- return dyn
- elif isinstance(dyn, ParamDescriber):
- if not issubclass(dyn.cls, Dynamics):
- raise TypeError(f'The input {dyn} should be an instance of {Dynamics}.')
- if not self.has_after_update(dyn.identifier):
- self.add_after_update(
- dyn.identifier,
- dyn() if ('in_size' in dyn.kwargs or len(dyn.args) > 0) else dyn(in_size=self.varshape)
- )
- return self.get_after_update(dyn.identifier)
- else:
- raise TypeError(f'The input {dyn} should be an instance of {Dynamics} or a delayed initializer.')
-
-
-class Neuron(Dynamics):
- r"""
- Base class for all spiking neuron models.
-
- This abstract class serves as the foundation for implementing various spiking neuron
- models in the BrainPy framework. It extends the ``brainpy.state.Dynamics`` class and
- provides common functionality for spike generation, membrane potential dynamics, and
- surrogate gradient handling required for training spiking neural networks.
-
- All neuron models (e.g., IF, LIF, LIFRef, ALIF) should inherit from this class and
- implement the required abstract methods, particularly ``get_spike()`` which defines
- the spike generation mechanism.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron layer. Can be an integer for 1D input or a tuple
- 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 ``braintools.surrogate.InvSquareGrad()``. Common alternatives include:
-
- - ``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'``.
-
- - ``'soft'``: Subtract threshold from membrane potential (``V = V - V_th``).
- This allows for more biological realism and better gradient flow.
- - ``'hard'``: Apply strict reset using ``jax.lax.stop_gradient`` to set
- voltage to reset value (``V = V_reset``).
- name : str, optional
- Name identifier for the neuron layer. If ``None``, an automatic name will be
- generated. Useful for debugging and visualization.
-
- Attributes
- ----------
- spk_reset : str
- The reset mechanism used by the neuron.
- spk_fun : Callable
- The surrogate gradient function used for spike generation.
-
-
- Notes
- -----
- **Surrogate Gradients**
-
- The spike generation operation is inherently non-differentiable (a threshold function),
- which poses challenges for gradient-based learning. Surrogate gradients provide a
- differentiable approximation during the backward pass while maintaining the discrete
- spike behavior during the forward pass. This is crucial for training SNNs with
- backpropagation through time (BPTT).
-
- **Reset Mechanisms**
-
- - **Soft Reset**: More biologically plausible as it preserves information about
- how far above threshold the membrane potential was. This can encode information
- in the residual voltage and often leads to better gradient flow.
-
- - **Hard Reset**: Provides a clean reset to a fixed value, which can be easier to
- analyze mathematically but may lead to vanishing gradients in deep networks.
-
- **State Management**
-
- Neuron models typically maintain state variables (e.g., membrane potential ``V``,
- adaptation current ``a``) as ``brainstate.HiddenState`` objects. These states are:
-
- - Initialized via ``init_state(batch_size=None, **kwargs)``
- - Reset via ``reset_state(batch_size=None, **kwargs)``
- - Updated via ``update(x)`` which returns spikes for the current timestep
-
- Examples
- --------
- **Creating a Custom Neuron Model**
-
- .. code-block:: python
-
- >>> import brainstate
- >>> import brainunit as u
- >>> import braintools
- >>> import brainpy
- >>>
- >>> class SimpleNeuron(brainpy.state.Neuron):
- ... def __init__(self, in_size, V_th=1.0*u.mV, **kwargs):
- ... super().__init__(in_size, **kwargs)
- ... self.V_th = V_th
- ...
- ... def init_state(self, batch_size=None, **kwargs):
- ... self.V = brainstate.HiddenState(
- ... braintools.init.param(
- ... braintools.init.Constant(0.*u.mV),
- ... self.varshape,
- ... batch_size
- ... )
- ... )
- ...
- ... def reset_state(self, batch_size=None, **kwargs):
- ... self.V.value = braintools.init.param(
- ... braintools.init.Constant(0.*u.mV),
- ... self.varshape,
- ... batch_size
- ... )
- ...
- ... def get_spike(self, V=None):
- ... V = self.V.value if V is None else V
- ... return self.spk_fun((V - self.V_th) / self.V_th)
- ...
- ... def update(self, x):
- ... self.V.value += x
- ... return self.get_spike()
-
- **Using Built-in Neuron Models**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a LIF neuron layer
- >>> neuron = brainpy.state.LIF(
- ... in_size=100,
- ... tau=10*u.ms,
- ... V_th=1.0*u.mV,
- ... spk_fun=braintools.surrogate.ReluGrad(),
- ... spk_reset='soft'
- ... )
- >>>
- >>> # Initialize state for batch processing
- >>> neuron.init_state(batch_size=32)
- >>>
- >>> # Process input and get spikes
- >>> input_current = 2.0 * u.mA
- >>> spikes = neuron.update(input_current)
- >>> print(spikes.shape)
- (32, 100)
-
- **Building a Multi-Layer Spiking Network**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a network with multiple neuron types
- >>> class SpikingNet(brainstate.nn.Module):
- ... def __init__(self):
- ... super().__init__()
- ... self.layer1 = brainpy.state.LIF(784, tau=5*u.ms)
- ... self.fc1 = brainstate.nn.Linear(784, 256)
- ... self.layer2 = brainpy.state.ALIF(256, tau=10*u.ms, tau_a=200*u.ms)
- ... self.fc2 = brainstate.nn.Linear(256, 10)
- ... self.layer3 = brainpy.state.LIF(10, tau=8*u.ms)
- ...
- ... def __call__(self, x):
- ... spikes1 = self.layer1.update(x)
- ... x1 = self.fc1(spikes1)
- ... spikes2 = self.layer2.update(x1)
- ... x2 = self.fc2(spikes2)
- ... spikes3 = self.layer3.update(x2)
- ... return spikes3
-
- References
- ----------
- .. [1] Neftci, E. O., Mostafa, H., & Zenke, F. (2019). Surrogate gradient learning in
- spiking neural networks: Bringing the power of gradient-based optimization to
- spiking neural networks. IEEE Signal Processing Magazine, 36(6), 51-63.
- .. [2] Zenke, F., & Ganguli, S. (2018). SuperSpike: Supervised learning in multilayer
- spiking neural networks. Neural computation, 30(6), 1514-1541.
- .. [3] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014). Neuronal dynamics:
- From single neurons to networks and models of cognition. Cambridge University Press.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: brainstate.typing.Size,
- spk_fun: Callable = braintools.surrogate.InvSquareGrad(),
- spk_reset: str = 'soft',
- name: Optional[str] = None,
- ):
- super().__init__(in_size, name=name)
- self.spk_reset = spk_reset
- self.spk_fun = spk_fun
-
- def get_spike(self, *args, **kwargs):
- """
- Generate spikes based on neuron state variables.
-
- This abstract method must be implemented by subclasses to define the
- spike generation mechanism. The method should use the surrogate gradient
- function ``self.spk_fun`` to enable gradient-based learning.
-
- Parameters
- ----------
- *args
- Positional arguments (typically state variables like membrane potential)
- **kwargs
- Keyword arguments
-
- Returns
- -------
- ArrayLike
- Binary spike tensor where 1 indicates a spike and 0 indicates no spike.
-
- Raises
- ------
- NotImplementedError
- If the subclass does not implement this method.
- """
- raise NotImplementedError
-
-
-class Synapse(Dynamics):
- r"""
- Base class for synapse dynamics.
-
- This class serves as the foundation for all synapse models in the BrainPy framework,
- providing a common interface for implementing various types of synaptic connectivity
- and transmission mechanisms. Synapses model the transmission of signals (typically
- spikes) between neurons, including temporal dynamics, plasticity, and neurotransmitter
- effects.
-
- All specific synapse implementations (like Expon, Alpha, DualExpon, AMPA, GABAa, etc.)
- should inherit from this class and implement the required methods for state management
- and dynamics update.
-
- Parameters
- ----------
- in_size : Size
- Size of the presynaptic input. Can be an integer for 1D input or a tuple
- for multi-dimensional input (e.g., ``100`` or ``(10, 10)``).
- name : str, optional
- Name identifier for the synapse layer. If ``None``, an automatic name will be
- generated. Useful for debugging and model inspection.
-
- Attributes
- ----------
- varshape : tuple
- Shape of the synaptic state variables, derived from ``in_size``.
-
- Returns
- -------
- ArrayLike
- Synaptic output (e.g., conductance, current, or gating variable)
-
- See Also
- --------
- Expon : Simple first-order exponential decay synapse model
- DualExpon : Dual exponential synapse model with separate rise and decay
- Alpha : Alpha function synapse model
- AMPA : AMPA receptor-mediated excitatory synapse
- GABAa : GABAa receptor-mediated inhibitory synapse
-
- Notes
- -----
- **Synaptic Dynamics**
-
- Synapses implement temporal filtering of presynaptic signals. The dynamics are
- typically described by differential equations that govern how synaptic conductance
- or current evolves over time in response to presynaptic spikes.
-
- **State Variables**
-
- Synapse models typically maintain state variables (e.g., conductance ``g``,
- gating variables) as ``brainstate.HiddenState`` or ``brainstate.ShortTermState``
- objects depending on whether they need to be preserved across simulation episodes.
-
- **Integration with Neurons**
-
- Synapses are commonly used in conjunction with projection layers or connectivity
- matrices to model synaptic transmission between neuron populations:
-
- - In feedforward networks: Linear layer → Synapse → Neuron
- - In recurrent networks: Neuron → Linear layer → Synapse → Neuron
-
- **Alignment Patterns**
-
- 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.
-
- Examples
- --------
- **Creating a Custom Synapse Model**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>> import braintools
- >>>
- >>> class SimpleSynapse(brainpy.state.Synapse):
- ... def __init__(self, in_size, tau=5.0*u.ms, **kwargs):
- ... super().__init__(in_size, **kwargs)
- ... self.tau = braintools.init.param(tau, self.varshape)
- ... self.g_init = braintools.init.Constant(0.*u.mS)
- ...
- ... def init_state(self, batch_size=None, **kwargs):
- ... self.g = brainstate.HiddenState(braintools.init.param(self.g_init, self.varshape, batch_size))
- ...
- ... def reset_state(self, batch_size=None, **kwargs):
- ... self.g.value = braintools.init.param(self.g_init, self.varshape, batch_size)
- ...
- ... def update(self, x=None):
- ... # Simple exponential decay: dg/dt = -g/tau + x
- ... dg = lambda g: -g / self.tau
- ... self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
- ... if x is not None:
- ... self.g.value += x
- ... return self.g.value
-
- **Using Built-in Synapse Models**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>> import jax
- >>>
- >>> # Create an exponential synapse
- >>> synapse = brainpy.state.Expon(in_size=100, tau=8.0*u.ms)
- >>>
- >>> # Initialize state
- >>> synapse.init_state(batch_size=32)
- >>>
- >>> # Update with presynaptic spikes
- >>> spikes = jax.random.bernoulli(
- ... jax.random.PRNGKey(0),
- ... p=0.1,
- ... shape=(32, 100)
- ... )
- >>> conductance = synapse.update(spikes * 1.0*u.mS)
- >>> print(conductance.shape)
- (32, 100)
-
- **Building a Feedforward Spiking Network**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> class SynapticNetwork(brainstate.nn.Module):
- ... def __init__(self):
- ... super().__init__()
- ... # Input layer
- ... self.input_neurons = brainpy.state.LIF(784, tau=5*u.ms)
- ... # First hidden layer with synaptic filtering
- ... self.fc1 = brainstate.nn.Linear(784, 256)
- ... self.syn1 = brainpy.state.Expon(256, tau=8*u.ms)
- ... self.hidden1 = brainpy.state.LIF(256, tau=10*u.ms)
- ... # Second hidden layer with AMPA synapse
- ... self.fc2 = brainstate.nn.Linear(256, 128)
- ... self.syn2 = brainpy.state.AMPA(128)
- ... self.hidden2 = brainpy.state.LIF(128, tau=10*u.ms)
- ... # Output layer
- ... self.fc3 = brainstate.nn.Linear(128, 10)
- ... self.output_neurons = brainpy.state.LIF(10, tau=8*u.ms)
- ...
- ... def __call__(self, x):
- ... # Input layer
- ... spikes0 = self.input_neurons.update(x)
- ... # First hidden layer
- ... current1 = self.fc1(spikes0)
- ... g1 = self.syn1.update(current1)
- ... spikes1 = self.hidden1.update(g1)
- ... # Second hidden layer
- ... current2 = self.fc2(spikes1)
- ... g2 = self.syn2.update(current2)
- ... spikes2 = self.hidden2.update(g2)
- ... # Output layer
- ... current3 = self.fc3(spikes2)
- ... output_spikes = self.output_neurons.update(current3)
- ... return output_spikes
-
- **Recurrent Network with Inhibition**
-
- .. code-block:: python
-
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> class EINetwork(brainstate.nn.Module):
- ... def __init__(self, n_exc=800, n_inh=200):
- ... super().__init__()
- ... # Excitatory population
- ... self.exc_neurons = brainpy.state.LIF(n_exc, tau=10*u.ms)
- ... self.exc_syn = brainpy.state.AMPA(n_exc)
- ... # Inhibitory population
- ... self.inh_neurons = brainpy.state.LIF(n_inh, tau=8*u.ms)
- ... self.inh_syn = brainpy.state.GABAa(n_inh)
- ... # Connectivity
- ... self.exc_to_exc = brainstate.nn.Linear(n_exc, n_exc)
- ... self.exc_to_inh = brainstate.nn.Linear(n_exc, n_inh)
- ... self.inh_to_exc = brainstate.nn.Linear(n_inh, n_exc)
- ... self.inh_to_inh = brainstate.nn.Linear(n_inh, n_inh)
- ...
- ... def __call__(self, ext_input):
- ... # Excitatory neurons receive external input and recurrent excitation/inhibition
- ... exc_current = (ext_input +
- ... self.exc_to_exc(self.exc_syn.g.value) -
- ... self.inh_to_exc(self.inh_syn.g.value))
- ... exc_spikes = self.exc_neurons.update(exc_current)
- ... self.exc_syn.update(exc_spikes)
- ... # Inhibitory neurons receive excitatory input and recurrent inhibition
- ... inh_current = (self.exc_to_inh(self.exc_syn.g.value) -
- ... self.inh_to_inh(self.inh_syn.g.value))
- ... inh_spikes = self.inh_neurons.update(inh_current)
- ... self.inh_syn.update(inh_spikes)
- ... return exc_spikes, inh_spikes
-
- References
- ----------
- .. [1] Destexhe, A., Mainen, Z. F., & Sejnowski, T. J. (1994). Synthesis of models for
- excitable membranes, synaptic transmission and neuromodulation using a common
- kinetic formalism. Journal of computational neuroscience, 1(3), 195-230.
- .. [2] Dayan, P., & Abbott, L. F. (2001). Theoretical neuroscience: Computational and
- mathematical modeling of neural systems. MIT Press.
- .. [3] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014). Neuronal dynamics:
- From single neurons to networks and models of cognition. Cambridge University Press.
- """
- __module__ = 'brainpy.state'
diff --git a/brainpy/state/_base_test.py b/brainpy/state/_base_test.py
deleted file mode 100644
index f3dcdad5a..000000000
--- a/brainpy/state/_base_test.py
+++ /dev/null
@@ -1,491 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 brainstate
-import braintools
-import brainunit as u
-import jax.numpy as jnp
-
-from brainpy.state import Neuron, Synapse
-
-
-class TestNeuronBaseClass(unittest.TestCase):
- """Test suite for the Neuron base class."""
-
- def setUp(self):
- """Set up test fixtures."""
- self.in_size = 10
- self.batch_size = 5
- self.in_size_2d = (4, 5)
-
- def test_neuron_abstract_base_class(self):
- """Test that Neuron is abstract and cannot be instantiated directly."""
- # The base class should be instantiable but get_spike should raise NotImplementedError
- neuron = Neuron(in_size=self.in_size)
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertIsInstance(neuron.spk_fun, braintools.surrogate.InvSquareGrad)
- self.assertEqual(neuron.spk_reset, 'soft')
-
- # Test that get_spike raises NotImplementedError
- with self.assertRaises(NotImplementedError):
- neuron.get_spike()
-
- def test_neuron_default_parameters(self):
- """Test default parameter initialization."""
- neuron = Neuron(in_size=self.in_size)
-
- self.assertEqual(neuron.spk_reset, 'soft')
- self.assertIsInstance(neuron.spk_fun, braintools.surrogate.InvSquareGrad)
- self.assertIsNone(neuron.name)
-
- def test_neuron_custom_parameters(self):
- """Test custom parameter initialization."""
- custom_spk_fun = braintools.surrogate.ReluGrad()
- neuron = Neuron(
- in_size=self.in_size,
- spk_fun=custom_spk_fun,
- spk_reset='hard',
- name='test_neuron'
- )
-
- self.assertEqual(neuron.spk_reset, 'hard')
- self.assertIs(neuron.spk_fun, custom_spk_fun)
- self.assertEqual(neuron.name, 'test_neuron')
-
- def test_neuron_multidimensional_input_size(self):
- """Test initialization with multi-dimensional input size."""
- neuron = Neuron(in_size=self.in_size_2d)
- self.assertEqual(neuron.in_size, self.in_size_2d)
-
- def test_neuron_various_surrogate_functions(self):
- """Test different surrogate gradient functions."""
- surrogate_functions = [
- braintools.surrogate.ReluGrad(),
- braintools.surrogate.Sigmoid(),
- braintools.surrogate.InvSquareGrad(),
- ]
-
- for spk_fun in surrogate_functions:
- neuron = Neuron(in_size=self.in_size, spk_fun=spk_fun)
- self.assertIs(neuron.spk_fun, spk_fun)
-
- def test_neuron_custom_implementation(self):
- """Test a custom neuron implementation."""
-
- class CustomNeuron(Neuron):
- """Custom neuron for testing."""
-
- def __init__(self, in_size, V_th=1.0 * u.mV, **kwargs):
- super().__init__(in_size, **kwargs)
- self.V_th = V_th
-
- def init_state(self, batch_size=None, **kwargs):
- self.V = brainstate.HiddenState(
- braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.V.value = braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
-
- def get_spike(self, V=None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x):
- self.V.value += x
- return self.get_spike()
-
- # Test custom neuron
- neuron = CustomNeuron(in_size=self.in_size, V_th=2.0 * u.mV)
- self.assertEqual(neuron.V_th, 2.0 * u.mV)
-
- # Initialize state
- neuron.init_state(batch_size=self.batch_size)
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
-
- # Test update
- input_current = 1.5 * u.mV * jnp.ones((self.batch_size, self.in_size))
- spikes = neuron.update(input_current)
- self.assertEqual(spikes.shape, (self.batch_size, self.in_size))
-
- # Test reset
- neuron.reset_state(batch_size=self.batch_size)
- self.assertTrue(u.math.allclose(neuron.V.value, 0. * u.mV))
-
- def test_neuron_soft_vs_hard_reset(self):
- """Test that soft and hard reset modes are correctly stored."""
- neuron_soft = Neuron(in_size=self.in_size, spk_reset='soft')
- neuron_hard = Neuron(in_size=self.in_size, spk_reset='hard')
-
- self.assertEqual(neuron_soft.spk_reset, 'soft')
- self.assertEqual(neuron_hard.spk_reset, 'hard')
-
- def test_neuron_module_attribute(self):
- """Test __module__ attribute is correctly set."""
- neuron = Neuron(in_size=self.in_size)
- self.assertEqual(neuron.__module__, 'brainpy.state')
-
-
-class TestSynapseBaseClass(unittest.TestCase):
- """Test suite for the Synapse base class."""
-
- def setUp(self):
- """Set up test fixtures."""
- self.in_size = 10
- self.batch_size = 5
- self.in_size_2d = (4, 5)
-
- def test_synapse_instantiation(self):
- """Test that Synapse can be instantiated."""
- synapse = Synapse(in_size=self.in_size)
-
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertIsNone(synapse.name)
-
- def test_synapse_default_parameters(self):
- """Test default parameter initialization."""
- synapse = Synapse(in_size=self.in_size)
-
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertIsNone(synapse.name)
-
- def test_synapse_custom_parameters(self):
- """Test custom parameter initialization."""
- synapse = Synapse(in_size=self.in_size, name='test_synapse')
-
- self.assertEqual(synapse.name, 'test_synapse')
-
- def test_synapse_multidimensional_input_size(self):
- """Test initialization with multi-dimensional input size."""
- synapse = Synapse(in_size=self.in_size_2d)
- self.assertEqual(synapse.in_size, self.in_size_2d)
-
- def test_synapse_custom_implementation(self):
- """Test a custom synapse implementation."""
-
- class CustomSynapse(Synapse):
- """Custom synapse for testing."""
-
- def __init__(self, in_size, tau=5.0 * u.ms, **kwargs):
- super().__init__(in_size, **kwargs)
- self.tau = braintools.init.param(tau, self.varshape)
- self.g_initializer = braintools.init.Constant(0. * u.mS)
-
- def init_state(self, batch_size=None, **kwargs):
- self.g = brainstate.HiddenState(
- braintools.init.param(
- self.g_initializer,
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.g.value = braintools.init.param(
- self.g_initializer,
- self.varshape,
- batch_size
- )
-
- def update(self, x=None):
- # Simple exponential decay: dg/dt = -g/tau
- dg = lambda g: -g / self.tau
- self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
- if x is not None:
- self.g.value += x
- return self.g.value
-
- # Test custom synapse
- synapse = CustomSynapse(in_size=self.in_size, tau=10.0 * u.ms)
- self.assertEqual(synapse.tau, 10.0 * u.ms)
-
- # Initialize state
- synapse.init_state(batch_size=self.batch_size)
- self.assertEqual(synapse.g.value.shape, (self.batch_size, self.in_size))
-
- # Test update with input
- with brainstate.environ.context(dt=0.1 * u.ms):
- input_signal = 1.0 * u.mS * jnp.ones((self.batch_size, self.in_size))
- output = synapse.update(input_signal)
- self.assertEqual(output.shape, (self.batch_size, self.in_size))
-
- # Test update without input (decay only)
- output2 = synapse.update()
- self.assertEqual(output2.shape, (self.batch_size, self.in_size))
- # Output should decay
- self.assertTrue(jnp.all(output2 < output))
-
- # Test reset
- synapse.reset_state(batch_size=self.batch_size)
- self.assertTrue(u.math.allclose(synapse.g.value, 0. * u.mS))
-
- def test_synapse_module_attribute(self):
- """Test __module__ attribute is correctly set."""
- synapse = Synapse(in_size=self.in_size)
- self.assertEqual(synapse.__module__, 'brainpy.state')
-
- def test_synapse_varshape_attribute(self):
- """Test varshape attribute is correctly set."""
- synapse = Synapse(in_size=self.in_size)
- self.assertEqual(synapse.varshape, (self.in_size,))
-
- synapse_2d = Synapse(in_size=self.in_size_2d)
- self.assertEqual(synapse_2d.varshape, self.in_size_2d)
-
-
-class TestNeuronSynapseIntegration(unittest.TestCase):
- """Test integration between Neuron and Synapse classes."""
-
- def setUp(self):
- """Set up test fixtures."""
- self.in_size = 20
- self.batch_size = 8
-
- def test_neuron_synapse_pipeline(self):
- """Test a simple neuron-synapse pipeline."""
-
- # Define custom implementations
- class SimpleNeuron(Neuron):
- def __init__(self, in_size, V_th=1.0 * u.mV, **kwargs):
- super().__init__(in_size, **kwargs)
- self.V_th = V_th
-
- def init_state(self, batch_size=None, **kwargs):
- self.V = brainstate.HiddenState(
- braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.V.value = braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
-
- def get_spike(self, V=None):
- V = self.V.value if V is None else V
- return self.spk_fun((V - self.V_th) / self.V_th)
-
- def update(self, x):
- self.V.value += x
- return self.get_spike()
-
- class SimpleSynapse(Synapse):
- def __init__(self, in_size, tau=5.0 * u.ms, **kwargs):
- super().__init__(in_size, **kwargs)
- self.tau = braintools.init.param(tau, self.varshape)
- self.g_initializer = braintools.init.Constant(0. * u.mS)
-
- def init_state(self, batch_size=None, **kwargs):
- self.g = brainstate.HiddenState(
- braintools.init.param(
- self.g_initializer,
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.g.value = braintools.init.param(
- self.g_initializer,
- self.varshape,
- batch_size
- )
-
- def update(self, x=None):
- dg = lambda g: -g / self.tau
- self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
- if x is not None:
- self.g.value += x
- return self.g.value
-
- # Create neuron and synapse
- neuron = SimpleNeuron(in_size=self.in_size, V_th=0.5 * u.mV)
- synapse = SimpleSynapse(in_size=self.in_size, tau=10.0 * u.ms)
-
- # Initialize states
- neuron.init_state(batch_size=self.batch_size)
- synapse.init_state(batch_size=self.batch_size)
-
- # Simulate a few steps
- with brainstate.environ.context(dt=0.1 * u.ms):
- input_current = 1.0 * u.mV * jnp.ones((self.batch_size, self.in_size))
-
- for _ in range(10):
- # Neuron update
- spikes = neuron.update(input_current)
-
- # Synapse update
- conductance = synapse.update(spikes * 1.0 * u.mS)
-
- # Check shapes
- self.assertEqual(spikes.shape, (self.batch_size, self.in_size))
- self.assertEqual(conductance.shape, (self.batch_size, self.in_size))
-
-
-class TestEdgeCasesAndErrorHandling(unittest.TestCase):
- """Test edge cases and error handling."""
-
- def test_neuron_zero_size(self):
- """Test neuron with zero-sized input."""
- # This might be allowed in some frameworks
- try:
- neuron = Neuron(in_size=0)
- self.assertEqual(neuron.in_size, (0,))
- except Exception:
- # If it raises an exception, that's also acceptable behavior
- pass
-
- def test_synapse_zero_size(self):
- """Test synapse with zero-sized input."""
- try:
- synapse = Synapse(in_size=0)
- self.assertEqual(synapse.in_size, (0,))
- except Exception:
- # If it raises an exception, that's also acceptable behavior
- pass
-
- def test_neuron_large_input_size(self):
- """Test neuron with large input size."""
- large_size = 10000
- neuron = Neuron(in_size=large_size)
- self.assertEqual(neuron.in_size, (large_size,))
-
- def test_synapse_large_input_size(self):
- """Test synapse with large input size."""
- large_size = 10000
- synapse = Synapse(in_size=large_size)
- self.assertEqual(synapse.in_size, (large_size,))
-
- def test_neuron_tuple_input_size(self):
- """Test neuron with tuple input size."""
- tuple_size = (3, 4, 5)
- neuron = Neuron(in_size=tuple_size)
- self.assertEqual(neuron.in_size, tuple_size)
-
- def test_synapse_tuple_input_size(self):
- """Test synapse with tuple input size."""
- tuple_size = (3, 4, 5)
- synapse = Synapse(in_size=tuple_size)
- self.assertEqual(synapse.in_size, tuple_size)
-
-
-class TestDocstringExamples(unittest.TestCase):
- """Test that the examples in docstrings work correctly."""
-
- def test_neuron_docstring_simple_example(self):
- """Test the simple neuron example from the docstring."""
-
- class SimpleNeuron(Neuron):
- def __init__(self, in_size, V_th=1.0 * u.mV, **kwargs):
- super().__init__(in_size, **kwargs)
- self.V_th = V_th
-
- def init_state(self, batch_size=None, **kwargs):
- self.V = brainstate.HiddenState(
- braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.V.value = braintools.init.param(
- braintools.init.Constant(0. * u.mV),
- self.varshape,
- batch_size
- )
-
- def get_spike(self, V=None):
- V = self.V.value if V is None else V
- return self.spk_fun((V - self.V_th) / self.V_th)
-
- def update(self, x):
- self.V.value += x
- return self.get_spike()
-
- # Create and test
- neuron = SimpleNeuron(in_size=10, V_th=1.0 * u.mV)
- neuron.init_state(batch_size=1)
- input_current = 0.5 * u.mV * jnp.ones((1, 10))
- spikes = neuron.update(input_current)
-
- self.assertIsNotNone(spikes)
- self.assertEqual(spikes.shape, (1, 10))
-
- def test_synapse_docstring_simple_example(self):
- """Test the simple synapse example from the docstring."""
-
- class SimpleSynapse(Synapse):
- def __init__(self, in_size, tau=5.0 * u.ms, **kwargs):
- super().__init__(in_size, **kwargs)
- self.tau = braintools.init.param(tau, self.varshape)
- self.g_init = braintools.init.Constant(0. * u.mS)
-
- def init_state(self, batch_size=None, **kwargs):
- self.g = brainstate.HiddenState(
- braintools.init.param(
- self.g_init,
- self.varshape,
- batch_size
- )
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.g.value = braintools.init.param(
- self.g_init,
- self.varshape,
- batch_size
- )
-
- def update(self, x=None):
- dg = lambda g: -g / self.tau
- self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
- if x is not None:
- self.g.value += x
- return self.g.value
-
- # Create and test
- with brainstate.environ.context(dt=0.1 * u.ms):
- synapse = SimpleSynapse(in_size=10, tau=5.0 * u.ms)
- synapse.init_state(batch_size=1)
- input_signal = 1.0 * u.mS * jnp.ones((1, 10))
- output = synapse.update(input_signal)
-
- self.assertIsNotNone(output)
- self.assertEqual(output.shape, (1, 10))
-
-
-if __name__ == '__main__':
- with brainstate.environ.context(dt=0.1 * u.ms):
- unittest.main()
diff --git a/brainpy/state/_exponential.py b/brainpy/state/_exponential.py
deleted file mode 100644
index 30b391895..000000000
--- a/brainpy/state/_exponential.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-from typing import Optional, Callable
-
-import brainstate
-import braintools
-import brainunit as u
-from brainstate.typing import Size, ArrayLike
-
-from brainpy.mixin import AlignPost
-from ._base import Synapse
-
-__all__ = [
- 'Expon', 'DualExpon',
-]
-
-
-class Expon(Synapse, AlignPost):
- r"""
- Exponential decay synapse model.
-
- This class implements a simple first-order exponential decay synapse model where
- the synaptic conductance g decays exponentially with time constant tau:
-
- $$
- dg/dt = -g/\tau + \text{input}
- $$
-
- The model is widely used for basic synaptic transmission modeling.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- tau : ArrayLike, default=8.0*u.ms
- Time constant of decay in milliseconds.
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for synaptic conductance.
-
- Attributes
- ----------
- g : HiddenState
- Synaptic conductance state variable.
- tau : Parameter
- Time constant of decay.
-
- Notes
- -----
- The implementation uses an exponential Euler integration method.
- The output of this synapse is the conductance value.
-
- This class inherits from :py:class:`AlignPost`, which means it can be used in projection patterns
- where synaptic variables are aligned with post-synaptic neurons, enabling event-driven
- computation and more efficient handling of sparse connectivity patterns.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- tau: ArrayLike = 8.0 * u.ms,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.tau = braintools.init.param(tau, self.varshape)
- self.g_initializer = g_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.g = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.g.value = braintools.init.param(self.g_initializer, self.varshape, batch_size)
-
- def update(self, x=None):
- g = brainstate.nn.exp_euler_step(lambda g: self.sum_current_inputs(-g) / self.tau, self.g.value)
- self.g.value = self.sum_delta_inputs(g)
- if x is not None: self.g.value += x
- return self.g.value
-
-
-class DualExpon(Synapse, AlignPost):
- r"""
- Dual exponential synapse model.
-
- This class implements a synapse model with separate rise and decay time constants,
- which produces a more biologically realistic conductance waveform than a single
- exponential model. The model is characterized by the differential equation system:
-
- dg_rise/dt = -g_rise/tau_rise
- dg_decay/dt = -g_decay/tau_decay
- g = a * (g_decay - g_rise)
-
- where $a$ is a normalization factor that ensures the peak conductance reaches
- the desired amplitude.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- tau_decay : ArrayLike, default=10.0*u.ms
- Time constant of decay in milliseconds.
- tau_rise : ArrayLike, default=1.0*u.ms
- Time constant of rise in milliseconds.
- A : ArrayLike, optional
- Amplitude scaling factor. If None, a scaling factor is automatically
- calculated to normalize the peak amplitude.
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for synaptic conductance.
-
- Attributes
- ----------
- g_rise : HiddenState
- Rise component of synaptic conductance.
- g_decay : HiddenState
- Decay component of synaptic conductance.
- tau_rise : Parameter
- Time constant of rise phase.
- tau_decay : Parameter
- Time constant of decay phase.
- a : Parameter
- Normalization factor calculated from tau_rise, tau_decay, and A.
-
- Notes
- -----
- The dual exponential model produces a conductance waveform that is more
- physiologically realistic than a simple exponential decay, with a finite
- rise time followed by a slower decay.
-
- The implementation uses an exponential Euler integration method.
- The output of this synapse is the normalized difference between decay and rise components.
-
- This class inherits from :py:class:`AlignPost`, which means it can be used in projection patterns
- where synaptic variables are aligned with post-synaptic neurons, enabling event-driven
- computation and more efficient handling of sparse connectivity patterns.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- tau_decay: ArrayLike = 10.0 * u.ms,
- tau_rise: ArrayLike = 1.0 * u.ms,
- A: Optional[ArrayLike] = None,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.tau_decay = braintools.init.param(tau_decay, self.varshape)
- self.tau_rise = braintools.init.param(tau_rise, self.varshape)
- A = self._format_dual_exp_A(A)
- self.a = (self.tau_decay - self.tau_rise) / self.tau_rise / self.tau_decay * A
- self.g_initializer = g_initializer
-
- def _format_dual_exp_A(self, A):
- A = braintools.init.param(A, sizes=self.varshape, allow_none=True)
- if A is None:
- A = (
- self.tau_decay / (self.tau_decay - self.tau_rise) *
- u.math.float_power(self.tau_rise / self.tau_decay,
- self.tau_rise / (self.tau_rise - self.tau_decay))
- )
- return A
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.g_rise = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
- self.g_decay = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.g_rise.value = braintools.init.param(self.g_initializer, self.varshape, batch_size)
- self.g_decay.value = braintools.init.param(self.g_initializer, self.varshape, batch_size)
-
- def update(self, x=None):
- g_rise = brainstate.nn.exp_euler_step(lambda h: -h / self.tau_rise, self.g_rise.value)
- g_decay = brainstate.nn.exp_euler_step(lambda g: -g / self.tau_decay, self.g_decay.value)
- self.g_rise.value = self.sum_delta_inputs(g_rise)
- self.g_decay.value = self.sum_delta_inputs(g_decay)
- if x is not None:
- self.g_rise.value += x
- self.g_decay.value += x
- return self.a * (self.g_decay.value - self.g_rise.value)
diff --git a/brainpy/state/_hh.py b/brainpy/state/_hh.py
deleted file mode 100644
index 86d4f1f2a..000000000
--- a/brainpy/state/_hh.py
+++ /dev/null
@@ -1,666 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-from typing import Callable
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-from brainstate.typing import ArrayLike, Size
-
-from ._base import Neuron
-
-__all__ = [
- 'HH', 'MorrisLecar', 'WangBuzsakiHH',
-]
-
-
-class HH(Neuron):
- r"""Hodgkin–Huxley neuron model.
-
- **Model Descriptions**
-
- The Hodgkin-Huxley (HH; Hodgkin & Huxley, 1952) model for the generation of
- the nerve action potential is one of the most successful mathematical models of
- a complex biological process that has ever been formulated. The basic concepts
- expressed in the model have proved a valid approach to the study of bio-electrical
- activity from the most primitive single-celled organisms such as *Paramecium*,
- right through to the neurons within our own brains.
-
- Mathematically, the model is given by,
-
- $$
- 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)
- $$
-
- $$
- \frac {dx} {dt} = \alpha_x (1-x) - \beta_x, \quad x\in {\rm{\{m, h, n\}}}
- $$
-
- where
-
- $$
- \alpha_m(V) = \frac {0.1(V+40)}{1-\exp(\frac{-(V + 40)} {10})}
- $$
-
- $$
- \beta_m(V) = 4.0 \exp(\frac{-(V + 65)} {18})
- $$
-
- $$
- \alpha_h(V) = 0.07 \exp(\frac{-(V+65)}{20})
- $$
-
- $$
- \beta_h(V) = \frac 1 {1 + \exp(\frac{-(V + 35)} {10})}
- $$
-
- $$
- \alpha_n(V) = \frac {0.01(V+55)}{1-\exp(-(V+55)/10)}
- $$
-
- $$
- \beta_n(V) = 0.125 \exp(\frac{-(V + 65)} {80})
- $$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- ENa : ArrayLike, default=50. * u.mV
- Reversal potential of sodium.
- gNa : ArrayLike, default=120. * u.msiemens
- Maximum conductance of sodium channel.
- EK : ArrayLike, default=-77. * u.mV
- Reversal potential of potassium.
- gK : ArrayLike, default=36. * u.msiemens
- Maximum conductance of potassium channel.
- EL : ArrayLike, default=-54.387 * u.mV
- Reversal potential of leak channel.
- gL : ArrayLike, default=0.03 * u.msiemens
- Conductance of leak channel.
- V_th : ArrayLike, default=20. * u.mV
- Threshold of the membrane spike.
- C : ArrayLike, default=1.0 * u.ufarad
- Membrane capacitance.
- V_initializer : Callable
- Initializer for membrane potential.
- m_initializer : Callable, optional
- Initializer for m channel. If None, uses steady state.
- h_initializer : Callable, optional
- Initializer for h channel. If None, uses steady state.
- n_initializer : Callable, optional
- Initializer for n channel. If None, uses steady state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- m : HiddenState
- Sodium activation variable.
- h : HiddenState
- Sodium inactivation variable.
- n : HiddenState
- Potassium activation variable.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an HH neuron layer with 10 neurons
- >>> hh = brainpy.state.HH(10)
- >>>
- >>> # Initialize the state
- >>> hh.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = hh.update(x=10.*u.uA)
-
- References
- ----------
- .. [1] Hodgkin, Alan L., and Andrew F. Huxley. "A quantitative description
- of membrane current and its application to conduction and excitation
- in nerve." The Journal of physiology 117.4 (1952): 500.
- .. [2] https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- ENa: ArrayLike = 50. * u.mV,
- gNa: ArrayLike = 120. * u.msiemens,
- EK: ArrayLike = -77. * u.mV,
- gK: ArrayLike = 36. * u.msiemens,
- EL: ArrayLike = -54.387 * u.mV,
- gL: ArrayLike = 0.03 * u.msiemens,
- V_th: ArrayLike = 20. * u.mV,
- C: ArrayLike = 1.0 * u.ufarad,
- V_initializer: Callable = braintools.init.Uniform(-70. * u.mV, -60. * u.mV),
- m_initializer: Callable = None,
- h_initializer: Callable = None,
- n_initializer: Callable = None,
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.ENa = braintools.init.param(ENa, self.varshape)
- self.EK = braintools.init.param(EK, self.varshape)
- self.EL = braintools.init.param(EL, self.varshape)
- self.gNa = braintools.init.param(gNa, self.varshape)
- self.gK = braintools.init.param(gK, self.varshape)
- self.gL = braintools.init.param(gL, self.varshape)
- self.C = braintools.init.param(C, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
-
- # initializers
- self.V_initializer = V_initializer
- self.m_initializer = m_initializer
- self.h_initializer = h_initializer
- self.n_initializer = n_initializer
-
- def m_alpha(self, V):
- return 1. / u.math.exprel(-(V + 40. * u.mV) / (10. * u.mV)) / u.ms
-
- def m_beta(self, V):
- return 4.0 / u.ms * u.math.exp(-(V + 65. * u.mV) / (18. * u.mV))
-
- def m_inf(self, V):
- return self.m_alpha(V) / (self.m_alpha(V) + self.m_beta(V))
-
- def h_alpha(self, V):
- return 0.07 / u.ms * u.math.exp(-(V + 65. * u.mV) / (20. * u.mV))
-
- def h_beta(self, V):
- return 1. / u.ms / (1. + u.math.exp(-(V + 35. * u.mV) / (10. * u.mV)))
-
- def h_inf(self, V):
- return self.h_alpha(V) / (self.h_alpha(V) + self.h_beta(V))
-
- def n_alpha(self, V):
- return 0.1 / u.ms / u.math.exprel(-(V + 55. * u.mV) / (10. * u.mV))
-
- def n_beta(self, V):
- return 0.125 / u.ms * u.math.exp(-(V + 65. * u.mV) / (80. * u.mV))
-
- def n_inf(self, V):
- return self.n_alpha(V) / (self.n_alpha(V) + self.n_beta(V))
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- if self.m_initializer is None:
- self.m = brainstate.HiddenState(self.m_inf(self.V.value))
- else:
- self.m = brainstate.HiddenState(braintools.init.param(self.m_initializer, self.varshape, batch_size))
- if self.h_initializer is None:
- self.h = brainstate.HiddenState(self.h_inf(self.V.value))
- else:
- self.h = brainstate.HiddenState(braintools.init.param(self.h_initializer, self.varshape, batch_size))
- if self.n_initializer is None:
- self.n = brainstate.HiddenState(self.n_inf(self.V.value))
- else:
- self.n = brainstate.HiddenState(braintools.init.param(self.n_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- if self.m_initializer is None:
- self.m.value = self.m_inf(self.V.value)
- else:
- self.m.value = braintools.init.param(self.m_initializer, self.varshape, batch_size)
- if self.h_initializer is None:
- self.h.value = self.h_inf(self.V.value)
- else:
- self.h.value = braintools.init.param(self.h_initializer, self.varshape, batch_size)
- if self.n_initializer is None:
- self.n.value = self.n_inf(self.V.value)
- else:
- self.n.value = braintools.init.param(self.n_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.uA):
- last_V = self.V.value
- last_m = self.m.value
- last_h = self.h.value
- last_n = self.n.value
-
- # Ionic currents
- I_Na = (self.gNa * last_m ** 3 * last_h) * (last_V - self.ENa)
- I_K = (self.gK * last_n ** 4) * (last_V - self.EK)
- I_leak = self.gL * (last_V - self.EL)
-
- # Voltage dynamics
- I_total = self.sum_current_inputs(x, last_V)
- dV = lambda V: (-I_Na - I_K - I_leak + I_total) / self.C
-
- # Gating variable dynamics
- dm = lambda m: self.m_alpha(last_V) * (1. - m) - self.m_beta(last_V) * m
- dh = lambda h: self.h_alpha(last_V) * (1. - h) - self.h_beta(last_V) * h
- dn = lambda n: self.n_alpha(last_V) * (1. - n) - self.n_beta(last_V) * n
-
- V = brainstate.nn.exp_euler_step(dV, last_V)
- V = self.sum_delta_inputs(V)
- m = brainstate.nn.exp_euler_step(dm, last_m)
- h = brainstate.nn.exp_euler_step(dh, last_h)
- n = brainstate.nn.exp_euler_step(dn, last_n)
-
- self.V.value = V
- self.m.value = m
- self.h.value = h
- self.n.value = n
- return self.get_spike(V)
-
-
-class MorrisLecar(Neuron):
- r"""The Morris-Lecar neuron model.
-
- **Model Descriptions**
-
- The Morris-Lecar model (Also known as :math:`I_{Ca}+I_K`-model)
- is a two-dimensional "reduced" excitation model applicable to
- systems having two non-inactivating voltage-sensitive conductances.
- This model was named after Cathy Morris and Harold Lecar, who
- derived it in 1981. Because it is two-dimensional, the Morris-Lecar
- model is one of the favorite conductance-based models in computational neuroscience.
-
- The original form of the model employed an instantaneously
- responding voltage-sensitive Ca2+ conductance for excitation and a delayed
- voltage-dependent K+ conductance for recovery. The equations of the model are:
-
- $$
- \begin{aligned}
- C\frac{dV}{dt} =& - g_{Ca} M_{\infty} (V - V_{Ca})- g_{K} W(V - V_{K}) -
- g_{Leak} (V - V_{Leak}) + I_{ext} \\
- \frac{dW}{dt} =& \frac{W_{\infty}(V) - W}{ \tau_W(V)}
- \end{aligned}
- $$
-
- Here, :math:`V` is the membrane potential, :math:`W` is the "recovery variable",
- which is almost invariably the normalized :math:`K^+`-ion conductance, and
- :math:`I_{ext}` is the applied current stimulus.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- V_Ca : ArrayLike, default=130. * u.mV
- Equilibrium potential of Ca+.
- g_Ca : ArrayLike, default=4.4 * u.msiemens
- Maximum conductance of Ca+.
- V_K : ArrayLike, default=-84. * u.mV
- Equilibrium potential of K+.
- g_K : ArrayLike, default=8. * u.msiemens
- Maximum conductance of K+.
- V_leak : ArrayLike, default=-60. * u.mV
- Equilibrium potential of leak current.
- g_leak : ArrayLike, default=2. * u.msiemens
- Conductance of leak current.
- C : ArrayLike, default=20. * u.ufarad
- Membrane capacitance.
- V1 : ArrayLike, default=-1.2 * u.mV
- Potential at which M_inf = 0.5.
- V2 : ArrayLike, default=18. * u.mV
- Reciprocal of slope of voltage dependence of M_inf.
- V3 : ArrayLike, default=2. * u.mV
- Potential at which W_inf = 0.5.
- V4 : ArrayLike, default=30. * u.mV
- Reciprocal of slope of voltage dependence of W_inf.
- phi : ArrayLike, default=0.04 / u.ms
- Temperature factor.
- V_th : ArrayLike, default=10. * u.mV
- Spike threshold.
- V_initializer : Callable
- Initializer for membrane potential.
- W_initializer : Callable
- Initializer for recovery variable.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- W : HiddenState
- Recovery variable.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a Morris-Lecar neuron layer with 10 neurons
- >>> ml = brainpy.state.MorrisLecar(10)
- >>>
- >>> # Initialize the state
- >>> ml.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = ml.update(x=100.*u.uA)
-
- References
- ----------
- .. [1] Lecar, Harold. "Morris-lecar model." Scholarpedia 2.10 (2007): 1333.
- .. [2] http://www.scholarpedia.org/article/Morris-Lecar_model
- .. [3] https://en.wikipedia.org/wiki/Morris%E2%80%93Lecar_model
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- V_Ca: ArrayLike = 130. * u.mV,
- g_Ca: ArrayLike = 4.4 * u.msiemens,
- V_K: ArrayLike = -84. * u.mV,
- g_K: ArrayLike = 8. * u.msiemens,
- V_leak: ArrayLike = -60. * u.mV,
- g_leak: ArrayLike = 2. * u.msiemens,
- C: ArrayLike = 20. * u.ufarad,
- V1: ArrayLike = -1.2 * u.mV,
- V2: ArrayLike = 18. * u.mV,
- V3: ArrayLike = 2. * u.mV,
- V4: ArrayLike = 30. * u.mV,
- phi: ArrayLike = 0.04 / u.ms,
- V_th: ArrayLike = 10. * u.mV,
- V_initializer: Callable = braintools.init.Uniform(-70. * u.mV, -60. * u.mV),
- W_initializer: Callable = braintools.init.Constant(0.02),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.V_Ca = braintools.init.param(V_Ca, self.varshape)
- self.g_Ca = braintools.init.param(g_Ca, self.varshape)
- self.V_K = braintools.init.param(V_K, self.varshape)
- self.g_K = braintools.init.param(g_K, self.varshape)
- self.V_leak = braintools.init.param(V_leak, self.varshape)
- self.g_leak = braintools.init.param(g_leak, self.varshape)
- self.C = braintools.init.param(C, self.varshape)
- self.V1 = braintools.init.param(V1, self.varshape)
- self.V2 = braintools.init.param(V2, self.varshape)
- self.V3 = braintools.init.param(V3, self.varshape)
- self.V4 = braintools.init.param(V4, self.varshape)
- self.phi = braintools.init.param(phi, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
-
- # initializers
- self.V_initializer = V_initializer
- self.W_initializer = W_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.W = brainstate.HiddenState(braintools.init.param(self.W_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.W.value = braintools.init.param(self.W_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.uA):
- last_V = self.V.value
- last_W = self.W.value
-
- # Steady states
- M_inf = 0.5 * (1. + u.math.tanh((last_V - self.V1) / self.V2))
- W_inf = 0.5 * (1. + u.math.tanh((last_V - self.V3) / self.V4))
- tau_W = 1. / (self.phi * u.math.cosh((last_V - self.V3) / (2. * self.V4)))
-
- # Ionic currents
- I_Ca = self.g_Ca * M_inf * (last_V - self.V_Ca)
- I_K = self.g_K * last_W * (last_V - self.V_K)
- I_leak = self.g_leak * (last_V - self.V_leak)
-
- # Dynamics
- I_total = self.sum_current_inputs(x, last_V)
- dV = lambda V: (-I_Ca - I_K - I_leak + I_total) / self.C
- dW = lambda W: (W_inf - W) / tau_W
-
- V = brainstate.nn.exp_euler_step(dV, last_V)
- V = self.sum_delta_inputs(V)
- W = brainstate.nn.exp_euler_step(dW, last_W)
-
- self.V.value = V
- self.W.value = W
- return self.get_spike(V)
-
-
-class WangBuzsakiHH(Neuron):
- r"""Wang-Buzsaki model, an implementation of a modified Hodgkin-Huxley model.
-
- Each model is described by a single compartment and obeys the current balance equation:
-
- $$
- C_{m} \frac{d V}{d t}=-I_{\mathrm{Na}}-I_{\mathrm{K}}-I_{\mathrm{L}}+I_{\mathrm{app}}
- $$
-
- where :math:`C_{m}=1 \mu \mathrm{F} / \mathrm{cm}^{2}` and :math:`I_{\mathrm{app}}` is the
- injected current (in :math:`\mu \mathrm{A} / \mathrm{cm}^{2}` ). The leak current
- :math:`I_{\mathrm{L}}=g_{\mathrm{L}}\left(V-E_{\mathrm{L}}\right)` has a conductance
- :math:`g_{\mathrm{L}}=0.1 \mathrm{mS} / \mathrm{cm}^{2}`.
-
- The spike-generating :math:`\mathrm{Na}^{+}` and :math:`\mathrm{K}^{+}` voltage-dependent ion
- currents are of the Hodgkin-Huxley type. The transient sodium current
- :math:`I_{\mathrm{Na}}=g_{\mathrm{Na}} m_{\infty}^{3} h\left(V-E_{\mathrm{Na}}\right)`,
- where the activation variable :math:`m` is assumed fast and substituted by its steady-state
- function :math:`m_{\infty}=\alpha_{m} /\left(\alpha_{m}+\beta_{m}\right)`;
- :math:`\alpha_{m}(V)=-0.1(V+35) /(\exp (-0.1(V+35))-1)`, :math:`\beta_{m}(V)=4 \exp (-(V+60) / 18)`.
-
- The inactivation variable :math:`h` obeys:
-
- $$
- \frac{d h}{d t}=\phi\left(\alpha_{h}(1-h)-\beta_{h} h\right)
- $$
-
- where :math:`\alpha_{h}(V)=0.07 \exp (-(V+58) / 20)` and
- :math:`\beta_{h}(V)=1 /(\exp (-0.1(V+28)) +1)`.
-
- The delayed rectifier :math:`I_{\mathrm{K}}=g_{\mathrm{K}} n^{4}\left(V-E_{\mathrm{K}}\right)`,
- where the activation variable :math:`n` obeys:
-
- $$
- \frac{d n}{d t}=\phi\left(\alpha_{n}(1-n)-\beta_{n} n\right)
- $$
-
- with :math:`\alpha_{n}(V)=-0.01(V+34) /(\exp (-0.1(V+34))-1)` and
- :math:`\beta_{n}(V)=0.125\exp (-(V+44) / 80)`.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- ENa : ArrayLike, default=55. * u.mV
- Reversal potential of sodium.
- gNa : ArrayLike, default=35. * u.msiemens
- Maximum conductance of sodium channel.
- EK : ArrayLike, default=-90. * u.mV
- Reversal potential of potassium.
- gK : ArrayLike, default=9. * u.msiemens
- Maximum conductance of potassium channel.
- EL : ArrayLike, default=-65. * u.mV
- Reversal potential of leak channel.
- gL : ArrayLike, default=0.1 * u.msiemens
- Conductance of leak channel.
- V_th : ArrayLike, default=20. * u.mV
- Threshold of the membrane spike.
- phi : ArrayLike, default=5.0
- Temperature regulator constant.
- C : ArrayLike, default=1.0 * u.ufarad
- Membrane capacitance.
- V_initializer : Callable
- Initializer for membrane potential.
- h_initializer : Callable
- Initializer for h channel.
- n_initializer : Callable
- Initializer for n channel.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- h : HiddenState
- Sodium inactivation variable.
- n : HiddenState
- Potassium activation variable.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a WangBuzsakiHH neuron layer with 10 neurons
- >>> wb = brainpy.state.WangBuzsakiHH(10)
- >>>
- >>> # Initialize the state
- >>> wb.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = wb.update(x=1.*u.uA)
-
- References
- ----------
- .. [1] Wang, X.J. and Buzsaki, G., (1996) Gamma oscillation by synaptic
- inhibition in a hippocampal interneuronal network model. Journal of
- neuroscience, 16(20), pp.6402-6413.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- ENa: ArrayLike = 55. * u.mV,
- gNa: ArrayLike = 35. * u.msiemens,
- EK: ArrayLike = -90. * u.mV,
- gK: ArrayLike = 9. * u.msiemens,
- EL: ArrayLike = -65. * u.mV,
- gL: ArrayLike = 0.1 * u.msiemens,
- V_th: ArrayLike = 20. * u.mV,
- phi: ArrayLike = 5.0,
- C: ArrayLike = 1.0 * u.ufarad,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- h_initializer: Callable = braintools.init.Constant(0.6),
- n_initializer: Callable = braintools.init.Constant(0.32),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.ENa = braintools.init.param(ENa, self.varshape)
- self.EK = braintools.init.param(EK, self.varshape)
- self.EL = braintools.init.param(EL, self.varshape)
- self.gNa = braintools.init.param(gNa, self.varshape)
- self.gK = braintools.init.param(gK, self.varshape)
- self.gL = braintools.init.param(gL, self.varshape)
- self.phi = braintools.init.param(phi, self.varshape)
- self.C = braintools.init.param(C, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
-
- # initializers
- self.V_initializer = V_initializer
- self.h_initializer = h_initializer
- self.n_initializer = n_initializer
-
- def m_inf(self, V):
- alpha = 1. / u.math.exprel(-0.1 * (V + 35. * u.mV) / u.mV) / u.ms
- beta = 4. / u.ms * u.math.exp(-(V + 60. * u.mV) / (18. * u.mV))
- return alpha / (alpha + beta)
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.h = brainstate.HiddenState(braintools.init.param(self.h_initializer, self.varshape, batch_size))
- self.n = brainstate.HiddenState(braintools.init.param(self.n_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.h.value = braintools.init.param(self.h_initializer, self.varshape, batch_size)
- self.n.value = braintools.init.param(self.n_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.uA):
- last_V = self.V.value
- last_h = self.h.value
- last_n = self.n.value
-
- # Ionic currents
- m_inf_val = self.m_inf(last_V)
- I_Na = self.gNa * m_inf_val ** 3 * last_h * (last_V - self.ENa)
- I_K = self.gK * last_n ** 4 * (last_V - self.EK)
- I_L = self.gL * (last_V - self.EL)
-
- # Voltage dynamics
- I_total = self.sum_current_inputs(x, last_V)
- dV = lambda V: (-I_Na - I_K - I_L + I_total) / self.C
-
- # Gating variable dynamics
- h_alpha = 0.07 / u.ms * u.math.exp(-(last_V + 58. * u.mV) / (20. * u.mV))
- h_beta = 1. / u.ms / (u.math.exp(-0.1 * (last_V + 28. * u.mV) / u.mV) + 1.)
- dh = lambda h: self.phi * (h_alpha * (1. - h) - h_beta * h)
-
- n_alpha = 1. / u.ms / u.math.exprel(-0.1 * (last_V + 34. * u.mV) / u.mV)
- n_beta = 0.125 / u.ms * u.math.exp(-(last_V + 44. * u.mV) / (80. * u.mV))
- dn = lambda n: self.phi * (n_alpha * (1. - n) - n_beta * n)
-
- V = brainstate.nn.exp_euler_step(dV, last_V)
- V = self.sum_delta_inputs(V)
- h = brainstate.nn.exp_euler_step(dh, last_h)
- n = brainstate.nn.exp_euler_step(dn, last_n)
-
- self.V.value = V
- self.h.value = h
- self.n.value = n
- return self.get_spike(V)
diff --git a/brainpy/state/_hh_test.py b/brainpy/state/_hh_test.py
deleted file mode 100644
index 94930174b..000000000
--- a/brainpy/state/_hh_test.py
+++ /dev/null
@@ -1,303 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-import unittest
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-import jax.numpy as jnp
-
-from brainpy.state import HH, MorrisLecar, WangBuzsakiHH
-
-
-class TestHHNeuron(unittest.TestCase):
- def setUp(self):
- self.in_size = 10
- self.batch_size = 5
- self.time_steps = 100
- self.dt = 0.01 * u.ms
-
- def generate_input(self):
- return brainstate.random.randn(self.time_steps, self.batch_size, self.in_size) * u.uA
-
- def test_hh_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- neuron = HH(self.in_size)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.m.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.h.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.n.value.shape, (self.batch_size, self.in_size))
-
- def test_morris_lecar_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- neuron = MorrisLecar(self.in_size)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.W.value.shape, (self.batch_size, self.in_size))
-
- def test_wang_buzsaki_hh_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- neuron = WangBuzsakiHH(self.in_size)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.h.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.n.value.shape, (self.batch_size, self.in_size))
-
- def test_spike_function(self):
- for NeuronClass in [HH, MorrisLecar, WangBuzsakiHH]:
- neuron = NeuronClass(self.in_size)
- neuron.init_state()
- v = jnp.linspace(-80, 40, self.in_size) * u.mV
- spikes = neuron.get_spike(v)
- self.assertTrue(jnp.all((spikes >= 0) & (spikes <= 1)))
-
- def test_soft_reset(self):
- for NeuronClass in [HH, MorrisLecar, WangBuzsakiHH]:
- neuron = NeuronClass(self.in_size, spk_reset='soft')
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- # Check that voltage doesn't exceed threshold too much
- self.assertTrue(jnp.all(neuron.V.value <= neuron.V_th + 20 * u.mV))
-
- def test_hard_reset(self):
- for NeuronClass in [HH, MorrisLecar, WangBuzsakiHH]:
- neuron = NeuronClass(self.in_size, spk_reset='hard')
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- # Just check that it runs without error
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- def test_detach_spike(self):
- for NeuronClass in [HH, MorrisLecar, WangBuzsakiHH]:
- neuron = NeuronClass(self.in_size)
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertFalse(jax.tree_util.tree_leaves(out)[0].aval.weak_type)
-
- def test_keep_size(self):
- in_size = (2, 3)
- for NeuronClass in [HH, MorrisLecar, WangBuzsakiHH]:
- neuron = NeuronClass(in_size)
- self.assertEqual(neuron.in_size, in_size)
- self.assertEqual(neuron.out_size, in_size)
-
- inputs = brainstate.random.randn(self.time_steps, self.batch_size, *in_size) * u.uA
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, *in_size))
-
- def test_hh_gating_variables(self):
- # Test that gating variables are properly initialized and updated
- neuron = HH(self.in_size)
- neuron.init_state(self.batch_size)
-
- # Check initial values are in valid range [0, 1]
- self.assertTrue(jnp.all((neuron.m.value >= 0) & (neuron.m.value <= 1)))
- self.assertTrue(jnp.all((neuron.h.value >= 0) & (neuron.h.value <= 1)))
- self.assertTrue(jnp.all((neuron.n.value >= 0) & (neuron.n.value <= 1)))
-
- # Run for some time steps
- inputs = self.generate_input()
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(20):
- out = call(inputs[t])
-
- # Gating variables should still be in valid range
- self.assertTrue(jnp.all((neuron.m.value >= 0) & (neuron.m.value <= 1)))
- self.assertTrue(jnp.all((neuron.h.value >= 0) & (neuron.h.value <= 1)))
- self.assertTrue(jnp.all((neuron.n.value >= 0) & (neuron.n.value <= 1)))
-
- def test_hh_alpha_beta_functions(self):
- # Test that alpha and beta functions return positive values
- neuron = HH(self.in_size)
- neuron.init_state()
-
- V_test = jnp.linspace(-80, 40, self.in_size) * u.mV
-
- m_alpha = neuron.m_alpha(V_test)
- m_beta = neuron.m_beta(V_test)
- h_alpha = neuron.h_alpha(V_test)
- h_beta = neuron.h_beta(V_test)
- n_alpha = neuron.n_alpha(V_test)
- n_beta = neuron.n_beta(V_test)
-
- # All rate constants should be positive
- if hasattr(m_alpha, 'mantissa'):
- self.assertTrue(jnp.all(m_alpha.mantissa > 0))
- self.assertTrue(jnp.all(m_beta.mantissa > 0))
- self.assertTrue(jnp.all(h_alpha.mantissa > 0))
- self.assertTrue(jnp.all(h_beta.mantissa > 0))
- self.assertTrue(jnp.all(n_alpha.mantissa > 0))
- self.assertTrue(jnp.all(n_beta.mantissa > 0))
- else:
- self.assertTrue(jnp.all(m_alpha > 0))
- self.assertTrue(jnp.all(m_beta > 0))
- self.assertTrue(jnp.all(h_alpha > 0))
- self.assertTrue(jnp.all(h_beta > 0))
- self.assertTrue(jnp.all(n_alpha > 0))
- self.assertTrue(jnp.all(n_beta > 0))
-
- def test_morris_lecar_steady_states(self):
- # Test that steady-state functions return values in valid range
- neuron = MorrisLecar(self.in_size)
- neuron.init_state()
-
- V_test = jnp.linspace(-100, 50, self.in_size) * u.mV
-
- # Manually compute steady states
- M_inf = 0.5 * (1. + u.math.tanh((V_test - neuron.V1) / neuron.V2))
- W_inf = 0.5 * (1. + u.math.tanh((V_test - neuron.V3) / neuron.V4))
-
- # Steady states should be in [0, 1]
- if hasattr(M_inf, 'mantissa'):
- self.assertTrue(jnp.all((M_inf.mantissa >= 0) & (M_inf.mantissa <= 1)))
- self.assertTrue(jnp.all((W_inf.mantissa >= 0) & (W_inf.mantissa <= 1)))
- else:
- self.assertTrue(jnp.all((M_inf >= 0) & (M_inf <= 1)))
- self.assertTrue(jnp.all((W_inf >= 0) & (W_inf <= 1)))
-
- def test_wang_buzsaki_m_inf(self):
- # Test that m_inf is properly computed and in valid range
- neuron = WangBuzsakiHH(self.in_size)
- neuron.init_state()
-
- V_test = jnp.linspace(-80, 40, self.in_size) * u.mV
- m_inf = neuron.m_inf(V_test)
-
- # m_inf should be in [0, 1]
- if hasattr(m_inf, 'mantissa'):
- self.assertTrue(jnp.all((m_inf.mantissa >= 0) & (m_inf.mantissa <= 1)))
- else:
- self.assertTrue(jnp.all((m_inf >= 0) & (m_inf <= 1)))
-
- def test_different_parameters(self):
- # Test HH with different conductance values
- hh_custom = HH(
- self.in_size,
- ENa=50. * u.mV,
- gNa=100. * u.msiemens,
- EK=-80. * u.mV,
- gK=30. * u.msiemens
- )
- hh_custom.init_state(self.batch_size)
- self.assertEqual(hh_custom.ENa, 50. * u.mV)
- self.assertEqual(hh_custom.gNa, 100. * u.msiemens)
-
- # Test MorrisLecar with different parameters
- ml_custom = MorrisLecar(
- self.in_size,
- V_Ca=120. * u.mV,
- g_Ca=4.0 * u.msiemens,
- phi=0.05 / u.ms
- )
- ml_custom.init_state(self.batch_size)
- self.assertEqual(ml_custom.V_Ca, 120. * u.mV)
- self.assertEqual(ml_custom.phi, 0.05 / u.ms)
-
- # Test WangBuzsakiHH with different phi
- wb_custom = WangBuzsakiHH(
- self.in_size,
- phi=10.0
- )
- wb_custom.init_state(self.batch_size)
- if hasattr(wb_custom.phi, 'mantissa'):
- self.assertEqual(float(wb_custom.phi.mantissa), 10.0)
- else:
- self.assertEqual(float(wb_custom.phi), 10.0)
-
- def test_ionic_currents(self):
- # Test that ionic currents are computed
- neuron = HH(self.in_size)
- neuron.init_state(self.batch_size)
-
- # Run one update
- inputs = jnp.ones((self.batch_size, self.in_size)) * 10. * u.uA
- with brainstate.environ.context(dt=self.dt):
- out = neuron.update(inputs)
-
- # Check that state variables have changed (indicating currents were applied)
- initial_V = braintools.init.param(neuron.V_initializer, neuron.varshape, self.batch_size)
- if hasattr(initial_V, 'mantissa'):
- self.assertFalse(jnp.allclose(neuron.V.value.mantissa, initial_V.mantissa))
- else:
- self.assertFalse(jnp.allclose(neuron.V.value, initial_V))
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/brainpy/state/_inputs.py b/brainpy/state/_inputs.py
deleted file mode 100644
index 8b88f9c86..000000000
--- a/brainpy/state/_inputs.py
+++ /dev/null
@@ -1,558 +0,0 @@
-# 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.
-# ==============================================================================
-
-from typing import Union, Optional, Sequence, Callable
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-import numpy as np
-from brainstate.typing import ArrayLike, Size, DTypeLike
-
-from ._misc import set_module_as
-
-__all__ = [
- 'SpikeTime',
- 'PoissonSpike',
- 'PoissonEncoder',
- 'PoissonInput',
- 'poisson_input',
-]
-
-
-class SpikeTime(brainstate.nn.Dynamics):
- """The input neuron group characterized by spikes emitting at given times.
-
- >>> # Get 2 neurons, firing spikes at 10 ms and 20 ms.
- >>> SpikeTime(2, times=[10, 20])
- >>> # or
- >>> # Get 2 neurons, the neuron 0 fires spikes at 10 ms and 20 ms.
- >>> SpikeTime(2, times=[10, 20], indices=[0, 0])
- >>> # or
- >>> # Get 2 neurons, neuron 0 fires at 10 ms and 30 ms, neuron 1 fires at 20 ms.
- >>> SpikeTime(2, times=[10, 20, 30], indices=[0, 1, 0])
- >>> # or
- >>> # Get 2 neurons; at 10 ms, neuron 0 fires; at 20 ms, neuron 0 and 1 fire;
- >>> # at 30 ms, neuron 1 fires.
- >>> SpikeTime(2, times=[10, 20, 20, 30], indices=[0, 0, 1, 1])
-
- Parameters
- ----------
- in_size : int, tuple, list
- The neuron group geometry.
- indices : list, tuple, ArrayType
- The neuron indices at each time point to emit spikes.
- times : list, tuple, ArrayType
- The time points which generate the spikes.
- name : str, optional
- The name of the dynamic system.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- indices: Union[Sequence, ArrayLike],
- times: Union[Sequence, ArrayLike],
- spk_type: DTypeLike = bool,
- name: Optional[str] = None,
- need_sort: bool = True,
- ):
- super().__init__(in_size=in_size, name=name)
-
- # parameters
- if len(indices) != len(times):
- raise ValueError(f'The length of "indices" and "times" must be the same. '
- f'However, we got {len(indices)} != {len(times)}.')
- self.num_times = len(times)
- self.spk_type = spk_type
-
- # data about times and indices
- self.times = u.math.asarray(times)
- self.indices = u.math.asarray(indices, dtype=brainstate.environ.ditype())
- if need_sort:
- sort_idx = u.math.argsort(self.times)
- self.indices = self.indices[sort_idx]
- self.times = self.times[sort_idx]
-
- def init_state(self, *args, **kwargs):
- self.i = brainstate.ShortTermState(-1)
-
- def reset_state(self, batch_size=None, **kwargs):
- self.i.value = -1
-
- def update(self):
- t = brainstate.environ.get('t')
-
- def _cond_fun(spikes):
- i = self.i.value
- return u.math.logical_and(i < self.num_times, t >= self.times[i])
-
- def _body_fun(spikes):
- i = self.i.value
- spikes = spikes.at[..., self.indices[i]].set(True)
- self.i.value += 1
- return spikes
-
- spike = u.math.zeros(self.varshape, dtype=self.spk_type)
- spike = brainstate.transform.while_loop(_cond_fun, _body_fun, spike)
- return spike
-
-
-class PoissonSpike(brainstate.nn.Dynamics):
- """
- Poisson Neuron Group.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- freqs: Union[ArrayLike, Callable],
- spk_type: DTypeLike = bool,
- name: Optional[str] = None,
- ):
- super().__init__(in_size=in_size, name=name)
-
- self.spk_type = spk_type
-
- # parameters
- self.freqs = braintools.init.param(freqs, self.varshape, allow_none=False)
-
- def update(self):
- spikes = brainstate.random.rand(*self.varshape) <= (self.freqs * brainstate.environ.get_dt())
- spikes = u.math.asarray(spikes, dtype=self.spk_type)
- return spikes
-
-
-class PoissonEncoder(brainstate.nn.Dynamics):
- r"""Poisson spike encoder for converting firing rates to spike trains.
-
- This class implements a Poisson process to generate spikes based on provided
- firing rates. Unlike the PoissonSpike class, this encoder accepts firing rates
- as input during the update step rather than having them fixed at initialization.
-
- The spike generation follows a Poisson process where the probability of a spike
- in each time step is proportional to the firing rate and the simulation time step:
-
- $$
- P(\text{spike}) = \text{rate} \cdot \text{dt}
- $$
-
- For each neuron and time step, the encoder draws a random number from a uniform
- distribution [0,1] and generates a spike if the number is less than or equal to
- the spiking probability.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the encoder, defining the shape of the output spike train.
- spk_type : DTypeLike, default=bool
- Data type for the generated spikes. Typically boolean for binary spikes.
- name : str, optional
- Name of the encoder brainstate.nn.Module.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>> import numpy as np
- >>>
- >>> # Create a Poisson encoder for 10 neurons
- >>> encoder = brainpy.state.PoissonEncoder(10)
- >>>
- >>> # Generate spikes with varying firing rates
- >>> rates = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) * u.Hz
- >>> spikes = encoder.update(rates)
- >>>
- >>> # Use in a more complex processing pipeline
- >>> # First, generate rate-coded output from an analog signal
- >>> analog_values = np.random.rand(10) * 100 # values between 0 and 100
- >>> firing_rates = analog_values * u.Hz # convert to firing rates
- >>> spike_train = encoder.update(firing_rates)
- >>>
- >>> # Feed the spikes into a spiking neural network
- >>> neuron_layer = brainpy.state.LIF(10)
- >>> neuron_layer.init_state(batch_size=1)
- >>> output_spikes = neuron_layer.update(spike_train)
-
- Notes
- -----
- - This encoder is particularly useful for rate-to-spike conversion in neuromorphic
- computing applications and sensory encoding tasks.
- - The statistical properties of the generated spike trains follow a Poisson process,
- where the inter-spike intervals are exponentially distributed.
- - For small time steps (dt), the number of spikes in a time window T approximately
- follows a Poisson distribution with parameter λ = rate * T.
- - Unlike PoissonSpike which has fixed rates, this encoder allows dynamic rate changes
- with every update call, making it suitable for encoding time-varying signals.
- - The independence of spike generation between time steps results in renewal process
- statistics without memory of previous spiking history.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- spk_type: DTypeLike = bool,
- name: Optional[str] = None,
- ):
- super().__init__(in_size=in_size, name=name)
- self.spk_type = spk_type
-
- def update(self, freqs: ArrayLike):
- spikes = brainstate.random.rand(*self.varshape) <= (freqs * brainstate.environ.get_dt())
- spikes = u.math.asarray(spikes, dtype=self.spk_type)
- return spikes
-
-
-class PoissonInput(brainstate.nn.Module):
- r"""Poisson Input to the given state variable.
-
- This class provides a way to add independent Poisson-distributed spiking input
- to a target state variable. For large numbers of inputs, this implementation is
- computationally more efficient than creating separate Poisson spike generators.
-
- The synaptic events are generated randomly during simulation runtime and are not
- preloaded or stored in memory, which improves memory efficiency for large-scale
- simulations. All inputs target the same variable with the same frequency and
- synaptic weight.
-
- The Poisson process generates spikes with probability based on the frequency and
- simulation time step:
-
- $$
- P(\text{spike}) = \text{freq} \cdot \text{dt}
- $$
-
- For computational efficiency, two different methods are used for spike generation:
-
- 1. For large numbers of inputs, a normal approximation:
- $$
- \text{inputs} \sim \mathcal{N}(\mu, \sigma^2)
- $$
- where $\mu = \text{num\_input} \cdot p$ and $\sigma^2 = \text{num\_input} \cdot p \cdot (1-p)$
-
- 2. For smaller numbers, a direct binomial sampling:
- $$
- \text{inputs} \sim \text{Binomial}(\text{num\_input}, p)
- $$
-
- where $p = \text{freq} \cdot \text{dt}$ in both cases.
-
- Parameters
- ----------
- target : brainstate.nn.Prefetch
- The variable that is targeted by this input. Should be an instance of
- :py:class:`brainstate.State` that's brainstate.nn.Prefetched via the target mechanism.
- indices : Union[np.ndarray, jax.Array]
- Indices of the target to receive input. If None, input is applied to the entire target.
- num_input : int
- The number of independent Poisson input sources.
- freq : Union[int, float]
- The firing frequency of each input source in Hz.
- weight : ndarray, float, or brainunit.Quantity
- The synaptic weight of each input spike.
- name : Optional[str], optional
- The name of this brainstate.nn.Module.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>> import numpy as np
- >>>
- >>> # Create a neuron group with membrane potential
- >>> neuron = brainpy.state.LIF(100)
- >>> neuron.init_state(batch_size=1)
- >>>
- >>> # Add Poisson input to all neurons
- >>> poisson_in = brainpy.state.PoissonInput(
- ... target=neuron.V,
- ... indices=None,
- ... num_input=200,
- ... freq=50 * u.Hz,
- ... weight=0.1 * u.mV
- ... )
- >>>
- >>> # Add Poisson input only to specific neurons
- >>> indices = np.array([0, 10, 20, 30])
- >>> specific_input = brainpy.state.PoissonInput(
- ... target=neuron.V,
- ... indices=indices,
- ... num_input=50,
- ... freq=100 * u.Hz,
- ... weight=0.2 * u.mV
- ... )
- >>>
- >>> # Run simulation with the inputs
- >>> for t in range(100):
- ... poisson_in.update()
- ... specific_input.update()
- ... neuron.update()
-
- Notes
- -----
- - The Poisson inputs are statistically independent between update steps and across
- target neurons.
- - This implementation is particularly efficient for large numbers of inputs or targets.
- - For very sparse connectivity patterns, consider using individual PoissonSpike neurons
- with specific connectivity patterns instead.
- - The update method internally calls the poisson_input function which handles the
- spike generation and target state updates.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- target: brainstate.nn.Prefetch,
- indices: Union[np.ndarray, jax.Array],
- num_input: int,
- freq: u.Quantity[u.Hz],
- weight: Union[jax.typing.ArrayLike, u.Quantity],
- name: Optional[str] = None,
- ):
- super().__init__(name=name)
-
- self.target = target
- self.indices = indices
- self.num_input = num_input
- self.freq = freq
- self.weight = weight
-
- def update(self):
- target_state = getattr(self.target.module, self.target.item)
-
- # generate Poisson input
- poisson_input(
- self.freq,
- self.num_input,
- self.weight,
- target_state,
- self.indices,
- )
-
-
-@set_module_as('brainpy.state')
-def poisson_input(
- freq: u.Quantity[u.Hz],
- num_input: int,
- weight: Union[jax.typing.ArrayLike, u.Quantity],
- target: brainstate.State,
- indices: Optional[Union[np.ndarray, jax.Array]] = None,
- refractory: Optional[Union[jax.Array]] = None,
-):
- r"""Generates Poisson-distributed input spikes to a target state variable.
-
- This function simulates Poisson input to a given state, updating the target
- variable with generated spikes based on the specified frequency, number of inputs,
- and synaptic weight. The input can be applied to specific indices of the target
- or to the entire target if indices are not provided.
-
- The function uses two different methods to generate the Poisson-distributed input:
- 1. For large numbers of inputs (a > 5 and b > 5), a normal approximation is used
- 2. For smaller numbers, a direct binomial sampling approach is used
-
- Mathematical model for Poisson input:
- $$
- P(\text{spike}) = \text{freq} \cdot \text{dt}
- $$
-
- For the normal approximation (when a > 5 and b > 5):
- $$
- \text{inputs} \sim \mathcal{N}(a, b \cdot p)
- $$
- where:
- $$
- a = \text{num\_input} \cdot p
- $$
- $$
- b = \text{num\_input} \cdot (1 - p)
- $$
- $$
- p = \text{freq} \cdot \text{dt}
- $$
-
- For direct binomial sampling (when a ≤ 5 or b ≤ 5):
- $$
- \text{inputs} \sim \text{Binomial}(\text{num\_input}, p)
- $$
-
- Parameters
- ----------
- freq : u.Quantity[u.Hz]
- The frequency of the Poisson input in Hertz.
- num_input : int
- The number of input channels or neurons generating the Poisson spikes.
- weight : u.Quantity
- The synaptic weight applied to each spike.
- target : State
- The target state variable to which the Poisson input is applied.
- indices : Optional[Union[np.ndarray, jax.Array]], optional
- Specific indices of the target to apply the input. If None, the input is applied
- to the entire target.
- refractory : Optional[Union[jax.Array]], optional
- A boolean array indicating which parts of the target are in a refractory state
- and should not be updated. Should be the same length as the target.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>> import numpy as np
- >>>
- >>> # Create a membrane potential state
- >>> V = brainstate.HiddenState(np.zeros(100) * u.mV)
- >>>
- >>> # Add Poisson input to all neurons at 50 Hz
- >>> brainpy.state.poisson_input(
- ... freq=50 * u.Hz,
- ... num_input=200,
- ... weight=0.1 * u.mV,
- ... target=V
- ... )
- >>>
- >>> # Apply Poisson input only to a subset of neurons
- >>> indices = np.array([0, 10, 20, 30])
- >>> brainpy.state.poisson_input(
- ... freq=100 * u.Hz,
- ... num_input=50,
- ... weight=0.2 * u.mV,
- ... target=V,
- ... indices=indices
- ... )
- >>>
- >>> # Apply input with refractory mask
- >>> refractory = np.zeros(100, dtype=bool)
- >>> refractory[40:60] = True # neurons 40-59 are in refractory period
- >>> brainpy.state.poisson_input(
- ... freq=75 * u.Hz,
- ... num_input=100,
- ... weight=0.15 * u.mV,
- ... target=V,
- ... refractory=refractory
- ... )
-
- Notes
- -----
- - The function automatically switches between normal approximation and binomial
- sampling based on the input parameters to optimize computation efficiency.
- - For large numbers of inputs, the normal approximation provides significant
- performance improvements.
- - The weight parameter is applied uniformly to all generated spikes.
- - When refractory is provided, the corresponding target elements are not updated.
- """
- freq = brainstate.maybe_state(freq)
- weight = brainstate.maybe_state(weight)
-
- assert isinstance(target, brainstate.State), 'The target must be a State.'
- p = freq * brainstate.environ.get_dt()
- p = p.to_decimal() if isinstance(p, u.Quantity) else p
- a = num_input * p
- b = num_input * (1 - p)
- tar_val = target.value
- cond = u.math.logical_and(a > 5, b > 5)
-
- if indices is None:
- # generate Poisson input
- branch1 = jax.tree.map(
- lambda tar: brainstate.random.normal(
- a,
- b * p,
- tar.shape,
- dtype=tar.dtype
- ),
- tar_val,
- is_leaf=u.math.is_quantity
- )
- branch2 = jax.tree.map(
- lambda tar: brainstate.random.binomial(
- num_input,
- p,
- tar.shape,
- check_valid=False,
- dtype=tar.dtype
- ),
- tar_val,
- is_leaf=u.math.is_quantity,
- )
-
- inp = jax.tree.map(
- lambda b1, b2: u.math.where(cond, b1, b2),
- branch1,
- branch2,
- is_leaf=u.math.is_quantity,
- )
-
- # update target variable
- data = jax.tree.map(
- lambda tar, x: tar + x * weight,
- target.value,
- inp,
- is_leaf=u.math.is_quantity
- )
-
- else:
- # generate Poisson input
- branch1 = jax.tree.map(
- lambda tar: brainstate.random.normal(
- a,
- b * p,
- tar[indices].shape,
- dtype=tar.dtype
- ),
- tar_val,
- is_leaf=u.math.is_quantity
- )
- branch2 = jax.tree.map(
- lambda tar: brainstate.random.binomial(
- num_input,
- p,
- tar[indices].shape,
- check_valid=False,
- dtype=tar.dtype
- ),
- tar_val,
- is_leaf=u.math.is_quantity
- )
-
- inp = jax.tree.map(
- lambda b1, b2: u.math.where(cond, b1, b2),
- branch1,
- branch2,
- is_leaf=u.math.is_quantity,
- )
-
- # update target variable
- data = jax.tree.map(
- lambda x, tar: tar.at[indices].add(x * weight),
- inp,
- tar_val,
- is_leaf=u.math.is_quantity
- )
-
- if refractory is not None:
- target.value = jax.tree.map(
- lambda x, tar: u.math.where(refractory, tar, x),
- data,
- tar_val,
- is_leaf=u.math.is_quantity
- )
- else:
- target.value = data
diff --git a/brainpy/state/_izhikevich.py b/brainpy/state/_izhikevich.py
deleted file mode 100644
index 586e23c7e..000000000
--- a/brainpy/state/_izhikevich.py
+++ /dev/null
@@ -1,407 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-from typing import Callable
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-from brainstate.typing import ArrayLike, Size
-
-from ._base import Neuron
-
-__all__ = [
- 'Izhikevich', 'IzhikevichRef',
-]
-
-
-class Izhikevich(Neuron):
- r"""Izhikevich neuron model.
-
- This class implements the Izhikevich neuron model, a two-dimensional spiking neuron
- model that can reproduce a wide variety of neuronal firing patterns observed in
- biological neurons. The model combines computational efficiency with biological
- plausibility through a quadratic voltage dynamics and a linear recovery variable.
-
- The model is characterized by the following differential equations:
-
- $$
- \frac{dV}{dt} = 0.04 V^2 + 5V + 140 - u + I(t)
- $$
-
- $$
- \frac{du}{dt} = a(bV - u)
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike, set $V = c$ and $u = u + d$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- a : ArrayLike, default=0.02 / u.ms
- Time scale of the recovery variable u. Smaller values result in slower recovery.
- b : ArrayLike, default=0.2 / u.ms
- Sensitivity of the recovery variable u to the membrane potential V.
- c : ArrayLike, default=-65. * u.mV
- After-spike reset value of the membrane potential.
- d : ArrayLike, default=8. * u.mV / u.ms
- After-spike increment of the recovery variable u.
- V_th : ArrayLike, default=30. * u.mV
- Spike threshold voltage.
- V_initializer : Callable
- Initializer for the membrane potential state.
- u_initializer : Callable
- Initializer for the recovery variable state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='hard'
- Reset mechanism after spike generation:
- - 'soft': subtract threshold V = V - V_th
- - 'hard': strict reset using stop_gradient
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- u : HiddenState
- Recovery variable.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an Izhikevich neuron layer with 10 neurons
- >>> izh = brainpy.state.Izhikevich(10)
- >>>
- >>> # Initialize the state
- >>> izh.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = izh.update(x=10.*u.mV/u.ms)
-
- Notes
- -----
- - The quadratic term in the voltage equation (0.04*V^2) provides a sharp spike
- upstroke similar to biological neurons.
- - Different combinations of parameters (a, b, c, d) can reproduce various neuronal
- behaviors including regular spiking, intrinsically bursting, chattering, and
- fast spiking.
- - The model uses a hard reset mechanism where V is set to c and u is incremented
- by d when a spike occurs.
- - Parameter ranges: a ∈ [0.01, 0.1], b ∈ [0.2, 0.3], c ∈ [-65, -50], d ∈ [0.1, 10]
-
- References
- ----------
- .. [1] Izhikevich, E. M. (2003). Simple model of spiking neurons. IEEE Transactions
- on neural networks, 14(6), 1569-1572.
- .. [2] Izhikevich, E. M. (2004). Which model to use for cortical spiking neurons?.
- IEEE transactions on neural networks, 15(5), 1063-1070.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- a: ArrayLike = 0.02 / u.ms,
- b: ArrayLike = 0.2 / u.ms,
- c: ArrayLike = -65. * u.mV,
- d: ArrayLike = 8. * u.mV / u.ms,
- V_th: ArrayLike = 30. * u.mV,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- u_initializer: Callable = braintools.init.Constant(0. * u.mV / u.ms),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'hard',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.c = braintools.init.param(c, self.varshape)
- self.d = braintools.init.param(d, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
-
- # pre-computed coefficients for quadratic equation
- self.p1 = 0.04 / (u.ms * u.mV)
- self.p2 = 5. / u.ms
- self.p3 = 140. * u.mV / u.ms
-
- # initializers
- self.V_initializer = V_initializer
- self.u_initializer = u_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.u = brainstate.HiddenState(braintools.init.param(self.u_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.u.value = braintools.init.param(self.u_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mV / u.ms):
- last_v = self.V.value
- last_u = self.u.value
- last_spk = self.get_spike(last_v)
-
- # Izhikevich uses hard reset: V → c, u → u + d
- V = u.math.where(last_spk > 0., self.c, last_v)
- u_val = last_u + self.d * last_spk
-
- # voltage dynamics: dV/dt = 0.04*V^2 + 5*V + 140 - u + I
- def dv(v):
- I_total = self.sum_current_inputs(x, v)
- return self.p1 * v * v + self.p2 * v + self.p3 - u_val + I_total
-
- # recovery dynamics: du/dt = a(bV - u)
- def du(u_):
- return self.a * (self.b * V - u_)
-
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
- u_val = brainstate.nn.exp_euler_step(du, u_val)
-
- self.V.value = V
- self.u.value = u_val
- return self.get_spike(V)
-
-
-class IzhikevichRef(Neuron):
- r"""Izhikevich neuron model with refractory period.
-
- This class implements the Izhikevich neuron model with an absolute refractory period.
- During the refractory period after a spike, the neuron cannot fire regardless of input,
- which better captures the behavior of biological neurons that exhibit a recovery period
- after action potential generation.
-
- The model is characterized by the following equations:
-
- When not in refractory period:
-
- $$
- \frac{dV}{dt} = 0.04 V^2 + 5V + 140 - u + I(t)
- $$
-
- $$
- \frac{du}{dt} = a(bV - u)
- $$
-
- During refractory period:
-
- $$
- V = c, \quad u = u
- $$
-
- Spike condition:
- If $V \geq V_{th}$ and not in refractory period: emit spike, set $V = c$, $u = u + d$,
- and enter refractory period for $\tau_{ref}$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- a : ArrayLike, default=0.02 / u.ms
- Time scale of the recovery variable u.
- b : ArrayLike, default=0.2 / u.ms
- Sensitivity of the recovery variable u to the membrane potential V.
- c : ArrayLike, default=-65. * u.mV
- After-spike reset value of the membrane potential.
- d : ArrayLike, default=8. * u.mV / u.ms
- After-spike increment of the recovery variable u.
- V_th : ArrayLike, default=30. * u.mV
- Spike threshold voltage.
- tau_ref : ArrayLike, default=0. * u.ms
- Refractory period duration.
- V_initializer : Callable
- Initializer for the membrane potential state.
- u_initializer : Callable
- Initializer for the recovery variable state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='hard'
- Reset mechanism after spike generation.
- ref_var : bool, default=False
- Whether to expose a boolean refractory state variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- u : HiddenState
- Recovery variable.
- last_spike_time : ShortTermState
- Time of the last spike, used to implement refractory period.
- refractory : HiddenState
- Neuron refractory state (if ref_var=True).
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an IzhikevichRef neuron layer with 10 neurons
- >>> izh_ref = brainpy.state.IzhikevichRef(10, tau_ref=2.*u.ms)
- >>>
- >>> # Initialize the state
- >>> izh_ref.init_state(batch_size=1)
- >>>
- >>> # Generate inputs and run simulation
- >>> time_steps = 100
- >>> inputs = brainstate.random.randn(time_steps, 1, 10) * u.mV / u.ms
- >>>
- >>> with brainstate.environ.context(dt=0.1 * u.ms):
- >>> for t in range(time_steps):
- >>> with brainstate.environ.context(t=t*0.1*u.ms):
- >>> spikes = izh_ref.update(x=inputs[t])
-
- Notes
- -----
- - The refractory period is implemented by tracking the time of the last spike
- and preventing membrane potential updates if the elapsed time is less than tau_ref.
- - During the refractory period, the membrane potential remains at the reset value c
- regardless of input current strength.
- - Refractory periods prevent high-frequency repetitive firing and are critical
- for realistic neural dynamics.
- - The simulation environment time variable 't' is used to track the refractory state.
-
- References
- ----------
- .. [1] Izhikevich, E. M. (2003). Simple model of spiking neurons. IEEE Transactions
- on neural networks, 14(6), 1569-1572.
- .. [2] Izhikevich, E. M. (2004). Which model to use for cortical spiking neurons?.
- IEEE transactions on neural networks, 15(5), 1063-1070.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- a: ArrayLike = 0.02 / u.ms,
- b: ArrayLike = 0.2 / u.ms,
- c: ArrayLike = -65. * u.mV,
- d: ArrayLike = 8. * u.mV / u.ms,
- V_th: ArrayLike = 30. * u.mV,
- tau_ref: ArrayLike = 0. * u.ms,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- u_initializer: Callable = braintools.init.Constant(0. * u.mV / u.ms),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'hard',
- ref_var: bool = False,
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.c = braintools.init.param(c, self.varshape)
- self.d = braintools.init.param(d, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
-
- # pre-computed coefficients for quadratic equation
- self.p1 = 0.04 / (u.ms * u.mV)
- self.p2 = 5. / u.ms
- self.p3 = 140. * u.mV / u.ms
-
- # initializers
- self.V_initializer = V_initializer
- self.u_initializer = u_initializer
- self.ref_var = ref_var
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.u = brainstate.HiddenState(braintools.init.param(self.u_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
- if self.ref_var:
- self.refractory = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(False), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.u.value = braintools.init.param(self.u_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
- if self.ref_var:
- self.refractory.value = braintools.init.param(
- braintools.init.Constant(False), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mV / u.ms):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_u = self.u.value
- last_spk = self.get_spike(last_v)
-
- # Izhikevich uses hard reset: V → c, u → u + d
- v_reset = u.math.where(last_spk > 0., self.c, last_v)
- u_reset = last_u + self.d * last_spk
-
- # voltage dynamics: dV/dt = 0.04*V^2 + 5*V + 140 - u + I
- def dv(v):
- I_total = self.sum_current_inputs(x, v)
- return self.p1 * v * v + self.p2 * v + self.p3 - u_reset + I_total
-
- # recovery dynamics: du/dt = a(bV - u)
- def du(u_):
- return self.a * (self.b * V_candidate - u_)
-
- V_candidate = brainstate.nn.exp_euler_step(dv, v_reset)
- V_candidate = self.sum_delta_inputs(V_candidate)
- u_candidate = brainstate.nn.exp_euler_step(du, u_reset)
-
- # apply refractory period
- refractory = (t - self.last_spike_time.value) < self.tau_ref
- self.V.value = u.math.where(refractory, v_reset, V_candidate)
- self.u.value = u.math.where(refractory, u_reset, u_candidate)
-
- # spike time evaluation
- spike_cond = self.V.value >= self.V_th
- self.last_spike_time.value = jax.lax.stop_gradient(
- u.math.where(spike_cond, t, self.last_spike_time.value)
- )
- if self.ref_var:
- self.refractory.value = jax.lax.stop_gradient(
- u.math.logical_or(refractory, spike_cond)
- )
- return self.get_spike()
diff --git a/brainpy/state/_izhikevich_test.py b/brainpy/state/_izhikevich_test.py
deleted file mode 100644
index c6cd8a23a..000000000
--- a/brainpy/state/_izhikevich_test.py
+++ /dev/null
@@ -1,291 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-import unittest
-
-import brainstate
-import brainunit as u
-import jax
-import jax.numpy as jnp
-
-from brainpy.state import Izhikevich, IzhikevichRef
-
-
-class TestIzhikevichNeuron(unittest.TestCase):
- def setUp(self):
- self.in_size = 10
- self.batch_size = 5
- self.time_steps = 100
- self.dt = 0.1 * u.ms
-
- def generate_input(self):
- return brainstate.random.randn(self.time_steps, self.batch_size, self.in_size) * u.mV / u.ms
-
- def test_izhikevich_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- neuron = Izhikevich(self.in_size)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.u.value.shape, (self.batch_size, self.in_size))
-
- def test_izhikevich_ref_neuron(self):
- tau_ref = 2.0 * u.ms
- neuron = IzhikevichRef(self.in_size, tau_ref=tau_ref)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau_ref, tau_ref)
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.u.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
-
- def test_izhikevich_ref_with_ref_var(self):
- tau_ref = 2.0 * u.ms
- ref_var = True
- neuron = IzhikevichRef(self.in_size, tau_ref=tau_ref, ref_var=ref_var)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.ref_var, ref_var)
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Check refractory variable
- if neuron.ref_var:
- self.assertEqual(neuron.refractory.value.shape, (self.batch_size, self.in_size))
-
- def test_spike_function(self):
- for NeuronClass in [Izhikevich, IzhikevichRef]:
- neuron = NeuronClass(self.in_size)
- neuron.init_state()
- v = jnp.linspace(-80, 40, self.in_size) * u.mV
- spikes = neuron.get_spike(v)
- self.assertTrue(jnp.all((spikes >= 0) & (spikes <= 1)))
-
- def test_soft_reset(self):
- for NeuronClass in [Izhikevich, IzhikevichRef]:
- neuron = NeuronClass(self.in_size, spk_reset='soft')
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- # For Izhikevich model, soft reset still applies hard reset logic
- # So we just check that V doesn't exceed V_th significantly
- self.assertTrue(jnp.all(neuron.V.value <= neuron.V_th + 10 * u.mV))
-
- def test_hard_reset(self):
- for NeuronClass in [Izhikevich, IzhikevichRef]:
- neuron = NeuronClass(self.in_size, spk_reset='hard')
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- # For Izhikevich, after spike V should be reset to c
- # Check that V is either below threshold or near reset value
- above_c = neuron.V.value >= (neuron.c - 5 * u.mV)
- below_th = neuron.V.value < neuron.V_th
- self.assertTrue(jnp.all(above_c | below_th))
-
- def test_detach_spike(self):
- for NeuronClass in [Izhikevich, IzhikevichRef]:
- neuron = NeuronClass(self.in_size)
- inputs = self.generate_input()
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- self.assertFalse(jax.tree_util.tree_leaves(out)[0].aval.weak_type)
-
- def test_keep_size(self):
- in_size = (2, 3)
- for NeuronClass in [Izhikevich, IzhikevichRef]:
- neuron = NeuronClass(in_size)
- self.assertEqual(neuron.in_size, in_size)
- self.assertEqual(neuron.out_size, in_size)
-
- inputs = brainstate.random.randn(self.time_steps, self.batch_size, *in_size) * u.mV / u.ms
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, *in_size))
-
- def test_different_parameters(self):
- # Test regular spiking (RS) parameters
- rs_neuron = Izhikevich(
- self.in_size,
- a=0.02 / u.ms,
- b=0.2 / u.ms,
- c=-65. * u.mV,
- d=8. * u.mV / u.ms
- )
- rs_neuron.init_state(self.batch_size)
- self.assertEqual(rs_neuron.a, 0.02 / u.ms)
- self.assertEqual(rs_neuron.b, 0.2 / u.ms)
-
- # Test intrinsically bursting (IB) parameters
- ib_neuron = Izhikevich(
- self.in_size,
- a=0.02 / u.ms,
- b=0.2 / u.ms,
- c=-55. * u.mV,
- d=4. * u.mV / u.ms
- )
- ib_neuron.init_state(self.batch_size)
- self.assertEqual(ib_neuron.c, -55. * u.mV)
- self.assertEqual(ib_neuron.d, 4. * u.mV / u.ms)
-
- # Test chattering (CH) parameters
- ch_neuron = Izhikevich(
- self.in_size,
- a=0.02 / u.ms,
- b=0.2 / u.ms,
- c=-50. * u.mV,
- d=2. * u.mV / u.ms
- )
- ch_neuron.init_state(self.batch_size)
- self.assertEqual(ch_neuron.c, -50. * u.mV)
-
- # Test fast spiking (FS) parameters
- fs_neuron = Izhikevich(
- self.in_size,
- a=0.1 / u.ms,
- b=0.2 / u.ms,
- c=-65. * u.mV,
- d=2. * u.mV / u.ms
- )
- fs_neuron.init_state(self.batch_size)
- self.assertEqual(fs_neuron.a, 0.1 / u.ms)
-
- def test_refractory_period_effectiveness(self):
- # Test that refractory period actually prevents firing
- tau_ref = 5.0 * u.ms
- neuron = IzhikevichRef(self.in_size, tau_ref=tau_ref)
- neuron.init_state(self.batch_size)
-
- # Strong constant input to encourage firing
- strong_input = jnp.ones((self.batch_size, self.in_size)) * 20. * u.mV / u.ms
-
- spike_times = []
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t * self.dt):
- out = call(strong_input)
- if jnp.any(out > 0):
- spike_times.append(t * self.dt)
-
- # Check that consecutive spikes are separated by at least tau_ref
- if len(spike_times) > 1:
- for i in range(len(spike_times) - 1):
- time_diff = spike_times[i + 1] - spike_times[i]
- # Allow small numerical errors
- self.assertGreaterEqual(time_diff.to_value(u.ms), (tau_ref - 0.5 * self.dt).to_value(u.ms))
-
- def test_quadratic_dynamics(self):
- # Test that the quadratic term in voltage dynamics is working
- neuron = Izhikevich(self.in_size)
- neuron.init_state(1)
-
- # Set initial conditions
- V_low = -70. * u.mV
- V_high = -50. * u.mV
-
- # Check that dV/dt has quadratic relationship with V
- # At low V, dV/dt should be more negative
- # At high V, dV/dt should be less negative or positive
-
- # This is a qualitative test to ensure the quadratic term is present
- # coefficient p1 should be positive for upward parabola
- # p1 = 0.04 / (ms * mV), just check it's set and positive
- self.assertIsNotNone(neuron.p1)
- # Extract the mantissa value for comparison
- if hasattr(neuron.p1, 'mantissa'):
- self.assertGreater(float(neuron.p1.mantissa), 0)
- else:
- self.assertGreater(float(neuron.p1), 0)
-
- def test_recovery_variable_dynamics(self):
- # Test that recovery variable u properly tracks and affects V
- neuron = Izhikevich(self.in_size)
- neuron.init_state(self.batch_size)
-
- initial_u = neuron.u.value.mantissa.copy()
-
- # Run for some time steps with moderate input
- moderate_input = jnp.ones((self.batch_size, self.in_size)) * 5. * u.mV / u.ms
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(20):
- call(moderate_input)
-
- # u should change from initial value
- self.assertFalse(jnp.allclose(neuron.u.value.mantissa, initial_u, rtol=0.01))
-
- # After a spike, u should increase by d
- # (This is implicitly tested in the spike generation tests)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/brainpy/state/_lif.py b/brainpy/state/_lif.py
deleted file mode 100644
index cc34e4638..000000000
--- a/brainpy/state/_lif.py
+++ /dev/null
@@ -1,2288 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-from typing import Callable
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-from brainstate.typing import ArrayLike, Size
-
-from ._base import Neuron
-
-__all__ = [
- 'IF', 'LIF', 'ExpIF', 'ExpIFRef', 'AdExIF', 'AdExIFRef', 'LIFRef', 'ALIF',
- 'QuaIF', 'AdQuaIF', 'AdQuaIFRef', 'Gif', 'GifRef',
-]
-
-
-class IF(Neuron):
- r"""Integrate-and-Fire (IF) neuron model.
-
- This class implements the classic Integrate-and-Fire neuron model, one of the simplest
- spiking neuron models. It accumulates input current until the membrane potential reaches
- a threshold, at which point it fires a spike and resets the potential.
-
- The model is characterized by the following differential equation:
-
- $$
- \tau \frac{dV}{dt} = -V + R \cdot I(t)
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike and reset $V = V - V_{th}$ (soft reset) or $V = 0$ (hard reset)
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=5. * u.ms
- Membrane time constant.
- V_th : ArrayLike, default=1. * u.mV
- Firing threshold voltage (should be positive).
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation:
- - 'soft': subtract threshold V = V - V_th
- - 'hard': strict reset using stop_gradient
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an IF neuron layer with 10 neurons
- >>> if_neuron = brainpy.state.IF(10, tau=8*u.ms, V_th=1.2*u.mV)
- >>>
- >>> # Initialize the state
- >>> if_neuron.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = if_neuron.update(x=2.0*u.mA)
- >>>
- >>> # Create a network with IF neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.IF(100, tau=5.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - Unlike the LIF model, the IF model has no leak towards a resting potential.
- - The membrane potential decays exponentially with time constant tau in the absence of input.
- - The time-dependent dynamics are integrated using an exponential Euler method.
- - The IF model is perfect integrator in the sense that it accumulates input indefinitely
- until reaching threshold, without any leak current.
-
- References
- ----------
- .. [1] Lapicque, L. (1907). Recherches quantitatives sur l'excitation électrique
- des nerfs traitée comme une polarisation. Journal de Physiologie et de
- Pathologie Générale, 9, 620-635.
- .. [2] Abbott, L. F. (1999). Lapicque's introduction of the integrate-and-fire
- model neuron (1907). Brain Research Bulletin, 50(5-6), 303-304.
- .. [3] Burkitt, A. N. (2006). A review of the integrate-and-fire neuron model:
- I. Homogeneous synaptic input. Biological cybernetics, 95(1), 1-19.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: brainstate.typing.Size,
- R: brainstate.typing.ArrayLike = 1. * u.ohm,
- tau: brainstate.typing.ArrayLike = 5. * u.ms,
- V_th: brainstate.typing.ArrayLike = 1. * u.mV, # should be positive
- V_initializer: Callable = braintools.init.Constant(0. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_initializer = V_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
-
- def get_spike(self, V=None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- # reset
- last_V = self.V.value
- last_spike = self.get_spike(self.V.value)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_V)
- V = last_V - V_th * last_spike
- # membrane potential
- dv = lambda v: (-v + self.R * self.sum_current_inputs(x, v)) / self.tau
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
- self.V.value = V
- return self.get_spike(V)
-
-
-class LIF(Neuron):
- r"""Leaky Integrate-and-Fire (LIF) neuron model.
-
- This class implements the Leaky Integrate-and-Fire neuron model, which extends the basic
- Integrate-and-Fire model by adding a leak term. The leak causes the membrane potential
- to decay towards a resting value in the absence of input, making the model more
- biologically plausible.
-
- The model is characterized by the following differential equation:
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + R \cdot I(t)
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike and reset $V = V_{reset}$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=5. * u.ms
- Membrane time constant.
- V_th : ArrayLike, default=1. * u.mV
- Firing threshold voltage.
- V_reset : ArrayLike, default=0. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=0. * u.mV
- Resting membrane potential.
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation:
- - 'soft': subtract threshold V = V - V_th
- - 'hard': strict reset using stop_gradient
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a LIF neuron layer with 10 neurons
- >>> lif = brainpy.state.LIF(10, tau=10*u.ms, V_th=0.8*u.mV)
- >>>
- >>> # Initialize the state
- >>> lif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = lif.update(x=1.5*u.mA)
-
- Notes
- -----
- - The leak term causes the membrane potential to decay exponentially towards V_rest
- with time constant tau when no input is present.
- - The time-dependent dynamics are integrated using an exponential Euler method.
- - Spike generation is non-differentiable, so surrogate gradients are used for
- backpropagation during training.
-
- References
- ----------
- .. [1] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014).
- Neuronal dynamics: From single neurons to networks and models of cognition.
- Cambridge University Press.
- .. [2] Burkitt, A. N. (2006). A review of the integrate-and-fire neuron model:
- I. Homogeneous synaptic input. Biological cybernetics, 95(1), 1-19.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 5. * u.ms,
- V_th: ArrayLike = 1. * u.mV,
- V_reset: ArrayLike = 0. * u.mV,
- V_rest: ArrayLike = 0. * u.mV,
- V_initializer: Callable = braintools.init.Constant(0. * u.mV),
- noise: ArrayLike = None,
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_initializer = V_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * last_spk
- # membrane potential
- dv = lambda v, t: (-v + self.V_rest + self.R * self.sum_current_inputs(x, v)) / self.tau
- V = braintools.quad.ode_expeuler_step(dv, V, None)
- V = self.sum_delta_inputs(V)
- self.V.value = V
- return self.get_spike(V)
-
-
-class ExpIF(Neuron):
- r"""Exponential Integrate-and-Fire (ExpIF) neuron model.
-
- This model augments the LIF neuron by adding an exponential spike-initiation
- term, which provides a smooth approximation of the action potential onset
- and improves biological plausibility for cortical pyramidal cells.
-
- The membrane potential dynamics follow:
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + \Delta_T \exp\left(\frac{V - V_T}{\Delta_T}\right) + R \cdot I(t)
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike and reset $V = V_{reset}$ (hard reset) or
- $V = V - (V_{th} - V_{reset})$ (soft reset).
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- V_th : ArrayLike, default=-30. * u.mV
- Numerical firing threshold voltage.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_T : ArrayLike, default=-59.9 * u.mV
- Threshold potential of the exponential term.
- delta_T : ArrayLike, default=3.48 * u.mV
- Spike slope factor controlling the sharpness of spike initiation.
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a ExpIF neuron layer with 10 neurons
- >>> expif = brainpy.state.ExpIF(10, tau=10*u.ms, V_th=-30*u.mV)
- >>>
- >>> # Initialize the state
- >>> expif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = expif.update(x=1.5*u.mA)
-
- Notes
- -----
- - The model was first introduced by Nicolas Fourcaud-Trocmé, David Hansel, Carl van Vreeswijk
- and Nicolas Brunel [1]_. The exponential nonlinearity was later confirmed by Badel et al. [3]_.
- It is one of the prominent examples of a precise theoretical prediction in computational
- neuroscience that was later confirmed by experimental neuroscience.
- - The right-hand side of the above equation contains a nonlinearity
- that can be directly extracted from experimental data [3]_. In this sense the exponential
- nonlinearity is not an arbitrary choice but directly supported by experimental evidence.
- - Even though it is a nonlinear model, it is simple enough to calculate the firing
- rate for constant input, and the linear response to fluctuations, even in the presence
- of input noise [4]_.
-
- References
- ----------
- .. [1] Fourcaud-Trocmé, Nicolas, et al. "How spike generation
- mechanisms determine the neuronal response to fluctuating
- inputs." Journal of Neuroscience 23.37 (2003): 11628-11640.
- .. [2] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014).
- Neuronal dynamics: From single neurons to networks and models
- of cognition. Cambridge University Press.
- .. [3] Badel, Laurent, Sandrine Lefort, Romain Brette, Carl CH Petersen,
- Wulfram Gerstner, and Magnus JE Richardson. "Dynamic IV curves
- are reliable predictors of naturalistic pyramidal-neuron voltage
- traces." Journal of Neurophysiology 99, no. 2 (2008): 656-666.
- .. [4] Richardson, Magnus JE. "Firing-rate response of linear and nonlinear
- integrate-and-fire neurons to modulated current-based and
- conductance-based synaptic drive." Physical Review E 76, no. 2 (2007): 021919.
- .. [5] https://en.wikipedia.org/wiki/Exponential_integrate-and-fire
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- V_th: ArrayLike = -30. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_T: ArrayLike = -59.9 * u.mV,
- delta_T: ArrayLike = 3.48 * u.mV,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_T = braintools.init.param(V_T, self.varshape)
- self.delta_T = braintools.init.param(delta_T, self.varshape)
- self.V_initializer = V_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * last_spk
-
- def dv(v):
- exp_term = self.delta_T * u.math.exp((v - self.V_T) / self.delta_T)
- return (-(v - self.V_rest) + exp_term + self.R * self.sum_current_inputs(x, v)) / self.tau
-
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
- self.V.value = V
- return self.get_spike(V)
-
-
-class ExpIFRef(Neuron):
- r"""Exponential Integrate-and-Fire neuron model with refractory mechanism.
-
- This neuron adds an absolute refractory period to :class:`ExpIF`. While the exponential
- spike-initiation term keeps the membrane potential dynamics smooth, the refractory
- mechanism prevents the neuron from firing within ``tau_ref`` after a spike.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- tau_ref : ArrayLike, default=1.7 * u.ms
- Absolute refractory period duration.
- V_th : ArrayLike, default=-30. * u.mV
- Numerical firing threshold voltage.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_T : ArrayLike, default=-59.9 * u.mV
- Threshold potential of the exponential term.
- delta_T : ArrayLike, default=3.48 * u.mV
- Spike slope factor controlling spike initiation sharpness.
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- ref_var : bool, default=False
- Whether to expose a boolean refractory state variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- last_spike_time : ShortTermState
- Last spike time recorder.
- refractory : HiddenState
- Neuron refractory state.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a ExpIF neuron layer with 10 neurons
- >>> expif = brainpy.state.ExpIF(10, tau=10*u.ms, V_th=-30*u.mV)
- >>>
- >>> # Initialize the state
- >>> expif.init_state(batch_size=1)
- >>>
- >>> # Generate inputs
- >>> time_steps = 100
- >>> inputs = brainstate.random.randn(time_steps, 1, 10) * u.mA
- >>>
- >>> # Apply an input current and update the neuron state
- >>>
- >>> with brainstate.environ.context(dt=0.1 * u.ms):
- >>> for t in range(time_steps):
- >>> with brainstate.environ.context(t=t*0.1*u.ms):
- >>> spikes = expif.update(x=inputs[t])
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- tau_ref: ArrayLike = 1.7 * u.ms,
- V_th: ArrayLike = -30. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_T: ArrayLike = -59.9 * u.mV,
- delta_T: ArrayLike = 3.48 * u.mV,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- ref_var: bool = False,
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_T = braintools.init.param(V_T, self.varshape)
- self.delta_T = braintools.init.param(delta_T, self.varshape)
- self.V_initializer = V_initializer
- self.ref_var = ref_var
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
- if self.ref_var:
- self.refractory = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(False), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
- if self.ref_var:
- self.refractory.value = braintools.init.param(
- braintools.init.Constant(False), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- v_reset = last_v - (V_th - self.V_reset) * last_spk
-
- def dv(v):
- exp_term = self.delta_T * u.math.exp((v - self.V_T) / self.delta_T)
- return (-(v - self.V_rest) + exp_term + self.R * self.sum_current_inputs(x, v)) / self.tau
-
- V_candidate = brainstate.nn.exp_euler_step(dv, v_reset)
- V_candidate = self.sum_delta_inputs(V_candidate)
-
- refractory = (t - self.last_spike_time.value) < self.tau_ref
- self.V.value = u.math.where(refractory, v_reset, V_candidate)
-
- spike_cond = self.V.value >= self.V_th
- self.last_spike_time.value = jax.lax.stop_gradient(
- u.math.where(spike_cond, t, self.last_spike_time.value)
- )
- if self.ref_var:
- self.refractory.value = jax.lax.stop_gradient(
- u.math.logical_or(refractory, spike_cond)
- )
- return self.get_spike()
-
-
-class AdExIF(Neuron):
- r"""Adaptive exponential Integrate-and-Fire (AdExIF) neuron model.
-
- This model extends :class:`ExpIF` by adding an adaptation current ``w`` that is
- incremented after each spike and relaxes with time constant ``tau_w``. The membrane
- dynamics are governed by two coupled differential equations [1]_:
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + \Delta_T
- \exp\left(\frac{V - V_T}{\Delta_T}\right) - R w + R \cdot I(t)
- $$
-
- $$
- \tau_w \frac{dw}{dt} = a (V - V_{rest}) - w
- $$
-
- After each spike the membrane potential is reset and the adaptation current
- increases by ``b``. This simple mechanism generates rich firing patterns such
- as spike-frequency adaptation and bursting.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- tau_w : ArrayLike, default=30. * u.ms
- Adaptation current time constant.
- V_th : ArrayLike, default=-55. * u.mV
- Spike threshold used for reset.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset potential after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_T : ArrayLike, default=-59.9 * u.mV
- Threshold of the exponential term.
- delta_T : ArrayLike, default=3.48 * u.mV
- Spike slope factor controlling the sharpness of spike initiation.
- a : ArrayLike, default=1. * u.siemens
- Coupling strength from voltage to adaptation current.
- b : ArrayLike, default=1. * u.mA
- Increment of the adaptation current after a spike.
- V_initializer : Callable
- Initializer for the membrane potential state.
- w_initializer : Callable
- Initializer for the adaptation current.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- w : HiddenState
- Adaptation current.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a AdExIF neuron layer with 10 neurons
- >>> adexif = brainpy.state.AdExIF(10, tau=10*u.ms)
- >>>
- >>> # Initialize the state
- >>> adexif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = adexif.update(x=1.5*u.mA)
-
- References
- ----------
- .. [1] Fourcaud-Trocmé, Nicolas, et al. "How spike generation
- mechanisms determine the neuronal response to fluctuating
- inputs." Journal of Neuroscience 23.37 (2003): 11628-11640.
- .. [2] http://www.scholarpedia.org/article/Adaptive_exponential_integrate-and-fire_model
-
- .. seealso::
-
- :class:`brainpy.dyn.AdExIF` for the dynamical-system counterpart.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- tau_w: ArrayLike = 30. * u.ms,
- V_th: ArrayLike = -55. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_T: ArrayLike = -59.9 * u.mV,
- delta_T: ArrayLike = 3.48 * u.mV,
- a: ArrayLike = 1. * u.siemens,
- b: ArrayLike = 1. * u.mA,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- w_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_w = braintools.init.param(tau_w, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_T = braintools.init.param(V_T, self.varshape)
- self.delta_T = braintools.init.param(delta_T, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
-
- # initializers
- self.V_initializer = V_initializer
- self.w_initializer = w_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.w = brainstate.HiddenState(braintools.init.param(self.w_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.w.value = braintools.init.param(self.w_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_w = self.w.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * last_spk
- w = last_w + self.b * last_spk
-
- def dv(v):
- exp_term = self.delta_T * u.math.exp((v - self.V_T) / self.delta_T)
- I_total = self.sum_current_inputs(x, v)
- return (-(v - self.V_rest) + exp_term - self.R * w + self.R * I_total) / self.tau
-
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
-
- def dw_func(w_val):
- return (self.a * (V - self.V_rest) - w_val) / self.tau_w
-
- w = brainstate.nn.exp_euler_step(dw_func, w)
- self.V.value = V
- self.w.value = w
- return self.get_spike(self.V.value)
-
-
-class AdExIFRef(Neuron):
- r"""Adaptive exponential Integrate-and-Fire neuron model with refractory mechanism.
-
- This model extends :class:`AdExIF` by adding an absolute refractory period. While the
- exponential spike-initiation term and adaptation current keep the membrane potential
- dynamics biologically realistic, the refractory mechanism prevents the neuron from
- firing within ``tau_ref`` after a spike.
-
- The membrane dynamics are governed by two coupled differential equations:
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + \Delta_T
- \exp\left(\frac{V - V_T}{\Delta_T}\right) - R w + R \cdot I(t)
- $$
-
- $$
- \tau_w \frac{dw}{dt} = a (V - V_{rest}) - w
- $$
-
- After each spike the membrane potential is reset and the adaptation current
- increases by ``b``. During the refractory period, the membrane potential
- remains at the reset value.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- tau_w : ArrayLike, default=30. * u.ms
- Adaptation current time constant.
- tau_ref : ArrayLike, default=1.7 * u.ms
- Absolute refractory period duration.
- V_th : ArrayLike, default=-55. * u.mV
- Spike threshold used for reset.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset potential after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_T : ArrayLike, default=-59.9 * u.mV
- Threshold of the exponential term.
- delta_T : ArrayLike, default=3.48 * u.mV
- Spike slope factor controlling the sharpness of spike initiation.
- a : ArrayLike, default=1. * u.siemens
- Coupling strength from voltage to adaptation current.
- b : ArrayLike, default=1. * u.mA
- Increment of the adaptation current after a spike.
- V_initializer : Callable
- Initializer for the membrane potential state.
- w_initializer : Callable
- Initializer for the adaptation current.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- ref_var : bool, default=False
- Whether to expose a boolean refractory state variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- w : HiddenState
- Adaptation current.
- last_spike_time : ShortTermState
- Last spike time recorder.
- refractory : HiddenState
- Neuron refractory state (if ref_var=True).
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an AdExIFRef neuron layer with 10 neurons
- >>> adexif_ref = brainpy.state.AdExIFRef(10, tau=10*u.ms, tau_ref=2*u.ms)
- >>>
- >>> # Initialize the state
- >>> adexif_ref.init_state(batch_size=1)
- >>>
- >>> # Generate inputs
- >>> time_steps = 100
- >>> inputs = brainstate.random.randn(time_steps, 1, 10) * u.mA
- >>>
- >>> # Apply input currents and update the neuron state
- >>> with brainstate.environ.context(dt=0.1 * u.ms):
- >>> for t in range(time_steps):
- >>> with brainstate.environ.context(t=t*0.1*u.ms):
- >>> spikes = adexif_ref.update(x=inputs[t])
-
- References
- ----------
- .. [1] Fourcaud-Trocmé, Nicolas, et al. "How spike generation
- mechanisms determine the neuronal response to fluctuating
- inputs." Journal of Neuroscience 23.37 (2003): 11628-11640.
- .. [2] http://www.scholarpedia.org/article/Adaptive_exponential_integrate-and-fire_model
-
- .. seealso::
-
- :class:`brainpy.dyn.AdExIFRef` for the dynamical-system counterpart.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- tau_w: ArrayLike = 30. * u.ms,
- tau_ref: ArrayLike = 1.7 * u.ms,
- V_th: ArrayLike = -55. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_T: ArrayLike = -59.9 * u.mV,
- delta_T: ArrayLike = 3.48 * u.mV,
- a: ArrayLike = 1. * u.siemens,
- b: ArrayLike = 1. * u.mA,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- w_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- ref_var: bool = False,
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_w = braintools.init.param(tau_w, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_T = braintools.init.param(V_T, self.varshape)
- self.delta_T = braintools.init.param(delta_T, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
-
- # initializers
- self.V_initializer = V_initializer
- self.w_initializer = w_initializer
- self.ref_var = ref_var
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.w = brainstate.HiddenState(braintools.init.param(self.w_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
- if self.ref_var:
- self.refractory = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(False), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.w.value = braintools.init.param(self.w_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
- if self.ref_var:
- self.refractory.value = braintools.init.param(
- braintools.init.Constant(False), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_w = self.w.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- v_reset = last_v - (V_th - self.V_reset) * last_spk
- w_reset = last_w + self.b * last_spk
-
- def dv(v):
- exp_term = self.delta_T * u.math.exp((v - self.V_T) / self.delta_T)
- I_total = self.sum_current_inputs(x, v)
- return (-(v - self.V_rest) + exp_term - self.R * w_reset + self.R * I_total) / self.tau
-
- V_candidate = brainstate.nn.exp_euler_step(dv, v_reset)
- V_candidate = self.sum_delta_inputs(V_candidate)
-
- def dw_func(w_val):
- return (self.a * (V_candidate - self.V_rest) - w_val) / self.tau_w
-
- w_candidate = brainstate.nn.exp_euler_step(dw_func, w_reset)
-
- refractory = (t - self.last_spike_time.value) < self.tau_ref
- self.V.value = u.math.where(refractory, v_reset, V_candidate)
- self.w.value = u.math.where(refractory, w_reset, w_candidate)
-
- spike_cond = self.V.value >= self.V_th
- self.last_spike_time.value = jax.lax.stop_gradient(
- u.math.where(spike_cond, t, self.last_spike_time.value)
- )
- if self.ref_var:
- self.refractory.value = jax.lax.stop_gradient(
- u.math.logical_or(refractory, spike_cond)
- )
- return self.get_spike()
-
-
-class LIFRef(Neuron):
- r"""Leaky Integrate-and-Fire neuron model with refractory period.
-
- This class implements a Leaky Integrate-and-Fire neuron model that includes a
- refractory period after spiking, during which the neuron cannot fire regardless
- of input. This better captures the behavior of biological neurons that exhibit
- a recovery period after action potential generation.
-
- The model is characterized by the following equations:
-
- When not in refractory period:
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + R \cdot I(t)
- $$
-
- During refractory period:
- $$
- V = V_{reset}
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike, set $V = V_{reset}$, and enter refractory period for $\tau_{ref}$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=5. * u.ms
- Membrane time constant.
- tau_ref : ArrayLike, default=5. * u.ms
- Refractory period duration.
- V_th : ArrayLike, default=1. * u.mV
- Firing threshold voltage.
- V_reset : ArrayLike, default=0. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=0. * u.mV
- Resting membrane potential.
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation:
- - 'soft': subtract threshold V = V - V_th
- - 'hard': strict reset using stop_gradient
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- last_spike_time : ShortTermState
- Time of the last spike, used to implement refractory period.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a LIFRef neuron layer with 10 neurons
- >>> lifref = brainpy.state.LIFRef(10,
- ... tau=10*u.ms,
- ... tau_ref=5*u.ms,
- ... V_th=0.8*u.mV)
- >>>
- >>> # Initialize the state
- >>> lifref.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = lifref.update(x=1.5*u.mA)
- >>>
- >>> # Create a network with refractory neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.LIFRef(100, tau_ref=4*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - The refractory period is implemented by tracking the time of the last spike
- and preventing membrane potential updates if the elapsed time is less than tau_ref.
- - During the refractory period, the membrane potential remains at the reset value
- regardless of input current strength.
- - Refractory periods prevent high-frequency repetitive firing and are critical
- for realistic neural dynamics.
- - The time-dependent dynamics are integrated using an exponential Euler method.
- - The simulation environment time variable 't' is used to track the refractory state.
-
- References
- ----------
- .. [1] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014).
- Neuronal dynamics: From single neurons to networks and models of cognition.
- Cambridge University Press.
- .. [2] Burkitt, A. N. (2006). A review of the integrate-and-fire neuron model:
- I. Homogeneous synaptic input. Biological cybernetics, 95(1), 1-19.
- .. [3] Izhikevich, E. M. (2003). Simple model of spiking neurons. IEEE Transactions on
- neural networks, 14(6), 1569-1572.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 5. * u.ms,
- tau_ref: ArrayLike = 5. * u.ms,
- V_th: ArrayLike = 1. * u.mV,
- V_reset: ArrayLike = 0. * u.mV,
- V_rest: ArrayLike = 0. * u.mV,
- V_initializer: Callable = braintools.init.Constant(0. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_initializer = V_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- last_v = last_v - (V_th - self.V_reset) * last_spk
- # membrane potential
- dv = lambda v: (-v + self.V_rest + self.R * self.sum_current_inputs(x, v)) / self.tau
- V = brainstate.nn.exp_euler_step(dv, last_v)
- V = self.sum_delta_inputs(V)
- self.V.value = u.math.where(t - self.last_spike_time.value < self.tau_ref, last_v, V)
- # spike time evaluation
- last_spk_time = u.math.where(
- self.V.value >= self.V_th, brainstate.environ.get('t'), self.last_spike_time.value)
- self.last_spike_time.value = jax.lax.stop_gradient(last_spk_time)
- return self.get_spike()
-
-
-class ALIF(Neuron):
- r"""Adaptive Leaky Integrate-and-Fire (ALIF) neuron model.
-
- This class implements the Adaptive Leaky Integrate-and-Fire neuron model, which extends
- the basic LIF model by adding an adaptation variable. This adaptation mechanism increases
- the effective firing threshold after each spike, allowing the neuron to exhibit
- spike-frequency adaptation - a common feature in biological neurons that reduces
- firing rate during sustained stimulation.
-
- The model is characterized by the following differential equations:
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + R \cdot I(t)
- $$
-
- $$
- \tau_a \frac{da}{dt} = -a
- $$
-
- Spike condition:
- If $V \geq V_{th} + \beta \cdot a$: emit spike, set $V = V_{reset}$, and increment $a = a + 1$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=5. * u.ms
- Membrane time constant.
- tau_a : ArrayLike, default=100. * u.ms
- Adaptation time constant (typically much longer than tau).
- V_th : ArrayLike, default=1. * u.mV
- Base firing threshold voltage.
- V_reset : ArrayLike, default=0. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=0. * u.mV
- Resting membrane potential.
- beta : ArrayLike, default=0.1 * u.mV
- Adaptation coupling parameter that scales the effect of the adaptation variable.
- spk_fun : Callable
- Surrogate gradient function for the non-differentiable spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation:
-
- - 'soft': subtract threshold V = V - V_th
- - 'hard': strict reset using stop_gradient
- V_initializer : Callable
- Initializer for the membrane potential state.
- a_initializer : Callable
- Initializer for the adaptation variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- a : HiddenState
- Adaptation variable that increases after each spike and decays exponentially.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an ALIF neuron layer with 10 neurons
- >>> alif = brainpy.state.ALIF(10,
- ... tau=10*u.ms,
- ... tau_a=200*u.ms,
- ... beta=0.2*u.mV)
- >>>
- >>> # Initialize the state
- >>> alif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = alif.update(x=1.5*u.mA)
- >>>
- >>> # Create a network with adaptation for burst detection
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.ALIF(100, tau_a=150*u.ms, beta=0.3*u.mV),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - The adaptation variable 'a' increases by 1 with each spike and decays exponentially
- with time constant tau_a between spikes.
- - The effective threshold increases by beta*a, making it progressively harder for the
- neuron to fire when it has recently been active.
- - This adaptation mechanism creates spike-frequency adaptation, allowing the neuron
- to respond strongly to input onset but then reduce its firing rate even if the
- input remains constant.
- - The adaptation time constant tau_a is typically much larger than the membrane time
- constant tau, creating a longer-lasting adaptation effect.
- - The time-dependent dynamics are integrated using an exponential Euler method.
-
- References
- ----------
- .. [1] Gerstner, W., Kistler, W. M., Naud, R., & Paninski, L. (2014).
- Neuronal dynamics: From single neurons to networks and models of cognition.
- Cambridge University Press.
- .. [2] Brette, R., & Gerstner, W. (2005). Adaptive exponential integrate-and-fire model
- as an effective description of neuronal activity. Journal of neurophysiology,
- 94(5), 3637-3642.
- .. [3] Naud, R., Marcille, N., Clopath, C., & Gerstner, W. (2008). Firing patterns in
- the adaptive exponential integrate-and-fire model. Biological cybernetics,
- 99(4), 335-347.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 5. * u.ms,
- tau_a: ArrayLike = 100. * u.ms,
- V_th: ArrayLike = 1. * u.mV,
- V_reset: ArrayLike = 0. * u.mV,
- V_rest: ArrayLike = 0. * u.mV,
- beta: ArrayLike = 0.1 * u.mV,
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- V_initializer: Callable = braintools.init.Constant(0. * u.mV),
- a_initializer: Callable = braintools.init.Constant(0.),
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_a = braintools.init.param(tau_a, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.beta = braintools.init.param(beta, self.varshape)
-
- # functions
- self.V_initializer = V_initializer
- self.a_initializer = a_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.a = brainstate.HiddenState(braintools.init.param(self.a_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.a.value = braintools.init.param(self.a_initializer, self.varshape, batch_size)
-
- def get_spike(self, V=None, a=None):
- V = self.V.value if V is None else V
- a = self.a.value if a is None else a
- v_scaled = (V - self.V_th - self.beta * a) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_a = self.a.value
- lst_spk = self.get_spike(last_v, last_a)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * lst_spk
- a = last_a + lst_spk
- # membrane potential
- dv = lambda v: (-v + self.V_rest + self.R * self.sum_current_inputs(x, v)) / self.tau
- da = lambda a: -a / self.tau_a
- V = brainstate.nn.exp_euler_step(dv, V)
- a = brainstate.nn.exp_euler_step(da, a)
- self.V.value = self.sum_delta_inputs(V)
- self.a.value = a
- return self.get_spike(self.V.value, self.a.value)
-
-
-class QuaIF(Neuron):
- r"""Quadratic Integrate-and-Fire (QuaIF) neuron model.
-
- This model extends the basic integrate-and-fire neuron by adding a quadratic
- nonlinearity in the voltage dynamics. The quadratic term creates a soft spike
- initiation, making the model more biologically realistic than the linear IF model.
-
- The model is characterized by the following differential equation:
-
- $$
- \tau \frac{dV}{dt} = c(V - V_{rest})(V - V_c) + R \cdot I(t)
- $$
-
- Spike condition:
- If $V \geq V_{th}$: emit spike and reset $V = V_{reset}$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- V_th : ArrayLike, default=-30. * u.mV
- Firing threshold voltage.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_c : ArrayLike, default=-50. * u.mV
- Critical voltage for spike initiation. Must be larger than V_rest.
- c : ArrayLike, default=0.07 / u.mV
- Coefficient describing membrane potential update. Larger than 0.
- V_initializer : Callable
- Initializer for the membrane potential state.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function for the spike generation.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a QuaIF neuron layer with 10 neurons
- >>> quaif = brainpy.state.QuaIF(10, tau=10*u.ms, V_th=-30*u.mV, V_c=-50*u.mV)
- >>>
- >>> # Initialize the state
- >>> quaif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and update the neuron state
- >>> spikes = quaif.update(x=2.5*u.mA)
- >>>
- >>> # Create a network with QuaIF neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.QuaIF(100, tau=10.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - The quadratic nonlinearity provides a more realistic spike initiation compared to LIF.
- - The critical voltage V_c determines the onset of spike generation.
- - When V approaches V_c, the quadratic term causes rapid acceleration toward threshold.
- - This model can exhibit Type I excitability (continuous f-I curve).
-
- References
- ----------
- .. [1] P. E. Latham, B.J. Richmond, P. Nelson and S. Nirenberg
- (2000) Intrinsic dynamics in neuronal networks. I. Theory.
- J. Neurophysiology 83, pp. 808–827.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- V_th: ArrayLike = -30. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_c: ArrayLike = -50. * u.mV,
- c: ArrayLike = 0.07 / u.mV,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_c = braintools.init.param(V_c, self.varshape)
- self.c = braintools.init.param(c, self.varshape)
- self.V_initializer = V_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * last_spk
-
- def dv(v):
- return (self.c * (v - self.V_rest) * (v - self.V_c) + self.R * self.sum_current_inputs(x, v)) / self.tau
-
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
- self.V.value = V
- return self.get_spike(V)
-
-
-class AdQuaIF(Neuron):
- r"""Adaptive Quadratic Integrate-and-Fire (AdQuaIF) neuron model.
-
- This model extends the QuaIF model by adding an adaptation current that increases
- after each spike and decays exponentially between spikes. The adaptation mechanism
- produces spike-frequency adaptation and enables the neuron to exhibit various
- firing patterns.
-
- The model is characterized by the following differential equations:
-
- $$
- \tau \frac{dV}{dt} = c(V - V_{rest})(V - V_c) - w + R \cdot I(t)
- $$
-
- $$
- \tau_w \frac{dw}{dt} = a(V - V_{rest}) - w
- $$
-
- After a spike: $V \rightarrow V_{reset}$, $w \rightarrow w + b$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- tau_w : ArrayLike, default=10. * u.ms
- Adaptation current time constant.
- V_th : ArrayLike, default=-30. * u.mV
- Firing threshold voltage.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_c : ArrayLike, default=-50. * u.mV
- Critical voltage for spike initiation.
- c : ArrayLike, default=0.07 / u.mV
- Coefficient describing membrane potential update.
- a : ArrayLike, default=1. * u.siemens
- Coupling strength from voltage to adaptation current.
- b : ArrayLike, default=0.1 * u.mA
- Increment of adaptation current after a spike.
- V_initializer : Callable
- Initializer for the membrane potential state.
- w_initializer : Callable
- Initializer for the adaptation current.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- w : HiddenState
- Adaptation current.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an AdQuaIF neuron layer with 10 neurons
- >>> adquaif = brainpy.state.AdQuaIF(10, tau=10*u.ms, tau_w=100*u.ms,
- ... a=1.0*u.siemens, b=0.1*u.mA)
- >>>
- >>> # Initialize the state
- >>> adquaif.init_state(batch_size=1)
- >>>
- >>> # Apply an input current and observe spike-frequency adaptation
- >>> spikes = adquaif.update(x=3.0*u.mA)
- >>>
- >>> # Create a network with adaptive neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.AdQuaIF(100, tau=10.0*u.ms, tau_w=100.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - The adaptation current w provides negative feedback, reducing firing rate.
- - Parameter 'a' controls subthreshold adaptation (coupling from V to w).
- - Parameter 'b' controls spike-triggered adaptation (increment after spike).
- - With appropriate parameters, can exhibit regular spiking, bursting, etc.
- - The adaptation time constant tau_w determines adaptation speed.
-
- References
- ----------
- .. [1] Izhikevich, E. M. (2004). Which model to use for cortical spiking
- neurons?. IEEE transactions on neural networks, 15(5), 1063-1070.
- .. [2] Touboul, Jonathan. "Bifurcation analysis of a general class of
- nonlinear integrate-and-fire neurons." SIAM Journal on Applied
- Mathematics 68, no. 4 (2008): 1045-1079.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- tau_w: ArrayLike = 10. * u.ms,
- V_th: ArrayLike = -30. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_c: ArrayLike = -50. * u.mV,
- c: ArrayLike = 0.07 / u.mV,
- a: ArrayLike = 1. * u.siemens,
- b: ArrayLike = 0.1 * u.mA,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- w_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_w = braintools.init.param(tau_w, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_c = braintools.init.param(V_c, self.varshape)
- self.c = braintools.init.param(c, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.V_initializer = V_initializer
- self.w_initializer = w_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.w = brainstate.HiddenState(braintools.init.param(self.w_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.w.value = braintools.init.param(self.w_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_w = self.w.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th - self.V_reset) * last_spk
- w = last_w + self.b * last_spk
-
- def dv(v):
- return (self.c * (v - self.V_rest) * (v - self.V_c) - self.R * w + self.R * self.sum_current_inputs(x, v)) / self.tau
-
- def dw_func(w_val):
- return (self.a * (V - self.V_rest) - w_val) / self.tau_w
-
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
- w = brainstate.nn.exp_euler_step(dw_func, w)
-
- self.V.value = V
- self.w.value = w
- return self.get_spike(V)
-
-
-class AdQuaIFRef(Neuron):
- r"""Adaptive Quadratic Integrate-and-Fire neuron model with refractory mechanism.
-
- This model extends AdQuaIF by adding an absolute refractory period during which
- the neuron cannot fire regardless of input. The combination of adaptation and
- refractory period creates realistic firing patterns.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=1. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=10. * u.ms
- Membrane time constant.
- tau_w : ArrayLike, default=10. * u.ms
- Adaptation current time constant.
- tau_ref : ArrayLike, default=1.7 * u.ms
- Absolute refractory period duration.
- V_th : ArrayLike, default=-30. * u.mV
- Firing threshold voltage.
- V_reset : ArrayLike, default=-68. * u.mV
- Reset voltage after spike.
- V_rest : ArrayLike, default=-65. * u.mV
- Resting membrane potential.
- V_c : ArrayLike, default=-50. * u.mV
- Critical voltage for spike initiation.
- c : ArrayLike, default=0.07 / u.mV
- Coefficient describing membrane potential update.
- a : ArrayLike, default=1. * u.siemens
- Coupling strength from voltage to adaptation current.
- b : ArrayLike, default=0.1 * u.mA
- Increment of adaptation current after a spike.
- V_initializer : Callable
- Initializer for the membrane potential state.
- w_initializer : Callable
- Initializer for the adaptation current.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- ref_var : bool, default=False
- Whether to expose a boolean refractory state variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- w : HiddenState
- Adaptation current.
- last_spike_time : ShortTermState
- Last spike time recorder.
- refractory : HiddenState
- Neuron refractory state (if ref_var=True).
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create an AdQuaIFRef neuron layer with refractory period
- >>> adquaif_ref = brainpy.state.AdQuaIFRef(10, tau=10*u.ms, tau_w=100*u.ms,
- ... tau_ref=2.0*u.ms, ref_var=True)
- >>>
- >>> # Initialize the state
- >>> adquaif_ref.init_state(batch_size=1)
- >>>
- >>> # Apply input and observe refractory behavior
- >>> with brainstate.environ.context(dt=0.1*u.ms, t=0.0*u.ms):
- ... spikes = adquaif_ref.update(x=3.0*u.mA)
- >>>
- >>> # Create a network with refractory adaptive neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.AdQuaIFRef(100, tau=10.0*u.ms, tau_ref=2.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - Combines spike-frequency adaptation with absolute refractory period.
- - During refractory period, neuron state is held at reset values.
- - Set ref_var=True to track refractory state as a boolean variable.
- - Refractory period prevents unrealistically high firing rates.
- - More biologically realistic than AdQuaIF without refractory period.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 1. * u.ohm,
- tau: ArrayLike = 10. * u.ms,
- tau_w: ArrayLike = 10. * u.ms,
- tau_ref: ArrayLike = 1.7 * u.ms,
- V_th: ArrayLike = -30. * u.mV,
- V_reset: ArrayLike = -68. * u.mV,
- V_rest: ArrayLike = -65. * u.mV,
- V_c: ArrayLike = -50. * u.mV,
- c: ArrayLike = 0.07 / u.mV,
- a: ArrayLike = 1. * u.siemens,
- b: ArrayLike = 0.1 * u.mA,
- V_initializer: Callable = braintools.init.Constant(-65. * u.mV),
- w_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- ref_var: bool = False,
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_w = braintools.init.param(tau_w, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_c = braintools.init.param(V_c, self.varshape)
- self.c = braintools.init.param(c, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.V_initializer = V_initializer
- self.w_initializer = w_initializer
- self.ref_var = ref_var
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.w = brainstate.HiddenState(braintools.init.param(self.w_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
- if self.ref_var:
- self.refractory = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(False), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.w.value = braintools.init.param(self.w_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
- if self.ref_var:
- self.refractory.value = braintools.init.param(
- braintools.init.Constant(False), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None):
- V = self.V.value if V is None else V
- v_scaled = (V - self.V_th) / (self.V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_w = self.w.value
- last_spk = self.get_spike(last_v)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- v_reset = last_v - (V_th - self.V_reset) * last_spk
- w_reset = last_w + self.b * last_spk
-
- def dv(v):
- return (self.c * (v - self.V_rest) * (v - self.V_c) - self.R * w_reset + self.R * self.sum_current_inputs(x, v)) / self.tau
-
- V_candidate = brainstate.nn.exp_euler_step(dv, v_reset)
- V_candidate = self.sum_delta_inputs(V_candidate)
-
- def dw_func(w_val):
- return (self.a * (V_candidate - self.V_rest) - w_val) / self.tau_w
-
- w_candidate = brainstate.nn.exp_euler_step(dw_func, w_reset)
-
- refractory = (t - self.last_spike_time.value) < self.tau_ref
- self.V.value = u.math.where(refractory, v_reset, V_candidate)
- self.w.value = u.math.where(refractory, w_reset, w_candidate)
-
- spike_cond = self.V.value >= self.V_th
- self.last_spike_time.value = jax.lax.stop_gradient(
- u.math.where(spike_cond, t, self.last_spike_time.value)
- )
- if self.ref_var:
- self.refractory.value = jax.lax.stop_gradient(
- u.math.logical_or(refractory, spike_cond)
- )
- return self.get_spike()
-
-
-class Gif(Neuron):
- r"""Generalized Integrate-and-Fire (Gif) neuron model.
-
- This model extends the basic integrate-and-fire neuron by adding internal
- currents and a dynamic threshold. The model can reproduce diverse firing
- patterns observed in biological neurons.
-
- The model is characterized by the following equations:
-
- $$
- \frac{dI_1}{dt} = -k_1 I_1
- $$
-
- $$
- \frac{dI_2}{dt} = -k_2 I_2
- $$
-
- $$
- \tau \frac{dV}{dt} = -(V - V_{rest}) + R(I_1 + I_2 + I(t))
- $$
-
- $$
- \frac{dV_{th}}{dt} = a(V - V_{rest}) - b(V_{th} - V_{th\infty})
- $$
-
- When $V \geq V_{th}$:
- - $I_1 \leftarrow R_1 I_1 + A_1$
- - $I_2 \leftarrow R_2 I_2 + A_2$
- - $V \leftarrow V_{reset}$
- - $V_{th} \leftarrow \max(V_{th_{reset}}, V_{th})$
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=20. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=20. * u.ms
- Membrane time constant.
- V_rest : ArrayLike, default=-70. * u.mV
- Resting potential.
- V_reset : ArrayLike, default=-70. * u.mV
- Reset potential after spike.
- V_th_inf : ArrayLike, default=-50. * u.mV
- Target value of threshold potential updating.
- V_th_reset : ArrayLike, default=-60. * u.mV
- Free parameter, should be larger than V_reset.
- V_th_initializer : Callable
- Initializer for the threshold potential.
- a : ArrayLike, default=0. / u.ms
- Coefficient describes dependence of V_th on membrane potential.
- b : ArrayLike, default=0.01 / u.ms
- Coefficient describes V_th update.
- k1 : ArrayLike, default=0.2 / u.ms
- Constant of I1.
- k2 : ArrayLike, default=0.02 / u.ms
- Constant of I2.
- R1 : ArrayLike, default=0.
- Free parameter describing dependence of I1 reset value on I1 before spiking.
- R2 : ArrayLike, default=1.
- Free parameter describing dependence of I2 reset value on I2 before spiking.
- A1 : ArrayLike, default=0. * u.mA
- Free parameter.
- A2 : ArrayLike, default=0. * u.mA
- Free parameter.
- V_initializer : Callable
- Initializer for the membrane potential state.
- I1_initializer : Callable
- Initializer for internal current I1.
- I2_initializer : Callable
- Initializer for internal current I2.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- I1 : HiddenState
- Internal current 1.
- I2 : HiddenState
- Internal current 2.
- V_th : HiddenState
- Spiking threshold potential.
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a Gif neuron layer with dynamic threshold
- >>> gif = brainpy.state.Gif(10, tau=20*u.ms, k1=0.2/u.ms, k2=0.02/u.ms,
- ... a=0.005/u.ms, b=0.01/u.ms)
- >>>
- >>> # Initialize the state
- >>> gif.init_state(batch_size=1)
- >>>
- >>> # Apply input and observe diverse firing patterns
- >>> spikes = gif.update(x=1.5*u.mA)
- >>>
- >>> # Create a network with Gif neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.Gif(100, tau=20.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - The Gif model uses internal currents (I1, I2) for complex dynamics.
- - Dynamic threshold V_th adapts based on membrane potential and its own dynamics.
- - Can reproduce diverse firing patterns: regular spiking, bursting, adaptation.
- - Parameters a and b control threshold adaptation.
- - Parameters k1, k2, R1, R2, A1, A2 control internal current dynamics.
- - More flexible than simpler IF models for matching biological data.
-
- References
- ----------
- .. [1] Mihalaş, Ştefan, and Ernst Niebur. "A generalized linear
- integrate-and-fire neural model produces diverse spiking
- behaviors." Neural computation 21.3 (2009): 704-718.
- .. [2] Teeter, Corinne, Ramakrishnan Iyer, Vilas Menon, Nathan
- Gouwens, David Feng, Jim Berg, Aaron Szafer et al. "Generalized
- leaky integrate-and-fire models classify multiple neuron types."
- Nature communications 9, no. 1 (2018): 1-15.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 20. * u.ohm,
- tau: ArrayLike = 20. * u.ms,
- V_rest: ArrayLike = -70. * u.mV,
- V_reset: ArrayLike = -70. * u.mV,
- V_th_inf: ArrayLike = -50. * u.mV,
- V_th_reset: ArrayLike = -60. * u.mV,
- V_th_initializer: Callable = braintools.init.Constant(-50. * u.mV),
- a: ArrayLike = 0. / u.ms,
- b: ArrayLike = 0.01 / u.ms,
- k1: ArrayLike = 0.2 / u.ms,
- k2: ArrayLike = 0.02 / u.ms,
- R1: ArrayLike = 0.,
- R2: ArrayLike = 1.,
- A1: ArrayLike = 0. * u.mA,
- A2: ArrayLike = 0. * u.mA,
- V_initializer: Callable = braintools.init.Constant(-70. * u.mV),
- I1_initializer: Callable = braintools.init.Constant(0. * u.mA),
- I2_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_th_inf = braintools.init.param(V_th_inf, self.varshape)
- self.V_th_reset = braintools.init.param(V_th_reset, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.k1 = braintools.init.param(k1, self.varshape)
- self.k2 = braintools.init.param(k2, self.varshape)
- self.R1 = braintools.init.param(R1, self.varshape)
- self.R2 = braintools.init.param(R2, self.varshape)
- self.A1 = braintools.init.param(A1, self.varshape)
- self.A2 = braintools.init.param(A2, self.varshape)
- self.V_initializer = V_initializer
- self.I1_initializer = I1_initializer
- self.I2_initializer = I2_initializer
- self.V_th_initializer = V_th_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.I1 = brainstate.HiddenState(braintools.init.param(self.I1_initializer, self.varshape, batch_size))
- self.I2 = brainstate.HiddenState(braintools.init.param(self.I2_initializer, self.varshape, batch_size))
- self.V_th = brainstate.HiddenState(braintools.init.param(self.V_th_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.I1.value = braintools.init.param(self.I1_initializer, self.varshape, batch_size)
- self.I2.value = braintools.init.param(self.I2_initializer, self.varshape, batch_size)
- self.V_th.value = braintools.init.param(self.V_th_initializer, self.varshape, batch_size)
-
- def get_spike(self, V: ArrayLike = None, V_th: ArrayLike = None):
- V = self.V.value if V is None else V
- V_th = self.V_th.value if V_th is None else V_th
- v_scaled = (V - V_th) / (V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- last_v = self.V.value
- last_i1 = self.I1.value
- last_i2 = self.I2.value
- last_v_th = self.V_th.value
- last_spk = self.get_spike(last_v, last_v_th)
-
- # Apply spike effects
- V_th_val = last_v_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- V = last_v - (V_th_val - self.V_reset) * last_spk
- I1 = last_i1 + last_spk * (self.R1 * last_i1 + self.A1 - last_i1)
- I2 = last_i2 + last_spk * (self.R2 * last_i2 + self.A2 - last_i2)
- V_th = last_v_th + last_spk * (u.math.maximum(self.V_th_reset, last_v_th) - last_v_th)
-
- # Update dynamics
- def dI1(i1):
- return -self.k1 * i1
-
- def dI2(i2):
- return -self.k2 * i2
-
- def dV_th_func(v_th):
- return self.a * (V - self.V_rest) - self.b * (v_th - self.V_th_inf)
-
- def dv(v):
- return (-(v - self.V_rest) + self.R * (I1 + I2 + self.sum_current_inputs(x, v))) / self.tau
-
- I1 = brainstate.nn.exp_euler_step(dI1, I1)
- I2 = brainstate.nn.exp_euler_step(dI2, I2)
- V_th = brainstate.nn.exp_euler_step(dV_th_func, V_th)
- V = brainstate.nn.exp_euler_step(dv, V)
- V = self.sum_delta_inputs(V)
-
- self.V.value = V
- self.I1.value = I1
- self.I2.value = I2
- self.V_th.value = V_th
- return self.get_spike(V, V_th)
-
-
-class GifRef(Neuron):
- r"""Generalized Integrate-and-Fire neuron model with refractory mechanism.
-
- This model extends Gif by adding an absolute refractory period during which
- the neuron cannot fire. This creates more realistic firing patterns and
- prevents unrealistic high-frequency firing.
-
- Parameters
- ----------
- in_size : Size
- Size of the input to the neuron.
- R : ArrayLike, default=20. * u.ohm
- Membrane resistance.
- tau : ArrayLike, default=20. * u.ms
- Membrane time constant.
- tau_ref : ArrayLike, default=1.7 * u.ms
- Absolute refractory period duration.
- V_rest : ArrayLike, default=-70. * u.mV
- Resting potential.
- V_reset : ArrayLike, default=-70. * u.mV
- Reset potential after spike.
- V_th_inf : ArrayLike, default=-50. * u.mV
- Target value of threshold potential updating.
- V_th_reset : ArrayLike, default=-60. * u.mV
- Free parameter, should be larger than V_reset.
- V_th_initializer : Callable
- Initializer for the threshold potential.
- a : ArrayLike, default=0. / u.ms
- Coefficient describes dependence of V_th on membrane potential.
- b : ArrayLike, default=0.01 / u.ms
- Coefficient describes V_th update.
- k1 : ArrayLike, default=0.2 / u.ms
- Constant of I1.
- k2 : ArrayLike, default=0.02 / u.ms
- Constant of I2.
- R1 : ArrayLike, default=0.
- Free parameter.
- R2 : ArrayLike, default=1.
- Free parameter.
- A1 : ArrayLike, default=0. * u.mA
- Free parameter.
- A2 : ArrayLike, default=0. * u.mA
- Free parameter.
- V_initializer : Callable
- Initializer for the membrane potential state.
- I1_initializer : Callable
- Initializer for internal current I1.
- I2_initializer : Callable
- Initializer for internal current I2.
- spk_fun : Callable, default=surrogate.ReluGrad()
- Surrogate gradient function.
- spk_reset : str, default='soft'
- Reset mechanism after spike generation.
- ref_var : bool, default=False
- Whether to expose a boolean refractory state variable.
- name : str, optional
- Name of the neuron layer.
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential.
- I1 : HiddenState
- Internal current 1.
- I2 : HiddenState
- Internal current 2.
- V_th : HiddenState
- Spiking threshold potential.
- last_spike_time : ShortTermState
- Last spike time recorder.
- refractory : HiddenState
- Neuron refractory state (if ref_var=True).
-
- Examples
- --------
- >>> import brainpy
- >>> import brainstate
- >>> import brainunit as u
- >>>
- >>> # Create a GifRef neuron layer with refractory period
- >>> gif_ref = brainpy.state.GifRef(10, tau=20*u.ms, tau_ref=2.0*u.ms,
- ... k1=0.2/u.ms, k2=0.02/u.ms, ref_var=True)
- >>>
- >>> # Initialize the state
- >>> gif_ref.init_state(batch_size=1)
- >>>
- >>> # Apply input and observe refractory behavior
- >>> with brainstate.environ.context(dt=0.1*u.ms, t=0.0*u.ms):
- ... spikes = gif_ref.update(x=1.5*u.mA)
- >>>
- >>> # Create a network with refractory Gif neurons
- >>> network = brainstate.nn.Sequential([
- ... brainpy.state.GifRef(100, tau=20.0*u.ms, tau_ref=2.0*u.ms),
- ... brainstate.nn.Linear(100, 10)
- ... ])
-
- Notes
- -----
- - Combines Gif model's rich dynamics with absolute refractory period.
- - During refractory period, all state variables are held at reset values.
- - Set ref_var=True to track refractory state as a boolean variable.
- - More biologically realistic than Gif without refractory mechanism.
- - Can still exhibit diverse firing patterns: regular, bursting, adaptation.
- - Refractory period prevents unrealistically high firing rates.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- R: ArrayLike = 20. * u.ohm,
- tau: ArrayLike = 20. * u.ms,
- tau_ref: ArrayLike = 1.7 * u.ms,
- V_rest: ArrayLike = -70. * u.mV,
- V_reset: ArrayLike = -70. * u.mV,
- V_th_inf: ArrayLike = -50. * u.mV,
- V_th_reset: ArrayLike = -60. * u.mV,
- V_th_initializer: Callable = braintools.init.Constant(-50. * u.mV),
- a: ArrayLike = 0. / u.ms,
- b: ArrayLike = 0.01 / u.ms,
- k1: ArrayLike = 0.2 / u.ms,
- k2: ArrayLike = 0.02 / u.ms,
- R1: ArrayLike = 0.,
- R2: ArrayLike = 1.,
- A1: ArrayLike = 0. * u.mA,
- A2: ArrayLike = 0. * u.mA,
- V_initializer: Callable = braintools.init.Constant(-70. * u.mV),
- I1_initializer: Callable = braintools.init.Constant(0. * u.mA),
- I2_initializer: Callable = braintools.init.Constant(0. * u.mA),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- ref_var: bool = False,
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.R = braintools.init.param(R, self.varshape)
- self.tau = braintools.init.param(tau, self.varshape)
- self.tau_ref = braintools.init.param(tau_ref, self.varshape)
- self.V_rest = braintools.init.param(V_rest, self.varshape)
- self.V_reset = braintools.init.param(V_reset, self.varshape)
- self.V_th_inf = braintools.init.param(V_th_inf, self.varshape)
- self.V_th_reset = braintools.init.param(V_th_reset, self.varshape)
- self.a = braintools.init.param(a, self.varshape)
- self.b = braintools.init.param(b, self.varshape)
- self.k1 = braintools.init.param(k1, self.varshape)
- self.k2 = braintools.init.param(k2, self.varshape)
- self.R1 = braintools.init.param(R1, self.varshape)
- self.R2 = braintools.init.param(R2, self.varshape)
- self.A1 = braintools.init.param(A1, self.varshape)
- self.A2 = braintools.init.param(A2, self.varshape)
- self.V_initializer = V_initializer
- self.I1_initializer = I1_initializer
- self.I2_initializer = I2_initializer
- self.V_th_initializer = V_th_initializer
- self.ref_var = ref_var
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
- self.I1 = brainstate.HiddenState(braintools.init.param(self.I1_initializer, self.varshape, batch_size))
- self.I2 = brainstate.HiddenState(braintools.init.param(self.I2_initializer, self.varshape, batch_size))
- self.V_th = brainstate.HiddenState(braintools.init.param(self.V_th_initializer, self.varshape, batch_size))
- self.last_spike_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
- if self.ref_var:
- self.refractory = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(False), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
- self.I1.value = braintools.init.param(self.I1_initializer, self.varshape, batch_size)
- self.I2.value = braintools.init.param(self.I2_initializer, self.varshape, batch_size)
- self.V_th.value = braintools.init.param(self.V_th_initializer, self.varshape, batch_size)
- self.last_spike_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size
- )
- if self.ref_var:
- self.refractory.value = braintools.init.param(
- braintools.init.Constant(False), self.varshape, batch_size
- )
-
- def get_spike(self, V: ArrayLike = None, V_th: ArrayLike = None):
- V = self.V.value if V is None else V
- V_th = self.V_th.value if V_th is None else V_th
- v_scaled = (V - V_th) / (V_th - self.V_reset)
- return self.spk_fun(v_scaled)
-
- def update(self, x=0. * u.mA):
- t = brainstate.environ.get('t')
- last_v = self.V.value
- last_i1 = self.I1.value
- last_i2 = self.I2.value
- last_v_th = self.V_th.value
- last_spk = self.get_spike(last_v, last_v_th)
-
- # Apply spike effects
- V_th_val = last_v_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_v)
- v_reset = last_v - (V_th_val - self.V_reset) * last_spk
- i1_reset = last_i1 + last_spk * (self.R1 * last_i1 + self.A1 - last_i1)
- i2_reset = last_i2 + last_spk * (self.R2 * last_i2 + self.A2 - last_i2)
- v_th_reset = last_v_th + last_spk * (u.math.maximum(self.V_th_reset, last_v_th) - last_v_th)
-
- # Update dynamics
- def dI1(i1):
- return -self.k1 * i1
-
- def dI2(i2):
- return -self.k2 * i2
-
- def dV_th_func(v_th):
- return self.a * (v_reset - self.V_rest) - self.b * (v_th - self.V_th_inf)
-
- def dv(v):
- return (-(v - self.V_rest) + self.R * (i1_reset + i2_reset + self.sum_current_inputs(x, v))) / self.tau
-
- I1_candidate = brainstate.nn.exp_euler_step(dI1, i1_reset)
- I2_candidate = brainstate.nn.exp_euler_step(dI2, i2_reset)
- V_th_candidate = brainstate.nn.exp_euler_step(dV_th_func, v_th_reset)
- V_candidate = brainstate.nn.exp_euler_step(dv, v_reset)
- V_candidate = self.sum_delta_inputs(V_candidate)
-
- refractory = (t - self.last_spike_time.value) < self.tau_ref
- self.V.value = u.math.where(refractory, v_reset, V_candidate)
- self.I1.value = u.math.where(refractory, i1_reset, I1_candidate)
- self.I2.value = u.math.where(refractory, i2_reset, I2_candidate)
- self.V_th.value = u.math.where(refractory, v_th_reset, V_th_candidate)
-
- spike_cond = self.V.value >= self.V_th.value
- self.last_spike_time.value = jax.lax.stop_gradient(
- u.math.where(spike_cond, t, self.last_spike_time.value)
- )
- if self.ref_var:
- self.refractory.value = jax.lax.stop_gradient(
- u.math.logical_or(refractory, spike_cond)
- )
- return self.get_spike()
diff --git a/brainpy/state/_lif_test.py b/brainpy/state/_lif_test.py
deleted file mode 100644
index f05871340..000000000
--- a/brainpy/state/_lif_test.py
+++ /dev/null
@@ -1,394 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-import unittest
-
-import brainstate
-import brainunit as u
-import jax
-import jax.numpy as jnp
-
-from brainpy.state import IF, LIF, LIFRef, ALIF, ExpIF, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef
-
-
-class TestNeuron(unittest.TestCase):
- def setUp(self):
- self.in_size = 10
- self.batch_size = 5
- self.time_steps = 100
- self.dt = 0.1 * u.ms
-
- def generate_input(self):
- return brainstate.random.randn(self.time_steps, self.batch_size, self.in_size) * u.mA
-
- def test_if_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- neuron = IF(self.in_size)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
-
- # Test forward pass
- state = neuron.init_state(self.batch_size)
-
- for t in range(self.time_steps):
- out = neuron(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Test spike generation
- v = jnp.linspace(-1, 1, 100) * u.mV
- spikes = neuron.get_spike(v)
- self.assertTrue(jnp.all((spikes >= 0) & (spikes <= 1)))
-
- def test_lif_neuron(self):
- with brainstate.environ.context(dt=self.dt):
- tau = 20.0 * u.ms
- neuron = LIF(self.in_size, tau=tau)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
-
- # Test forward pass
- state = neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
-
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- def test_alif_neuron(self):
- tau = 20.0 * u.ms
- tau_ada = 100.0 * u.ms
- neuron = ALIF(self.in_size, tau=tau, tau_a=tau_ada)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_a, tau_ada)
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- def test_expif_neuron(self):
- tau = 10.0 * u.ms
- neuron = ExpIF(self.in_size, tau=tau)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
-
- # Test forward pass
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- def test_LIFRef_neuron(self):
- tau = 10.0 * u.ms
- tau_ref = 2.0 * u.ms
- neuron = LIFRef(self.in_size, tau=tau, tau_ref=tau_ref)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_ref, tau_ref)
-
- neuron.init_state(self.batch_size)
-
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
-
- def test_ExpIFRef_neuron(self):
- tau = 10.0 * u.ms
- tau_ref = 2.0 * u.ms
- ref_var = True
- neuron = ExpIFRef(self.in_size, tau=tau, tau_ref=tau_ref, ref_var=ref_var)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_ref, tau_ref)
- self.assertEqual(neuron.ref_var, ref_var)
-
- neuron.init_state(self.batch_size)
-
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
- if neuron.ref_var:
- self.assertEqual(neuron.refractory.value.shape, (self.batch_size, self.in_size))
-
- def test_adexif_neuron(self):
- tau = 10.0 * u.ms
- tau_w = 30.0 * u.ms
- neuron = AdExIF(self.in_size, tau=tau, tau_w=tau_w)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_w, tau_w)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.w.value.shape, (self.batch_size, self.in_size))
-
- def test_adexifref_neuron(self):
- tau = 10.0 * u.ms
- tau_w = 30.0 * u.ms
- tau_ref = 2.0 * u.ms
- ref_var = True
- neuron = AdExIFRef(self.in_size, tau=tau, tau_w=tau_w, tau_ref=tau_ref, ref_var=ref_var)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_w, tau_w)
- self.assertEqual(neuron.tau_ref, tau_ref)
- self.assertEqual(neuron.ref_var, ref_var)
-
- neuron.init_state(self.batch_size)
-
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Test state variables
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.w.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
- if neuron.ref_var:
- self.assertEqual(neuron.refractory.value.shape, (self.batch_size, self.in_size))
-
- def test_quaif_neuron(self):
- tau = 10.0 * u.ms
- neuron = QuaIF(self.in_size, tau=tau)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- def test_adquaif_neuron(self):
- tau = 10.0 * u.ms
- tau_w = 30.0 * u.ms
- neuron = AdQuaIF(self.in_size, tau=tau, tau_w=tau_w)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_w, tau_w)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.w.value.shape, (self.batch_size, self.in_size))
-
- def test_adquaifref_neuron(self):
- tau = 10.0 * u.ms
- tau_w = 30.0 * u.ms
- tau_ref = 2.0 * u.ms
- ref_var = True
- neuron = AdQuaIFRef(self.in_size, tau=tau, tau_w=tau_w, tau_ref=tau_ref, ref_var=ref_var)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_w, tau_w)
- self.assertEqual(neuron.tau_ref, tau_ref)
- self.assertEqual(neuron.ref_var, ref_var)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.w.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
- if neuron.ref_var:
- self.assertEqual(neuron.refractory.value.shape, (self.batch_size, self.in_size))
-
- def test_gif_neuron(self):
- tau = 20.0 * u.ms
- neuron = Gif(self.in_size, tau=tau)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.I1.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.I2.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.V_th.value.shape, (self.batch_size, self.in_size))
-
- def test_gifref_neuron(self):
- tau = 20.0 * u.ms
- tau_ref = 2.0 * u.ms
- ref_var = True
- neuron = GifRef(self.in_size, tau=tau, tau_ref=tau_ref, ref_var=ref_var)
- inputs = self.generate_input()
-
- self.assertEqual(neuron.in_size, (self.in_size,))
- self.assertEqual(neuron.out_size, (self.in_size,))
- self.assertEqual(neuron.tau, tau)
- self.assertEqual(neuron.tau_ref, tau_ref)
- self.assertEqual(neuron.ref_var, ref_var)
-
- neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- self.assertEqual(neuron.V.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.I1.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.I2.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.V_th.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(neuron.last_spike_time.value.shape, (self.batch_size, self.in_size))
- if neuron.ref_var:
- self.assertEqual(neuron.refractory.value.shape, (self.batch_size, self.in_size))
-
- def test_spike_function(self):
- for NeuronClass in [IF, LIF, ALIF, ExpIF, LIFRef, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef]:
- neuron = NeuronClass(self.in_size)
- neuron.init_state()
- v = jnp.linspace(-1, 1, self.in_size) * u.mV
- spikes = neuron.get_spike(v)
- self.assertTrue(jnp.all((spikes >= 0) & (spikes <= 1)))
-
- def test_soft_reset(self):
- for NeuronClass in [IF, LIF, ALIF, ExpIF, LIFRef, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef]:
- neuron = NeuronClass(self.in_size, spk_reset='soft')
- inputs = self.generate_input()
- state = neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- # For Gif models, V_th is a state variable
- V_th = neuron.V_th.value if hasattr(neuron.V_th, 'value') else neuron.V_th
- self.assertTrue(jnp.all(neuron.V.value <= V_th))
-
- def test_hard_reset(self):
- for NeuronClass in [IF, LIF, ALIF, ExpIF, LIFRef, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef]:
- neuron = NeuronClass(self.in_size, spk_reset='hard')
- inputs = self.generate_input()
- state = neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- # For Gif models, V_th is a state variable
- V_th = neuron.V_th.value if hasattr(neuron.V_th, 'value') else neuron.V_th
- self.assertTrue(jnp.all((neuron.V.value < V_th) | (neuron.V.value == 0. * u.mV)))
-
- def test_detach_spike(self):
- for NeuronClass in [IF, LIF, ALIF, ExpIF, LIFRef, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef]:
- neuron = NeuronClass(self.in_size)
- inputs = self.generate_input()
- state = neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertFalse(jax.tree_util.tree_leaves(out)[0].aval.weak_type)
-
- def test_keep_size(self):
- in_size = (2, 3)
- for NeuronClass in [IF, LIF, ALIF, ExpIF, LIFRef, ExpIFRef, AdExIF, AdExIFRef, QuaIF, AdQuaIF, AdQuaIFRef, Gif, GifRef]:
- neuron = NeuronClass(in_size)
- self.assertEqual(neuron.in_size, in_size)
- self.assertEqual(neuron.out_size, in_size)
-
- inputs = brainstate.random.randn(self.time_steps, self.batch_size, *in_size) * u.mA
- state = neuron.init_state(self.batch_size)
- call = brainstate.compile.jit(neuron)
- with brainstate.environ.context(dt=self.dt):
- for t in range(self.time_steps):
- with brainstate.environ.context(t=t*self.dt):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, *in_size))
-
-
-if __name__ == '__main__':
- # with brainstate.environ.context(dt=0.1):
- # unittest.main()
- unittest.main()
diff --git a/brainpy/state/_misc.py b/brainpy/state/_misc.py
deleted file mode 100644
index 075be91b2..000000000
--- a/brainpy/state/_misc.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 set_module_as(module: str):
- def wrapper(fun: callable):
- fun.__module__ = module
- return fun
-
- return wrapper
diff --git a/brainpy/state/_projection.py b/brainpy/state/_projection.py
deleted file mode 100644
index 49da161fa..000000000
--- a/brainpy/state/_projection.py
+++ /dev/null
@@ -1,523 +0,0 @@
-# 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.
-# ==============================================================================
-
-from typing import Callable, Union
-from typing import Optional
-
-import brainevent
-import brainstate
-from brainstate._state import State
-from brainstate.mixin import JointTypes, ParamDescriber
-from brainstate.nn._dynamics import maybe_init_prefetch
-from brainstate.util import get_unique_name
-
-from brainpy.mixin import BindCondData, AlignPost
-from ._base import Dynamics
-from ._synouts import SynOut
-
-__all__ = [
- 'Projection',
- 'AlignPostProj',
- 'DeltaProj',
- 'CurrentProj',
- 'align_pre_projection',
- 'align_post_projection',
-]
-
-
-class Projection(brainstate.nn.Module):
- """
- Base class for synaptic projection modules in neural network modeling.
-
- This class defines the interface for modules that handle projections between
- neural populations. Projections process input signals and transform them
- before they reach the target neurons, implementing the connectivity patterns
- in neural networks.
-
- In the BrainState execution order, Projection modules are updated before
- Dynamics modules, following the natural information flow in neural systems:
- 1. Projections process inputs (synaptic transmission)
- 2. Dynamics update neuron states (neural integration)
-
- The Projection class does not implement the update logic directly but delegates
- to its child nodes. If no child nodes exist, it raises a ValueError.
-
- Parameters
- ----------
- *args
- Arguments passed to the parent Module class.
- **kwargs
- Keyword arguments passed to the parent Module class.
-
- Raises
- ------
- ValueError
- If the update() method is called but no child nodes are defined.
-
- Notes
- -----
- Derived classes should implement specific projection behaviors, such as
- dense connectivity, sparse connectivity, or specific weight update rules.
- """
- __module__ = 'brainpy.state'
-
- def update(self, *args, **kwargs):
- sub_nodes = tuple(self.nodes(allowed_hierarchy=(1, 1)).values())
- if len(sub_nodes):
- for node in sub_nodes:
- node(*args, **kwargs)
- else:
- raise ValueError('Do not implement the update() function.')
-
-
-def _check_modules(*modules):
- # checking modules
- for module in modules:
- if not callable(module) and not isinstance(module, State):
- raise TypeError(
- f'The module should be a callable function or a brainstate.State, but got {module}.'
- )
- return tuple(modules)
-
-
-def call_module(module, *args, **kwargs):
- if callable(module):
- return module(*args, **kwargs)
- elif isinstance(module, State):
- return module.value
- else:
- raise TypeError(
- f'The module should be a callable function or a brainstate.State, but got {module}.'
- )
-
-
-def is_instance(x, cls) -> bool:
- return isinstance(x, cls)
-
-
-def get_post_repr(label, syn, out):
- if label is None:
- return f'{syn.identifier} // {out.identifier}'
- else:
- return f'{label}{syn.identifier} // {out.identifier}'
-
-
-def align_post_add_bef_update(
- syn_desc: ParamDescriber[AlignPost],
- out_desc: ParamDescriber[BindCondData],
- post: Dynamics,
- proj_name: str,
- label: str,
-):
- # synapse and output initialization
- _post_repr = get_post_repr(label, syn_desc, out_desc)
- if not post.has_before_update(_post_repr):
- syn_cls = syn_desc()
- out_cls = out_desc()
-
- # synapse and output initialization
- post.add_current_input(proj_name, out_cls, label=label)
- post.add_before_update(_post_repr, _AlignPost(syn_cls, out_cls))
- syn = post.get_before_update(_post_repr).syn
- out = post.get_before_update(_post_repr).out
- return syn, out
-
-
-class _AlignPost(brainstate.nn.Module):
- def __init__(
- self,
- syn: Dynamics,
- out: BindCondData
- ):
- super().__init__()
- self.syn = syn
- self.out = out
-
- def update(self, *args, **kwargs):
- self.out.bind_cond(self.syn(*args, **kwargs))
-
-
-class AlignPostProj(Projection):
- """
- Align-post projection of the neural network.
-
-
- Examples
- --------
-
- Here is an example of using the `AlignPostProj` to create a synaptic projection.
- Note that this projection needs the manual input of pre-synaptic spikes.
-
- >>> import brainstate
- >>> import brainunit as u
- >>> n_exc = 3200
- >>> n_inh = 800
- >>> num = n_exc + n_inh
- >>> pop = brainstate.nn.LIFRef(
- ... 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=brainstate.nn.Normal(-55., 2., unit=u.mV)
- ... )
- >>> pop.init_state()
- >>> E = brainstate.nn.AlignPostProj(
- ... comm=brainstate.nn.FixedNumConn(n_exc, num, prob=80 / num, weight=1.62 * u.mS),
- ... syn=brainstate.nn.Expon.desc(num, tau=5. * u.ms),
- ... out=brainstate.nn.CUBA.desc(scale=u.volt),
- ... post=pop
- ... )
- >>> exe_current = E(pop.get_spike())
-
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- *modules,
- comm: Callable,
- syn: Union[ParamDescriber[AlignPost], AlignPost],
- out: Union[ParamDescriber[SynOut], SynOut],
- post: Dynamics,
- label: Optional[str] = None,
- ):
- super().__init__(name=get_unique_name(self.__class__.__name__))
-
- # checking modules
- self.modules = _check_modules(*modules)
-
- # checking communication model
- if not callable(comm):
- raise TypeError(
- f'The communication should be an instance of callable function, but got {comm}.'
- )
-
- # checking synapse and output models
- if is_instance(syn, ParamDescriber[AlignPost]):
- if not is_instance(out, ParamDescriber[SynOut]):
- if is_instance(out, ParamDescriber):
- raise TypeError(
- f'The output should be an instance of describer {ParamDescriber[SynOut]} when '
- f'the synapse is an instance of {AlignPost}, but got {out}.'
- )
- raise TypeError(
- f'The output should be an instance of describer {ParamDescriber[SynOut]} when '
- f'the synapse is a describer, but we got {out}.'
- )
- merging = True
- else:
- if is_instance(syn, ParamDescriber):
- raise TypeError(
- f'The synapse should be an instance of describer {ParamDescriber[AlignPost]}, but got {syn}.'
- )
- if not is_instance(out, SynOut):
- raise TypeError(
- f'The output should be an instance of {SynOut} when the synapse is '
- f'not a describer, but we got {out}.'
- )
- merging = False
- self.merging = merging
-
- # checking post model
- if not is_instance(post, Dynamics):
- raise TypeError(
- f'The post should be an instance of {Dynamics}, but got {post}.'
- )
-
- if merging:
- # synapse and output initialization
- syn, out = align_post_add_bef_update(syn_desc=syn,
- out_desc=out,
- post=post,
- proj_name=self.name,
- label=label)
- else:
- post.add_current_input(self.name, out)
-
- # references
- self.comm = comm
- self.syn: JointTypes[Dynamics, AlignPost] = syn
- self.out: BindCondData = out
- self.post: Dynamics = post
-
- @brainstate.nn.call_order(2)
- def init_state(self, *args, **kwargs):
- for module in self.modules:
- maybe_init_prefetch(module, *args, **kwargs)
-
- def update(self, *args):
- # call all modules
- for module in self.modules:
- x = call_module(module, *args)
- args = (x,)
- # communication module
- x = self.comm(*args)
- # add synapse input
- self.syn.add_delta_input(self.name, x)
- if not self.merging:
- # synapse and output interaction
- conductance = self.syn()
- self.out.bind_cond(conductance)
-
-
-class DeltaProj(Projection):
- """
- Delta-based projection of the neural network.
-
- This projection directly applies delta inputs to post-synaptic neurons without intervening
- synaptic dynamics. It processes inputs through optional prefetch modules, applies a communication model,
- and adds the result directly as a delta input to the post-synaptic population.
-
- Parameters
- ----------
- *prefetch
- Optional prefetch modules to process input before communication.
- comm : callable
- Communication model that determines how signals are transmitted.
- post : Dynamics
- Post-synaptic neural population to receive the delta inputs.
- label : Optional[str], default=None
- Optional label for the projection to identify it in the post-synaptic population.
-
- Examples
- --------
- >>> import brainstate
- >>> import brainunit as u
- >>> n_neurons = 100
- >>> pop = brainstate.nn.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV)
- >>> pop.init_state()
- >>> delta_input = brainstate.nn.DeltaProj(
- ... comm=lambda x: x * 10.0*u.mV,
- ... post=pop
- ... )
- >>> delta_input(1.0) # Apply voltage increment directly
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- *prefetch,
- comm: Callable,
- post: Dynamics,
- label=None,
- ):
- super().__init__(name=get_unique_name(self.__class__.__name__))
-
- self.label = label
-
- # checking modules
- self.prefetches = _check_modules(*prefetch)
-
- # checking communication model
- if not callable(comm):
- raise TypeError(
- f'The communication should be an instance of callable function, but got {comm}.'
- )
- self.comm = comm
-
- # post model
- if not isinstance(post, Dynamics):
- raise TypeError(
- f'The post should be an instance of {Dynamics}, but got {post}.'
- )
- self.post = post
-
- @brainstate.nn.call_order(2)
- def init_state(self, *args, **kwargs):
- for prefetch in self.prefetches:
- maybe_init_prefetch(prefetch, *args, **kwargs)
-
- def update(self, *x):
- for module in self.prefetches:
- x = (call_module(module, *x),)
- assert len(x) == 1, f'The output of the modules should be a single value, but got {x}.'
- x = self.comm(x[0])
- self.post.add_delta_input(self.name, x, label=self.label)
-
-
-class CurrentProj(Projection):
- """
- Current-based projection of the neural network.
-
- This projection directly modulates post-synaptic currents without separate synaptic dynamics.
- It processes inputs through optional prefetch modules, applies a communication model,
- and binds the result to the output model which is then added as a current input to the post-synaptic population.
-
- Parameters
- ----------
- *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
- Communication model that determines how signals are transmitted.
- out : SynOut
- Output model that converts communication results to post-synaptic currents.
- post : Dynamics
- Post-synaptic neural population to receive the currents.
-
- Examples
- --------
- >>> import brainstate
- >>> import brainunit as u
- >>> n_neurons = 100
- >>> pop = brainstate.nn.LIF(n_neurons, V_rest=-70*u.mV, V_threshold=-50*u.mV)
- >>> pop.init_state()
- >>> current_input = brainstate.nn.CurrentProj(
- ... comm=lambda x: x * 0.5,
- ... out=brainstate.nn.CUBA(scale=1.0*u.nA),
- ... post=pop
- ... )
- >>> current_input(0.2) # Apply external current
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- *prefetch,
- comm: Callable,
- out: SynOut,
- post: Dynamics,
- ):
- super().__init__(name=get_unique_name(self.__class__.__name__))
-
- # check prefetch
- self.prefetch = prefetch
- if len(self.prefetch) > 0 and not isinstance(
- 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}, '
- f'but got {prefetch[-1]}.'
- )
-
- # check out
- if not isinstance(out, SynOut):
- raise TypeError(f'The out should be a SynOut, but got {out}.')
- self.out = out
-
- # check post
- if not isinstance(post, Dynamics):
- raise TypeError(f'The post should be a Dynamics, but got {post}.')
- self.post = post
- post.add_current_input(self.name, out)
-
- # output initialization
- self.comm = comm
-
- @brainstate.nn.call_order(2)
- def init_state(self, *args, **kwargs):
- for prefetch in self.prefetch:
- maybe_init_prefetch(prefetch, *args, **kwargs)
-
- def update(self, *x):
- for prefetch in self.prefetch:
- x = (call_module(prefetch, *x),)
- x = self.comm(*x)
- self.out.bind_cond(x)
-
-
-class align_pre_projection(Projection):
- """
- Represents a pre-synaptic alignment projection mechanism.
-
- This class inherits from the `Projection` base class and is designed to
- manage the pre-synaptic alignment process in neural network simulations.
- It takes into account pre-synaptic dynamics, synaptic properties, delays,
- communication functions, synaptic outputs, post-synaptic dynamics, and
- short-term plasticity.
-
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- *spike_generator,
- syn: Dynamics,
- comm: Callable,
- out: SynOut,
- post: Dynamics,
- stp: Dynamics = None,
- ):
- super().__init__()
-
- self.spike_generator = _check_modules(*spike_generator)
- self.projection = CurrentProj(comm=comm, out=out, post=post)
- self.syn = syn
- self.stp = stp
-
- @brainstate.nn.call_order(2)
- def init_state(self, *args, **kwargs):
- for module in self.spike_generator:
- maybe_init_prefetch(module, *args, **kwargs)
-
- def update(self, *x):
- for fun in self.spike_generator:
- x = fun(*x)
- if isinstance(x, (tuple, list)):
- x = tuple(x)
- else:
- x = (x,)
- assert len(x) == 1, "Spike generator must return a single value or a tuple/list of values"
- x = brainevent.BinaryArray(x[0]) # Ensure input is a BinaryFloat for spike generation
- if self.stp is not None:
- x = brainevent.MaskedFloat(self.stp(x)) # Ensure STP output is a MaskedFloat
- x = self.syn(x) # Apply pre-synaptic alignment
- return self.projection(x)
-
-
-class align_post_projection(Projection):
- """
- Represents a post-synaptic alignment projection mechanism.
-
- This class inherits from the `Projection` base class and is designed to
- manage the post-synaptic alignment process in neural network simulations.
- It takes into account spike generators, communication functions, synaptic
- properties, synaptic outputs, post-synaptic dynamics, and short-term plasticity.
-
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- *spike_generator,
- comm: Callable,
- syn: Union[AlignPost, ParamDescriber[AlignPost]],
- out: Union[SynOut, ParamDescriber[SynOut]],
- post: Dynamics,
- stp: Dynamics = None,
- ):
- super().__init__()
-
- self.spike_generator = _check_modules(*spike_generator)
- self.projection = AlignPostProj(comm=comm, syn=syn, out=out, post=post)
- self.stp = stp
-
- @brainstate.nn.call_order(2)
- def init_state(self, *args, **kwargs):
- for module in self.spike_generator:
- maybe_init_prefetch(module, *args, **kwargs)
-
- def update(self, *x):
- for fun in self.spike_generator:
- x = fun(*x)
- if isinstance(x, (tuple, list)):
- x = tuple(x)
- else:
- x = (x,)
- assert len(x) == 1, "Spike generator must return a single value or a tuple/list of values"
- x = brainevent.BinaryArray(x[0]) # Ensure input is a BinaryFloat for spike generation
- if self.stp is not None:
- x = brainevent.MaskedFloat(self.stp(x)) # Ensure STP output is a MaskedFloat
- return self.projection(x)
diff --git a/brainpy/state/_readout.py b/brainpy/state/_readout.py
deleted file mode 100644
index 2125f83fc..000000000
--- a/brainpy/state/_readout.py
+++ /dev/null
@@ -1,211 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-import numbers
-from typing import Callable
-
-import brainstate
-import braintools
-import brainunit as u
-import jax
-from brainstate.typing import Size, ArrayLike
-
-from ._base import Neuron
-
-__all__ = [
- 'LeakyRateReadout',
- 'LeakySpikeReadout',
-]
-
-
-class LeakyRateReadout(brainstate.nn.Module):
- r"""
- Leaky dynamics for the read-out module.
-
- This module implements a leaky integrator with the following dynamics:
-
- .. math::
- r_{t} = \alpha r_{t-1} + x_{t} W
-
- where:
- - :math:`r_{t}` is the output at time t
- - :math:`\alpha = e^{-\Delta t / \tau}` is the decay factor
- - :math:`x_{t}` is the input at time t
- - :math:`W` is the weight matrix
-
- The leaky integrator acts as a low-pass filter, allowing the network
- to maintain memory of past inputs with an exponential decay determined
- by the time constant tau.
-
- Parameters
- ----------
- in_size : int or sequence of int
- Size of the input dimension(s)
- out_size : int or sequence of int
- Size of the output dimension(s)
- tau : ArrayLike, optional
- Time constant of the leaky dynamics, by default 5ms
- w_init : Callable, optional
- Weight initialization function, by default KaimingNormal()
- name : str, optional
- Name of the module, by default None
-
- Attributes
- ----------
- decay : float
- Decay factor computed as exp(-dt/tau)
- weight : ParamState
- Weight matrix connecting input to output
- r : HiddenState
- Hidden state representing the output values
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- out_size: Size,
- tau: ArrayLike = 5. * u.ms,
- w_init: Callable = braintools.init.KaimingNormal(),
- name: str = None,
- ):
- super().__init__(name=name)
-
- # parameters
- self.in_size = (in_size,) if isinstance(in_size, numbers.Integral) else tuple(in_size)
- self.out_size = (out_size,) if isinstance(out_size, numbers.Integral) else tuple(out_size)
- self.tau = braintools.init.param(tau, self.in_size)
- self.decay = u.math.exp(-brainstate.environ.get_dt() / self.tau)
-
- # weights
- self.weight = brainstate.ParamState(brainstate.init.param(w_init, (self.in_size[0], self.out_size[0])))
-
- def init_state(self, batch_size=None, **kwargs):
- self.r = brainstate.HiddenState(
- brainstate.init.param(brainstate.init.Constant(0.), self.out_size, batch_size)
- )
-
- def reset_state(self, batch_size=None, **kwargs):
- self.r.value = brainstate.init.param(
- brainstate.init.Constant(0.), self.out_size, batch_size
- )
-
- def update(self, x):
- self.r.value = self.decay * self.r.value + x @ self.weight.value
- return self.r.value
-
-
-class LeakySpikeReadout(Neuron):
- r"""
- Integrate-and-fire neuron model with leaky dynamics for readout functionality.
-
- This class implements a spiking neuron with the following dynamics:
-
- .. math::
- \frac{dV}{dt} = \frac{-V + I_{in}}{\tau}
-
- where:
- - :math:`V` is the membrane potential
- - :math:`\tau` is the membrane time constant
- - :math:`I_{in}` is the input current
-
- Spike generation occurs when :math:`V > V_{th}` according to:
-
- .. math::
- S_t = \text{surrogate}\left(\frac{V - V_{th}}{V_{th}}\right)
-
- After spiking, the membrane potential is reset according to the reset mode:
- - Soft reset: :math:`V \leftarrow V - V_{th} \cdot S_t`
- - Hard reset: :math:`V \leftarrow V - V_t \cdot S_t` (where :math:`V_t` is detached)
-
- Parameters
- ----------
- in_size : Size
- Size of the input dimension
- tau : ArrayLike, optional
- Membrane time constant, by default 5ms
- V_th : ArrayLike, optional
- Spike threshold, by default 1mV
- w_init : Callable, optional
- Weight initialization function, by default KaimingNormal(unit=mV)
- V_initializer : ArrayLike, optional
- Initial membrane potential, by default Constant(0. * u.mV)
- spk_fun : Callable, optional
- Surrogate gradient function for spike generation, by default ReluGrad()
- spk_reset : str, optional
- Reset mechanism after spike ('soft' or 'hard'), by default 'soft'
- name : str, optional
- Name of the module, by default None
-
- Attributes
- ----------
- V : HiddenState
- Membrane potential state variable
- weight : ParamState
- Synaptic weight matrix
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- tau: ArrayLike = 5. * u.ms,
- V_th: ArrayLike = 1. * u.mV,
- w_init: Callable = braintools.init.KaimingNormal(unit=u.mV),
- V_initializer: ArrayLike = braintools.init.Constant(0. * u.mV),
- spk_fun: Callable = braintools.surrogate.ReluGrad(),
- spk_reset: str = 'soft',
- name: str = None,
- ):
- super().__init__(in_size, name=name, spk_fun=spk_fun, spk_reset=spk_reset)
-
- # parameters
- self.tau = braintools.init.param(tau, self.varshape)
- self.V_th = braintools.init.param(V_th, self.varshape)
- self.V_initializer = V_initializer
-
- # weights
- self.weight = brainstate.ParamState(braintools.init.param(w_init, (self.in_size[-1], self.out_size[-1])))
-
- def init_state(self, batch_size, **kwargs):
- self.V = brainstate.HiddenState(braintools.init.param(self.V_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size, **kwargs):
- self.V.value = braintools.init.param(self.V_initializer, self.varshape, batch_size)
-
- @property
- def spike(self):
- return self.get_spike(self.V.value)
-
- def get_spike(self, V):
- v_scaled = (V - self.V_th) / self.V_th
- return self.spk_fun(v_scaled)
-
- def update(self, spk):
- # reset
- last_V = self.V.value
- last_spike = self.get_spike(last_V)
- V_th = self.V_th if self.spk_reset == 'soft' else jax.lax.stop_gradient(last_V)
- V = last_V - V_th * last_spike
- # membrane potential
- x = spk @ self.weight.value
- dv = lambda v: (-v + self.sum_current_inputs(x, v)) / self.tau
- V = brainstate.nn.exp_euler_step(dv, V)
- self.V.value = self.sum_delta_inputs(V)
- return self.get_spike(V)
diff --git a/brainpy/state/_readout_test.py b/brainpy/state/_readout_test.py
deleted file mode 100644
index 87e427d49..000000000
--- a/brainpy/state/_readout_test.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# 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 unittest
-
-import brainstate
-import braintools
-import brainunit as u
-import jax.numpy as jnp
-
-import brainpy.state as brainpy
-
-
-class TestReadoutModels(unittest.TestCase):
- def setUp(self):
- self.in_size = 3
- self.out_size = 3
- self.batch_size = 4
- self.tau = 5.0
- self.V_th = 1.0
- self.x = jnp.ones((self.batch_size, self.in_size))
-
- def test_LeakyRateReadout(self):
- with brainstate.environ.context(dt=0.1):
- model = brainpy.LeakyRateReadout(in_size=self.in_size, out_size=self.out_size, tau=self.tau)
- model.init_state(batch_size=self.batch_size)
- output = model.update(self.x)
- self.assertEqual(output.shape, (self.batch_size, self.out_size))
-
- def test_LeakySpikeReadout(self):
- with brainstate.environ.context(dt=0.1):
- model = brainpy.LeakySpikeReadout(
- in_size=self.in_size, tau=self.tau, V_th=self.V_th * u.mV,
- V_initializer=braintools.init.Constant(0. * u.mV),
- w_init=braintools.init.KaimingNormal(unit=u.mV)
- )
- model.init_state(batch_size=self.batch_size)
- with brainstate.environ.context(t=0.):
- output = model.update(self.x)
- self.assertEqual(output.shape, (self.batch_size, self.out_size))
-
-
-if __name__ == '__main__':
- with brainstate.environ.context(dt=0.1):
- unittest.main()
diff --git a/brainpy/state/_stp.py b/brainpy/state/_stp.py
deleted file mode 100644
index 1dd53cb71..000000000
--- a/brainpy/state/_stp.py
+++ /dev/null
@@ -1,238 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-from typing import Optional
-
-import brainstate
-import braintools
-import brainunit as u
-from brainstate.typing import ArrayLike, Size
-
-from ._base import Synapse
-
-__all__ = [
- 'STP', 'STD',
-]
-
-
-class STP(Synapse):
- r"""
- Synapse with short-term plasticity.
-
- This class implements a synapse model with short-term plasticity (STP), which captures
- activity-dependent changes in synaptic efficacy that occur over milliseconds to seconds.
- The model simultaneously accounts for both short-term facilitation and depression
- based on the formulation by Tsodyks & Markram (1998).
-
- The model is characterized by the following equations:
-
- $$
- \frac{du}{dt} = -\frac{u}{\tau_f} + U \cdot (1 - u) \cdot \delta(t - t_{spike})
- $$
-
- $$
- \frac{dx}{dt} = \frac{1 - x}{\tau_d} - u \cdot x \cdot \delta(t - t_{spike})
- $$
-
- $$
- g_{syn} = u \cdot x
- $$
-
- where:
-
- - $u$ represents the utilization of synaptic efficacy (facilitation variable)
- - $x$ represents the available synaptic resources (depression variable)
- - $\tau_f$ is the facilitation time constant
- - $\tau_d$ is the depression time constant
- - $U$ is the baseline utilization parameter
- - $\delta(t - t_{spike})$ is the Dirac delta function representing presynaptic spikes
- - $g_{syn}$ is the effective synaptic conductance
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- U : ArrayLike, default=0.15
- Baseline utilization parameter (fraction of resources used per action potential).
- tau_f : ArrayLike, default=1500.*u.ms
- Time constant of short-term facilitation in milliseconds.
- tau_d : ArrayLike, default=200.*u.ms
- Time constant of short-term depression (recovery of synaptic resources) in milliseconds.
-
- Attributes
- ----------
- u : HiddenState
- Utilization of synaptic efficacy (facilitation variable).
- x : HiddenState
- Available synaptic resources (depression variable).
-
- Notes
- -----
- - Larger values of tau_f produce stronger facilitation effects.
- - Larger values of tau_d lead to slower recovery from depression.
- - The parameter U controls the initial release probability.
- - The effective synaptic strength is the product of u and x.
-
- References
- ----------
- .. [1] Tsodyks, M. V., & Markram, H. (1997). The neural code between neocortical
- pyramidal neurons depends on neurotransmitter release probability.
- Proceedings of the National Academy of Sciences, 94(2), 719-723.
- .. [2] Tsodyks, M., Pawelzik, K., & Markram, H. (1998). Neural networks with dynamic
- synapses. Neural computation, 10(4), 821-835.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- U: ArrayLike = 0.15,
- tau_f: ArrayLike = 1500. * u.ms,
- tau_d: ArrayLike = 200. * u.ms,
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.tau_f = braintools.init.param(tau_f, self.varshape)
- self.tau_d = braintools.init.param(tau_d, self.varshape)
- 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.u = brainstate.HiddenState(
- braintools.init.param(braintools.init.Constant(self.U), 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)
- self.u.value = braintools.init.param(braintools.init.Constant(self.U), self.varshape, batch_size)
-
- def update(self, pre_spike):
- u = brainstate.nn.exp_euler_step(lambda u: - u / self.tau_f, self.u.value)
- x = brainstate.nn.exp_euler_step(lambda x: (1 - x) / self.tau_d, self.x.value)
-
- # --- original code:
- # if pre_spike.dtype == jax.numpy.bool_:
- # u = bm.where(pre_spike, u + self.U * (1 - self.u), u)
- # x = bm.where(pre_spike, x - u * self.x, x)
- # else:
- # u = pre_spike * (u + self.U * (1 - self.u)) + (1 - pre_spike) * u
- # x = pre_spike * (x - u * self.x) + (1 - pre_spike) * x
-
- # --- simplified code:
- u = u + pre_spike * self.U * (1 - self.u.value)
- x = x - pre_spike * u * self.x.value
-
- self.u.value = u
- self.x.value = x
- return u * x * pre_spike
-
-
-class STD(Synapse):
- r"""
- Synapse with short-term depression.
-
- This class implements a synapse model with short-term depression (STD), which captures
- activity-dependent reduction in synaptic efficacy, typically caused by depletion of
- neurotransmitter vesicles following repeated stimulation.
-
- The model is characterized by the following equation:
-
- $$
- \frac{dx}{dt} = \frac{1 - x}{\tau} - U \cdot x \cdot \delta(t - t_{spike})
- $$
-
- $$
- g_{syn} = x
- $$
-
- where:
-
- - $x$ represents the available synaptic resources (depression variable)
- - $\tau$ is the depression recovery time constant
- - $U$ is the utilization parameter (fraction of resources depleted per spike)
- - $\delta(t - t_{spike})$ is the Dirac delta function representing presynaptic spikes
- - $g_{syn}$ is the effective synaptic conductance
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- tau : ArrayLike, default=200.*u.ms
- Time constant governing recovery of synaptic resources in milliseconds.
- U : ArrayLike, default=0.07
- Utilization parameter (fraction of resources used per action potential).
-
- Attributes
- ----------
- x : HiddenState
- Available synaptic resources (depression variable).
-
- Notes
- -----
- - Larger values of tau lead to slower recovery from depression.
- - Larger values of U cause stronger depression with each spike.
- - This model is a simplified version of the STP model that only includes depression.
-
- References
- ----------
- .. [1] Abbott, L. F., Varela, J. A., Sen, K., & Nelson, S. B. (1997). Synaptic
- depression and cortical gain control. Science, 275(5297), 220-224.
- .. [2] Tsodyks, M. V., & Markram, H. (1997). The neural code between neocortical
- pyramidal neurons depends on neurotransmitter release probability.
- Proceedings of the National Academy of Sciences, 94(2), 719-723.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- tau: ArrayLike = 200. * u.ms,
- U: ArrayLike = 0.07,
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.tau = braintools.init.param(tau, self.varshape)
- 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)
- )
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.x.value = braintools.init.param(braintools.init.Constant(1.), self.varshape, batch_size)
-
- def update(self, pre_spike):
- x = brainstate.nn.exp_euler_step(lambda x: (1 - x) / self.tau, self.x.value)
-
- # --- original code:
- # self.x.value = bm.where(pre_spike, x - self.U * self.x, x)
-
- # --- simplified code:
- self.x.value = x - pre_spike * self.U * self.x.value
-
- return self.x.value * pre_spike
diff --git a/brainpy/state/_synapse.py b/brainpy/state/_synapse.py
deleted file mode 100644
index 17811014e..000000000
--- a/brainpy/state/_synapse.py
+++ /dev/null
@@ -1,468 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-
-from typing import Optional, Callable
-
-import brainstate
-import braintools
-import brainunit as u
-from brainstate.typing import Size, ArrayLike
-
-from ._base import Synapse
-
-__all__ = [
- 'Alpha', 'AMPA', 'GABAa', 'BioNMDA',
-]
-
-
-class Alpha(Synapse):
- r"""
- Alpha synapse model.
-
- This class implements the alpha function synapse model, which produces
- a smooth, biologically realistic synaptic conductance waveform.
- The model is characterized by the differential equation system:
-
- dh/dt = -h/tau
- dg/dt = -g/tau + h/tau
-
- This produces a response that rises and then falls with a characteristic
- time constant $\tau$, with peak amplitude occurring at time $t = \tau$.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- tau : ArrayLike, default=8.0*u.ms
- Time constant of the alpha function in milliseconds.
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for synaptic conductance.
-
- Attributes
- ----------
- g : HiddenState
- Synaptic conductance state variable.
- h : HiddenState
- Auxiliary state variable for implementing the alpha function.
- tau : Parameter
- Time constant of the alpha function.
-
- Notes
- -----
- The alpha function is defined as g(t) = (t/tau) * exp(1-t/tau) for t ≥ 0.
- This implementation uses an exponential Euler integration method.
- The output of this synapse is the conductance value.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- tau: ArrayLike = 8.0 * u.ms,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.tau = braintools.init.param(tau, self.varshape)
- self.g_initializer = g_initializer
-
- def init_state(self, batch_size: int = None, **kwargs):
- self.g = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
- self.h = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
-
- def reset_state(self, batch_size: int = None, **kwargs):
- self.g.value = braintools.init.param(self.g_initializer, self.varshape, batch_size)
- self.h.value = braintools.init.param(self.g_initializer, self.varshape, batch_size)
-
- def update(self, x=None):
- h = brainstate.nn.exp_euler_step(lambda h: -h / self.tau, self.h.value)
- self.g.value = brainstate.nn.exp_euler_step(
- lambda g, h: -g / self.tau + h / self.tau, self.g.value, self.h.value)
- self.h.value = self.sum_delta_inputs(h)
- if x is not None:
- self.h.value += x
- return self.g.value
-
-
-class AMPA(Synapse):
- r"""AMPA receptor synapse model.
-
- This class implements a kinetic model of AMPA (α-amino-3-hydroxy-5-methyl-4-isoxazolepropionic acid)
- receptor-mediated synaptic transmission. AMPA receptors are ionotropic glutamate receptors that mediate
- fast excitatory synaptic transmission in the central nervous system.
-
- The model uses a Markov process approach to describe the state transitions of AMPA receptors
- between closed and open states, governed by neurotransmitter binding:
-
- $$
- \frac{dg}{dt} = \alpha [T] (1-g) - \beta g
- $$
-
- $$
- I_{syn} = g_{max} \cdot g \cdot (V - E)
- $$
-
- 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]
- - $[T]$ is the neurotransmitter concentration [mM]
- - $I_{syn}$ is the resulting synaptic current
- - $g_{max}$ is the maximum conductance
- - $V$ is the membrane potential
- - $E$ is the reversal potential
-
- The neurotransmitter concentration $[T]$ follows a square pulse of amplitude T and
- duration T_dur after each presynaptic spike.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- alpha : ArrayLike, default=0.98/(u.ms*u.mM)
- Binding rate constant [ms^-1 mM^-1].
- beta : ArrayLike, default=0.18/u.ms
- Unbinding rate constant [ms^-1].
- T : ArrayLike, default=0.5*u.mM
- Peak neurotransmitter concentration when released [mM].
- T_dur : ArrayLike, default=0.5*u.ms
- Duration of neurotransmitter presence in the synaptic cleft [ms].
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for the synaptic conductance.
-
- Attributes
- ----------
- g : HiddenState
- Fraction of receptors in the open state.
- spike_arrival_time : ShortTermState
- Time of the most recent presynaptic spike.
-
- Notes
- -----
- - The model captures the fast-rising and relatively fast-decaying excitatory currents
- characteristic of AMPA receptor-mediated transmission.
- - The time course of the synaptic conductance is determined by both the binding and
- unbinding rate constants and the duration of transmitter presence.
- - This implementation uses an exponential Euler integration method.
-
- References
- ----------
- .. [1] Destexhe, A., Mainen, Z. F., & Sejnowski, T. J. (1994). Synthesis of models for
- excitable membranes, synaptic transmission and neuromodulation using a common
- kinetic formalism. Journal of computational neuroscience, 1(3), 195-230.
- .. [2] Vijayan, S., & Kopell, N. J. (2012). Thalamic model of awake alpha oscillations
- and implications for stimulus processing. Proceedings of the National Academy
- of Sciences, 109(45), 18553-18558.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- alpha: ArrayLike = 0.98 / (u.ms * u.mM),
- beta: ArrayLike = 0.18 / u.ms,
- T: ArrayLike = 0.5 * u.mM,
- T_dur: ArrayLike = 0.5 * u.ms,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.alpha = braintools.init.param(alpha, self.varshape)
- self.beta = braintools.init.param(beta, self.varshape)
- self.T = braintools.init.param(T, self.varshape)
- self.T_duration = braintools.init.param(T_dur, self.varshape)
- self.g_initializer = g_initializer
-
- def init_state(self, batch_size=None):
- self.g = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
- self.spike_arrival_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_or_mode=None, **kwargs):
- self.g.value = braintools.init.param(self.g_initializer, self.varshape, batch_or_mode)
- self.spike_arrival_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_or_mode
- )
-
- def update(self, pre_spike):
- t = brainstate.environ.get('t')
- self.spike_arrival_time.value = u.math.where(pre_spike, t, self.spike_arrival_time.value)
- TT = ((t - self.spike_arrival_time.value) < self.T_duration) * self.T
- dg = lambda g: self.alpha * TT * (1 * u.get_unit(g) - g) - self.beta * g
- self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
- return self.g.value
-
-
-class GABAa(AMPA):
- r"""GABAa receptor synapse model.
-
- This class implements a kinetic model of GABAa (gamma-aminobutyric acid type A)
- receptor-mediated synaptic transmission. GABAa receptors are ionotropic chloride channels
- that mediate fast inhibitory synaptic transmission in the central nervous system.
-
- The model uses the same Markov process approach as the AMPA model but with different
- kinetic parameters appropriate for GABAa receptors:
-
- $$
- \frac{dg}{dt} = \alpha [T] (1-g) - \beta g
- $$
-
- $$
- I_{syn} = - g_{max} \cdot g \cdot (V - E)
- $$
-
- where:
-
- - $g$ represents the fraction of receptors in the open state
- - $\alpha$ is the binding rate constant [ms^-1 mM^-1], typically slower than AMPA
- - $\beta$ is the unbinding rate constant [ms^-1]
- - $[T]$ is the neurotransmitter (GABA) concentration [mM]
- - $I_{syn}$ is the resulting synaptic current (note the negative sign indicating inhibition)
- - $g_{max}$ is the maximum conductance
- - $V$ is the membrane potential
- - $E$ is the reversal potential (typically around -80 mV for chloride)
-
- The neurotransmitter concentration $[T]$ follows a square pulse of amplitude T and
- duration T_dur after each presynaptic spike.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- alpha : ArrayLike, default=0.53/(u.ms*u.mM)
- Binding rate constant [ms^-1 mM^-1]. Typically slower than AMPA receptors.
- beta : ArrayLike, default=0.18/u.ms
- Unbinding rate constant [ms^-1].
- T : ArrayLike, default=1.0*u.mM
- Peak neurotransmitter concentration when released [mM]. Higher than AMPA.
- T_dur : ArrayLike, default=1.0*u.ms
- Duration of neurotransmitter presence in the synaptic cleft [ms]. Longer than AMPA.
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for the synaptic conductance.
-
- Attributes
- ----------
- Inherits all attributes from AMPA class.
-
- Notes
- -----
- - GABAa receptors typically produce slower-rising and longer-lasting currents compared to AMPA receptors.
- - The inhibitory nature of GABAa receptors is reflected in the convention of using a negative sign in the
- synaptic current equation.
- - The reversal potential for GABAa receptors is typically around -80 mV (due to chloride), making them
- inhibitory for neurons with resting potentials more positive than this value.
- - This model does not include desensitization, which can be significant for prolonged GABA exposure.
-
- References
- ----------
- .. [1] Destexhe, A., Mainen, Z. F., & Sejnowski, T. J. (1994). Synthesis of models for
- excitable membranes, synaptic transmission and neuromodulation using a common
- kinetic formalism. Journal of computational neuroscience, 1(3), 195-230.
- .. [2] Destexhe, A., & Paré, D. (1999). Impact of network activity on the integrative
- properties of neocortical pyramidal neurons in vivo. Journal of neurophysiology,
- 81(4), 1531-1547.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- alpha: ArrayLike = 0.53 / (u.ms * u.mM),
- beta: ArrayLike = 0.18 / u.ms,
- T: ArrayLike = 1.0 * u.mM,
- T_dur: ArrayLike = 1.0 * u.ms,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- ):
- super().__init__(
- alpha=alpha,
- beta=beta,
- T=T,
- T_dur=T_dur,
- name=name,
- in_size=in_size,
- g_initializer=g_initializer
- )
-
-
-class BioNMDA(Synapse):
- r"""Biological NMDA receptor synapse model.
-
- This class implements a detailed kinetic model of NMDA (N-methyl-D-aspartate)
- receptor-mediated synaptic transmission. NMDA receptors are ionotropic glutamate
- receptors that play a crucial role in synaptic plasticity, learning, and memory.
-
- Unlike AMPA receptors, NMDA receptors exhibit both ligand-gating and voltage-dependent
- properties. The voltage dependence arises from the blocking of the receptor pore by
- extracellular magnesium ions (Mg²⁺) at resting potential. The model uses a second-order
- kinetic scheme to capture the dynamics of NMDA receptors:
-
- $$
- \frac{dg}{dt} = \alpha_1 x (1-g) - \beta_1 g
- $$
-
- $$
- \frac{dx}{dt} = \alpha_2 [T] (1-x) - \beta_2 x
- $$
-
- $$
- I_{syn} = g_{max} \cdot g \cdot g_{\infty}(V,[Mg^{2+}]_o) \cdot (V - E)
- $$
-
- where:
-
- - $g$ represents the fraction of receptors in the open state
- - $x$ is an auxiliary variable representing an intermediate state
- - $\alpha_1, \beta_1$ are the conversion rates for the $g$ variable [ms^-1]
- - $\alpha_2, \beta_2$ are the conversion rates for the $x$ variable [ms^-1] or [ms^-1 mM^-1]
- - $[T]$ is the neurotransmitter (glutamate) concentration [mM]
- - $g_{\infty}(V,[Mg^{2+}]_o)$ is the voltage-dependent magnesium block function
- - $I_{syn}$ is the resulting synaptic current
- - $g_{max}$ is the maximum conductance
- - $V$ is the membrane potential
- - $E$ is the reversal potential
-
- The magnesium block is typically modeled as:
-
- $$
- g_{\infty}(V,[Mg^{2+}]_o) = \frac{1}{1 + [Mg^{2+}]_o \cdot \exp(-a \cdot V) / b}
- $$
-
- The neurotransmitter concentration $[T]$ follows a square pulse of amplitude T and
- duration T_dur after each presynaptic spike.
-
- Parameters
- ----------
- in_size : Size
- Size of the input.
- name : str, optional
- Name of the synapse instance.
- alpha1 : ArrayLike, default=2.0/u.ms
- Conversion rate of g from inactive to active [ms^-1].
- beta1 : ArrayLike, default=0.01/u.ms
- Conversion rate of g from active to inactive [ms^-1].
- alpha2 : ArrayLike, default=1.0/(u.ms*u.mM)
- Conversion rate of x from inactive to active [ms^-1 mM^-1].
- beta2 : ArrayLike, default=0.5/u.ms
- Conversion rate of x from active to inactive [ms^-1].
- T : ArrayLike, default=1.0*u.mM
- Peak neurotransmitter concentration when released [mM].
- T_dur : ArrayLike, default=0.5*u.ms
- Duration of neurotransmitter presence in the synaptic cleft [ms].
- g_initializer : ArrayLike or Callable, default=init.Constant(0. * u.mS)
- Initial value or initializer for the synaptic conductance.
- x_initializer : ArrayLike or Callable, default=init.Constant(0.)
- Initial value or initializer for the auxiliary state variable.
-
- Attributes
- ----------
- g : HiddenState
- Fraction of receptors in the open state.
- x : HiddenState
- Auxiliary state variable representing intermediate receptor state.
- spike_arrival_time : ShortTermState
- Time of the most recent presynaptic spike.
-
- Notes
- -----
- - NMDA receptors have slower kinetics compared to AMPA receptors, with rise times
- of several milliseconds and decay time constants of tens to hundreds of milliseconds.
- - The voltage-dependent magnesium block is typically implemented in the output layer
- or postsynaptic neuron model, not in this synapse model itself.
- - NMDA receptors are permeable to calcium ions, which can trigger various intracellular
- signaling cascades important for synaptic plasticity.
- - This implementation uses an exponential Euler integration method for both state variables.
-
- References
- ----------
- .. [1] Devaney, A. J. (2010). Mathematical Foundations of Neuroscience. Springer New York, 162.
- .. [2] Furukawa, H., Singh, S. K., Mancusso, R., & Gouaux, E. (2005). Subunit arrangement
- and function in NMDA receptors. Nature, 438(7065), 185-192.
- .. [3] Li, F., & Tsien, J. Z. (2009). Memory and the NMDA receptors. The New England
- Journal of Medicine, 361(3), 302.
- .. [4] Jahr, C. E., & Stevens, C. F. (1990). Voltage dependence of NMDA-activated
- macroscopic conductances predicted by single-channel kinetics. Journal of Neuroscience,
- 10(9), 3178-3182.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- in_size: Size,
- name: Optional[str] = None,
- alpha1: ArrayLike = 2.0 / u.ms,
- beta1: ArrayLike = 0.01 / u.ms,
- alpha2: ArrayLike = 1.0 / (u.ms * u.mM),
- beta2: ArrayLike = 0.5 / u.ms,
- T: ArrayLike = 1.0 * u.mM,
- T_dur: ArrayLike = 0.5 * u.ms,
- g_initializer: ArrayLike | Callable = braintools.init.Constant(0. * u.mS),
- x_initializer: ArrayLike | Callable = braintools.init.Constant(0.),
- ):
- super().__init__(name=name, in_size=in_size)
-
- # parameters
- self.alpha1 = braintools.init.param(alpha1, self.varshape)
- self.beta1 = braintools.init.param(beta1, self.varshape)
- self.alpha2 = braintools.init.param(alpha2, self.varshape)
- self.beta2 = braintools.init.param(beta2, self.varshape)
- self.T = braintools.init.param(T, self.varshape)
- self.T_duration = braintools.init.param(T_dur, self.varshape)
- self.g_initializer = g_initializer
- self.x_initializer = x_initializer
-
- def init_state(self, batch_size=None):
- self.g = brainstate.HiddenState(braintools.init.param(self.g_initializer, self.varshape, batch_size))
- self.x = brainstate.HiddenState(braintools.init.param(self.x_initializer, self.varshape, batch_size))
- self.spike_arrival_time = brainstate.ShortTermState(
- braintools.init.param(braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_size)
- )
-
- def reset_state(self, batch_or_mode=None, **kwargs):
- self.g.value = braintools.init.param(self.g_initializer, self.varshape, batch_or_mode)
- self.x.value = braintools.init.param(self.x_initializer, self.varshape, batch_or_mode)
- self.spike_arrival_time.value = braintools.init.param(
- braintools.init.Constant(-1e7 * u.ms), self.varshape, batch_or_mode
- )
-
- def update(self, pre_spike):
- t = brainstate.environ.get('t')
- self.spike_arrival_time.value = u.math.where(pre_spike, t, self.spike_arrival_time.value)
- TT = ((t - self.spike_arrival_time.value) < self.T_duration) * self.T
-
- # Update x first (intermediate state)
- dx = lambda x: self.alpha2 * TT * (1 * u.get_unit(x) - x) - self.beta2 * x
- self.x.value = brainstate.nn.exp_euler_step(dx, self.x.value)
-
- # Update g (open state) based on current x value
- dg = lambda g: self.alpha1 * self.x.value * (1 * u.get_unit(g) - g) - self.beta1 * g
- self.g.value = brainstate.nn.exp_euler_step(dg, self.g.value)
-
- return self.g.value
diff --git a/brainpy/state/_synapse_test.py b/brainpy/state/_synapse_test.py
deleted file mode 100644
index 0260fd9eb..000000000
--- a/brainpy/state/_synapse_test.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# 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 unittest
-
-import brainstate
-import brainunit as u
-import jax.numpy as jnp
-import pytest
-
-from brainpy.state import Expon, STP, STD, AMPA, GABAa, BioNMDA
-
-
-class TestSynapse(unittest.TestCase):
- def setUp(self):
- self.in_size = 10
- self.batch_size = 5
- self.time_steps = 100
-
- def generate_input(self):
- return brainstate.random.randn(self.time_steps, self.batch_size, self.in_size) * u.mS
-
- def test_expon_synapse(self):
- tau = 20.0 * u.ms
- synapse = Expon(self.in_size, tau=tau)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.tau, tau)
-
- # Test forward pass
- state = synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- with brainstate.environ.context(dt=0.1 * u.ms):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Test exponential decay
- constant_input = jnp.ones((self.batch_size, self.in_size)) * u.mS
- out1 = call(constant_input)
- out2 = call(constant_input)
- self.assertTrue(jnp.all(out2 > out1)) # Output should increase with constant input
-
- @pytest.mark.skip(reason="Not implemented yet")
- def test_stp_synapse(self):
- tau_d = 200.0 * u.ms
- tau_f = 20.0 * u.ms
- U = 0.2
- synapse = STP(self.in_size, tau_d=tau_d, tau_f=tau_f, U=U)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.tau_d, tau_d)
- self.assertEqual(synapse.tau_f, tau_f)
- self.assertEqual(synapse.U, U)
-
- # Test forward pass
- state = synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Test short-term plasticity
- constant_input = jnp.ones((self.batch_size, self.in_size)) * u.mS
- out1 = call(constant_input)
- out2 = call(constant_input)
- self.assertTrue(jnp.any(out2 != out1)) # Output should change due to STP
-
- @pytest.mark.skip(reason="Not implemented yet")
- def test_std_synapse(self):
- tau = 200.0
- U = 0.2
- synapse = STD(self.in_size, tau=tau, U=U)
- inputs = self.generate_input()
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.tau, tau)
- self.assertEqual(synapse.U, U)
-
- # Test forward pass
- state = synapse.init_state(self.batch_size)
- for t in range(self.time_steps):
- out = synapse(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, self.in_size))
-
- # Test short-term depression
- constant_input = jnp.ones((self.batch_size, self.in_size))
- out1 = synapse(constant_input)
- out2 = synapse(constant_input)
- self.assertTrue(jnp.all(out2 < out1)) # Output should decrease due to STD
-
- def test_keep_size(self):
- in_size = (2, 3)
- for SynapseClass in [Expon, ]:
- synapse = SynapseClass(in_size)
- self.assertEqual(synapse.in_size, in_size)
- self.assertEqual(synapse.out_size, in_size)
-
- inputs = brainstate.random.randn(self.time_steps, self.batch_size, *in_size) * u.mS
- state = synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- with brainstate.environ.context(dt=0.1 * u.ms):
- for t in range(self.time_steps):
- out = call(inputs[t])
- self.assertEqual(out.shape, (self.batch_size, *in_size))
-
- def test_ampa_synapse(self):
- alpha = 0.98 / (u.ms * u.mM)
- beta = 0.18 / u.ms
- T = 0.5 * u.mM
- T_dur = 0.5 * u.ms
- synapse = AMPA(self.in_size, alpha=alpha, beta=beta, T=T, T_dur=T_dur)
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.alpha, alpha)
- self.assertEqual(synapse.beta, beta)
- self.assertEqual(synapse.T, T)
- self.assertEqual(synapse.T_duration, T_dur)
-
- # Test forward pass
- synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- with brainstate.environ.context(dt=0.1 * u.ms, t=0. * u.ms):
- # Test with spike input (True/False array)
- spike_input = jnp.zeros((self.batch_size, self.in_size), dtype=bool)
- spike_input = spike_input.at[0, 0].set(True) # Single spike
-
- out1 = call(spike_input)
- self.assertEqual(out1.shape, (self.batch_size, self.in_size))
-
- # Conductance should increase after spike
- out2 = call(jnp.zeros((self.batch_size, self.in_size), dtype=bool))
- self.assertTrue(jnp.any(out2[0, 0] > 0 * u.mS)) # Should have some conductance
-
- def test_gabaa_synapse(self):
- alpha = 0.53 / (u.ms * u.mM)
- beta = 0.18 / u.ms
- T = 1.0 * u.mM
- T_dur = 1.0 * u.ms
- synapse = GABAa(self.in_size, alpha=alpha, beta=beta, T=T, T_dur=T_dur)
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.alpha, alpha)
- self.assertEqual(synapse.beta, beta)
- self.assertEqual(synapse.T, T)
- self.assertEqual(synapse.T_duration, T_dur)
-
- # Test forward pass
- synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- with brainstate.environ.context(dt=0.1 * u.ms, t=0. * u.ms):
- spike_input = jnp.zeros((self.batch_size, self.in_size), dtype=bool)
- spike_input = spike_input.at[0, 0].set(True)
-
- out1 = call(spike_input)
- self.assertEqual(out1.shape, (self.batch_size, self.in_size))
-
- # Conductance should increase after spike
- out2 = call(jnp.zeros((self.batch_size, self.in_size), dtype=bool))
- self.assertTrue(jnp.any(out2[0, 0] > 0 * u.mS))
-
- def test_bionmda_synapse(self):
- alpha1 = 2.0 / u.ms
- beta1 = 0.01 / u.ms
- alpha2 = 1.0 / (u.ms * u.mM)
- beta2 = 0.5 / u.ms
- T = 1.0 * u.mM
- T_dur = 0.5 * u.ms
- synapse = BioNMDA(self.in_size, alpha1=alpha1, beta1=beta1,
- alpha2=alpha2, beta2=beta2, T=T, T_dur=T_dur)
-
- # Test initialization
- self.assertEqual(synapse.in_size, (self.in_size,))
- self.assertEqual(synapse.out_size, (self.in_size,))
- self.assertEqual(synapse.alpha1, alpha1)
- self.assertEqual(synapse.beta1, beta1)
- self.assertEqual(synapse.alpha2, alpha2)
- self.assertEqual(synapse.beta2, beta2)
- self.assertEqual(synapse.T, T)
- self.assertEqual(synapse.T_duration, T_dur)
-
- # Test forward pass with spike inputs
- synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
- with brainstate.environ.context(dt=0.1 * u.ms, t=0. * u.ms):
- # Create spike input at first time step
- spike_input = jnp.zeros((self.batch_size, self.in_size), dtype=bool)
- spike_input = spike_input.at[0, 0].set(True) # Single spike at position (0, 0)
-
- # First call with spike
- out1 = call(spike_input)
- self.assertEqual(out1.shape, (self.batch_size, self.in_size))
-
- # Verify state variables exist and have correct shape
- self.assertEqual(synapse.g.value.shape, (self.batch_size, self.in_size))
- self.assertEqual(synapse.x.value.shape, (self.batch_size, self.in_size))
-
- # Continue simulation without spikes
- no_spike = jnp.zeros((self.batch_size, self.in_size), dtype=bool)
-
- # NMDA should have slower dynamics - collect several time points
- outputs = [out1]
- for _ in range(10):
- out = call(no_spike)
- outputs.append(out)
-
- # Check that conductance increases over time initially (slower rise time for NMDA)
- # Due to the two-state kinetics, there should be some non-zero conductance
- self.assertTrue(jnp.any(outputs[-1][0, 0] >= 0 * u.mS)) # Should have developed some conductance
-
- def test_bionmda_two_state_dynamics(self):
- """Test that BioNMDA properly implements second-order kinetics with two state variables"""
- synapse = BioNMDA(self.in_size)
- synapse.init_state(self.batch_size)
- call = brainstate.compile.jit(synapse)
-
- with brainstate.environ.context(dt=0.1 * u.ms, t=0. * u.ms):
- # Initial state should be zero (g has units, x is dimensionless)
- self.assertTrue(jnp.allclose(synapse.g.value.to_decimal(u.mS), 0.))
- self.assertTrue(jnp.allclose(synapse.x.value, 0.))
-
- # Apply a spike
- spike_input = jnp.zeros((self.batch_size, self.in_size), dtype=bool)
- spike_input = spike_input.at[0, 0].set(True)
-
- call(spike_input)
-
- # After spike, both x and g should be non-negative
- x_val = synapse.x.value[0, 0]
- g_val = synapse.g.value[0, 0]
-
- # x is dimensionless, g has units
- self.assertTrue(x_val >= 0)
- self.assertTrue(g_val >= 0 * u.mS)
-
-
-if __name__ == '__main__':
- with brainstate.environ.context(dt=0.1 * u.ms):
- unittest.main()
diff --git a/brainpy/state/_synaptic_projection.py b/brainpy/state/_synaptic_projection.py
deleted file mode 100644
index b534d5ce8..000000000
--- a/brainpy/state/_synaptic_projection.py
+++ /dev/null
@@ -1,429 +0,0 @@
-# Copyright 2025 BrainX Ecosystem Limited. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-# -*- coding: utf-8 -*-
-
-
-from typing import Callable, Union, Tuple
-
-import brainstate
-import braintools
-import brainunit as u
-from brainstate.typing import ArrayLike
-
-from ._misc import set_module_as
-from ._projection import Projection
-
-__all__ = [
- 'SymmetryGapJunction',
- 'AsymmetryGapJunction',
-]
-
-
-class align_pre_ltp(Projection):
- __module__ = 'brainpy.state'
-
-
-class align_post_ltp(Projection):
- __module__ = 'brainpy.state'
-
-
-def get_gap_junction_post_key(i: int):
- return f'gap_junction_post_{i}'
-
-
-def get_gap_junction_pre_key(i: int):
- return f'gap_junction_pre_{i}'
-
-
-class SymmetryGapJunction(Projection):
- """
- Implements a symmetric electrical coupling (gap junction) between neuron populations.
-
- This class represents electrical synapses where the conductance is identical in both
- directions. Gap junctions allow bidirectional flow of electrical current directly between
- neurons, with the current magnitude proportional to the voltage difference between
- connected neurons.
-
- Parameters
- ----------
- couples : Union[Tuple[Dynamics, Dynamics], Dynamics]
- Either a single Dynamics object (when pre and post populations are the same)
- or a tuple of two Dynamics objects (pre, post) representing the coupled neuron populations.
- states : Union[str, Tuple[str, str]]
- Either a single string (when pre and post states are the same)
- or a tuple of two strings (pre_state, post_state) representing the state variables
- to use for calculating voltage differences (typically membrane potentials).
- conn : Callable
- Connection function that returns pre_ids and post_ids arrays defining connections.
- weight : Union[Callable, ArrayLike]
- Conductance weights for the gap junctions. The same weight applies in both directions
- of the connection.
- param_type : type, optional
- The parameter state type to use for weights, defaults to ParamState.
-
- Notes
- -----
- The symmetric gap junction applies identical conductance in both directions between
- connected neurons, ensuring balanced electrical coupling in the network.
-
- See Also
- --------
- AsymmetryGapJunction : For gap junctions with different conductances in each direction.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- couples: Union[Tuple[brainstate.nn.Dynamics, brainstate.nn.Dynamics], brainstate.nn.Dynamics],
- states: Union[str, Tuple[str, str]],
- conn: Callable,
- weight: Union[Callable, ArrayLike],
- param_type: type = brainstate.ParamState
- ):
- super().__init__()
-
- if isinstance(states, str):
- pre_state = states
- post_state = states
- else:
- pre_state, post_state = states
- if isinstance(couples, brainstate.nn.Dynamics):
- pre = couples
- post = couples
- else:
- pre, post = couples
- assert isinstance(pre_state, str), "pre_state must be a string representing the pre-synaptic state"
- assert isinstance(post_state, str), "post_state must be a string representing the post-synaptic state"
- assert isinstance(pre, brainstate.nn.Dynamics), "pre must be a Dynamics object"
- assert isinstance(post, brainstate.nn.Dynamics), "post must be a Dynamics object"
- self.pre_state = pre_state
- self.post_state = post_state
- self.pre = pre
- self.post = post
- self.pre_ids, self.post_ids = conn(pre.out_size, post.out_size)
- self.weight = param_type(braintools.init.param(weight, (len(self.pre_ids),)))
-
- def update(self, *args, **kwargs):
- if not hasattr(self.pre, self.pre_state):
- raise ValueError(f"pre_state {self.pre_state} not found in pre-synaptic neuron group")
- if not hasattr(self.post, self.post_state):
- raise ValueError(f"post_state {self.post_state} not found in post-synaptic neuron group")
- pre = getattr(self.pre, self.pre_state).value
- post = getattr(self.post, self.post_state).value
-
- return symmetry_gap_junction_projection(
- pre=self.pre,
- pre_value=pre,
- post=self.post,
- post_value=post,
- pre_ids=self.pre_ids,
- post_ids=self.post_ids,
- weight=self.weight.value,
- )
-
-
-@set_module_as('brainpy.state')
-def symmetry_gap_junction_projection(
- pre: brainstate.nn.Dynamics,
- pre_value: ArrayLike,
- post: brainstate.nn.Dynamics,
- post_value: ArrayLike,
- pre_ids: ArrayLike,
- post_ids: ArrayLike,
- weight: ArrayLike,
-):
- """
- Calculate symmetrical electrical coupling through gap junctions between neurons.
-
- This function implements bidirectional gap junction coupling where the same weight is
- applied in both directions. It computes the electrical current flowing between
- connected neurons based on their potential differences and updates both pre-synaptic
- and post-synaptic neuron groups with appropriate input currents.
-
- Parameters
- ----------
- pre : Dynamics
- The pre-synaptic neuron group dynamics object.
- pre_value : ArrayLike
- State values (typically membrane potentials) of the pre-synaptic neurons.
- post : Dynamics
- The post-synaptic neuron group dynamics object.
- post_value : ArrayLike
- State values (typically membrane potentials) of the post-synaptic neurons.
- pre_ids : ArrayLike
- Indices of pre-synaptic neurons that form gap junctions.
- post_ids : ArrayLike
- Indices of post-synaptic neurons that form gap junctions,
- where each pre_ids[i] is connected to post_ids[i].
- weight : ArrayLike
- Conductance weights for the gap junctions. Can be a scalar (same weight for all connections)
- or an array with length matching pre_ids.
-
- Returns
- -------
- ArrayLike
- The input currents that were added to the pre-synaptic neuron group.
-
- Notes
- -----
- The electrical coupling is implemented as I = g(V_pre - V_post), where:
- - I is the current flowing from pre to post neuron
- - g is the gap junction conductance (weight)
- - V_pre and V_post are the membrane potentials of connected neurons
-
- Equal but opposite currents are applied to both connected neurons, ensuring
- conservation of current in the network.
-
- Raises
- ------
- AssertionError
- If weight dimensionality is incorrect or pre_ids and post_ids have different lengths.
- """
- assert u.math.ndim(weight) == 0 or weight.shape[0] == len(pre_ids), \
- "weight must be a scalar or have the same length as pre_ids"
- assert len(pre_ids) == len(post_ids), "pre_ids and post_ids must have the same length"
- # Calculate the voltage difference between connected pre-synaptic and post-synaptic neurons
- # and multiply by the connection weights
- diff = (pre_value[pre_ids] - post_value[post_ids]) * weight
-
- # add to post-synaptic neuron group
- # Initialize the input currents for the post-synaptic neuron group
- inputs = u.math.zeros(post.out_size, unit=u.get_unit(diff))
- # Add the calculated current to the corresponding post-synaptic neurons
- inputs = inputs.at[post_ids].add(diff)
- # Generate a unique key for the post-synaptic input currents
- key = get_gap_junction_post_key(0 if post.current_inputs is None else len(post.current_inputs))
- # Add the input currents to the post-synaptic neuron group
- post.add_current_input(key, inputs)
-
- # add to pre-synaptic neuron group
- # Initialize the input currents for the pre-synaptic neuron group
- inputs = u.math.zeros(pre.out_size, unit=u.get_unit(diff))
- # Add the calculated current to the corresponding pre-synaptic neurons
- inputs = inputs.at[pre_ids].add(diff)
- # Generate a unique key for the pre-synaptic input currents
- key = get_gap_junction_pre_key(0 if pre.current_inputs is None else len(pre.current_inputs))
- # Add the input currents to the pre-synaptic neuron group with opposite polarity
- pre.add_current_input(key, -inputs)
- return inputs
-
-
-class AsymmetryGapJunction(Projection):
- """
- Implements an asymmetric electrical coupling (gap junction) between neuron populations.
-
- This class represents electrical synapses where the conductance in one direction can differ
- from the conductance in the opposite direction. Unlike chemical synapses, gap junctions
- allow bidirectional flow of electrical current directly between neurons, with the current
- magnitude proportional to the voltage difference between connected neurons.
-
- Parameters
- ----------
- pre : Dynamics
- The pre-synaptic neuron group dynamics object.
- pre_state : str
- Name of the state variable in pre-synaptic neurons (typically membrane potential).
- post : Dynamics
- The post-synaptic neuron group dynamics object.
- post_state : str
- Name of the state variable in post-synaptic neurons (typically membrane potential).
- conn : Callable
- Connection function that returns pre_ids and post_ids arrays defining connections.
- weight : Union[Callable, ArrayLike]
- Conductance weights for the gap junctions. Must have shape [..., 2] where the last
- dimension contains [pre_weight, post_weight] for each connection, defining
- potentially different conductances in each direction.
- param_type : type, optional
- The parameter state type to use for weights, defaults to ParamState.
-
- Examples
- --------
- >>> import brainpy.state as brainpy
- >>> import brainunit as u
- >>> import numpy as np
- >>>
- >>> # Create two neuron populations
- >>> n_neurons = 100
- >>> 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()
- >>>
- >>> # Create asymmetric gap junction with different weights in each direction
- >>> weights = np.ones((n_neurons, 2)) * u.nS
- >>> weights[:, 0] *= 2.0 # Double weight in pre->post direction
- >>>
- >>> gap_junction = brainpy.AsymmetryGapJunction(
- ... pre=pre_pop,
- ... pre_state='V',
- ... post=post_pop,
- ... post_state='V',
- ... conn=one_to_one,
- ... weight=weights
- ... )
-
- Notes
- -----
- The asymmetric gap junction allows for different conductances in each direction between
- the same pair of neurons. This can model rectifying electrical synapses that preferentially
- allow current to flow in one direction.
-
- See Also
- --------
- SymmetryGapJunction : For gap junctions with identical conductance in both directions.
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- pre: brainstate.nn.Dynamics,
- pre_state: str,
- post: brainstate.nn.Dynamics,
- post_state: str,
- conn: Callable,
- weight: Union[Callable, ArrayLike],
- param_type: type = brainstate.ParamState
- ):
- super().__init__()
-
- assert isinstance(pre_state, str), "pre_state must be a string representing the pre-synaptic state"
- assert isinstance(post_state, str), "post_state must be a string representing the post-synaptic state"
- self.pre_state = pre_state
- self.post_state = post_state
- self.pre = pre
- self.post = post
- self.pre_ids, self.post_ids = conn(pre.out_size, post.out_size)
- self.weight = param_type(braintools.init.param(weight, (len(self.pre_ids), 2)))
-
- def update(self, *args, **kwargs):
- if not hasattr(self.pre, self.pre_state):
- raise ValueError(f"pre_state {self.pre_state} not found in pre-synaptic neuron group")
- if not hasattr(self.post, self.post_state):
- raise ValueError(f"post_state {self.post_state} not found in post-synaptic neuron group")
- pre = getattr(self.pre, self.pre_state).value
- post = getattr(self.post, self.post_state).value
-
- return asymmetry_gap_junction_projection(
- pre=self.pre,
- pre_value=pre,
- post=self.post,
- post_value=post,
- pre_ids=self.pre_ids,
- post_ids=self.post_ids,
- weight=self.weight.value,
- )
-
-
-@set_module_as('brainpy.state')
-def asymmetry_gap_junction_projection(
- pre: brainstate.nn.Dynamics,
- pre_value: ArrayLike,
- post: brainstate.nn.Dynamics,
- post_value: ArrayLike,
- pre_ids: ArrayLike,
- post_ids: ArrayLike,
- weight: ArrayLike,
-):
- """
- Calculate asymmetrical electrical coupling through gap junctions between neurons.
-
- This function implements bidirectional gap junction coupling where different weights
- can be applied in each direction. It computes the electrical current flowing between
- connected neurons based on their potential differences and updates both pre-synaptic
- and post-synaptic neuron groups with appropriate input currents.
-
- Parameters
- ----------
- pre : Dynamics
- The pre-synaptic neuron group dynamics object.
- pre_value : ArrayLike
- State values (typically membrane potentials) of the pre-synaptic neurons.
- post : Dynamics
- The post-synaptic neuron group dynamics object.
- post_value : ArrayLike
- State values (typically membrane potentials) of the post-synaptic neurons.
- pre_ids : ArrayLike
- Indices of pre-synaptic neurons that form gap junctions.
- post_ids : ArrayLike
- Indices of post-synaptic neurons that form gap junctions,
- where each pre_ids[i] is connected to post_ids[i].
- weight : ArrayLike
- Conductance weights for the gap junctions. Must have shape [..., 2], where
- the last dimension contains [pre_weight, post_weight] for each connection.
- Can be a 1D array [pre_weight, post_weight] (same weights for all connections)
- or a 2D array with shape [len(pre_ids), 2] for connection-specific weights.
-
- Returns
- -------
- ArrayLike
- The input currents that were added to the pre-synaptic neuron group.
-
- Notes
- -----
- The electrical coupling is implemented with direction-specific conductances:
- - I_pre2post = g_pre * (V_pre - V_post) flowing from pre to post neuron
- - I_post2pre = g_post * (V_pre - V_post) flowing from post to pre neuron
- where g_pre and g_post can be different, allowing for asymmetrical coupling.
-
- Raises
- ------
- AssertionError
- If weight dimensionality is incorrect or pre_ids and post_ids have different lengths.
- ValueError
- If weight shape is incompatible with asymmetrical gap junction requirements.
- """
- assert weight.shape[-1] == 2, 'weight must be a 2-element array for asymmetry gap junctions'
- assert len(pre_ids) == len(post_ids), "pre_ids and post_ids must have the same length"
- if u.math.ndim(weight) == 1:
- # If weight is a 1D array, it should have two elements for pre and post weights
- assert weight.shape[0] == 2, "weight must be a 2-element array for asymmetry gap junctions"
- pre_weight = weight[0]
- post_weight = weight[1]
- elif u.math.ndim(weight) == 2:
- # If weight is a 2D array, it should have two rows for pre and post weights
- pre_weight = weight[:, 0]
- post_weight = weight[:, 1]
- assert pre_weight.shape[0] == len(pre_ids), "pre_weight must have the same length as pre_ids"
- assert post_weight.shape[0] == len(post_ids), "post_weight must have the same length as post_ids"
- else:
- raise ValueError("weight must be a 1D or 2D array for asymmetry gap junctions")
-
- # Calculate the voltage difference between connected pre-synaptic and post-synaptic neurons
- # and multiply by the connection weights
- diff = pre_value[pre_ids] - post_value[post_ids]
- pre2post_current = diff * pre_weight
- post2pre_current = diff * post_weight
-
- # add to post-synaptic neuron group
- # Initialize the input currents for the post-synaptic neuron group
- inputs = u.math.zeros(post.out_size, unit=u.get_unit(pre2post_current))
- # Add the calculated current to the corresponding post-synaptic neurons
- inputs = inputs.at[post_ids].add(pre2post_current)
- # Generate a unique key for the post-synaptic input currents
- key = get_gap_junction_post_key(0 if post.current_inputs is None else len(post.current_inputs))
- # Add the input currents to the post-synaptic neuron group
- post.add_current_input(key, inputs)
-
- # add to pre-synaptic neuron group
- # Initialize the input currents for the pre-synaptic neuron group
- inputs = u.math.zeros(pre.out_size, unit=u.get_unit(post2pre_current))
- # Add the calculated current to the corresponding pre-synaptic neurons
- inputs = inputs.at[pre_ids].add(post2pre_current)
- # Generate a unique key for the pre-synaptic input currents
- key = get_gap_junction_pre_key(0 if pre.current_inputs is None else len(pre.current_inputs))
- # Add the input currents to the pre-synaptic neuron group with opposite polarity
- pre.add_current_input(key, -inputs)
- return inputs
diff --git a/brainpy/state/_synouts.py b/brainpy/state/_synouts.py
deleted file mode 100644
index 8592ded89..000000000
--- a/brainpy/state/_synouts.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# 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.
-# ==============================================================================
-
-# -*- coding: utf-8 -*-
-
-import brainstate
-import brainunit as u
-import jax.numpy as jnp
-
-from brainpy.mixin import BindCondData
-
-__all__ = [
- 'SynOut', 'COBA', 'CUBA', 'MgBlock',
-]
-
-
-class SynOut(brainstate.nn.Module, BindCondData):
- """
- Base class for synaptic outputs.
-
- :py:class:`~.SynOut` is also subclass of :py:class:`~.ParamDesc` and :py:class:`~.BindCondData`.
- """
-
- __module__ = 'brainpy.state'
-
- def __init__(self, ):
- super().__init__()
- self._conductance = None
-
- def __call__(self, *args, **kwargs):
- if self._conductance is None:
- raise ValueError(
- f'Please first pack conductance data at the current step using '
- f'".{BindCondData.bind_cond.__name__}(data)". {self}'
- )
- ret = self.update(self._conductance, *args, **kwargs)
- return ret
-
- def update(self, conductance, potential):
- raise NotImplementedError
-
-
-class COBA(SynOut):
- r"""
- Conductance-based synaptic output.
-
- Given the synaptic conductance, the model output the post-synaptic current with
-
- .. math::
-
- I_{syn}(t) = g_{\mathrm{syn}}(t) (E - V(t))
-
- Parameters
- ----------
- E: ArrayLike
- The reversal potential.
-
- See Also
- --------
- CUBA
- """
- __module__ = 'brainpy.state'
-
- def __init__(self, E: brainstate.typing.ArrayLike):
- super().__init__()
-
- self.E = E
-
- def update(self, conductance, potential):
- return conductance * (self.E - potential)
-
-
-class CUBA(SynOut):
- r"""Current-based synaptic output.
-
- Given the conductance, this model outputs the post-synaptic current with a identity function:
-
- .. math::
-
- I_{\mathrm{syn}}(t) = g_{\mathrm{syn}}(t)
-
- Parameters
- ----------
- scale: ArrayLike
- The scaling factor for the conductance. Default 1. [mV]
-
- See Also
- --------
- COBA
- """
- __module__ = 'brainpy.state'
-
- def __init__(self, scale: brainstate.typing.ArrayLike = u.volt):
- super().__init__()
- self.scale = scale
-
- def update(self, conductance, potential=None):
- return conductance * self.scale
-
-
-class MgBlock(SynOut):
- r"""Synaptic output based on Magnesium blocking.
-
- Given the synaptic conductance, the model output the post-synaptic current with
-
- .. math::
-
- I_{syn}(t) = g_{\mathrm{syn}}(t) (E - V(t)) g_{\infty}(V,[{Mg}^{2+}]_{o})
-
- where The fraction of channels :math:`g_{\infty}` that are not blocked by magnesium can be fitted to
-
- .. math::
-
- g_{\infty}(V,[{Mg}^{2+}]_{o}) = (1+{e}^{-\alpha V} \frac{[{Mg}^{2+}]_{o}} {\beta})^{-1}
-
- Here :math:`[{Mg}^{2+}]_{o}` is the extracellular magnesium concentration.
-
- Parameters
- ----------
- E: ArrayLike
- The reversal potential for the synaptic current. [mV]
- alpha: ArrayLike
- Binding constant. Default 0.062
- beta: ArrayLike
- Unbinding constant. Default 3.57
- cc_Mg: ArrayLike
- Concentration of Magnesium ion. Default 1.2 [mM].
- V_offset: ArrayLike
- The offset potential. Default 0. [mV]
- """
- __module__ = 'brainpy.state'
-
- def __init__(
- self,
- E: brainstate.typing.ArrayLike = 0.,
- cc_Mg: brainstate.typing.ArrayLike = 1.2,
- alpha: brainstate.typing.ArrayLike = 0.062,
- beta: brainstate.typing.ArrayLike = 3.57,
- V_offset: brainstate.typing.ArrayLike = 0.,
- ):
- super().__init__()
-
- self.E = E
- self.V_offset = V_offset
- self.cc_Mg = cc_Mg
- self.alpha = alpha
- self.beta = beta
-
- def update(self, conductance, potential):
- norm = (1 + self.cc_Mg / self.beta * jnp.exp(self.alpha * (self.V_offset - potential)))
- return conductance * (self.E - potential) / norm
diff --git a/brainpy/state/_synouts_test.py b/brainpy/state/_synouts_test.py
deleted file mode 100644
index b06e71cbf..000000000
--- a/brainpy/state/_synouts_test.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# 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 unittest
-
-import brainunit as u
-import jax.numpy as jnp
-import numpy as np
-
-import brainpy.state as brainpy
-
-
-class TestSynOutModels(unittest.TestCase):
- def setUp(self):
- self.conductance = jnp.array([0.5, 1.0, 1.5])
- self.potential = jnp.array([-70.0, -65.0, -60.0])
- self.E = jnp.array([-70.0])
- self.alpha = jnp.array([0.062])
- self.beta = jnp.array([3.57])
- self.cc_Mg = jnp.array([1.2])
- self.V_offset = jnp.array([0.0])
-
- def test_COBA(self):
- model = brainpy.COBA(E=self.E)
- output = model.update(self.conductance, self.potential)
- expected_output = self.conductance * (self.E - self.potential)
- np.testing.assert_array_almost_equal(output, expected_output)
-
- def test_CUBA(self):
- model = brainpy.CUBA()
- output = model.update(self.conductance)
- expected_output = self.conductance * model.scale
- self.assertTrue(u.math.allclose(output, expected_output))
-
- def test_MgBlock(self):
- model = brainpy.MgBlock(
- E=self.E, cc_Mg=self.cc_Mg, alpha=self.alpha, beta=self.beta, V_offset=self.V_offset
- )
- output = model.update(self.conductance, self.potential)
- norm = (1 + self.cc_Mg / self.beta * jnp.exp(self.alpha * (self.V_offset - self.potential)))
- expected_output = self.conductance * (self.E - self.potential) / norm
- np.testing.assert_array_almost_equal(output, expected_output)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/docs_classic/FAQ.rst b/docs/FAQ.rst
similarity index 100%
rename from docs_classic/FAQ.rst
rename to docs/FAQ.rst
diff --git a/docs_classic/README.md b/docs/README.md
similarity index 100%
rename from docs_classic/README.md
rename to docs/README.md
diff --git a/docs_classic/_static/DOGDecay.png b/docs/_static/DOGDecay.png
similarity index 100%
rename from docs_classic/_static/DOGDecay.png
rename to docs/_static/DOGDecay.png
diff --git a/docs_classic/_static/E_I_balance_network.png b/docs/_static/E_I_balance_network.png
similarity index 100%
rename from docs_classic/_static/E_I_balance_network.png
rename to docs/_static/E_I_balance_network.png
diff --git a/docs_classic/_static/HH-circuit.png b/docs/_static/HH-circuit.png
similarity index 100%
rename from docs_classic/_static/HH-circuit.png
rename to docs/_static/HH-circuit.png
diff --git a/docs_classic/_static/Hodgkin_Huxley_Limit_Cycle.png b/docs/_static/Hodgkin_Huxley_Limit_Cycle.png
similarity index 100%
rename from docs_classic/_static/Hodgkin_Huxley_Limit_Cycle.png
rename to docs/_static/Hodgkin_Huxley_Limit_Cycle.png
diff --git a/docs_classic/_static/Hodgkin_Huxley_bifurcation.png b/docs/_static/Hodgkin_Huxley_bifurcation.png
similarity index 100%
rename from docs_classic/_static/Hodgkin_Huxley_bifurcation.png
rename to docs/_static/Hodgkin_Huxley_bifurcation.png
diff --git a/docs_classic/_static/Hodgkins_Huxley_bifurcation_by_I.gif b/docs/_static/Hodgkins_Huxley_bifurcation_by_I.gif
similarity index 100%
rename from docs_classic/_static/Hodgkins_Huxley_bifurcation_by_I.gif
rename to docs/_static/Hodgkins_Huxley_bifurcation_by_I.gif
diff --git a/docs_classic/_static/NG-RC-vs-Traditional-RC.png b/docs/_static/NG-RC-vs-Traditional-RC.png
similarity index 100%
rename from docs_classic/_static/NG-RC-vs-Traditional-RC.png
rename to docs/_static/NG-RC-vs-Traditional-RC.png
diff --git a/docs_classic/_static/Pinsky-Rinzel-model-illustration.png b/docs/_static/Pinsky-Rinzel-model-illustration.png
similarity index 100%
rename from docs_classic/_static/Pinsky-Rinzel-model-illustration.png
rename to docs/_static/Pinsky-Rinzel-model-illustration.png
diff --git a/docs_classic/_static/align_post.png b/docs/_static/align_post.png
similarity index 100%
rename from docs_classic/_static/align_post.png
rename to docs/_static/align_post.png
diff --git a/docs_classic/_static/align_pre.png b/docs/_static/align_pre.png
similarity index 100%
rename from docs_classic/_static/align_pre.png
rename to docs/_static/align_pre.png
diff --git a/docs_classic/_static/all2all.png b/docs/_static/all2all.png
similarity index 100%
rename from docs_classic/_static/all2all.png
rename to docs/_static/all2all.png
diff --git a/docs_classic/_static/conductance_model_diagram.png b/docs/_static/conductance_model_diagram.png
similarity index 100%
rename from docs_classic/_static/conductance_model_diagram.png
rename to docs/_static/conductance_model_diagram.png
diff --git a/docs_classic/_static/csr_matrix.png b/docs/_static/csr_matrix.png
similarity index 100%
rename from docs_classic/_static/csr_matrix.png
rename to docs/_static/csr_matrix.png
diff --git a/docs_classic/_static/dmnet_diagram.png b/docs/_static/dmnet_diagram.png
similarity index 100%
rename from docs_classic/_static/dmnet_diagram.png
rename to docs/_static/dmnet_diagram.png
diff --git a/docs_classic/_static/echo_state_net.png b/docs/_static/echo_state_net.png
similarity index 100%
rename from docs_classic/_static/echo_state_net.png
rename to docs/_static/echo_state_net.png
diff --git a/docs_classic/_static/esn.png b/docs/_static/esn.png
similarity index 100%
rename from docs_classic/_static/esn.png
rename to docs/_static/esn.png
diff --git a/docs_classic/_static/event_driven_matrix_multiplication.png b/docs/_static/event_driven_matrix_multiplication.png
similarity index 100%
rename from docs_classic/_static/event_driven_matrix_multiplication.png
rename to docs/_static/event_driven_matrix_multiplication.png
diff --git a/docs_classic/_static/example_synaptic_connection.png b/docs/_static/example_synaptic_connection.png
similarity index 100%
rename from docs_classic/_static/example_synaptic_connection.png
rename to docs/_static/example_synaptic_connection.png
diff --git a/docs_classic/_static/feedback_node.png b/docs/_static/feedback_node.png
similarity index 100%
rename from docs_classic/_static/feedback_node.png
rename to docs/_static/feedback_node.png
diff --git a/docs_classic/_static/feedforward_node.png b/docs/_static/feedforward_node.png
similarity index 100%
rename from docs_classic/_static/feedforward_node.png
rename to docs/_static/feedforward_node.png
diff --git a/docs_classic/_static/fixed_post_num.png b/docs/_static/fixed_post_num.png
similarity index 100%
rename from docs_classic/_static/fixed_post_num.png
rename to docs/_static/fixed_post_num.png
diff --git a/docs_classic/_static/fixed_pre_num.png b/docs/_static/fixed_pre_num.png
similarity index 100%
rename from docs_classic/_static/fixed_pre_num.png
rename to docs/_static/fixed_pre_num.png
diff --git a/docs_classic/_static/fixed_proab.png b/docs/_static/fixed_proab.png
similarity index 100%
rename from docs_classic/_static/fixed_proab.png
rename to docs/_static/fixed_proab.png
diff --git a/docs_classic/_static/gaussian_prob.png b/docs/_static/gaussian_prob.png
similarity index 100%
rename from docs_classic/_static/gaussian_prob.png
rename to docs/_static/gaussian_prob.png
diff --git a/docs_classic/_static/grid_N.png b/docs/_static/grid_N.png
similarity index 100%
rename from docs_classic/_static/grid_N.png
rename to docs/_static/grid_N.png
diff --git a/docs_classic/_static/grid_eight.png b/docs/_static/grid_eight.png
similarity index 100%
rename from docs_classic/_static/grid_eight.png
rename to docs/_static/grid_eight.png
diff --git a/docs_classic/_static/grid_four.png b/docs/_static/grid_four.png
similarity index 100%
rename from docs_classic/_static/grid_four.png
rename to docs/_static/grid_four.png
diff --git a/docs_classic/_static/izhikevich.jfif b/docs/_static/izhikevich.jfif
similarity index 100%
rename from docs_classic/_static/izhikevich.jfif
rename to docs/_static/izhikevich.jfif
diff --git a/docs_classic/_static/izhikevich_patterns.jfif b/docs/_static/izhikevich_patterns.jfif
similarity index 100%
rename from docs_classic/_static/izhikevich_patterns.jfif
rename to docs/_static/izhikevich_patterns.jfif
diff --git a/docs_classic/_static/joint_and_separate_equations.png b/docs/_static/joint_and_separate_equations.png
similarity index 100%
rename from docs_classic/_static/joint_and_separate_equations.png
rename to docs/_static/joint_and_separate_equations.png
diff --git a/docs_classic/_static/masked_matrix.png b/docs/_static/masked_matrix.png
similarity index 100%
rename from docs_classic/_static/masked_matrix.png
rename to docs/_static/masked_matrix.png
diff --git a/docs_classic/_static/matrix_broadcasting.png b/docs/_static/matrix_broadcasting.png
similarity index 100%
rename from docs_classic/_static/matrix_broadcasting.png
rename to docs/_static/matrix_broadcasting.png
diff --git a/docs_classic/_static/multiply_broadcasting.png b/docs/_static/multiply_broadcasting.png
similarity index 100%
rename from docs_classic/_static/multiply_broadcasting.png
rename to docs/_static/multiply_broadcasting.png
diff --git a/docs_classic/_static/node_specification.png b/docs/_static/node_specification.png
similarity index 100%
rename from docs_classic/_static/node_specification.png
rename to docs/_static/node_specification.png
diff --git a/docs_classic/_static/ode_Euler_method.svg b/docs/_static/ode_Euler_method.svg
similarity index 100%
rename from docs_classic/_static/ode_Euler_method.svg
rename to docs/_static/ode_Euler_method.svg
diff --git a/docs_classic/_static/ode_Heun2_Method_Diagram.jpg b/docs/_static/ode_Heun2_Method_Diagram.jpg
similarity index 100%
rename from docs_classic/_static/ode_Heun2_Method_Diagram.jpg
rename to docs/_static/ode_Heun2_Method_Diagram.jpg
diff --git a/docs_classic/_static/ode_Midpoint_method_illustration.png b/docs/_static/ode_Midpoint_method_illustration.png
similarity index 100%
rename from docs_classic/_static/ode_Midpoint_method_illustration.png
rename to docs/_static/ode_Midpoint_method_illustration.png
diff --git a/docs_classic/_static/one2one.png b/docs/_static/one2one.png
similarity index 100%
rename from docs_classic/_static/one2one.png
rename to docs/_static/one2one.png
diff --git a/docs_classic/_static/potassium_channel_equivalent_circuit.png b/docs/_static/potassium_channel_equivalent_circuit.png
similarity index 100%
rename from docs_classic/_static/potassium_channel_equivalent_circuit.png
rename to docs/_static/potassium_channel_equivalent_circuit.png
diff --git a/docs_classic/_static/pre2syn2post.png b/docs/_static/pre2syn2post.png
similarity index 100%
rename from docs_classic/_static/pre2syn2post.png
rename to docs/_static/pre2syn2post.png
diff --git a/docs_classic/_static/recurrent_node.png b/docs/_static/recurrent_node.png
similarity index 100%
rename from docs_classic/_static/recurrent_node.png
rename to docs/_static/recurrent_node.png
diff --git a/docs_classic/_static/sparse_connection_and_events.png b/docs/_static/sparse_connection_and_events.png
similarity index 100%
rename from docs_classic/_static/sparse_connection_and_events.png
rename to docs/_static/sparse_connection_and_events.png
diff --git a/docs_classic/_static/sparse_matrix_multiplication.png b/docs/_static/sparse_matrix_multiplication.png
similarity index 100%
rename from docs_classic/_static/sparse_matrix_multiplication.png
rename to docs/_static/sparse_matrix_multiplication.png
diff --git a/docs_classic/_static/stp.png b/docs/_static/stp.png
similarity index 100%
rename from docs_classic/_static/stp.png
rename to docs/_static/stp.png
diff --git a/docs_classic/_static/surrogate_gradient.png b/docs/_static/surrogate_gradient.png
similarity index 100%
rename from docs_classic/_static/surrogate_gradient.png
rename to docs/_static/surrogate_gradient.png
diff --git a/docs_classic/_static/syn-example-conn_mat.png b/docs/_static/syn-example-conn_mat.png
similarity index 100%
rename from docs_classic/_static/syn-example-conn_mat.png
rename to docs/_static/syn-example-conn_mat.png
diff --git a/docs_classic/_static/syn-example-post2pre.png b/docs/_static/syn-example-post2pre.png
similarity index 100%
rename from docs_classic/_static/syn-example-post2pre.png
rename to docs/_static/syn-example-post2pre.png
diff --git a/docs_classic/_static/syn-example-post2syn-1.png b/docs/_static/syn-example-post2syn-1.png
similarity index 100%
rename from docs_classic/_static/syn-example-post2syn-1.png
rename to docs/_static/syn-example-post2syn-1.png
diff --git a/docs_classic/_static/syn-example-post2syn-2.png b/docs/_static/syn-example-post2syn-2.png
similarity index 100%
rename from docs_classic/_static/syn-example-post2syn-2.png
rename to docs/_static/syn-example-post2syn-2.png
diff --git a/docs_classic/_static/syn-example-post2syn.png b/docs/_static/syn-example-post2syn.png
similarity index 100%
rename from docs_classic/_static/syn-example-post2syn.png
rename to docs/_static/syn-example-post2syn.png
diff --git a/docs_classic/_static/syn-example-post_slice_syn.png b/docs/_static/syn-example-post_slice_syn.png
similarity index 100%
rename from docs_classic/_static/syn-example-post_slice_syn.png
rename to docs/_static/syn-example-post_slice_syn.png
diff --git a/docs_classic/_static/syn-example-pre2post.png b/docs/_static/syn-example-pre2post.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre2post.png
rename to docs/_static/syn-example-pre2post.png
diff --git a/docs_classic/_static/syn-example-pre2syn-1.png b/docs/_static/syn-example-pre2syn-1.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre2syn-1.png
rename to docs/_static/syn-example-pre2syn-1.png
diff --git a/docs_classic/_static/syn-example-pre2syn-2.png b/docs/_static/syn-example-pre2syn-2.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre2syn-2.png
rename to docs/_static/syn-example-pre2syn-2.png
diff --git a/docs_classic/_static/syn-example-pre2syn.png b/docs/_static/syn-example-pre2syn.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre2syn.png
rename to docs/_static/syn-example-pre2syn.png
diff --git a/docs_classic/_static/syn-example-pre_ids-post_ids.png b/docs/_static/syn-example-pre_ids-post_ids.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre_ids-post_ids.png
rename to docs/_static/syn-example-pre_ids-post_ids.png
diff --git a/docs_classic/_static/syn-example-pre_slice_syn.png b/docs/_static/syn-example-pre_slice_syn.png
similarity index 100%
rename from docs_classic/_static/syn-example-pre_slice_syn.png
rename to docs/_static/syn-example-pre_slice_syn.png
diff --git a/docs_classic/_static/synapse_markov.png b/docs/_static/synapse_markov.png
similarity index 100%
rename from docs_classic/_static/synapse_markov.png
rename to docs/_static/synapse_markov.png
diff --git a/docs_classic/_static/synapses_and_weights.png b/docs/_static/synapses_and_weights.png
similarity index 100%
rename from docs_classic/_static/synapses_and_weights.png
rename to docs/_static/synapses_and_weights.png
diff --git a/docs_classic/_static/synapses_delay_state.png b/docs/_static/synapses_delay_state.png
similarity index 100%
rename from docs_classic/_static/synapses_delay_state.png
rename to docs/_static/synapses_delay_state.png
diff --git a/docs_classic/_static/synapses_index.png b/docs/_static/synapses_index.png
similarity index 100%
rename from docs_classic/_static/synapses_index.png
rename to docs/_static/synapses_index.png
diff --git a/docs_classic/_static/tensor_dataones.png b/docs/_static/tensor_dataones.png
similarity index 100%
rename from docs_classic/_static/tensor_dataones.png
rename to docs/_static/tensor_dataones.png
diff --git a/docs_classic/_static/tensor_dataones.svg b/docs/_static/tensor_dataones.svg
similarity index 100%
rename from docs_classic/_static/tensor_dataones.svg
rename to docs/_static/tensor_dataones.svg
diff --git a/docs_classic/_static/tensor_matrix_aggregation_row.png b/docs/_static/tensor_matrix_aggregation_row.png
similarity index 100%
rename from docs_classic/_static/tensor_matrix_aggregation_row.png
rename to docs/_static/tensor_matrix_aggregation_row.png
diff --git a/docs_classic/_static/tensor_plus_ones.png b/docs/_static/tensor_plus_ones.png
similarity index 100%
rename from docs_classic/_static/tensor_plus_ones.png
rename to docs/_static/tensor_plus_ones.png
diff --git a/docs_classic/_static/tensor_shape.png b/docs/_static/tensor_shape.png
similarity index 100%
rename from docs_classic/_static/tensor_shape.png
rename to docs/_static/tensor_shape.png
diff --git a/docs_classic/_static/tensor_sub_mult_divide.png b/docs/_static/tensor_sub_mult_divide.png
similarity index 100%
rename from docs_classic/_static/tensor_sub_mult_divide.png
rename to docs/_static/tensor_sub_mult_divide.png
diff --git a/docs_classic/_static/tensore_aggregation.png b/docs/_static/tensore_aggregation.png
similarity index 100%
rename from docs_classic/_static/tensore_aggregation.png
rename to docs/_static/tensore_aggregation.png
diff --git a/docs_classic/_templates/class_template.rst b/docs/_templates/class_template.rst
similarity index 100%
rename from docs_classic/_templates/class_template.rst
rename to docs/_templates/class_template.rst
diff --git a/docs_classic/_templates/classtemplate.rst b/docs/_templates/classtemplate.rst
similarity index 100%
rename from docs_classic/_templates/classtemplate.rst
rename to docs/_templates/classtemplate.rst
diff --git a/docs_classic/_templates/ion_template.rst b/docs/_templates/ion_template.rst
similarity index 100%
rename from docs_classic/_templates/ion_template.rst
rename to docs/_templates/ion_template.rst
diff --git a/docs_classic/advanced_tutorials.rst b/docs/advanced_tutorials.rst
similarity index 100%
rename from docs_classic/advanced_tutorials.rst
rename to docs/advanced_tutorials.rst
diff --git a/docs_classic/api.rst b/docs/api.rst
similarity index 100%
rename from docs_classic/api.rst
rename to docs/api.rst
diff --git a/docs_classic/apis/analysis.rst b/docs/apis/analysis.rst
similarity index 100%
rename from docs_classic/apis/analysis.rst
rename to docs/apis/analysis.rst
diff --git a/docs_classic/apis/brainpy.dyn.base.rst b/docs/apis/brainpy.dyn.base.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.base.rst
rename to docs/apis/brainpy.dyn.base.rst
diff --git a/docs_classic/apis/brainpy.dyn.channels.rst b/docs/apis/brainpy.dyn.channels.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.channels.rst
rename to docs/apis/brainpy.dyn.channels.rst
diff --git a/docs_classic/apis/brainpy.dyn.ions.rst b/docs/apis/brainpy.dyn.ions.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.ions.rst
rename to docs/apis/brainpy.dyn.ions.rst
diff --git a/docs_classic/apis/brainpy.dyn.neurons.rst b/docs/apis/brainpy.dyn.neurons.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.neurons.rst
rename to docs/apis/brainpy.dyn.neurons.rst
diff --git a/docs_classic/apis/brainpy.dyn.others.rst b/docs/apis/brainpy.dyn.others.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.others.rst
rename to docs/apis/brainpy.dyn.others.rst
diff --git a/docs_classic/apis/brainpy.dyn.outs.rst b/docs/apis/brainpy.dyn.outs.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.outs.rst
rename to docs/apis/brainpy.dyn.outs.rst
diff --git a/docs_classic/apis/brainpy.dyn.plasticity.rst b/docs/apis/brainpy.dyn.plasticity.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.plasticity.rst
rename to docs/apis/brainpy.dyn.plasticity.rst
diff --git a/docs_classic/apis/brainpy.dyn.projections.rst b/docs/apis/brainpy.dyn.projections.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.projections.rst
rename to docs/apis/brainpy.dyn.projections.rst
diff --git a/docs_classic/apis/brainpy.dyn.rates.rst b/docs/apis/brainpy.dyn.rates.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.rates.rst
rename to docs/apis/brainpy.dyn.rates.rst
diff --git a/docs_classic/apis/brainpy.dyn.synapses.rst b/docs/apis/brainpy.dyn.synapses.rst
similarity index 100%
rename from docs_classic/apis/brainpy.dyn.synapses.rst
rename to docs/apis/brainpy.dyn.synapses.rst
diff --git a/docs_classic/apis/brainpy.math.defaults.rst b/docs/apis/brainpy.math.defaults.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.defaults.rst
rename to docs/apis/brainpy.math.defaults.rst
diff --git a/docs_classic/apis/brainpy.math.delayvars.rst b/docs/apis/brainpy.math.delayvars.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.delayvars.rst
rename to docs/apis/brainpy.math.delayvars.rst
diff --git a/docs_classic/apis/brainpy.math.environment.rst b/docs/apis/brainpy.math.environment.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.environment.rst
rename to docs/apis/brainpy.math.environment.rst
diff --git a/docs_classic/apis/brainpy.math.event.rst b/docs/apis/brainpy.math.event.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.event.rst
rename to docs/apis/brainpy.math.event.rst
diff --git a/docs_classic/apis/brainpy.math.jitconn.rst b/docs/apis/brainpy.math.jitconn.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.jitconn.rst
rename to docs/apis/brainpy.math.jitconn.rst
diff --git a/docs_classic/apis/brainpy.math.modes.rst b/docs/apis/brainpy.math.modes.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.modes.rst
rename to docs/apis/brainpy.math.modes.rst
diff --git a/docs_classic/apis/brainpy.math.oo_transform.rst b/docs/apis/brainpy.math.oo_transform.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.oo_transform.rst
rename to docs/apis/brainpy.math.oo_transform.rst
diff --git a/docs_classic/apis/brainpy.math.op_register.rst b/docs/apis/brainpy.math.op_register.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.op_register.rst
rename to docs/apis/brainpy.math.op_register.rst
diff --git a/docs_classic/apis/brainpy.math.pre_syn_post.rst b/docs/apis/brainpy.math.pre_syn_post.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.pre_syn_post.rst
rename to docs/apis/brainpy.math.pre_syn_post.rst
diff --git a/docs_classic/apis/brainpy.math.random.rst b/docs/apis/brainpy.math.random.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.random.rst
rename to docs/apis/brainpy.math.random.rst
diff --git a/docs_classic/apis/brainpy.math.rst b/docs/apis/brainpy.math.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.rst
rename to docs/apis/brainpy.math.rst
diff --git a/docs_classic/apis/brainpy.math.sharding.rst b/docs/apis/brainpy.math.sharding.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.sharding.rst
rename to docs/apis/brainpy.math.sharding.rst
diff --git a/docs_classic/apis/brainpy.math.sparse.rst b/docs/apis/brainpy.math.sparse.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.sparse.rst
rename to docs/apis/brainpy.math.sparse.rst
diff --git a/docs_classic/apis/brainpy.math.surrogate.rst b/docs/apis/brainpy.math.surrogate.rst
similarity index 100%
rename from docs_classic/apis/brainpy.math.surrogate.rst
rename to docs/apis/brainpy.math.surrogate.rst
diff --git a/docs_classic/apis/brainpy.rst b/docs/apis/brainpy.rst
similarity index 100%
rename from docs_classic/apis/brainpy.rst
rename to docs/apis/brainpy.rst
diff --git a/docs_classic/apis/connect.rst b/docs/apis/connect.rst
similarity index 100%
rename from docs_classic/apis/connect.rst
rename to docs/apis/connect.rst
diff --git a/docs_classic/apis/deprecated/channels.rst b/docs/apis/deprecated/channels.rst
similarity index 100%
rename from docs_classic/apis/deprecated/channels.rst
rename to docs/apis/deprecated/channels.rst
diff --git a/docs_classic/apis/deprecated/layers.rst b/docs/apis/deprecated/layers.rst
similarity index 100%
rename from docs_classic/apis/deprecated/layers.rst
rename to docs/apis/deprecated/layers.rst
diff --git a/docs_classic/apis/deprecated/neurons.rst b/docs/apis/deprecated/neurons.rst
similarity index 100%
rename from docs_classic/apis/deprecated/neurons.rst
rename to docs/apis/deprecated/neurons.rst
diff --git a/docs_classic/apis/deprecated/rates.rst b/docs/apis/deprecated/rates.rst
similarity index 100%
rename from docs_classic/apis/deprecated/rates.rst
rename to docs/apis/deprecated/rates.rst
diff --git a/docs_classic/apis/deprecated/synapses.rst b/docs/apis/deprecated/synapses.rst
similarity index 100%
rename from docs_classic/apis/deprecated/synapses.rst
rename to docs/apis/deprecated/synapses.rst
diff --git a/docs_classic/apis/deprecated/synouts.rst b/docs/apis/deprecated/synouts.rst
similarity index 100%
rename from docs_classic/apis/deprecated/synouts.rst
rename to docs/apis/deprecated/synouts.rst
diff --git a/docs_classic/apis/deprecated/synplast.rst b/docs/apis/deprecated/synplast.rst
similarity index 100%
rename from docs_classic/apis/deprecated/synplast.rst
rename to docs/apis/deprecated/synplast.rst
diff --git a/docs_classic/apis/dnn.rst b/docs/apis/dnn.rst
similarity index 100%
rename from docs_classic/apis/dnn.rst
rename to docs/apis/dnn.rst
diff --git a/docs_classic/apis/dyn.rst b/docs/apis/dyn.rst
similarity index 100%
rename from docs_classic/apis/dyn.rst
rename to docs/apis/dyn.rst
diff --git a/docs_classic/apis/encoding.rst b/docs/apis/encoding.rst
similarity index 100%
rename from docs_classic/apis/encoding.rst
rename to docs/apis/encoding.rst
diff --git a/docs_classic/apis/initialize.rst b/docs/apis/initialize.rst
similarity index 100%
rename from docs_classic/apis/initialize.rst
rename to docs/apis/initialize.rst
diff --git a/docs_classic/apis/inputs.rst b/docs/apis/inputs.rst
similarity index 100%
rename from docs_classic/apis/inputs.rst
rename to docs/apis/inputs.rst
diff --git a/docs_classic/apis/integrators.rst b/docs/apis/integrators.rst
similarity index 100%
rename from docs_classic/apis/integrators.rst
rename to docs/apis/integrators.rst
diff --git a/docs_classic/apis/losses.rst b/docs/apis/losses.rst
similarity index 100%
rename from docs_classic/apis/losses.rst
rename to docs/apis/losses.rst
diff --git a/docs_classic/apis/math.rst b/docs/apis/math.rst
similarity index 100%
rename from docs_classic/apis/math.rst
rename to docs/apis/math.rst
diff --git a/docs_classic/apis/measure.rst b/docs/apis/measure.rst
similarity index 100%
rename from docs_classic/apis/measure.rst
rename to docs/apis/measure.rst
diff --git a/docs_classic/apis/mixin.rst b/docs/apis/mixin.rst
similarity index 100%
rename from docs_classic/apis/mixin.rst
rename to docs/apis/mixin.rst
diff --git a/docs_classic/apis/optim.rst b/docs/apis/optim.rst
similarity index 100%
rename from docs_classic/apis/optim.rst
rename to docs/apis/optim.rst
diff --git a/docs_classic/apis/running.rst b/docs/apis/running.rst
similarity index 100%
rename from docs_classic/apis/running.rst
rename to docs/apis/running.rst
diff --git a/docs_classic/auto_generater.py b/docs/auto_generater.py
similarity index 100%
rename from docs_classic/auto_generater.py
rename to docs/auto_generater.py
diff --git a/docs_classic/brainpy-changelog.md b/docs/brainpy-changelog.md
similarity index 100%
rename from docs_classic/brainpy-changelog.md
rename to docs/brainpy-changelog.md
diff --git a/docs_classic/brainpylib-changelog.md b/docs/brainpylib-changelog.md
similarity index 100%
rename from docs_classic/brainpylib-changelog.md
rename to docs/brainpylib-changelog.md
diff --git a/docs/conf.py b/docs/conf.py
index 4ceca5048..10890563e 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -15,35 +15,34 @@
import shutil
import sys
-keep_files = {'highlight_test_lexer.py', 'conf.py', 'make.bat', 'Makefile'}
-for item in os.listdir('.'):
- if item not in keep_files:
- path = os.path.join('.', item)
- try:
- if os.path.isfile(path):
- os.remove(path)
- elif os.path.isdir(path):
- shutil.rmtree(path)
- except Exception as e:
- print(f"Error deleting {item}: {e}")
-
-build_version = os.environ.get('CURRENT_VERSION', 'v2')
-if build_version == 'v2':
- shutil.copytree(
- os.path.join(os.path.dirname(__file__), '../docs_classic'),
- os.path.join(os.path.dirname(__file__)),
- dirs_exist_ok=True
- )
-else:
- shutil.copytree(
- os.path.join(os.path.dirname(__file__), '../docs_state'),
- os.path.join(os.path.dirname(__file__)),
- dirs_exist_ok=True
- )
-
-sys.path.insert(0, os.path.abspath('./'))
+# keep_files = {'highlight_test_lexer.py', 'conf.py', 'make.bat', 'Makefile'}
+# for item in os.listdir('../docs'):
+# if item not in keep_files:
+# path = os.path.join('../docs', item)
+# try:
+# if os.path.isfile(path):
+# os.remove(path)
+# elif os.path.isdir(path):
+# shutil.rmtree(path)
+# except Exception as e:
+# print(f"Error deleting {item}: {e}")
+#
+# build_version = os.environ.get('CURRENT_VERSION', 'v2')
+# if build_version == 'v2':
+# shutil.copytree(
+# os.path.join(os.path.dirname(__file__), ''),
+# os.path.join(os.path.dirname(__file__)),
+# dirs_exist_ok=True
+# )
+# else:
+# shutil.copytree(
+# os.path.join(os.path.dirname(__file__), '../docs_state'),
+# os.path.join(os.path.dirname(__file__)),
+# dirs_exist_ok=True
+# )
+
+sys.path.insert(0, os.path.abspath('../docs/'))
sys.path.insert(0, os.path.abspath('../'))
-os.makedirs('./_static', exist_ok=True)
shutil.copytree('../images/', './_static/logos/', dirs_exist_ok=True)
shutil.copyfile('../changelog.md', './changelog.md')
diff --git a/docs_classic/core_concept/brainpy_dynamical_system.ipynb b/docs/core_concept/brainpy_dynamical_system.ipynb
similarity index 100%
rename from docs_classic/core_concept/brainpy_dynamical_system.ipynb
rename to docs/core_concept/brainpy_dynamical_system.ipynb
diff --git a/docs_classic/core_concept/brainpy_transform_concept.ipynb b/docs/core_concept/brainpy_transform_concept.ipynb
similarity index 100%
rename from docs_classic/core_concept/brainpy_transform_concept.ipynb
rename to docs/core_concept/brainpy_transform_concept.ipynb
diff --git a/docs_classic/core_concept/imgs/dynamical_system.png b/docs/core_concept/imgs/dynamical_system.png
similarity index 100%
rename from docs_classic/core_concept/imgs/dynamical_system.png
rename to docs/core_concept/imgs/dynamical_system.png
diff --git a/docs_classic/core_concept/imgs/dynamical_system_and_dsrunner.png b/docs/core_concept/imgs/dynamical_system_and_dsrunner.png
similarity index 100%
rename from docs_classic/core_concept/imgs/dynamical_system_and_dsrunner.png
rename to docs/core_concept/imgs/dynamical_system_and_dsrunner.png
diff --git a/docs_classic/core_concept/imgs/net_with_two_linear.png b/docs/core_concept/imgs/net_with_two_linear.png
similarity index 100%
rename from docs_classic/core_concept/imgs/net_with_two_linear.png
rename to docs/core_concept/imgs/net_with_two_linear.png
diff --git a/docs_classic/core_concept/index.rst b/docs/core_concept/index.rst
similarity index 100%
rename from docs_classic/core_concept/index.rst
rename to docs/core_concept/index.rst
diff --git a/docs_classic/core_concepts.rst b/docs/core_concepts.rst
similarity index 100%
rename from docs_classic/core_concepts.rst
rename to docs/core_concepts.rst
diff --git a/docs_classic/index.rst b/docs/index.rst
similarity index 100%
rename from docs_classic/index.rst
rename to docs/index.rst
diff --git a/docs_classic/quickstart/analysis.ipynb b/docs/quickstart/analysis.ipynb
similarity index 100%
rename from docs_classic/quickstart/analysis.ipynb
rename to docs/quickstart/analysis.ipynb
diff --git a/docs_classic/quickstart/installation.rst b/docs/quickstart/installation.rst
similarity index 100%
rename from docs_classic/quickstart/installation.rst
rename to docs/quickstart/installation.rst
diff --git a/docs_classic/quickstart/simulation.ipynb b/docs/quickstart/simulation.ipynb
similarity index 100%
rename from docs_classic/quickstart/simulation.ipynb
rename to docs/quickstart/simulation.ipynb
diff --git a/docs_classic/quickstart/training.ipynb b/docs/quickstart/training.ipynb
similarity index 100%
rename from docs_classic/quickstart/training.ipynb
rename to docs/quickstart/training.ipynb
diff --git a/docs_classic/toolboxes.rst b/docs/toolboxes.rst
similarity index 100%
rename from docs_classic/toolboxes.rst
rename to docs/toolboxes.rst
diff --git a/docs_classic/tutorial_FAQs/brainpy_ecosystem.ipynb b/docs/tutorial_FAQs/brainpy_ecosystem.ipynb
similarity index 100%
rename from docs_classic/tutorial_FAQs/brainpy_ecosystem.ipynb
rename to docs/tutorial_FAQs/brainpy_ecosystem.ipynb
diff --git a/docs_classic/tutorial_FAQs/citing_and_publication.rst b/docs/tutorial_FAQs/citing_and_publication.rst
similarity index 100%
rename from docs_classic/tutorial_FAQs/citing_and_publication.rst
rename to docs/tutorial_FAQs/citing_and_publication.rst
diff --git a/docs_classic/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb b/docs/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb
similarity index 100%
rename from docs_classic/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb
rename to docs/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb
diff --git a/docs_classic/tutorial_FAQs/how_to_debug.ipynb b/docs/tutorial_FAQs/how_to_debug.ipynb
similarity index 100%
rename from docs_classic/tutorial_FAQs/how_to_debug.ipynb
rename to docs/tutorial_FAQs/how_to_debug.ipynb
diff --git a/docs_classic/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb b/docs/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb
similarity index 100%
rename from docs_classic/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb
rename to docs/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb
diff --git a/docs_classic/tutorial_advanced/1_advanced_math.rst b/docs/tutorial_advanced/1_advanced_math.rst
similarity index 100%
rename from docs_classic/tutorial_advanced/1_advanced_math.rst
rename to docs/tutorial_advanced/1_advanced_math.rst
diff --git a/docs_classic/tutorial_advanced/2_interoperation.rst b/docs/tutorial_advanced/2_interoperation.rst
similarity index 100%
rename from docs_classic/tutorial_advanced/2_interoperation.rst
rename to docs/tutorial_advanced/2_interoperation.rst
diff --git a/docs_classic/tutorial_advanced/3_dedicated_operators.rst b/docs/tutorial_advanced/3_dedicated_operators.rst
similarity index 100%
rename from docs_classic/tutorial_advanced/3_dedicated_operators.rst
rename to docs/tutorial_advanced/3_dedicated_operators.rst
diff --git a/docs_classic/tutorial_advanced/4_developer_guides.rst b/docs/tutorial_advanced/4_developer_guides.rst
similarity index 100%
rename from docs_classic/tutorial_advanced/4_developer_guides.rst
rename to docs/tutorial_advanced/4_developer_guides.rst
diff --git a/docs_classic/tutorial_advanced/5_others.rst b/docs/tutorial_advanced/5_others.rst
similarity index 100%
rename from docs_classic/tutorial_advanced/5_others.rst
rename to docs/tutorial_advanced/5_others.rst
diff --git a/docs_classic/tutorial_advanced/advanced_lowdim_analysis.ipynb b/docs/tutorial_advanced/advanced_lowdim_analysis.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/advanced_lowdim_analysis.ipynb
rename to docs/tutorial_advanced/advanced_lowdim_analysis.ipynb
diff --git a/docs_classic/tutorial_advanced/base_and_collector.ipynb b/docs/tutorial_advanced/base_and_collector.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/base_and_collector.ipynb
rename to docs/tutorial_advanced/base_and_collector.ipynb
diff --git a/docs_classic/tutorial_advanced/compilation.ipynb b/docs/tutorial_advanced/compilation.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/compilation.ipynb
rename to docs/tutorial_advanced/compilation.ipynb
diff --git a/docs_classic/tutorial_advanced/contributing.md b/docs/tutorial_advanced/contributing.md
similarity index 100%
rename from docs_classic/tutorial_advanced/contributing.md
rename to docs/tutorial_advanced/contributing.md
diff --git a/docs_classic/tutorial_advanced/differentiation.ipynb b/docs/tutorial_advanced/differentiation.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/differentiation.ipynb
rename to docs/tutorial_advanced/differentiation.ipynb
diff --git a/docs_classic/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb b/docs/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb
rename to docs/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb
diff --git a/docs_classic/tutorial_advanced/integrate_bp_lif_into_flax.ipynb b/docs/tutorial_advanced/integrate_bp_lif_into_flax.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/integrate_bp_lif_into_flax.ipynb
rename to docs/tutorial_advanced/integrate_bp_lif_into_flax.ipynb
diff --git a/docs_classic/tutorial_advanced/integrate_flax_into_brainpy.ipynb b/docs/tutorial_advanced/integrate_flax_into_brainpy.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/integrate_flax_into_brainpy.ipynb
rename to docs/tutorial_advanced/integrate_flax_into_brainpy.ipynb
diff --git a/docs_classic/tutorial_advanced/interoperation.ipynb b/docs/tutorial_advanced/interoperation.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/interoperation.ipynb
rename to docs/tutorial_advanced/interoperation.ipynb
diff --git a/docs_classic/tutorial_advanced/operator_custom_with_cupy.ipynb b/docs/tutorial_advanced/operator_custom_with_cupy.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/operator_custom_with_cupy.ipynb
rename to docs/tutorial_advanced/operator_custom_with_cupy.ipynb
diff --git a/docs_classic/tutorial_advanced/operator_custom_with_numba.ipynb b/docs/tutorial_advanced/operator_custom_with_numba.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/operator_custom_with_numba.ipynb
rename to docs/tutorial_advanced/operator_custom_with_numba.ipynb
diff --git a/docs_classic/tutorial_advanced/operator_custom_with_taichi.ipynb b/docs/tutorial_advanced/operator_custom_with_taichi.ipynb
similarity index 100%
rename from docs_classic/tutorial_advanced/operator_custom_with_taichi.ipynb
rename to docs/tutorial_advanced/operator_custom_with_taichi.ipynb
diff --git a/docs_classic/tutorial_analysis/decision_making_model.ipynb b/docs/tutorial_analysis/decision_making_model.ipynb
similarity index 100%
rename from docs_classic/tutorial_analysis/decision_making_model.ipynb
rename to docs/tutorial_analysis/decision_making_model.ipynb
diff --git a/docs_classic/tutorial_analysis/highdim_analysis.ipynb b/docs/tutorial_analysis/highdim_analysis.ipynb
similarity index 100%
rename from docs_classic/tutorial_analysis/highdim_analysis.ipynb
rename to docs/tutorial_analysis/highdim_analysis.ipynb
diff --git a/docs_classic/tutorial_analysis/index.rst b/docs/tutorial_analysis/index.rst
similarity index 100%
rename from docs_classic/tutorial_analysis/index.rst
rename to docs/tutorial_analysis/index.rst
diff --git a/docs_classic/tutorial_analysis/lowdim_analysis.ipynb b/docs/tutorial_analysis/lowdim_analysis.ipynb
similarity index 100%
rename from docs_classic/tutorial_analysis/lowdim_analysis.ipynb
rename to docs/tutorial_analysis/lowdim_analysis.ipynb
diff --git a/docs_classic/tutorial_building/build_conductance_neurons_v2.ipynb b/docs/tutorial_building/build_conductance_neurons_v2.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/build_conductance_neurons_v2.ipynb
rename to docs/tutorial_building/build_conductance_neurons_v2.ipynb
diff --git a/docs_classic/tutorial_building/build_network_models.ipynb b/docs/tutorial_building/build_network_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/build_network_models.ipynb
rename to docs/tutorial_building/build_network_models.ipynb
diff --git a/docs_classic/tutorial_building/build_synapse_models.ipynb b/docs/tutorial_building/build_synapse_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/build_synapse_models.ipynb
rename to docs/tutorial_building/build_synapse_models.ipynb
diff --git a/docs_classic/tutorial_building/customize_dynamical_systems.ipynb b/docs/tutorial_building/customize_dynamical_systems.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/customize_dynamical_systems.ipynb
rename to docs/tutorial_building/customize_dynamical_systems.ipynb
diff --git a/docs_classic/tutorial_building/customize_neuron_models.ipynb b/docs/tutorial_building/customize_neuron_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/customize_neuron_models.ipynb
rename to docs/tutorial_building/customize_neuron_models.ipynb
diff --git a/docs_classic/tutorial_building/customize_synapse_models.ipynb b/docs/tutorial_building/customize_synapse_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/customize_synapse_models.ipynb
rename to docs/tutorial_building/customize_synapse_models.ipynb
diff --git a/docs_classic/tutorial_building/how_to_customze_a_synapse.ipynb b/docs/tutorial_building/how_to_customze_a_synapse.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/how_to_customze_a_synapse.ipynb
rename to docs/tutorial_building/how_to_customze_a_synapse.ipynb
diff --git a/docs_classic/tutorial_building/index.rst b/docs/tutorial_building/index.rst
similarity index 100%
rename from docs_classic/tutorial_building/index.rst
rename to docs/tutorial_building/index.rst
diff --git a/docs_classic/tutorial_building/kinetic_synapse_models.ipynb b/docs/tutorial_building/kinetic_synapse_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/kinetic_synapse_models.ipynb
rename to docs/tutorial_building/kinetic_synapse_models.ipynb
diff --git a/docs_classic/tutorial_building/overview_of_dynamic_model.ipynb b/docs/tutorial_building/overview_of_dynamic_model.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/overview_of_dynamic_model.ipynb
rename to docs/tutorial_building/overview_of_dynamic_model.ipynb
diff --git a/docs_classic/tutorial_building/phenon_synapse_models.ipynb b/docs/tutorial_building/phenon_synapse_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_building/phenon_synapse_models.ipynb
rename to docs/tutorial_building/phenon_synapse_models.ipynb
diff --git a/docs_classic/tutorial_math/Dedicated_Operators.ipynb b/docs/tutorial_math/Dedicated_Operators.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/Dedicated_Operators.ipynb
rename to docs/tutorial_math/Dedicated_Operators.ipynb
diff --git a/docs_classic/tutorial_math/Numpy_like_Operations.ipynb b/docs/tutorial_math/Numpy_like_Operations.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/Numpy_like_Operations.ipynb
rename to docs/tutorial_math/Numpy_like_Operations.ipynb
diff --git a/docs_classic/tutorial_math/array.ipynb b/docs/tutorial_math/array.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/array.ipynb
rename to docs/tutorial_math/array.ipynb
diff --git a/docs_classic/tutorial_math/arrays_and_variables.ipynb b/docs/tutorial_math/arrays_and_variables.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/arrays_and_variables.ipynb
rename to docs/tutorial_math/arrays_and_variables.ipynb
diff --git a/docs_classic/tutorial_math/control_flows.ipynb b/docs/tutorial_math/control_flows.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/control_flows.ipynb
rename to docs/tutorial_math/control_flows.ipynb
diff --git a/docs_classic/tutorial_math/einops_in_brainpy.ipynb b/docs/tutorial_math/einops_in_brainpy.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/einops_in_brainpy.ipynb
rename to docs/tutorial_math/einops_in_brainpy.ipynb
diff --git a/docs_classic/tutorial_math/index.rst b/docs/tutorial_math/index.rst
similarity index 100%
rename from docs_classic/tutorial_math/index.rst
rename to docs/tutorial_math/index.rst
diff --git a/docs_classic/tutorial_math/random_number_generation.ipynb b/docs/tutorial_math/random_number_generation.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/random_number_generation.ipynb
rename to docs/tutorial_math/random_number_generation.ipynb
diff --git a/docs_classic/tutorial_math/test_images.npy b/docs/tutorial_math/test_images.npy
similarity index 100%
rename from docs_classic/tutorial_math/test_images.npy
rename to docs/tutorial_math/test_images.npy
diff --git a/docs_classic/tutorial_math/variables.ipynb b/docs/tutorial_math/variables.ipynb
similarity index 100%
rename from docs_classic/tutorial_math/variables.ipynb
rename to docs/tutorial_math/variables.ipynb
diff --git a/docs_classic/tutorial_simulation/index.rst b/docs/tutorial_simulation/index.rst
similarity index 100%
rename from docs_classic/tutorial_simulation/index.rst
rename to docs/tutorial_simulation/index.rst
diff --git a/docs_classic/tutorial_simulation/monitor_per_multiple_steps.ipynb b/docs/tutorial_simulation/monitor_per_multiple_steps.ipynb
similarity index 100%
rename from docs_classic/tutorial_simulation/monitor_per_multiple_steps.ipynb
rename to docs/tutorial_simulation/monitor_per_multiple_steps.ipynb
diff --git a/docs_classic/tutorial_simulation/parallel_for_parameter_exploration.ipynb b/docs/tutorial_simulation/parallel_for_parameter_exploration.ipynb
similarity index 100%
rename from docs_classic/tutorial_simulation/parallel_for_parameter_exploration.ipynb
rename to docs/tutorial_simulation/parallel_for_parameter_exploration.ipynb
diff --git a/docs_classic/tutorial_simulation/simulation_dsrunner.ipynb b/docs/tutorial_simulation/simulation_dsrunner.ipynb
similarity index 100%
rename from docs_classic/tutorial_simulation/simulation_dsrunner.ipynb
rename to docs/tutorial_simulation/simulation_dsrunner.ipynb
diff --git a/docs_classic/tutorial_toolbox/dde_numerical_solvers.ipynb b/docs/tutorial_toolbox/dde_numerical_solvers.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/dde_numerical_solvers.ipynb
rename to docs/tutorial_toolbox/dde_numerical_solvers.ipynb
diff --git a/docs_classic/tutorial_toolbox/fde_numerical_solvers.ipynb b/docs/tutorial_toolbox/fde_numerical_solvers.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/fde_numerical_solvers.ipynb
rename to docs/tutorial_toolbox/fde_numerical_solvers.ipynb
diff --git a/docs_classic/tutorial_toolbox/illustration_joint_equations.py b/docs/tutorial_toolbox/illustration_joint_equations.py
similarity index 100%
rename from docs_classic/tutorial_toolbox/illustration_joint_equations.py
rename to docs/tutorial_toolbox/illustration_joint_equations.py
diff --git a/docs_classic/tutorial_toolbox/inputs.ipynb b/docs/tutorial_toolbox/inputs.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/inputs.ipynb
rename to docs/tutorial_toolbox/inputs.ipynb
diff --git a/docs_classic/tutorial_toolbox/joint_equations.ipynb b/docs/tutorial_toolbox/joint_equations.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/joint_equations.ipynb
rename to docs/tutorial_toolbox/joint_equations.ipynb
diff --git a/docs_classic/tutorial_toolbox/ode_numerical_solvers.ipynb b/docs/tutorial_toolbox/ode_numerical_solvers.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/ode_numerical_solvers.ipynb
rename to docs/tutorial_toolbox/ode_numerical_solvers.ipynb
diff --git a/docs_classic/tutorial_toolbox/optimizers.ipynb b/docs/tutorial_toolbox/optimizers.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/optimizers.ipynb
rename to docs/tutorial_toolbox/optimizers.ipynb
diff --git a/docs_classic/tutorial_toolbox/sde_numerical_solvers.ipynb b/docs/tutorial_toolbox/sde_numerical_solvers.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/sde_numerical_solvers.ipynb
rename to docs/tutorial_toolbox/sde_numerical_solvers.ipynb
diff --git a/docs_classic/tutorial_toolbox/state_resetting.ipynb b/docs/tutorial_toolbox/state_resetting.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/state_resetting.ipynb
rename to docs/tutorial_toolbox/state_resetting.ipynb
diff --git a/docs_classic/tutorial_toolbox/state_saving_and_loading.ipynb b/docs/tutorial_toolbox/state_saving_and_loading.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/state_saving_and_loading.ipynb
rename to docs/tutorial_toolbox/state_saving_and_loading.ipynb
diff --git a/docs_classic/tutorial_toolbox/surrogate_gradient.ipynb b/docs/tutorial_toolbox/surrogate_gradient.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/surrogate_gradient.ipynb
rename to docs/tutorial_toolbox/surrogate_gradient.ipynb
diff --git a/docs_classic/tutorial_toolbox/synaptic_connections.ipynb b/docs/tutorial_toolbox/synaptic_connections.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/synaptic_connections.ipynb
rename to docs/tutorial_toolbox/synaptic_connections.ipynb
diff --git a/docs_classic/tutorial_toolbox/synaptic_weights.ipynb b/docs/tutorial_toolbox/synaptic_weights.ipynb
similarity index 100%
rename from docs_classic/tutorial_toolbox/synaptic_weights.ipynb
rename to docs/tutorial_toolbox/synaptic_weights.ipynb
diff --git a/docs_classic/tutorial_training/bp_training.ipynb b/docs/tutorial_training/bp_training.ipynb
similarity index 100%
rename from docs_classic/tutorial_training/bp_training.ipynb
rename to docs/tutorial_training/bp_training.ipynb
diff --git a/docs_classic/tutorial_training/build_training_models.ipynb b/docs/tutorial_training/build_training_models.ipynb
similarity index 100%
rename from docs_classic/tutorial_training/build_training_models.ipynb
rename to docs/tutorial_training/build_training_models.ipynb
diff --git a/docs_classic/tutorial_training/esn_introduction.ipynb b/docs/tutorial_training/esn_introduction.ipynb
similarity index 100%
rename from docs_classic/tutorial_training/esn_introduction.ipynb
rename to docs/tutorial_training/esn_introduction.ipynb
diff --git a/docs_classic/tutorial_training/index.rst b/docs/tutorial_training/index.rst
similarity index 100%
rename from docs_classic/tutorial_training/index.rst
rename to docs/tutorial_training/index.rst
diff --git a/docs_classic/tutorial_training/offline_training.ipynb b/docs/tutorial_training/offline_training.ipynb
similarity index 100%
rename from docs_classic/tutorial_training/offline_training.ipynb
rename to docs/tutorial_training/offline_training.ipynb
diff --git a/docs_classic/tutorial_training/online_training.ipynb b/docs/tutorial_training/online_training.ipynb
similarity index 100%
rename from docs_classic/tutorial_training/online_training.ipynb
rename to docs/tutorial_training/online_training.ipynb
diff --git a/docs_classic/tutorials.rst b/docs/tutorials.rst
similarity index 100%
rename from docs_classic/tutorials.rst
rename to docs/tutorials.rst
diff --git a/docs_state/_static/snn-simulation1.png b/docs_state/_static/snn-simulation1.png
deleted file mode 100644
index 72772d3ce..000000000
Binary files a/docs_state/_static/snn-simulation1.png and /dev/null differ
diff --git a/docs_state/_templates/classtemplate.rst b/docs_state/_templates/classtemplate.rst
deleted file mode 100644
index eeb823a96..000000000
--- a/docs_state/_templates/classtemplate.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. role:: hidden
- :class: hidden-section
-.. currentmodule:: {{ module }}
-
-
-{{ name | underline}}
-
-.. autoclass:: {{ name }}
- :members:
diff --git a/docs_state/api/index.rst b/docs_state/api/index.rst
deleted file mode 100644
index 93d314289..000000000
--- a/docs_state/api/index.rst
+++ /dev/null
@@ -1,194 +0,0 @@
-API Reference
-=============
-
-Complete API reference for ``brainpy.state``.
-
-.. note::
- ``brainpy.state`` is built on top of `brainstate `_,
- `brainunit `_, and `braintools `_.
-
-Organization
-------------
-
-The API is organized into the following categories:
-
-.. grid:: 1 2 2 3
-
- .. grid-item-card:: :material-regular:`psychology;2em` Neurons
- :link: neurons.html
-
- Spiking neuron models (LIF, ALIF, Izhikevich, HH, etc.)
-
- .. grid-item-card:: :material-regular:`timeline;2em` Synapses
- :link: synapses.html
-
- Synaptic dynamics (Expon, Alpha, AMPA, GABA, NMDA)
-
- .. grid-item-card:: :material-regular:`account_tree;2em` Projections
- :link: projections.html
-
- Connect neural populations (AlignPostProj, DeltaProj, etc.)
-
- .. grid-item-card:: :material-regular:`output;2em` Synaptic Outputs
- :link: synouts.html
-
- Convert conductances to currents (COBA, CUBA, MgBlock)
-
- .. grid-item-card:: :material-regular:`psychology_alt;2em` Short-Term Plasticity
- :link: stp.html
-
- Short-term synaptic plasticity (STP, STD)
-
- .. grid-item-card:: :material-regular:`sensors;2em` Readouts
- :link: readouts.html
-
- Readout layers (LeakyRateReadout, LeakySpikeReadout)
-
- .. grid-item-card:: :material-regular:`input;2em` Input Generators
- :link: inputs.html
-
- Spike and current generators (PoissonSpike, SpikeTime)
-
-Example Reference
------------------
-
-Neurons
-~~~~~~~
-
-.. code-block:: python
-
- import brainpy
- import brainunit as u
-
- # Leaky Integrate-and-Fire
- brainpy.state.LIF(100, V_rest=-70*u.mV, V_th=-50*u.mV, tau=20*u.ms)
-
- # Adaptive LIF
- brainpy.state.ALIF(100, tau=20*u.ms, tau_w=144*u.ms, a=4*u.nS, b=0.0805*u.nA)
-
- # Izhikevich
- brainpy.state.Izhikevich(100, a=0.02/u.ms, b=0.2/u.ms, c=-65*u.mV, d=8*u.mV/u.ms)
-
- # Hodgkin-Huxley
- brainpy.state.HH(100, ENa=50*u.mV, EK=-77*u.mV, EL=-54.387*u.mV)
-
-Synapses
-~~~~~~~~
-
-.. code-block:: python
-
- # Exponential synapse
- brainpy.state.Expon.desc(100, tau=5*u.ms)
-
- # Dual exponential synapse
- brainpy.state.DualExpon.desc(100, tau_rise=1*u.ms, tau_decay=10*u.ms)
-
- # Alpha synapse
- brainpy.state.Alpha.desc(100, tau=8*u.ms)
-
- # AMPA receptor
- brainpy.state.AMPA.desc(100, alpha=0.98/(u.ms*u.mM), beta=0.18/u.ms)
-
- # GABAa receptor
- brainpy.state.GABAa.desc(100, alpha=0.53/(u.ms*u.mM), beta=0.18/u.ms)
-
- # NMDA receptor
- brainpy.state.BioNMDA.desc(100, alpha1=2.0/u.ms, beta1=0.01/u.ms)
-
-Projections
-~~~~~~~~~~~
-
-.. code-block:: python
-
- # AlignPost projection with communication, synapse, and output
- brainpy.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(n_pre, n_post, prob=0.1, weight=0.5*u.mS),
- syn=brainpy.state.Expon.desc(n_post, tau=5*u.ms),
- out=brainpy.state.COBA.desc(E=0*u.mV),
- post=post_neurons
- )
-
- # Delta projection for direct input
- brainpy.state.DeltaProj(
- comm=lambda x: x * 10*u.mV,
- post=post_neurons
- )
-
- # Current projection
- brainpy.state.CurrentProj(
- comm=lambda x: x * 0.5,
- out=brainpy.state.CUBA.desc(scale=1*u.nA),
- post=post_neurons
- )
-
-Synaptic Outputs
-~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Conductance-based output
- brainpy.state.COBA.desc(E=0*u.mV) # excitatory reversal potential
-
- # Current-based output
- brainpy.state.CUBA.desc(scale=1*u.mV)
-
- # NMDA with magnesium block
- brainpy.state.MgBlock.desc(E=0*u.mV, cc_Mg=1.2*u.mM, alpha=0.062, beta=3.57)
-
-Short-Term Plasticity
-~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Short-term plasticity (facilitation + depression)
- brainpy.state.STP.desc(100, U=0.15, tau_f=1500*u.ms, tau_d=200*u.ms)
-
- # Short-term depression only
- brainpy.state.STD.desc(100, tau=200*u.ms, U=0.07)
-
-Input Generators
-~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Spike times
- brainpy.state.SpikeTime(100, times=[10, 20, 30]*u.ms, indices=[0, 10, 20])
-
- # Poisson spike generator
- brainpy.state.PoissonSpike(100, freqs=50*u.Hz)
-
- # Poisson encoder (dynamic rates)
- encoder = brainpy.state.PoissonEncoder(100)
- spikes = encoder.update(rates) # rates: array of firing rates
-
- # Poisson input to a state variable
- brainpy.state.PoissonInput(
- target=neuron.V,
- indices=None,
- num_input=200,
- freq=50*u.Hz,
- weight=0.1*u.mV
- )
-
-Readout Layers
-~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Leaky rate-based readout
- brainpy.state.LeakyRateReadout(in_size=100, out_size=10, tau=5*u.ms)
-
- # Leaky spiking readout
- brainpy.state.LeakySpikeReadout(in_size=100, tau=5*u.ms, V_th=1*u.mV)
-
-.. toctree::
- :hidden:
- :maxdepth: 2
-
- neurons
- synapses
- projections
- synouts
- stp
- readouts
- inputs
diff --git a/docs_state/api/inputs.rst b/docs_state/api/inputs.rst
deleted file mode 100644
index 03dbcebbd..000000000
--- a/docs_state/api/inputs.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-Input Generators
-================
-
-Input spike and current generation models.
-
-.. currentmodule:: brainpy.state
-
-Spike Generators
-----------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- SpikeTime
- PoissonSpike
- PoissonEncoder
-
-Input Functions
----------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- PoissonInput
- poisson_input
diff --git a/docs_state/api/neurons.rst b/docs_state/api/neurons.rst
deleted file mode 100644
index 71a45a927..000000000
--- a/docs_state/api/neurons.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-Neuron Models
-=============
-
-Spiking neuron models in BrainPy.
-
-.. currentmodule:: brainpy.state
-
-Leaky Integrate-and-Fire Models
----------------------------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- IF
- LIF
- LIFRef
- ALIF
- ExpIF
- ExpIFRef
- AdExIF
- AdExIFRef
- QuaIF
- AdQuaIF
- AdQuaIFRef
- Gif
- GifRef
-
-Izhikevich Models
------------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- Izhikevich
- IzhikevichRef
-
-Hodgkin-Huxley Models
-----------------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- HH
- MorrisLecar
- WangBuzsakiHH
\ No newline at end of file
diff --git a/docs_state/api/projections.rst b/docs_state/api/projections.rst
deleted file mode 100644
index 7cc2aa6f1..000000000
--- a/docs_state/api/projections.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-Projections
-===========
-
-Connect neural populations with the Comm-Syn-Out architecture.
-
-.. currentmodule:: brainpy.state
-
-
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- Projection
- AlignPostProj
- DeltaProj
- CurrentProj
- align_pre_projection
- align_post_projection
-
diff --git a/docs_state/api/readouts.rst b/docs_state/api/readouts.rst
deleted file mode 100644
index f8ea816d8..000000000
--- a/docs_state/api/readouts.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Readout Layers
-==============
-
-Readout modules for converting spiking or rate-coded outputs.
-
-.. currentmodule:: brainpy.state
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- LeakyRateReadout
- LeakySpikeReadout
diff --git a/docs_state/api/stp.rst b/docs_state/api/stp.rst
deleted file mode 100644
index 3df0eee75..000000000
--- a/docs_state/api/stp.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Short-Term Plasticity
-=====================
-
-Short-term synaptic plasticity models.
-
-.. currentmodule:: brainpy.state
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- STP
- STD
diff --git a/docs_state/api/synapses.rst b/docs_state/api/synapses.rst
deleted file mode 100644
index cbcd5d58f..000000000
--- a/docs_state/api/synapses.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-Synapse Models
-==============
-
-Synaptic dynamics models in BrainPy.
-
-.. currentmodule:: brainpy.state
-
-Simple Synapse Models
----------------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- Expon
- DualExpon
- Alpha
-
-Biological Receptor Models
----------------------------
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- AMPA
- GABAa
- BioNMDA
-
diff --git a/docs_state/api/synouts.rst b/docs_state/api/synouts.rst
deleted file mode 100644
index 3144ed792..000000000
--- a/docs_state/api/synouts.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Synaptic Outputs
-================
-
-Synaptic output models for converting conductances to currents.
-
-.. currentmodule:: brainpy.state
-
-.. autosummary::
- :toctree: generated/
- :nosignatures:
- :template: classtemplate.rst
-
- SynOut
- COBA
- CUBA
- MgBlock
diff --git a/docs_state/examples/gallery.rst b/docs_state/examples/gallery.rst
deleted file mode 100644
index fe05b821f..000000000
--- a/docs_state/examples/gallery.rst
+++ /dev/null
@@ -1,182 +0,0 @@
-Examples Gallery
-================
-
-Welcome to the ``brainpy.state`` examples gallery! Here you'll find complete, runnable examples demonstrating various aspects of computational neuroscience modeling.
-
-All examples are available in the `examples_state/ `_ directory of the BrainPy repository.
-
-Classical Network Models
--------------------------
-
-These examples reproduce influential models from the computational neuroscience literature.
-
-.. grid:: 2
- :gutter: 3
-
- .. grid-item-card:: E-I Balanced Networks
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/102_EI_net_1996.py
-
- Implements the classic excitatory-inhibitory balanced network showing chaotic dynamics.
-
- - 80% excitatory, 20% inhibitory neurons
- - Random sparse connectivity
- - Balanced excitation and inhibition
- - Asynchronous irregular firing
-
-
- .. grid-item-card:: COBA Network (2005)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/103_COBA_2005.py
-
- Conductance-based synaptic integration in balanced networks.
-
- - Conductance-based synapses (COBA)
- - Reversal potentials
- - More biologically realistic
- - Stable asynchronous activity
-
-
- .. grid-item-card:: CUBA Network (2005)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/104_CUBA_2005.py
-
- Current-based synaptic integration (simpler, faster variant).
-
- - Current-based synapses (CUBA)
- - Faster computation
- - Widely used for large-scale simulations
-
-
-
- .. grid-item-card:: COBA with Hodgkin-Huxley Neurons (2007)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/106_COBA_HH_2007.py
-
- More detailed neuron model with sodium and potassium channels.
-
- - Hodgkin-Huxley neuron dynamics
- - Action potential generation
- - Biophysically detailed
- - Computationally intensive
-
-
-Oscillations and Rhythms
--------------------------
-
-.. grid:: 2
- :gutter: 3
-
- .. grid-item-card:: Gamma Oscillation (1996)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/107_gamma_oscillation_1996.py
-
- Interneuron network generating gamma oscillations (30-80 Hz).
-
- - Interneuron-based gamma
- - Inhibition-based synchrony
- - Physiologically relevant frequency
- - Network oscillations
-
- .. grid-item-card:: Synfire Chains (199x)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/108_synfire_chains_199.py
-
- Demonstrates reliable spike sequence propagation.
-
- - Feedforward architecture
- - Reliable spike timing
- - Wave propagation
- - Temporal coding
-
- .. grid-item-card:: Fast Global Oscillation
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/109_fast_global_oscillation.py
-
- High-frequency oscillations (>100 Hz) in inhibitory networks.
-
- - Very fast oscillations
- - Gap junction coupling
- - Inhibitory synchrony
- - Pathological rhythms
-
-
-Gamma Oscillation Mechanisms (Susin & Destexhe 2021)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Series of models exploring different gamma generation mechanisms:
-
-.. grid:: 2
- :gutter: 3
-
- .. grid-item-card:: Asynchronous Irregular (AI)
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py
-
- AI state: No oscillations, irregular firing
-
- - Background activity state
- - Asynchronous firing
- - No clear rhythm
-
-
- .. grid-item-card:: CHING Mechanism
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py
-
- Coherent High-frequency INhibition-based Gamma
-
- - Coherent inhibition
- - High-frequency gamma
- - Interneuron synchrony
-
-
- .. grid-item-card:: ING Mechanism
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py
-
- Inhibition-based Gamma
-
- - Pure inhibitory network
- - Gamma through inhibition
- - Fast synaptic kinetics
-
-
- .. grid-item-card:: PING Mechanism
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py
-
- Pyramidal-Interneuron Gamma
-
- - E-I loop generates gamma
- - Most common mechanism
- - Excitatory-inhibitory interaction
-
-
-
-Spiking Neural Network Training
---------------------------------
-
-.. grid:: 2
- :gutter: 3
-
- .. grid-item-card:: Supervised Learning with Surrogate Gradients
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/200_surrogate_grad_lif.py
-
- Trains a simple spiking network using surrogate gradients.
-
- - Surrogate gradient method
- - LIF neuron training
- - Simple classification task
- - Gradient-based learning
-
-
- .. grid-item-card:: Fashion-MNIST Classification
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/201_surrogate_grad_lif_fashion_mnist.py
-
- Trains a spiking network on Fashion-MNIST dataset.
-
- - Fashion-MNIST dataset
- - Multi-layer SNN
- - Spike-based processing
- - Real-world classification
-
-
- .. grid-item-card:: MNIST with Readout Layer
- :link: https://github.com/brainpy/BrainPy/tree/master/examples_state/202_mnist_lif_readout.py
-
- Uses readout layer for classification.
-
- - MNIST handwritten digits
- - Specialized readout layer
- - Spike counting
- - Classification from spike rates
diff --git a/docs_state/index.rst b/docs_state/index.rst
deleted file mode 100644
index 97e6865d7..000000000
--- a/docs_state/index.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-``brainpy.state`` documentation
-=====================================
-
-``brainpy.state`` provides a new ``state``-based programming paradigm for building and simulating spiking neural networks.
-
-
-Compared to ``brainpy.dyn``, ``brainpy.state`` provides:
-
-- A more intuitive and flexible way to define and manage the state of neural network components (neurons, synapses, etc.).
-- Improved performance and scalability for large-scale simulations.
-- Seamless integration with `BrainX `_ ecosystem.
-
-
-.. note::
-
- ``brainpy.state`` is written based on `brainstate `_.
- This documentation is for the latest ``brainpy.state``.
-
-
-
-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]
-
- .. tab-item:: Ecosystem
-
- .. code-block:: bash
-
- pip install -U BrainX
-
-
-
-----
-
-Learn more
-^^^^^^^^^^
-
-.. grid::
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`rocket_launch;2em` 5-Minute Tutorial
- :class-card: sd-text-black sd-bg-light
- :link: quickstart/5min-tutorial.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`library_books;2em` Core Concepts
- :class-card: sd-text-black sd-bg-light
- :link: quickstart/overview.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`school;2em` Tutorials
- :class-card: sd-text-black sd-bg-light
- :link: tutorials/index.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`explore;2em` Examples Gallery
- :class-card: sd-text-black sd-bg-light
- :link: examples/gallery.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`data_exploration;2em` API Documentation
- :class-card: sd-text-black sd-bg-light
- :link: apis.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`settings;2em` Ecosystem
- :class-card: sd-text-black sd-bg-light
- :link: https://brainmodeling.readthedocs.io
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`history;2em` Changelog
- :class-card: sd-text-black sd-bg-light
- :link: changelog.html
-
- .. grid-item::
- :columns: 6 6 6 4
-
- .. card:: :material-regular:`data_exploration;2em` ``brainpy`` APIs
- :class-card: sd-text-black sd-bg-light
- :link: https://brainpy.readthedocs.io
-
-
-----
-
-See also the ecosystem
-^^^^^^^^^^^^^^^^^^^^^^
-
-``brainpy`` is one part of our `brain simulation ecosystem `_.
-
-
-
-
-.. toctree::
- :hidden:
- :maxdepth: 1
- :caption: Tutorials
-
- quickstart/index.rst
- examples/gallery.rst
-
-
-.. toctree::
- :hidden:
- :maxdepth: 2
- :caption: API Reference
-
- api/index.rst
- changelog.md
-
diff --git a/docs_state/quickstart/5min-tutorial.ipynb b/docs_state/quickstart/5min-tutorial.ipynb
deleted file mode 100644
index 44506ce06..000000000
--- a/docs_state/quickstart/5min-tutorial.ipynb
+++ /dev/null
@@ -1,469 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# 5-Minute Tutorial: Getting Started\n",
- "\n",
- "Welcome to ``brainpy.state``! This quick tutorial will get you up and running with your first neural simulation in just a few minutes.\n",
- "\n",
- "## What You'll Learn\n",
- "\n",
- "- How to create neurons\n",
- "- How to build simple networks\n",
- "- How to run simulations\n",
- "- How to visualize results"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 1: Import Libraries\n",
- "\n",
- "First, let's import the necessary libraries:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:17:12.262478Z",
- "start_time": "2025-10-10T07:17:12.257706Z"
- }
- },
- "outputs": [],
- "source": [
- "import jax\n",
- "\n",
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import matplotlib.pyplot as plt\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 2: Create Your First Neuron\n",
- "\n",
- "Let's create a simple Leaky Integrate-and-Fire (LIF) neuron:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:17:12.278071Z",
- "start_time": "2025-10-10T07:17:12.273488Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Created a LIF neuron!\n"
- ]
- }
- ],
- "source": [
- "# Set simulation time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create a single LIF neuron\n",
- "neuron = brainpy.state.LIF(\n",
- " 1,\n",
- " V_rest=-65. * u.mV, # Resting potential\n",
- " V_th=-50. * u.mV, # Spike threshold\n",
- " V_reset=-65. * u.mV, # Reset potential\n",
- " tau=10. * u.ms, # Membrane time constant\n",
- ")\n",
- "\n",
- "print(\"Created a LIF neuron!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 3: Simulate the Neuron\n",
- "\n",
- "Now let's inject a constant current and see how the neuron responds:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:18:40.403662Z",
- "start_time": "2025-10-10T07:18:40.322794Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Simulation complete! Recorded 2000 time steps.\n"
- ]
- }
- ],
- "source": [
- "# Initialize neuron state\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Define simulation parameters\n",
- "duration = 200. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "# Input current (constant)\n",
- "I_input = 20.0 * u.mA\n",
- "\n",
- "# Run simulation and record membrane potential\n",
- "def step_run(t):\n",
- " with brainstate.environ.context(t=t):\n",
- " neuron(I_input)\n",
- " return neuron.V.value, neuron.get_spike()\n",
- "\n",
- "voltages, spikes = brainstate.transform.for_loop(step_run, times)\n",
- "\n",
- "print(f\"Simulation complete! Recorded {len(times)} time steps.\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 4: Visualize the Results\n",
- "\n",
- "Let's plot the membrane potential over time:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:18:43.855438Z",
- "start_time": "2025-10-10T07:18:43.755841Z"
- }
- },
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Number of spikes: 17\n",
- "Average firing rate: 85.00 Hz\n"
- ]
- }
- ],
- "source": [
- "# Convert to appropriate units for plotting\n",
- "times_plot = times.to_decimal(u.ms)\n",
- "voltages_plot = voltages.to_decimal(u.mV)\n",
- "\n",
- "# Create plot\n",
- "plt.figure(figsize=(10, 4))\n",
- "plt.plot(times_plot, voltages_plot, linewidth=2)\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Membrane Potential (mV)')\n",
- "plt.title('LIF Neuron Response to Constant Input')\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Count spikes\n",
- "n_spikes = int(u.math.sum(spikes != 0))\n",
- "firing_rate = n_spikes / (duration.to_decimal(u.second))\n",
- "print(f\"Number of spikes: {n_spikes}\")\n",
- "print(f\"Average firing rate: {firing_rate:.2f} Hz\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 5: Create a Network of Neurons\n",
- "\n",
- "Now let's create a small network with excitatory and inhibitory populations:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:19:06.974038Z",
- "start_time": "2025-10-10T07:19:06.958649Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Created network with 100 neurons\n"
- ]
- }
- ],
- "source": [
- "class SimpleEINet(brainstate.nn.Module):\n",
- " def __init__(self, n_exc=80, n_inh=20):\n",
- " super().__init__()\n",
- " self.n_exc = n_exc\n",
- " self.n_inh = n_inh\n",
- " self.num = n_exc + n_inh\n",
- " \n",
- " # Create neurons\n",
- " self.neurons = brainpy.state.LIF(\n",
- " self.num,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV)\n",
- " )\n",
- " \n",
- " # Excitatory to all projection\n",
- " self.E2all = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, self.num, 0.1, 0.6*u.mS),\n",
- " syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.neurons,\n",
- " )\n",
- " \n",
- " # Inhibitory to all projection\n",
- " self.I2all = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, self.num, 0.1, -5.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.neurons,\n",
- " )\n",
- " \n",
- " def update(self, input_current):\n",
- " # Get spikes from previous time step\n",
- " spikes = self.neurons.get_spike()\n",
- " \n",
- " # Update projections\n",
- " self.E2all(spikes[:self.n_exc]) # Excitatory spikes\n",
- " self.I2all(spikes[self.n_exc:]) # Inhibitory spikes\n",
- " \n",
- " # Update neurons\n",
- " self.neurons(input_current)\n",
- " \n",
- " return self.neurons.get_spike()\n",
- "\n",
- "# Create network\n",
- "net = SimpleEINet(n_exc=80, n_inh=20)\n",
- "print(f\"Created network with {net.num} neurons\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 6: Simulate the Network\n",
- "\n",
- "Let's run the network and visualize its activity:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:19:11.531447Z",
- "start_time": "2025-10-10T07:19:10.189416Z"
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "015f055bef8948e79efe5b082a59fc25",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/5000 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Network simulation complete!\n"
- ]
- }
- ],
- "source": [
- "# Initialize network states\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "# Simulation parameters\n",
- "duration = 500. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "I_ext = 16 * u.mA # External input current\n",
- "\n",
- "# Run simulation\n",
- "spike_history = brainstate.transform.for_loop(\n",
- " lambda t: net.update(I_ext),\n",
- " times,\n",
- " pbar=brainstate.transform.ProgressBar(10)\n",
- ")\n",
- "\n",
- "print(\"Network simulation complete!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Step 7: Visualize Network Activity (Raster Plot)\n",
- "\n",
- "Create a raster plot showing when each neuron fired:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-10-10T07:19:55.083063Z",
- "start_time": "2025-10-10T07:19:49.506767Z"
- }
- },
- "outputs": [
- {
- "data": {
- "image/png": "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XTB95JFH5L///a/07dtX2rZtK3vssYdbSn3MMcdI586d3SD777//lvPOO899jxdeeMF9fWRqf/T32ClGvTpj+4477pCbb77ZDaovvfRSOeyww2S33XZz+6PpyYFu3brJyy+/7C4ODxw4MF/9emJKx3+vv/661K5dW7788ku54IILpHHjxnLyySfnfd8JEya4Ewgff/xx3kXlu+66S7777jvp0KGDe0z/rScn/ve//8VsG31Mn0u/T8H7xMd733iYQXwq6VkUfSso0kHipR0s0a8hCgL2XULFvkuo2HcJFftu4bRNoteU5ynqvvH6uYLHFnZ8vMeW4D71updY1apV8z120003ubfIFXWdTq/LlKPz7ZC1gJNOOskNzJUOdnU9/eOPPy5PPvmkjB492p340CXSuteZ0s/pRuf33Xdf3sXbwr5HVtRjWtcll1zi/q1X2XVQr1fVd999d/d99ATUiBEj3BX+vfbay+XRK++R59Zp8XoSIKJly5ZudsAbb7whp5xySt7jWuezzz6bbxq97tE2cuRI6dixo/tY/33IIYfILrvsErNNIt8z1s9RvD9XMIP4Bg0auPd//fWXm4oRoR/vu+++ecfoGZyC0xV0x/rI1xMREREREaXNPwPhmAoO2q69tvBjCw5k/7manAx61Xr48OH5HtPZzBHvvvuuHHjgge4qdCL0KnvBjyNTz3U/M50qHxnAqy5durgBt057LzgDuyht27bN+7cOkKPHhfp99PPRV7kL1qV0c3XdF2DhwoWyYcMGt+Y9Ms6M2HvvvXdYB68nKc4++2wZNmyYG4S/8sor8tBDD0kqwZxC050Q9cUYP358vmnvutY98iLoe12nMG3atLxjcnJyXEfQtfNUuG+++cad8dL3VqBlQqs3FmYIHmt5ounvel37Fv07H4W118VSHktZLObxIZvFXBYzJZRNB32FvRWcbl3UsQXWTxd6XAnoQHrXXXfNe9OLprrxt055jwzijzvuOEk3HRQX3HhuS4zlBnrM4sWL8+rVgXwiGzC++uqrcs0117h17zpVXk80DBgwwA3ko0WfcIjQmQM6q1v3DHjvvfdcfX369JFUCtSVeF2vMHv27LyPdb2CNqCeBWratKlbu6DTMHTzAh3U33rrrW7H+V69ernjdW2F7qyoZ0N0swFtQF0PoZveFbYzPW2nJ0c+/PBD9+/ojQGR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MpeF18NCBks5fMpmMRcz4WG+4OkGWHNJmFwT/9prr8lZZ50lTz31lHTq1EkefvhheeONN2TmzJluHURxuCaefMK+S6jYdwkV+y6hYt8lVCGQvuv1mvhhw4bJeeedJwMGDJA2bdq4wXzlypXl+eefz3RpRERERERERCVmbjr95s2b3SZHN954Y95jerale/fuMnny5Jhfs2nTJvcWfQYkcsZG3+Khx+mkhniPTxdtC10vqtNN27dvLwjQakapt7A6g9p3kdoWve6g14vSd4Pejig1otabSK2Z7rtI7RrBmoNRd6b7Lmobs87M1xkKWN8tTLz1mRvEL1u2TLZt2yb169fP97h+PGPGjJhfM2TIEBk8ePAOjy9dulQ2btwYd4PrtAftHEGaojF16lS3jCA7O1uaNGkiCNBqRqm3sDqD2neR2ha97qDXi9J3g96OKDWi1ptIrZnuu0jtGsGag1F3pvsuahuzzszXGQpY3y3M2rVr/RzEl4Retb/qqqvyXYnXDlG3bt2E1sRnZWW5rwlSx9DN/HJzc937ePYDCAK0mlHqLazOoPZdpLZFrzvo9aL03aC3I0qNqPUmUmum+y5Su0aw5mDUnem+i9rGrDPzdYYC1ncLU7FiRT83ttPp9Lr+/c0335RevXrlPd6vXz9ZtWqVvPPOO8U+Bze2I5+w7xIq9l1Cxb5LqNh3CVUIpO96u7Fd+fLl3doIvUdg9IumH3fu3DmjtRERERERERGVhsnp9Do1Xq+877///m6ahd5ibt26dW63eiIiIiIiIiJUJgfxp5xyituU7rbbbpMlS5bIvvvuK2PHjt1hszsiIiIiIiIiJCYH8erSSy91b0RERERERERWmFsTT0RERERERGQVB/FEREREREREIDiIJyIiIiIiIgLBQTwRERERERERCA7iiYiIiIiIiEBwEE9EREREREQEgoN4IiIiIiIiIhAcxBMRERERERGB4CCeiIiIiIiICAQH8UREREREREQgOIgnIiIiIiIiAsFBPBEREREREREIDuKJiIiIiIiIQJTNdAFBFA6H3fs1a9bE/TWhUEjWrl0rFStWlJ124rkRwsG+S6jYdwkV+y6hYt8lVCGQvhsZf0bGo4XhID4GfYFVkyZNMl0KEREREREReTYerV69eqGfzwoXN8z39EzNokWLpGrVqpKVlRX3WRMd9P/+++9SrVq1lNdIlCzsu4SKfZdQse8SKvZdQrUGpO/q0FwH8I0aNSpyxgCvxMegDbbzzjuX6Gu1UwS5YxAVhn2XULHvEir2XULFvkuoqgH03aKuwEcEd0EAEREREREREeXDQTwRERERERERCA7ik6RChQoyaNAg954ICfsuoWLfJVTsu4SKfZdQVTDWd7mxHREREREREREIXoknIiIiIiIiAsFBPBEREREREREIDuKJiIiIiIiIQHAQT0RERERERASCg/gkeOKJJ6R58+ZSsWJF6dSpk0ydOjXTJZHnPvvsMzn22GOlUaNGkpWVJW+//Xa+z+t+lrfddps0bNhQKlWqJN27d5dZs2blO2bFihVyxhlnSLVq1aRGjRpyzjnnSG5ubpqTkG+GDBkiHTp0kKpVq0q9evWkV69eMnPmzHzHbNy4US655BKpXbu2ZGdnS+/eveWvv/7Kd8zChQvl6KOPlsqVK7vnufbaa2Xr1q1pTkM+GT58uLRt29b9ztS3zp07y4cffpj3efZbQnDvvfe6vxsGDhyY9xj7LgXV7bff7vpr9Nvuu+/uRd/lIL6UXnvtNbnqqqvcLQu+/fZb2WeffaRnz57y999/Z7o08ti6detcX9QTTLHcf//98uijj8pTTz0lU6ZMkSpVqrh+q7/sInQA//PPP8u4cePk/fffdycGzj///DSmIB99+umn7n+4X331let7W7ZskR49erg+HXHllVfKe++9J2+88YY7ftGiRXLiiSfmfX7btm3uf8ibN2+WL7/8UkaNGiUjR450J66IUmXnnXd2A6Bp06bJN998I127dpXjjz/e/R5V7LcUdF9//bU8/fTT7mRUNPZdCrI999xTFi9enPc2adIkP/qu3mKOSq5jx47hSy65JO/jbdu2hRs1ahQeMmRIRusiitAf87feeivv41AoFG7QoEF46NCheY+tWrUqXKFChfDo0aPdx7/88ov7uq+//jrvmA8//DCclZUV/vPPP9OcgHz2999/u7746aef5vXVcuXKhd944428Y3799Vd3zOTJk93H//d//xfeaaedwkuWLMk7Zvjw4eFq1aqFN23alIEU5KuaNWuGn332WfZbCry1a9eGW7VqFR43blz4kEMOCV9xxRXucfZdCrJBgwaF99lnn5ifs953eSW+FPSsjZ5x16nIETvttJP7ePLkyRmtjagw8+bNkyVLluTr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V69cRwa3utmcDpg3bNgg33zzjZQtu/1Pg6VLl7oBvw7SdV297iZ/+eWXy7nnnisjRozIez4d1O+2225yzz335Hu8oBkzZrj3LVq0iPn5mTNnumMiJwJq1qwpF1xwgdx1113y22+/uav+0fXq1Xg99pdffpF58+a5q/h9+vTJe77bbrtth++hsw+Ufg0H8UREhIrT6YmIiDxy0kkn5bs63alTJ/e+b9++eQP4yON6lVsH/Uo30NMr26eddposW7Ys761MmTLu2AkTJhT5fZcvX543OI+lW7du+a7kR+rSafKRAXz043PnznXvI1k++ugjNzOgKJHvrXUTERGh4pV4IiIijzRt2jTfx5FBsN5HPdbjOoVd6dV7pdPuY6lWrVpc37+wTfhKWpde2dfbxw0bNszNHND1+scdd5w7KRF9siL6e+safCIiIlQcxBMREXlEr5wn8nhk4Ku3q4usi9d15wVFX8WPpXbt2nmDb914Lll1qQcffNBt5PfOO+/Ixx9/7Kb965T7r776Kt/3igz869SpU2StREREQcZBPBERERVrl112ce/r1asXc4f54uy+++7uva5f33vvvZNenz6nvt1yyy1u47ouXbrIU0895dbUR+j3VnvssUfSvz8REVG6cE08ERERFUt3gNcp87qB3ZYtW3b4vG6EVxTdGb58+fJu87xkWrNmjWzdujXfYzqY32mnndyO9QV3yNep9Hr7OiIiIlS8Ek9ERETF0gG87lR/5plnutvE6X3Y69atKwsXLpQPPvjAXfl+/PHHC/16vX+73pP+k08+kTvuuCNpdemt5vQe87phX+vWrd2AXqf86zR83RQvmm7Op3VGpvYTEREh4iCeiIiI4nL66adLo0aN5N5775WhQ4e6K92NGzd2m8kNGDCg2K/X+7vrwPr333/fYcO6ktpnn33cLIH33nvP7aRfuXJl99iHH34oBxxwQN5xq1evduvl9Z7zREREyLLChW0TS0RERJREeo/3Nm3ayMknnyx33nlnWr/3ww8/LPfff7/MmTNHKlWqlNbvTURElExcE09ERERpoVPcdSr9E088Ibm5uWn7vrqGX29Bp5vecQBPREToeCWeiIiIiIiICASvxBMRERERERGB4CCeiIiIiIiICAQH8UREREREREQgOIgnIiIiIiIiAsFBPBEREREREREIDuKJiIiIiIiIQHAQT0RERERERASCg3giIiIiIiIiEBzEExEREREREYHgIJ6IiIiIiIhIMPw/FfZKo1eGz0sAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Total spikes: 1586\n",
- "Average firing rate: 31.72 Hz\n"
- ]
- }
- ],
- "source": [
- "import jax\n",
- "spike_history = jax.block_until_ready(spike_history)\n",
- "\n",
- "# Find spike times and neuron indices\n",
- "t_indices, n_indices = u.math.where(spike_history != 0)\n",
- "\n",
- "# Convert to plottable format\n",
- "spike_times = times[t_indices].to_decimal(u.ms)\n",
- "\n",
- "# Create raster plot\n",
- "plt.figure(figsize=(12, 6))\n",
- "plt.scatter(spike_times, n_indices, s=1, c='black', alpha=0.5)\n",
- "\n",
- "# Mark excitatory and inhibitory populations\n",
- "plt.axhline(y=net.n_exc, color='red', linestyle='--', alpha=0.5, label='E/I boundary')\n",
- "\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Neuron Index', fontsize=12)\n",
- "plt.title('Network Activity (Raster Plot)', fontsize=14)\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "\n",
- "# Add text annotations\n",
- "plt.text(10, net.n_exc/2, 'Excitatory', fontsize=10, bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))\n",
- "plt.text(10, net.n_exc + net.n_inh/2, 'Inhibitory', fontsize=10, bbox=dict(boxstyle='round', facecolor='lightblue', alpha=0.5))\n",
- "\n",
- "plt.show()\n",
- "\n",
- "# Calculate statistics\n",
- "total_spikes = len(t_indices)\n",
- "avg_rate = total_spikes / (net.num * duration.to_decimal(u.second))\n",
- "print(f\"Total spikes: {total_spikes}\")\n",
- "print(f\"Average firing rate: {avg_rate:.2f} Hz\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "Congratulations! 🎉 You've just:\n",
- "\n",
- "1. ✅ Created individual neurons with physical units\n",
- "2. ✅ Simulated neuron dynamics with input currents\n",
- "3. ✅ Built a network with excitatory and inhibitory populations\n",
- "4. ✅ Connected neurons with synaptic projections\n",
- "5. ✅ Visualized network activity\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "Now that you've completed your first simulation, you can:\n",
- "\n",
- "- **Learn more concepts**: Read the [Core Concepts](../core-concepts/architecture.rst) guide\n",
- "- **Follow tutorials**: Try the [Basic Tutorials](../tutorials/basic/01-lif-neuron.ipynb) for deeper understanding\n",
- "- **Explore examples**: Check out the [Examples Gallery](../examples/gallery.rst) for real-world models\n",
- "- **Experiment**: Modify the network parameters and see what happens!\n",
- "\n",
- "### Try These Experiments\n",
- "\n",
- "1. Change the connection probability in the network\n",
- "2. Adjust the excitatory/inhibitory balance\n",
- "3. Add more neuron populations\n",
- "4. Try different input currents or patterns\n",
- "\n",
- "Happy modeling! 🧠"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/quickstart/core-concepts/architecture.ipynb b/docs_state/quickstart/core-concepts/architecture.ipynb
deleted file mode 100644
index c890f957b..000000000
--- a/docs_state/quickstart/core-concepts/architecture.ipynb
+++ /dev/null
@@ -1,915 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Overview\n",
- "\n",
- "``brainpy.state`` represents a complete architectural redesign built on top of the ``brainstate`` framework. This document explains the design principles and architectural components that make ``brainpy.state`` powerful and flexible."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Design Philosophy\n",
- "\n",
- "``brainpy.state`` is built around several core principles:\n",
- "\n",
- "**State-Based Programming**\n",
- " All dynamical variables are managed as explicit states, enabling automatic differentiation, efficient compilation, and clear data flow.\n",
- "\n",
- "**Modular Composition**\n",
- " Complex models are built by composing simple, reusable components. Each component has a well-defined interface and responsibility.\n",
- "\n",
- "**Scientific Accuracy**\n",
- " Integration with ``brainunit`` ensures physical correctness and prevents unit-related errors.\n",
- "\n",
- "**Performance by Default**\n",
- " JIT compilation and optimization are built into the framework, not an afterthought.\n",
- "\n",
- "**Extensibility**\n",
- " Adding new neuron models, synapse types, or learning rules is straightforward and follows clear patterns."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Architectural Layers\n",
- "\n",
- "brainpy.state is organized into several layers:\n",
- "\n",
- "```text\n",
- "┌─────────────────────────────────────────┐\n",
- "│ User Models & Networks │ ← Your code\n",
- "├─────────────────────────────────────────┤\n",
- "│ BrainPy Components Layer │ ← Neurons, Synapses, Projections\n",
- "├─────────────────────────────────────────┤\n",
- "│ BrainState Framework │ ← State management, compilation\n",
- "├─────────────────────────────────────────┤\n",
- "│ JAX + XLA Backend │ ← JIT compilation, autodiff\n",
- "└─────────────────────────────────────────┘\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### 1. JAX + XLA Backend\n",
- "\n",
- "The foundation layer provides:\n",
- "\n",
- "- Just-In-Time (JIT) compilation\n",
- "- Automatic differentiation\n",
- "- Hardware acceleration (CPU/GPU/TPU)\n",
- "- Functional transformations (vmap, grad, etc.)\n",
- "\n",
- "### 2. BrainState Framework\n",
- "\n",
- "Built on JAX, ``brainstate`` provides:\n",
- "\n",
- "- State management system\n",
- "- Module composition\n",
- "- Compilation and optimization\n",
- "- Program transformations (for_loop, etc.)\n",
- "\n",
- "### 3. BrainPy Components\n",
- "\n",
- "High-level neuroscience-specific components:\n",
- "\n",
- "- Neuron models (LIF, ALIF, etc.)\n",
- "- Synapse models (Expon, Alpha, etc.)\n",
- "- Projection architectures\n",
- "- Learning rules and plasticity\n",
- "\n",
- "### 4. User Models\n",
- "\n",
- "Your custom networks and experiments built using BrainPy components."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## State Management System\n",
- "\n",
- "### The Foundation: ``brainstate.State``\n",
- "\n",
- "Everything in ``brainpy.state`` revolves around **states**:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.201528Z",
- "start_time": "2025-11-13T09:31:02.936126Z"
- }
- },
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import braintools\n",
- "import brainunit as u\n",
- "import jax.numpy as jnp\n",
- "\n",
- "# Create a state\n",
- "voltage = brainstate.State(0.0) # Single value\n",
- "weights = brainstate.State([[0.1, 0.2], [0.3, 0.4]]) # Matrix"
- ],
- "outputs": [],
- "execution_count": 1
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "States are special containers that:\n",
- "\n",
- "- Track their values across time\n",
- "- Support automatic differentiation\n",
- "- Enable efficient compilation\n",
- "- Handle batching automatically"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### State Types\n",
- "\n",
- "BrainPy uses different state types for different purposes:\n",
- "\n",
- "**ParamState** - Trainable Parameters\n",
- " Used for weights, time constants, and other trainable parameters."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.232382Z",
- "start_time": "2025-11-13T09:31:08.227046Z"
- }
- },
- "source": [
- "class MyNeuron(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " self.tau = brainstate.ParamState(10.0) # Trainable\n",
- " self.weight = brainstate.ParamState([[0.1, 0.2]])"
- ],
- "outputs": [],
- "execution_count": 2
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**ShortTermState** - Temporary Variables\n",
- " Used for membrane potentials, synaptic currents, and other dynamics."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.256361Z",
- "start_time": "2025-11-13T09:31:08.248156Z"
- }
- },
- "source": [
- "class MyNeuron(brainstate.nn.Module):\n",
- " def __init__(self, size):\n",
- " super().__init__()\n",
- " self.V = brainstate.ShortTermState(jnp.zeros(size)) # Dynamic\n",
- " self.spike = brainstate.ShortTermState(jnp.zeros(size))"
- ],
- "outputs": [],
- "execution_count": 3
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### State Initialization\n",
- "\n",
- "States can be initialized with various strategies:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.332155Z",
- "start_time": "2025-11-13T09:31:08.288203Z"
- }
- },
- "source": [
- "# Define example size and shape\n",
- "size = 100 # Number of neurons\n",
- "shape = (100, 50) # Weight matrix shape\n",
- "\n",
- "# Constant initialization\n",
- "V = brainstate.ShortTermState(\n",
- " braintools.init.Constant(-65.0, unit=u.mV)(size)\n",
- ")\n",
- "\n",
- "# Normal distribution\n",
- "V = brainstate.ShortTermState(\n",
- " braintools.init.Normal(-65.0, 5.0, unit=u.mV)(size)\n",
- ")\n",
- "\n",
- "# Uniform distribution\n",
- "weights = brainstate.ParamState(\n",
- " braintools.init.Uniform(0.0, 1.0)(shape)\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 4
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Module System\n",
- "\n",
- "### Base Class: brainstate.nn.Module\n",
- "\n",
- "All BrainPy components inherit from ``brainstate.nn.Module``:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.344089Z",
- "start_time": "2025-11-13T09:31:08.338163Z"
- }
- },
- "source": [
- "class MyComponent(brainstate.nn.Module):\n",
- " def __init__(self, size):\n",
- " super().__init__()\n",
- " # Initialize states\n",
- " self.state1 = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.param1 = brainstate.ParamState(jnp.ones(size))\n",
- "\n",
- " def update(self, input):\n",
- " # Define dynamics\n",
- " pass"
- ],
- "outputs": [],
- "execution_count": 5
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Benefits of Module:\n",
- "\n",
- "- Automatic state registration\n",
- "- Nested module support\n",
- "- State collection and filtering\n",
- "- Serialization support"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Module Composition\n",
- "\n",
- "Modules can contain other modules:\n",
- "\n",
- "```python\n",
- "\n",
- "class Network(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " self.neurons = brainpy.state.LIF(100, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- " self.synapse = brainpy.state.Expon(100, tau=5*u.ms)\n",
- " self.projection = brainpy.state.AlignPostProj(...) # Example - requires more setup\n",
- "\n",
- " def update(self, input):\n",
- " # Compose behavior\n",
- " self.projection(spikes) # Example\n",
- " self.neurons(input)\n",
- "\n",
- "```\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Component Architecture\n",
- "\n",
- "### Neurons\n",
- "\n",
- "Neurons model the dynamics of neural populations:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.354960Z",
- "start_time": "2025-11-13T09:31:08.350705Z"
- }
- },
- "source": [
- "class Neuron(brainstate.nn.Module):\n",
- " def __init__(self, size, **kwargs):\n",
- " super().__init__()\n",
- " # Membrane potential\n",
- " self.V = brainstate.ShortTermState(jnp.zeros(size))\n",
- " # Spike output\n",
- " self.spike = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def update(self, input_current):\n",
- " # Update membrane potential\n",
- " # Generate spikes\n",
- " pass"
- ],
- "outputs": [],
- "execution_count": 6
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Key responsibilities:\n",
- "\n",
- "- Maintain membrane potential\n",
- "- Generate spikes when threshold is crossed\n",
- "- Reset after spiking\n",
- "- Integrate input currents"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Synapses\n",
- "\n",
- "Synapses model temporal filtering of spike trains:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.365530Z",
- "start_time": "2025-11-13T09:31:08.361447Z"
- }
- },
- "source": [
- "class Synapse(brainstate.nn.Module):\n",
- " def __init__(self, size, tau, **kwargs):\n",
- " super().__init__()\n",
- " # Synaptic conductance/current\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.tau = tau\n",
- "\n",
- " def update(self, spike_input):\n",
- " # Update synaptic variable\n",
- " # Return filtered output\n",
- " pass"
- ],
- "outputs": [],
- "execution_count": 7
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Key responsibilities:\n",
- "\n",
- "- Filter spike inputs temporally\n",
- "- Model synaptic dynamics (exponential, alpha, etc.)\n",
- "- Provide smooth currents to postsynaptic neurons"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Projections: The Comm-Syn-Out Pattern\n",
- "\n",
- "Projections connect populations using a three-stage architecture:\n",
- "\n",
- "```text\n",
- "Presynaptic Spikes → [Comm] → [Syn] → [Out] → Postsynaptic Neurons\n",
- " │ │ │\n",
- " Connectivity │ Current\n",
- " & Weights Dynamics Injection\n",
- "```\n",
- "\n",
- "**Communication (Comm)**\n",
- " Handles spike transmission, connectivity, and weights."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.380053Z",
- "start_time": "2025-11-13T09:31:08.371055Z"
- }
- },
- "source": [
- "# Define population sizes\n",
- "pre_size = 100\n",
- "post_size = 50\n",
- "\n",
- "# Define prob and weight\n",
- "prob=0.1\n",
- "weight=0.5\n",
- "\n",
- "comm = brainstate.nn.EventFixedProb(\n",
- " pre_size, post_size, prob, weight\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 8
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Synaptic Dynamics (Syn)**\n",
- " Temporal filtering of transmitted spikes."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.390544Z",
- "start_time": "2025-11-13T09:31:08.386339Z"
- }
- },
- "source": [
- "post_size = 50 # Postsynaptic population size\n",
- "\n",
- "syn = brainpy.state.Expon(post_size, tau=5*u.ms)"
- ],
- "outputs": [],
- "execution_count": 9
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Output Mechanism (Out)**\n",
- " How synaptic variables affect postsynaptic neurons."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.400227Z",
- "start_time": "2025-11-13T09:31:08.397246Z"
- }
- },
- "source": [
- "# Current-based output\n",
- "out = brainpy.state.CUBA() \n",
- "\n",
- "# Or conductance-based output\n",
- "out = brainpy.state.COBA(E=0*u.mV)"
- ],
- "outputs": [],
- "execution_count": 10
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Complete Projection**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.420603Z",
- "start_time": "2025-11-13T09:31:08.405533Z"
- }
- },
- "source": [
- "# Define postsynaptic neurons\n",
- "postsynaptic_neurons = brainpy.state.LIF(50, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "\n",
- "# Create complete projection\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " comm=comm,\n",
- " syn=syn,\n",
- " out=out,\n",
- " post=postsynaptic_neurons\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 11
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This separation provides:\n",
- "\n",
- "- Clear responsibility boundaries\n",
- "- Easy component swapping\n",
- "- Reusable building blocks\n",
- "- Better testing and debugging"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Compilation and Execution\n",
- "\n",
- "### Time-Stepped Simulation\n",
- "\n",
- "BrainPy uses discrete time steps:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:08.937334Z",
- "start_time": "2025-11-13T09:31:08.430048Z"
- }
- },
- "source": [
- "# Example: create a simple network\n",
- "class SimpleNetwork(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " self.neurons = brainpy.state.LIF(100, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- " \n",
- " def update(self, t, i):\n",
- " # Generate constant input current\n",
- " inp = jnp.ones(100) * 5.0 * u.nA\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " self.neurons(inp)\n",
- " return self.neurons.get_spike()\n",
- "\n",
- "network = SimpleNetwork()\n",
- "brainstate.nn.init_all_states(network)\n",
- "\n",
- "# Set global time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Define simulation duration\n",
- "times = u.math.arange(0*u.ms, 1000*u.ms, brainstate.environ.get_dt())\n",
- "indices = u.math.arange(times.size)\n",
- "\n",
- "# Run simulation\n",
- "results = brainstate.transform.for_loop(\n",
- " network.update,\n",
- " times,\n",
- " indices,\n",
- " pbar=brainstate.transform.ProgressBar(10)\n",
- ")"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- " 0%| | 0/10000 [00:00, ?it/s]"
- ],
- "application/vnd.jupyter.widget-view+json": {
- "version_major": 2,
- "version_minor": 0,
- "model_id": "53f4cd22f9f54b9494d7457134633d41"
- }
- },
- "metadata": {},
- "output_type": "display_data",
- "jetTransient": {
- "display_id": null
- }
- }
- ],
- "execution_count": 12
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### JIT Compilation\n",
- "\n",
- "Functions are compiled for performance:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.104741Z",
- "start_time": "2025-11-13T09:31:08.980341Z"
- }
- },
- "source": [
- "# Create example input\n",
- "input_example = jnp.ones(100) * 2.0 * u.nA\n",
- "\n",
- "@brainstate.transform.jit\n",
- "def simulate_step(t, i, input_current):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " return network.update(t, i)\n",
- "\n",
- "# First call: compile\n",
- "result = simulate_step(0.0*u.ms, 0, input_example) # Slow (compilation)\n",
- "\n",
- "# Subsequent calls: fast\n",
- "result = simulate_step(0.1*u.ms, 1, input_example) # Fast (compiled)"
- ],
- "outputs": [],
- "execution_count": 13
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Compilation benefits:\n",
- "\n",
- "- 10-100x speedup over Python\n",
- "- Automatic GPU/TPU dispatch\n",
- "- Memory optimization\n",
- "- Fusion of operations"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Gradient Computation\n",
- "\n",
- "For training, gradients are computed automatically:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.356118Z",
- "start_time": "2025-11-13T09:31:09.113521Z"
- }
- },
- "source": [
- "# Example: Define mock functions for demonstration\n",
- "def compute_loss(predictions, targets):\n",
- " return jnp.mean((predictions.astype(float) - targets) ** 2)\n",
- "\n",
- "# Mock targets\n",
- "num_steps = 100\n",
- "targets = jnp.zeros((num_steps, 100))\n",
- "\n",
- "def loss_fn():\n",
- " # Run network for multiple timesteps\n",
- " def step(t, i):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " return network.update(t, i)\n",
- " \n",
- " times = u.math.arange(0*u.ms, num_steps*brainstate.environ.get_dt(), brainstate.environ.get_dt())\n",
- " indices = u.math.arange(times.size)\n",
- " predictions = brainstate.transform.for_loop(step, times, indices)\n",
- " return compute_loss(predictions, targets)\n",
- "\n",
- "# Get trainable parameters\n",
- "params = network.states(brainstate.ParamState)\n",
- "\n",
- "# Compute gradients\n",
- "if len(params) > 0:\n",
- " optimizer = braintools.optim.Adam(lr=1e-3)\n",
- " grads, loss = brainstate.transform.grad(\n",
- " loss_fn,\n",
- " grad_states=params,\n",
- " return_value=True\n",
- " )()\n",
- " print(f\"Loss: {loss}\")\n",
- " # Update parameters with optimizer (if defined)\n",
- " optimizer.update(grads)\n",
- "else:\n",
- " # If no trainable parameters, just compute loss\n",
- " loss = loss_fn()\n",
- " print(f\"Loss (no trainable params): {loss}\")"
- ],
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Loss (no trainable params): 0.0\n"
- ]
- }
- ],
- "execution_count": 14
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Physical Units System\n",
- "\n",
- "### Integration with brainunit\n",
- "\n",
- "``brainpy.state`` integrates ``brainunit`` for scientific accuracy:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.386693Z",
- "start_time": "2025-11-13T09:31:09.382194Z"
- }
- },
- "source": [
- "# Define with units\n",
- "tau = 10 * u.ms\n",
- "threshold = -50 * u.mV\n",
- "current = 5 * u.nA\n",
- "\n",
- "# Units are checked automatically\n",
- "neuron = brainpy.state.LIF(100, tau=tau, V_th=threshold)"
- ],
- "outputs": [],
- "execution_count": 15
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Benefits:\n",
- "\n",
- "- Prevents unit errors (e.g., ms vs s)\n",
- "- Self-documenting code\n",
- "- Automatic unit conversions\n",
- "- Scientific correctness"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Unit Operations"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.432404Z",
- "start_time": "2025-11-13T09:31:09.427692Z"
- }
- },
- "source": [
- "# Arithmetic with units\n",
- "total_time = 100 * u.ms + 0.5 * u.second # → 600 ms\n",
- "\n",
- "# Unit conversion\n",
- "time_in_seconds = (100 * u.ms).to_decimal(u.second) # → 0.1\n",
- "\n",
- "# Unit checking (automatic in BrainPy operations)\n",
- "voltage = -65 * u.mV\n",
- "current = 2 * u.nA\n",
- "resistance = voltage / current # Automatically gives MΩ"
- ],
- "outputs": [],
- "execution_count": 16
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Ecosystem Integration\n",
- "\n",
- "``brainpy.state`` integrates tightly with its ecosystem:\n",
- "\n",
- "### braintools\n",
- "\n",
- "Utilities and tools:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.471630Z",
- "start_time": "2025-11-13T09:31:09.465919Z"
- }
- },
- "source": [
- "# Optimizers\n",
- "optimizer = braintools.optim.Adam(lr=1e-3)\n",
- "\n",
- "# Initializers\n",
- "init = braintools.init.KaimingNormal()\n",
- "\n",
- "# Surrogate gradients\n",
- "spike_fn = braintools.surrogate.ReluGrad()\n",
- "\n",
- "# Metrics (example with dummy data)\n",
- "# pred = jnp.array([0.1, 0.9])\n",
- "# target = jnp.array([0, 1])\n",
- "# loss = braintools.metric.cross_entropy(pred, target)"
- ],
- "outputs": [],
- "execution_count": 17
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### brainunit\n",
- "\n",
- "Physical units:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.496064Z",
- "start_time": "2025-11-13T09:31:09.490951Z"
- }
- },
- "source": [
- "# All standard SI units\n",
- "time = 10 * u.ms\n",
- "voltage = -65 * u.mV\n",
- "current = 2 * u.nA"
- ],
- "outputs": [],
- "execution_count": 18
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### brainstate\n",
- "\n",
- "Core framework (used automatically):"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:31:09.518362Z",
- "start_time": "2025-11-13T09:31:09.512404Z"
- }
- },
- "source": [
- "import brainstate\n",
- "\n",
- "# Module system\n",
- "class Net(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " pass\n",
- "\n",
- "# Compilation\n",
- "@brainstate.transform.jit\n",
- "def fn():\n",
- " return 0\n",
- "\n",
- "# Transformations\n",
- "# result = brainstate.transform.for_loop(...)"
- ],
- "outputs": [],
- "execution_count": 19
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/quickstart/core-concepts/index.rst b/docs_state/quickstart/core-concepts/index.rst
deleted file mode 100644
index 50bf2270f..000000000
--- a/docs_state/quickstart/core-concepts/index.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-Core Concepts
-=============
-
-This section provides an in-depth exploration of the fundamental concepts underlying ``brainpy.state``.
-Understanding these core principles will help you build more sophisticated and efficient neural network
-models.
-
-``brainpy.state`` introduces a State-based programming paradigm that simplifies the development of
-spiking neural networks while improving performance and scalability. The concepts covered here form
-the foundation for all neural modeling work in this framework.
-
-
-Overview
---------
-
-The core concepts of ``brainpy.state`` include:
-
-- **Architecture**: The overall structure and design principles of State-based neural networks, including how components interact and compose together
-- **Neurons**: Building blocks for neural computation, including different neuron models and their state representations
-- **Synapses**: Connections between neurons that transmit signals and implement learning rules
-- **Projections**: Network-level structures that organize and manage connections between populations of neurons
-
-
-Why these concepts matter
---------------------------
-
-Mastering these core concepts will enable you to:
-
-- Design complex neural networks with clean, maintainable code
-- Leverage the State-based paradigm for improved performance
-- Understand how to compose neurons, synapses, and projections effectively
-- Manage model state efficiently during simulation
-- Seamlessly integrate with the BrainX ecosystem
-
-Each concept builds upon the previous ones, so we recommend reading them in order if you're new to ``brainpy.state``.
-
-
-.. toctree::
- :hidden:
- :maxdepth: 1
-
- architecture.ipynb
- neurons.ipynb
- synapses.ipynb
- projections.ipynb
-
-
diff --git a/docs_state/quickstart/core-concepts/neurons.ipynb b/docs_state/quickstart/core-concepts/neurons.ipynb
deleted file mode 100644
index d558803b0..000000000
--- a/docs_state/quickstart/core-concepts/neurons.ipynb
+++ /dev/null
@@ -1,1318 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Neurons\n",
- "\n",
- "Neurons are the fundamental computational units in `brainpy.state`. This document explains how neurons work, what models are available, and how to use and create them.\n",
- "\n",
- "## Overview\n",
- "\n",
- "In `brainpy.state`, neurons model the dynamics of neural populations. Each neuron model:\n",
- "\n",
- "- Maintains **membrane potential** (voltage)\n",
- "- Integrates **input currents**\n",
- "- Generates **spikes** when threshold is crossed\n",
- "- **Resets** after spiking (various strategies)\n",
- "\n",
- "All neuron models inherit from the base `Neuron` class and follow consistent interfaces.\n",
- "\n",
- "## Basic Usage\n",
- "\n",
- "### Creating Neurons"
- ]
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.859882Z",
- "start_time": "2025-11-13T09:26:26.856372Z"
- }
- },
- "cell_type": "code",
- "source": [
- "import numpy as np\n",
- "\n",
- "import brainpy\n",
- "import brainstate\n",
- "import braintools\n",
- "import brainunit as u\n",
- "import jax.numpy as jnp"
- ],
- "outputs": [],
- "execution_count": 62
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.892571Z",
- "start_time": "2025-11-13T09:26:26.882259Z"
- }
- },
- "cell_type": "code",
- "source": "brainstate.environ.set(dt=0.1 * u.ms)",
- "outputs": [],
- "execution_count": 63
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.904598Z",
- "start_time": "2025-11-13T09:26:26.900474Z"
- }
- },
- "source": [
- "# Create a population of 100 LIF neurons\n",
- "neurons = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 64
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Initializing States\n",
- "\n",
- "Before simulation, initialize neuron states:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.923422Z",
- "start_time": "2025-11-13T09:26:26.913797Z"
- }
- },
- "source": [
- "# Initialize all states to default values\n",
- "brainstate.nn.init_all_states(neurons)\n",
- "\n",
- "# Or with specific batch in_size\n",
- "brainstate.nn.init_all_states(neurons, batch_size=32)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\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=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[32,100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 65
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Running Neurons\n",
- "\n",
- "Update neurons by calling them with input current:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.957509Z",
- "start_time": "2025-11-13T09:26:26.936911Z"
- }
- },
- "source": [
- "# Single time step - provide input for all neurons\n",
- "# Create input current array matching neuron population in_size\n",
- "input_current = jnp.ones(100) * 2.0 * u.nA # 100 neurons, each gets 2.0 nA\n",
- "\n",
- "# Access results\n",
- "voltage = neurons.V.value # Membrane potential\n",
- "spikes = neurons.get_spike() # Spike output\n",
- "\n",
- "print(f\"Voltage shape: {voltage.shape}\")\n",
- "print(f\"Spikes shape: {spikes.shape}\")"
- ],
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Voltage shape: (32, 100)\n",
- "Spikes shape: (32, 100)\n"
- ]
- }
- ],
- "execution_count": 66
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Available Neuron Models\n",
- "\n",
- "\n",
- "For more neuron models, see the [API Reference](../../api/index.rst).\n",
- "\n",
- "\n",
- "### IF (Integrate-and-Fire)\n",
- "\n",
- "The simplest spiking neuron model.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\tau \\frac{dV}{dt} = -V + R \\cdot I(t)\n",
- "$$\n",
- "**Spike condition:** If :$ V \\geq V_{th} $, emit spike and reset.\n",
- "\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:26.977885Z",
- "start_time": "2025-11-13T09:26:26.961663Z"
- }
- },
- "source": [
- "# IF neuron - simple parameters\n",
- "neuron = brainpy.state.IF(\n",
- " in_size=100,\n",
- " V_th=1. * u.mV, # Spike threshold \n",
- " tau=20. * u.ms, # Membrane time constant\n",
- " R=1. * u.ohm # Input resistance\n",
- ")\n",
- "\n",
- "# Initialize the neuron\n",
- "import brainstate\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "IF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\n",
- " spk_reset=soft,\n",
- " spk_fun=ReluGrad(alpha=0.3, width=1.0),\n",
- " R=1. * ohm,\n",
- " tau=20. * msecond,\n",
- " V_th=1. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 67,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 67
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Parameters:**\n",
- "\n",
- "- `in_size`: Number of neurons\n",
- "- `V_rest`: Resting potential\n",
- "- `V_th`: Spike threshold\n",
- "- `V_reset`: Reset potential after spike\n",
- "- `tau`: Membrane time constant\n",
- "- `R`: Input resistance\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- Simple rate coding\n",
- "- Fast simulations\n",
- "- Theoretical studies\n",
- "\n",
- "### LIF (Leaky Integrate-and-Fire)\n",
- "\n",
- "The most commonly used spiking neuron model.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\tau \\frac{dV}{dt} = -(V - V_{rest}) + R \\cdot I(t)\n",
- "$$\n",
- "**Spike condition:** If :$V \\geq V_{th}$, emit spike and reset.\n",
- "\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.030431Z",
- "start_time": "2025-11-13T09:26:27.017419Z"
- }
- },
- "source": [
- "neuron = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " R=1. * u.ohm,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV)\n",
- ")\n",
- "\n",
- "# Initialize the neuron\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\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=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Normal(mean=-65.0, std=5.0),\n",
- " V=HiddenState(\n",
- " value=float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 68,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 68
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Parameters:**\n",
- "\n",
- "All IF parameters, plus:\n",
- "\n",
- "- `V_initializer`: How to initialize membrane potential\n",
- "\n",
- "**Key Features:**\n",
- "\n",
- "- Leak toward resting potential\n",
- "- Realistic temporal integration\n",
- "- Well-studied dynamics\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- General spiking neural networks\n",
- "- Cortical neuron modeling\n",
- "- Learning and training\n",
- "\n",
- "### LIFRef (LIF with Refractory Period)\n",
- "\n",
- "LIF neuron with absolute refractory period.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "Same as LIF, but after spiking:\n",
- "\n",
- "- Neuron is \"frozen\" for refractory period\n",
- "- No integration during refractory period\n",
- "- More biologically realistic\n",
- "\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.083988Z",
- "start_time": "2025-11-13T09:26:27.073064Z"
- }
- },
- "source": [
- "neuron = brainpy.state.LIFRef(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " tau_ref=2. * u.ms, # Refractory period\n",
- " R=1. * u.ohm\n",
- ")\n",
- "\n",
- "# Initialize the neuron\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIFRef(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\n",
- " spk_reset=soft,\n",
- " spk_fun=ReluGrad(alpha=0.3, width=1.0),\n",
- " R=1. * ohm,\n",
- " tau=10. * msecond,\n",
- " tau_ref=2. * msecond,\n",
- " V_th=-50. * mvolt,\n",
- " V_rest=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " ),\n",
- " last_spike_time=ShortTermState(\n",
- " value=~float32[100] * msecond\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 69
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Additional Parameters:**\n",
- "\n",
- "- `tau_ref`: Refractory period duration\n",
- "\n",
- "**Key Features:**\n",
- "\n",
- "- Absolute refractory period\n",
- "- Prevents immediate re-firing\n",
- "- More realistic spike timing\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- Precise temporal coding\n",
- "- Biological realism\n",
- "- Rate regulation\n",
- "\n",
- "### ALIF (Adaptive Leaky Integrate-and-Fire)\n",
- "\n",
- "LIF with spike-frequency adaptation.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\begin{aligned}\n",
- "\\tau \\frac{dV}{dt} &= -(V - V_{rest}) - R \\cdot w + R \\cdot I(t) \\\\\n",
- "\\tau_w \\frac{dw}{dt} &= -w\n",
- "\\end{aligned}\n",
- "$$\n",
- "When spike occurs: :$w \\leftarrow w + \\beta$\n",
- "\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.130935Z",
- "start_time": "2025-11-13T09:26:27.119447Z"
- }
- },
- "source": [
- "neuron = brainpy.state.ALIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " tau_a=200. * u.ms, # Adaptation time constant\n",
- " beta=0.1 * u.nA, # Spike-triggered adaptation\n",
- " R=1. * u.ohm\n",
- ")\n",
- "\n",
- "# Initialize the neuron\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "ALIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\n",
- " spk_reset=soft,\n",
- " spk_fun=ReluGrad(alpha=0.3, width=1.0),\n",
- " R=1. * ohm,\n",
- " tau=10. * msecond,\n",
- " tau_a=200. * msecond,\n",
- " V_th=-50. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_rest=-65. * mvolt,\n",
- " beta=0.1 * namp,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " a_initializer=Constant(value=0.0),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " ),\n",
- " a=HiddenState(\n",
- " value=ShapedArray(float32[100], weak_type=True)\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 70,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 70
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Additional Parameters:**\n",
- "\n",
- "- `tau_w`: Adaptation time constant\n",
- "- `beta`: Adaptation increment per spike\n",
- "\n",
- "**Key Features:**\n",
- "\n",
- "- Spike-frequency adaptation\n",
- "- Reduced firing with sustained input\n",
- "- More complex dynamics\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- Cortical neuron modeling\n",
- "- Sensory adaptation\n",
- "- Complex temporal patterns\n",
- "\n",
- "## Reset Modes\n",
- "\n",
- "BrainPy supports different reset behaviors after spiking:\n",
- "\n",
- "### Soft Reset (Default)\n",
- "\n",
- "Subtract threshold from membrane potential:\n",
- "\n",
- "\n",
- "$$\n",
- "V \\leftarrow V - V_{th}\n",
- "$$"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.199145Z",
- "start_time": "2025-11-13T09:26:27.188524Z"
- }
- },
- "source": [
- "neuron = brainpy.state.LIF(\n",
- " in_size=100, \n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " spk_reset='soft'\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\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=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 71,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 71
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Properties:**\n",
- "\n",
- "- Preserves extra charge above threshold\n",
- "- Allows rapid re-firing\n",
- "- Common in machine learning\n",
- "\n",
- "### Hard Reset\n",
- "\n",
- "Reset to fixed potential:\n",
- "\n",
- "\n",
- "$$\n",
- "V \\leftarrow V_{reset}\n",
- "$$"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.239190Z",
- "start_time": "2025-11-13T09:26:27.229487Z"
- }
- },
- "source": [
- "neuron = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " spk_reset='hard'\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\n",
- " spk_reset=hard,\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=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 72,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 72
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Properties:**\n",
- "\n",
- "- Discards extra charge\n",
- "- More biologically realistic\n",
- "- Prevents immediate re-firing\n",
- "\n",
- "### Choosing Reset Mode\n",
- "\n",
- "- **Soft reset**: Machine learning, rate coding, fast oscillations\n",
- "- **Hard reset**: Biological modeling, temporal coding, realism\n",
- "\n",
- "## Spike Functions\n",
- "\n",
- "For training spiking neural networks, use surrogate gradients:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.277165Z",
- "start_time": "2025-11-13T09:26:27.267358Z"
- }
- },
- "source": [
- "neuron = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " spk_fun=braintools.surrogate.ReluGrad()\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states(neuron)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\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=-65. * mvolt,\n",
- " V_reset=-65. * mvolt,\n",
- " V_initializer=Constant(value=0.0 * mvolt),\n",
- " V=HiddenState(\n",
- " value=~float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 73,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 73
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Available surrogate functions:\n",
- "\n",
- "- `ReluGrad()`: ReLU-like gradient\n",
- "- `SigmoidGrad()`: Sigmoid-like gradient\n",
- "- `GaussianGrad()`: Gaussian-like gradient\n",
- "- `SuperSpike()`: SuperSpike surrogate\n",
- "\n",
- "See Tutorial 3 for training details.\n",
- "\n",
- "## Advanced Features\n",
- "\n",
- "### Initialization Strategies\n",
- "\n",
- "Different ways to initialize membrane potential:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.319454Z",
- "start_time": "2025-11-13T09:26:27.303637Z"
- }
- },
- "source": [
- "# Constant initialization\n",
- "neuron1 = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " V_initializer=braintools.init.Constant(-65., unit=u.mV)\n",
- ")\n",
- "brainstate.nn.init_all_states(neuron1)\n",
- "\n",
- "# Normal distribution\n",
- "neuron2 = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV)\n",
- ")\n",
- "brainstate.nn.init_all_states(neuron2)\n",
- "\n",
- "# Uniform distribution\n",
- "neuron3 = brainpy.state.LIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " V_initializer=braintools.init.Uniform(-70., -60., unit=u.mV)\n",
- ")\n",
- "brainstate.nn.init_all_states(neuron3)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LIF(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\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=-65. * mvolt,\n",
- " V_reset=0. * mvolt,\n",
- " V_initializer=Uniform(low=-70.0, high=-60.0),\n",
- " V=HiddenState(\n",
- " value=float32[100] * mvolt\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 74,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 74
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Accessing Neuron States"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.375509Z",
- "start_time": "2025-11-13T09:26:27.350990Z"
- }
- },
- "source": [
- "# Membrane potential (with units)\n",
- "voltage = neuron.V.value # Quantity with units\n",
- "\n",
- "# Spike output (binary or real-valued)\n",
- "spikes = neuron.get_spike()\n",
- "\n",
- "# Access underlying array (without units)\n",
- "voltage_array = neuron.V.value.to_decimal(u.mV)"
- ],
- "outputs": [],
- "execution_count": 75
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Batched Simulation\n",
- "\n",
- "Simulate multiple trials in parallel:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.469688Z",
- "start_time": "2025-11-13T09:26:27.386811Z"
- }
- },
- "source": [
- "# Initialize with batch dimension\n",
- "brainstate.nn.init_all_states(neuron, batch_size=32)\n",
- "\n",
- "# Input shape: (batch_in_size, in_size)\n",
- "# For 32 batches of 100 neurons each\n",
- "input_current = jnp.ones((32, 100)) * 2.0 * u.nA\n",
- "neuron(input_current)\n",
- "\n",
- "# Output shape: (batch_in_size, in_size)\n",
- "spikes = neuron.get_spike()\n",
- "print(f\"Spikes shape: {spikes.shape}\") # Should be (32, 100)"
- ],
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Spikes shape: (32, 100)\n"
- ]
- }
- ],
- "execution_count": 76
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Complete Example\n",
- "\n",
- "Here's a complete example simulating a LIF neuron:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.702508Z",
- "start_time": "2025-11-13T09:26:27.476680Z"
- }
- },
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Set time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create neuron\n",
- "neuron = brainpy.state.LIF(\n",
- " in_size=1,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " spk_reset='hard'\n",
- ")\n",
- "\n",
- "# Initialize\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Simulation parameters\n",
- "duration = 200. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "# Input current (step input)\n",
- "def get_input():\n",
- " t = brainstate.environ.get('t')\n",
- " return u.math.where(\n",
- " t > 50*u.ms,\n",
- " jnp.ones(1) * 20.0 * u.mA, # Array of in_size 1\n",
- " jnp.zeros(1) * u.mA, # Array of in_size 1\n",
- " )\n",
- "\n",
- "def step_run(i, t):\n",
- " with brainstate.environ.context(i=i, t=t):\n",
- " neuron(get_input())\n",
- " return neuron.V.value, neuron.get_spike()\n",
- "\n",
- "# Run simulation\n",
- "voltages, spikes = brainstate.transform.for_loop(step_run, jnp.arange(times.size), times)\n",
- "\n",
- "# Plot results\n",
- "voltages = u.math.asarray(voltages)\n",
- "times_plot = times.to_decimal(u.ms)\n",
- "voltages_plot = voltages.to_decimal(u.mV).squeeze() # Remove in_size dimension\n",
- "\n",
- "plt.figure(figsize=(10, 4))\n",
- "plt.plot(times_plot, voltages_plot)\n",
- "plt.axhline(y=-50, color='r', linestyle='--', label='Threshold')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Membrane Potential (mV)')\n",
- "plt.title('LIF Neuron Response')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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dZhT0jmv14uamhrExsbCbud9E6th+VgXy8baWD7WxbKxNpaPtbF8rItlY22RUD5GzGjEkJ1h0B2gpqYGANC3b98wp4SIiIiIiIisrqamBsnJyZ2+b1NnC8s14/V6ceLECSQlJcFms4U7OUFVV1ejb9+++O677+ByucKdHArA8rEulo21sXysi2VjbSwfa2P5WBfLxtoioXyUUqipqUFOTk6Xo/Ec6Q5gt9uRm5sb7mR0i8vlsmwFJJaPlbFsrI3lY10sG2tj+Vgby8e6WDbWZvXy6WqE22DNyfFEREREREREAjDoJiIiIiIiIgoRBt0RyOl0Yvny5XA6neFOCgXB8rEulo21sXysi2VjbSwfa2P5WBfLxtoklQ8XUiMiIiIiIiIKEY50ExEREREREYUIg24iIiIiIiKiEGHQTURERERERBQiDLojzDPPPIP+/fsjNjYW+fn5+PLLL8OdJC2tWrUKl19+OZKSkpCZmYlrr70WRUVFfseMHz8eNpvN79/ChQvDlGK9rFixosPffsiQIb73GxsbUVBQgF69eiExMRHXX389Tp48GcYU66N///4dysZms6GgoAAA201P+/jjjzFt2jTk5OTAZrPhzTff9HtfKYVly5ahd+/eiIuLw8SJE3Hw4EG/YyoqKjBr1iy4XC6kpKRg3rx5qK2t7cFcyNRV2bjdbixZsgTDhw9HQkICcnJyMGfOHJw4ccLvdwRrb4899lgP50Sms7WduXPndvjbT5482e8Ytp3QOVv5BLsO2Ww2FBYW+o5h+wmN7vShu9NPKy4uxtSpUxEfH4/MzEzcf//9aGlp6cmsnBMG3RHk1VdfxX333Yfly5dj165dGDlyJK6++mqUl5eHO2na2bJlCwoKCvDFF19gw4YNcLvdmDRpEurq6vyOW7BgAUpLS33/nnjiiTClWD+XXHKJ39/+008/9b1377334t///jdee+01bNmyBSdOnMB1110XxtTqY/v27X7lsmHDBgDAjBkzfMew3fScuro6jBw5Es8880zQ95944gn88Y9/xLPPPott27YhISEBV199NRobG33HzJo1C1999RU2bNiAt99+Gx9//DFuu+22nsqCWF2VTX19PXbt2oWHHnoIu3btwvr161FUVIRrrrmmw7GPPPKIX3u66667eiL54p2t7QDA5MmT/f72r7zyit/7bDuhc7byMZdL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9OjRavDgwaqxsdH3O9h2Quds5zallKqqqlLx8fFqzZo1HX6e7Sd0ztaHVurs/bSWlhY1bNgwNWnSJLVnzx71/vvvq4yMDLV06dJwZKlbGHRHmKefflr169dPORwOdcUVV6gvvvgi3EnSEoCg/1588UWllFLFxcXqyiuvVGlpacrpdKoLLrhA3X///aqqqiq8CdfEjTfeqHr37q0cDofq06ePuvHGG9WhQ4d87zc0NKjf/OY3KjU1VcXHx6tf/OIXqrS0NIwp1ssHH3ygAKiioiK/19luet6mTZuCnstuvvlmpVTrtmEPPfSQysrKUk6nU1111VUdyu3MmTNq5syZKjExUblcLnXLLbeompqaMORGlq7K5siRI51ehzZt2qSUUmrnzp0qPz9fJScnq9jYWDV06FC1cuVKv6CP/nddlU99fb2aNGmSysjIUDExMSovL08tWLCgwyAJ207onO3cppRSf/nLX1RcXJyqrKzs8PNsP6Fztj60Ut3rpx09elRNmTJFxcXFqfT0dLV48WLldrt7ODfdZ1NKqRANohMRERERERFpjc90ExEREREREYUIg24iIiIiIiKiEGHQTURERERERBQiDLqJiIiIiIiIQoRBNxEREREREVGIMOgmIiIiIiIiChEG3UREREREREQhwqCbiIiIiIiIKEQYdBMREUWwuXPn4tprrw3b58+ePRsrV64M2e8/cOAAcnNzUVdXF7LPICIiCiWbUkqFOxFERETUkc1m6/L95cuX495774VSCikpKT2TKJP//Oc/mDBhAo4dO4bExMSQfc4vf/lLjBw5Eg899FDIPoOIiChUGHQTERFZVFlZme/rV199FcuWLUNRUZHvtcTExJAGu2czf/58REdH49lnnw3p57zzzjtYsGABiouLER0dHdLPIiIiOt84vZyIiMiisrOzff+Sk5Nhs9n8XktMTOwwvXz8+PG46667sGjRIqSmpiIrKwvPPfcc6urqcMsttyApKQkXXHAB3nvvPb/P2r9/P6ZMmYLExERkZWVh9uzZOH36dKdp83g8eP311zFt2jS/1/v3749HH30Uc+bMQWJiIvLy8vCvf/0Lp06dwvTp05GYmIgRI0Zgx44dvp85duwYpk2bhtTUVCQkJOCSSy7Bu+++63v/pz/9KSoqKrBly5Yf+BclIiLqeQy6iYiIhHnppZeQnp6OL7/8EnfddRfuuOMOzJgxAz/60Y+wa9cuTJo0CbNnz0Z9fT0AoLKyEhMmTMCoUaOwY8cOvP/++zh58iRuuOGGTj9j7969qKqqwmWXXdbhvaeeegrjxo3D7t27MXXqVMyePRtz5szBTTfdhF27dmHQoEGYM2cOjMl2BQUFaGpqwscff4x9+/bh8ccf9xvBdzgcuPTSS/HJJ5+c578UERFR6DHoJiIiEmbkyJH4/e9/j8GDB2Pp0qWIjY1Feno6FixYgMGDB2PZsmU4c+YM9u7dCwD405/+hFGjRmHlypUYMmQIRo0ahRdeeAGbNm3CN998E/Qzjh07hqioKGRmZnZ472c/+xluv/1232dVV1fj8ssvx4wZM3DhhRdiyZIl+Prrr3Hy5EkAQHFxMcaNG4fhw4dj4MCB+PnPf44rr7zS73fm5OTg2LFj5/kvRUREFHoMuomIiIQZMWKE7+uoqCj06tULw4cP972WlZUFACgvLwfQuiDapk2bfM+IJyYmYsiQIQCAw4cPB/2MhoYGOJ3OoIu9mT/f+KyuPv/uu+/Go48+inHjxmH58uW+mwFmcXFxvpF5IiKiSMKgm4iISJiYmBi/7202m99rRqDs9XoBALW1tZg2bRr27Nnj9+/gwYMdRpwN6enpqK+vR3Nzc5efb3xWV58/f/58fPvtt5g9ezb27duHyy67DE8//bTf76yoqEBGRkb3/gBEREQWwqCbiIhIc6NHj8ZXX32F/v3744ILLvD7l5CQEPRnLr30UgCt+2ifD3379sXChQuxfv16LF68GM8995zf+/v378eoUaPOy2cRERH1JAbdREREmisoKEBFRQVmzpyJ7du34/Dhw/jggw9wyy23wOPxBP2ZjIwMjB49Gp9++ukP/vxFixbhgw8+wJEjR7Br1y5s2rQJQ4cO9b1/9OhRlJSUYOLEiT/4s4iIiHoag24iIiLN5eTk4LPPPoPH48GkSZMwfPhwLFq0CCkpKbDbO+8qzJ8/Hy+//PIP/nyPx4OCggIMHToUkydPxoUXXog///nPvvdfeeUVTJo0CXl5eT/4s4iIiHqaTRn7dRARERGdg4aGBlx00UV49dVXMXbs2JB8RnNzMwYPHoy//e1vGDduXEg+g4iIKJQ40k1ERET/k7i4OPz1r3/F6dOnQ/YZxcXFeOCBBxhwExFRxOJINxEREREREVGIcKSbiIiIiIiIKEQYdBMRERERERGFCINuIiIiIiIiohBh0E1EREREREQUIgy6iYiIiIiIiEKEQTcRERERERFRiDDoJiIiIiIiIgoRBt1EREREREREIcKgm4iIiIiIiChEGHQTERERERERhcj/B8YTwbFYo4QQAAAAAElFTkSuQmCC"
- },
- "metadata": {},
- "output_type": "display_data",
- "jetTransient": {
- "display_id": null
- }
- }
- ],
- "execution_count": 77
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Creating Custom Neurons\n",
- "\n",
- "You can create custom neuron models by inheriting from `Neuron`:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.715478Z",
- "start_time": "2025-11-13T09:26:27.709840Z"
- }
- },
- "source": [
- "from brainpy.state import Neuron\n",
- "\n",
- "class MyNeuron(Neuron):\n",
- " def __init__(self, in_size, tau, V_th, **kwargs):\n",
- " super().__init__(in_size, **kwargs)\n",
- "\n",
- " # Store parameters\n",
- " self.tau = tau\n",
- " self.V_th = V_th\n",
- "\n",
- " # Initialize states\n",
- " self.V = brainstate.ShortTermState(\n",
- " braintools.init.Constant(0., unit=u.mV)(in_size)\n",
- " )\n",
- " self.spike = brainstate.ShortTermState(\n",
- " jnp.zeros(in_size)\n",
- " )\n",
- "\n",
- " def update(self, x):\n",
- " # Get time step\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Update membrane potential (custom dynamics)\n",
- " dV = (-self.V.value + x) / self.tau * dt\n",
- " V_new = self.V.value + dV\n",
- "\n",
- " # Check for spikes\n",
- " spike = (V_new >= self.V_th).astype(float)\n",
- "\n",
- " # Reset\n",
- " V_new = jnp.where(spike > 0, 0. * u.mV, V_new)\n",
- "\n",
- " # Update states\n",
- " self.V.value = V_new\n",
- " self.spike.value = spike\n",
- "\n",
- " return spike\n",
- "\n",
- " def get_spike(self):\n",
- " return self.spike.value"
- ],
- "outputs": [],
- "execution_count": 78
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Usage:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.758920Z",
- "start_time": "2025-11-13T09:26:27.752520Z"
- }
- },
- "source": [
- "neuron = MyNeuron(in_size=100, tau=10*u.ms, V_th=1*u.mV)\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Create appropriate input current\n",
- "input_current = jnp.ones(100) * 0.5 * u.nA"
- ],
- "outputs": [],
- "execution_count": 79
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Performance Tips\n",
- "\n",
- "1. **Use JIT compilation** for repeated simulations:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.814559Z",
- "start_time": "2025-11-13T09:26:27.810192Z"
- }
- },
- "source": [
- "@brainstate.transform.jit\n",
- "def simulate_step(input):\n",
- " neuron(input)\n",
- " return neuron.V.value"
- ],
- "outputs": [],
- "execution_count": 80
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. **Batch multiple trials** for parallelism:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.848829Z",
- "start_time": "2025-11-13T09:26:27.840789Z"
- }
- },
- "source": "brainstate.nn.init_all_states(neuron, batch_size=100)",
- "outputs": [
- {
- "data": {
- "text/plain": [
- "MyNeuron(\n",
- " in_size=(100,),\n",
- " out_size=(100,),\n",
- " spk_reset=soft,\n",
- " spk_fun=InvSquareGrad(alpha=100.0),\n",
- " tau=10 * msecond,\n",
- " V_th=1 * mvolt,\n",
- " V=ShortTermState(\n",
- " value=~float32[100] * mvolt\n",
- " ),\n",
- " spike=ShortTermState(\n",
- " value=ShapedArray(float32[100])\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 81,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 81
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "3. **Use appropriate data types**:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.879178Z",
- "start_time": "2025-11-13T09:26:27.874662Z"
- }
- },
- "source": [
- "# Float32 is usually sufficient and faster\n",
- "brainstate.environ.set(precision=32)"
- ],
- "outputs": [],
- "execution_count": 82
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": "4. Use soft reset for higher firing rates:"
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.912742Z",
- "start_time": "2025-11-13T09:26:27.908977Z"
- }
- },
- "source": [
- "# Use soft reset for higher firing rates\n",
- "neuron = brainpy.state.LIF(100, tau=10*u.ms, spk_reset='soft')"
- ],
- "outputs": [],
- "execution_count": 83
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": "5. Use hard reset for precise spike timing:"
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.923213Z",
- "start_time": "2025-11-13T09:26:27.919965Z"
- }
- },
- "cell_type": "code",
- "source": [
- "# Use refractory period for precise timing\n",
- "neuron = brainpy.state.LIFRef(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " tau_ref=2. * u.ms,\n",
- " spk_reset='hard'\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 84
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": "6. Use refractory period for precise timing"
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:26:27.959276Z",
- "start_time": "2025-11-13T09:26:27.954296Z"
- }
- },
- "cell_type": "code",
- "source": [
- "neuron = brainpy.state.LIFRef(\n",
- " 100,\n",
- " tau=10*u.ms,\n",
- " tau_ref=2*u.ms,\n",
- " spk_reset='hard'\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 85
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": "7. Adaptation creates bursting patterns"
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:27:20.880214Z",
- "start_time": "2025-11-13T09:27:20.862053Z"
- }
- },
- "source": [
- "neuron = brainpy.state.ALIF(\n",
- " in_size=100,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " tau_a=200. * u.ms,\n",
- " spk_reset='soft'\n",
- ")\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Adaptation creates bursting patterns\n",
- "neuron = brainpy.state.ALIF(\n",
- " 100,\n",
- " tau=10*u.ms,\n",
- " tau_a=200*u.ms,\n",
- " beta=0.01,\n",
- " spk_reset='soft'\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 89
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "Neurons in `brainpy.state`:\n",
- "\n",
- "✅ **Multiple models**: IF, LIF, LIFRef, ALIF\n",
- "\n",
- "✅ **Physical units**: All parameters with proper units\n",
- "\n",
- "✅ **Flexible reset**: Soft or hard reset modes\n",
- "\n",
- "✅ **Training-ready**: Surrogate gradients for learning\n",
- "\n",
- "✅ **High performance**: JIT compilation and batching\n",
- "\n",
- "✅ **Extensible**: Easy to create custom models\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "- Learn about synapses to connect neurons\n",
- "- Explore projections for network connectivity\n",
- "- Follow tutorials for hands-on practice\n",
- "- See docs for network examples"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/quickstart/core-concepts/projections.ipynb b/docs_state/quickstart/core-concepts/projections.ipynb
deleted file mode 100644
index c2ac62747..000000000
--- a/docs_state/quickstart/core-concepts/projections.ipynb
+++ /dev/null
@@ -1,939 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Projections\n",
- "\n",
- "Projections are `brainpy.state` 's mechanism for connecting neural populations.\n",
- "They implement the **Communication-Synapse-Output (Comm-Syn-Out)** architecture,\n",
- "which separates connectivity, synaptic dynamics, and output computation into modular components.\n",
- "\n",
- "\n",
- "This guide provides a comprehensive understanding of projections in `brainpy.state`.\n",
- "\n",
- "\n",
- "## Overview\n",
- "\n",
- "### What are Projections?\n",
- "\n",
- "A **projection** connects a presynaptic population to a postsynaptic population through:\n",
- "\n",
- "1. **Communication (Comm)**: How spikes propagate through connections\n",
- "2. **Synapse (Syn)**: Temporal filtering and synaptic dynamics\n",
- "3. **Output (Out)**: How synaptic currents affect postsynaptic neurons\n",
- "\n",
- "\n",
- "**Key benefits:**\n",
- "\n",
- "- Modular design (swap components independently)\n",
- "- Biologically realistic (separate connectivity and dynamics)\n",
- "- Efficient (optimized sparse operations)\n",
- "- Flexible (combine components in different ways)\n",
- "\n",
- "\n",
- "### The Comm-Syn-Out Architecture"
- ]
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:46:03.343127Z",
- "start_time": "2025-11-13T11:46:03.339748Z"
- }
- },
- "cell_type": "code",
- "source": [
- "import brainstate\n",
- "import braintools\n",
- "import brainunit as u\n",
- "import numpy as np\n",
- "\n",
- "import brainpy"
- ],
- "outputs": [],
- "execution_count": 22
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:46:27.174926Z",
- "start_time": "2025-11-13T11:46:27.170504Z"
- }
- },
- "cell_type": "code",
- "source": "brainstate.environ.set(dt=0.1 * u.ms)",
- "outputs": [],
- "execution_count": 24
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": [
- "```text\n",
- "Presynaptic Communication Synapse Output Postsynaptic\n",
- "Population ──► (Connectivity) ──► (Dynamics) ──► (Current) ──► Population\n",
- "\n",
- "Spikes ──► Weight matrix ──► g(t) ──► I_syn ──► Neurons\n",
- " Sparse/Dense Expon/Alpha CUBA/COBA\n",
- "```\n",
- "\n",
- "**Flow:**\n",
- "\n",
- "1. Presynaptic spikes arrive\n",
- "2. Communication: Spikes propagate through connectivity matrix\n",
- "3. Synapse: Temporal dynamics filter the signal\n",
- "4. Output: Convert to current/conductance\n",
- "5. Postsynaptic neurons receive input"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "\n",
- "### Types of Projections\n",
- "\n",
- "BrainPy provides two main projection types:\n",
- "\n",
- "**AlignPostProj**\n",
- " - Align synaptic states with postsynaptic neurons\n",
- " - Most common for standard neural networks\n",
- " - Efficient memory layout\n",
- "\n",
- "**AlignPreProj**\n",
- " - Align synaptic states with presynaptic neurons\n",
- " - Useful for certain learning rules\n",
- " - Different memory organization\n",
- "\n",
- "For most use cases, use `AlignPostProj`.\n",
- "\n",
- "## Communication Layer\n",
- "\n",
- "The Communication layer defines **how spikes propagate** through connections.\n",
- "\n",
- "### Dense Connectivity\n",
- "\n",
- "All neurons potentially connected (though weights may be zero).\n",
- "\n",
- "**Use case:** Small networks, fully connected layers"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 232,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Dense linear transformation\n",
- "comm = brainstate.nn.Linear(\n",
- " 100, # in_size\n",
- " 50, # out_size\n",
- " w_init=braintools.init.KaimingNormal(),\n",
- " b_init=None # No bias for synapses\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Memory: O(n_pre × n_post)\n",
- "- Computation: Full matrix multiplication\n",
- "- Best for: Small networks, fully connected architectures\n",
- "\n",
- "### Sparse Connectivity\n",
- "\n",
- "Only a subset of connections exist (biologically realistic).\n",
- "\n",
- "**Use case:** Large networks, biological connectivity patterns\n",
- "\n",
- "#### Event-Based Fixed Probability\n",
- "\n",
- "Connect neurons with fixed probability."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 233,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Sparse random connectivity (2% connection probability)\n",
- "comm = brainstate.nn.EventFixedProb(\n",
- " 1000, # pre_size\n",
- " 800, # post_size\n",
- " conn_num=0.02, # 2% connectivity\n",
- " conn_weight=0.5 # Synaptic weight (unitless for event-based)\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Memory: O(n_pre × n_post × prob)\n",
- "- Computation: Only active connections\n",
- "- Best for: Large-scale networks, biological models\n",
- "\n",
- "#### Event-Based All-to-All\n",
- "\n",
- "All neurons connected (but stored sparsely)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 234,
- "metadata": {},
- "outputs": [],
- "source": [
- "# All-to-all sparse (event-driven)\n",
- "comm = brainstate.nn.AllToAll(\n",
- " 100, # pre_size\n",
- " 100, # post_size\n",
- " 0.3 # Unitless weight\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Event-Based One-to-One\n",
- "\n",
- "One-to-one mapping (same size populations)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 235,
- "metadata": {},
- "outputs": [],
- "source": [
- "size = 100\n",
- "weight = 1.0\n",
- "\n",
- "# One-to-one connections\n",
- "comm = brainstate.nn.OneToOne(\n",
- " size,\n",
- " weight # Unitless weight\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Use case:** Feedforward pathways, identity mappings\n",
- "\n",
- "\n",
- "## Synapse Layer\n",
- "\n",
- "The Synapse layer defines **temporal dynamics** of synaptic transmission.\n",
- "\n",
- "### Exponential Synapse\n",
- "\n",
- "Single exponential decay (most common).\n",
- "\n",
- "**Dynamics:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\tau \\frac{dg}{dt} = -g + \\sum_k \\delta(t - t_k)\n",
- "$$\n",
- "\n",
- "**Implementation:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 236,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Exponential synapse with 5ms time constant\n",
- "syn = brainpy.state.Expon(\n",
- " in_size=100, # Postsynaptic population size\n",
- " tau=5.0 * u.ms # Decay time constant\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Single time constant\n",
- "- Fast computation\n",
- "- Good for most applications\n",
- "\n",
- "**When to use:** Default choice for most models\n",
- "\n",
- "### Alpha Synapse\n",
- "\n",
- "Dual exponential with rise and decay.\n",
- "\n",
- "**Dynamics:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\tau \\frac{dg}{dt} = -g + h \\\\\n",
- "\\tau \\frac{dh}{dt} = -h + \\sum_k \\delta(t - t_k)\n",
- "$$\n",
- "**Implementation:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 237,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Alpha synapse\n",
- "syn = brainpy.state.Alpha(\n",
- " in_size=100,\n",
- " tau=10.0 * u.ms # Characteristic time\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Realistic rise time\n",
- "- Smoother response\n",
- "- Slightly slower computation\n",
- "\n",
- "**When to use:** When rise time matters, more biological realism\n",
- "\n",
- "### NMDA Synapse\n",
- "\n",
- "Voltage-dependent NMDA receptors.\n",
- "\n",
- "**Dynamics:**\n",
- "\n",
- "\n",
- "$$\n",
- "g_{NMDA} = \\frac{g}{1 + \\eta [Mg^{2+}] e^{-\\gamma V}}\n",
- "$$\n",
- "**Implementation:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 238,
- "metadata": {},
- "outputs": [],
- "source": [
- "# NMDA receptor\n",
- "syn = brainpy.state.BioNMDA(\n",
- " in_size=100,\n",
- " T_dur=100.0 * u.ms, # Slow decay\n",
- " T=2.0 * u.ms, # Fast rise\n",
- " alpha1=0.5 / u.mM, # Mg²⁺ sensitivity\n",
- " g_initializer=1.2 * u.mM # Mg²⁺ concentration\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Voltage-dependent\n",
- "- Slow kinetics\n",
- "- Important for plasticity\n",
- "\n",
- "**When to use:** Long-term potentiation, working memory models\n",
- "\n",
- "### AMPA Synapse\n",
- "\n",
- "Fast glutamatergic transmission."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:42:57.610829Z",
- "start_time": "2025-11-13T11:42:57.606831Z"
- }
- },
- "source": [
- "# AMPA receptor (fast excitation)\n",
- "syn = brainpy.state.AMPA(\n",
- " in_size=100,\n",
- " beta=0.5 / u.ms, # Fast decay (~2ms)\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 11
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**When to use:** Fast excitatory transmission\n",
- "\n",
- "### GABA Synapse\n",
- "\n",
- "Inhibitory transmission.\n",
- "\n",
- "**GABAa (fast):**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:19.181623Z",
- "start_time": "2025-11-13T11:43:19.177719Z"
- }
- },
- "source": [
- "# GABAa receptor (fast inhibition)\n",
- "syn = brainpy.state.GABAa(\n",
- " in_size=100,\n",
- " beta=0.16 / u.ms, # ~6ms decay\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 14
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**GABAb (slow):**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:24.009249Z",
- "start_time": "2025-11-13T11:43:24.005919Z"
- }
- },
- "source": [
- "# GABAb receptor (slow inhibition)\n",
- "syn = brainpy.state.GABAa(\n",
- " in_size=100,\n",
- " T_dur=150.0 * u.ms, # Very slow\n",
- " T=3.5 * u.ms\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 15
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**When to use:**\n",
- "- GABAa: Fast inhibition, cortical networks\n",
- "- GABAb: Slow inhibition, rhythm generation\n",
- "\n",
- "### Custom Synapses\n",
- "\n",
- "Create custom synaptic dynamics by subclassing `Synapse`."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:26.083188Z",
- "start_time": "2025-11-13T11:43:26.077812Z"
- }
- },
- "source": [
- "class DoubleExpSynapse(brainpy.state.Synapse):\n",
- " \"\"\"Custom synapse with two time constants.\"\"\"\n",
- "\n",
- " def __init__(self, size, tau_fast=2 * u.ms, tau_slow=10 * u.ms, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " self.tau_fast = tau_fast\n",
- " self.tau_slow = tau_slow\n",
- "\n",
- " # State variables\n",
- " self.g_fast = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.g_slow = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.varshape if batch_size is None else (batch_size, *self.varshape)\n",
- " self.g_fast.value = jnp.zeros(shape)\n",
- " self.g_slow.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, x):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Fast component\n",
- " dg_fast = -self.g_fast.value / self.tau_fast.to_decimal(u.ms)\n",
- " self.g_fast.value += dg_fast * dt.to_decimal(u.ms) + x * 0.7\n",
- "\n",
- " # Slow component\n",
- " dg_slow = -self.g_slow.value / self.tau_slow.to_decimal(u.ms)\n",
- " self.g_slow.value += dg_slow * dt.to_decimal(u.ms) + x * 0.3\n",
- "\n",
- " return self.g_fast.value + self.g_slow.value"
- ],
- "outputs": [],
- "execution_count": 16
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Output Layer\n",
- "\n",
- "The Output layer defines **how synaptic conductance affects neurons**.\n",
- "\n",
- "### CUBA (Current-Based)\n",
- "\n",
- "Synaptic conductance directly becomes current.\n",
- "\n",
- "**Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "I_{syn} = g_{syn}\n",
- "$$\n",
- "**Implementation:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:28.874215Z",
- "start_time": "2025-11-13T11:43:28.869215Z"
- }
- },
- "source": [
- "# Define population sizes\n",
- "pre_size = 100\n",
- "post_size = 50\n",
- "\n",
- "# Define connectivity parameters\n",
- "conn_num = 0.1\n",
- "conn_weight = 0.5\n",
- "\n",
- "comm = brainstate.nn.EventFixedProb(\n",
- " pre_size, post_size, conn_num, conn_weight\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 17
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Simple and fast\n",
- "- No voltage dependence\n",
- "- Good for rate-based models\n",
- "\n",
- "**When to use:**\n",
- "- Abstract models\n",
- "- When voltage dependence not important\n",
- "- Faster computation needed\n",
- "\n",
- "### COBA (Conductance-Based)\n",
- "\n",
- "Synaptic conductance with reversal potential.\n",
- "\n",
- "**Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "I_{syn} = g_{syn} (E_{syn} - V_{post})\n",
- "$$\n",
- "**Implementation:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:29.757135Z",
- "start_time": "2025-11-13T11:43:29.753741Z"
- }
- },
- "source": [
- "# Excitatory conductance-based\n",
- "out_exc = brainpy.state.COBA(E=0.0 * u.mV)\n",
- "\n",
- "# Inhibitory conductance-based\n",
- "out_inh = brainpy.state.COBA(E=-80.0 * u.mV)"
- ],
- "outputs": [],
- "execution_count": 18
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Characteristics:**\n",
- "\n",
- "- Voltage-dependent\n",
- "- Biologically realistic\n",
- "- Self-limiting (saturates near reversal)\n",
- "\n",
- "**When to use:**\n",
- "- Biologically detailed models\n",
- "- When voltage dependence matters\n",
- "- Shunting inhibition needed\n",
- "\n",
- "### MgBlock (NMDA)\n",
- "\n",
- "Voltage-dependent magnesium block for NMDA."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:43:31.336047Z",
- "start_time": "2025-11-13T11:43:31.332070Z"
- }
- },
- "source": [
- "# NMDA with Mg²⁺ block\n",
- "out_nmda = brainpy.state.MgBlock(\n",
- " E=0.0 * u.mV,\n",
- " cc_Mg=1.2 * u.mM,\n",
- " alpha=0.062 / u.mV,\n",
- " beta=3.57\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 19
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**When to use:** NMDA receptors, voltage-dependent plasticity\n",
- "\n",
- "## Complete Projection Examples\n",
- "\n",
- "### Example 1: Simple Feedforward"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:47:02.873592Z",
- "start_time": "2025-11-13T11:47:02.423022Z"
- }
- },
- "source": [
- "# Create populations\n",
- "pre = brainpy.state.LIF(100, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "post = brainpy.state.LIF(50, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- "# Create projection: 100 → 50 neurons\n",
- "proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(\n",
- " 100, # pre_size\n",
- " 50, # post_size\n",
- " conn_num=0.1, # 10% connectivity\n",
- " conn_weight=0.5 * u.mS # Weight\n",
- " ),\n",
- " syn=brainpy.state.Expon(\n",
- " in_size=50, # Postsynaptic size\n",
- " tau=5.0 * u.ms\n",
- " ),\n",
- " out=brainpy.state.CUBA(),\n",
- " post=post # Postsynaptic population\n",
- ")\n",
- "\n",
- "# Initialize\n",
- "brainstate.nn.init_all_states([pre, post, proj])\n",
- "\n",
- "\n",
- "# Simulate\n",
- "def step(t, i, inp):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " # Update neurons\n",
- " pre(inp)\n",
- "\n",
- " # Get presynaptic spikes\n",
- " pre_spikes = pre.get_spike()\n",
- "\n",
- " # Update projection\n",
- " proj(pre_spikes)\n",
- "\n",
- " post(0.0 * u.nA) # Projection provides input\n",
- "\n",
- " return pre.get_spike(), post.get_spike()\n",
- "\n",
- "\n",
- "indices = np.arange(1000)\n",
- "times = indices * brainstate.environ.get_dt()\n",
- "inputs = brainstate.random.uniform(30., 50., indices.shape) * u.nA\n",
- "_ = brainstate.transform.for_loop(step, times, indices, inputs)"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(Array([[0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " ...,\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.]], dtype=float32),\n",
- " Array([[0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " ...,\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.],\n",
- " [0., 0., 0., ..., 0., 0., 0.]], dtype=float32))"
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 27
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 2: Excitatory-Inhibitory Network"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:51:00.592366Z",
- "start_time": "2025-11-13T11:50:59.048927Z"
- }
- },
- "source": [
- "class EINetwork(brainstate.nn.Module):\n",
- " def __init__(self, n_exc=800, n_inh=200):\n",
- " super().__init__()\n",
- "\n",
- " # Populations\n",
- " self.E = brainpy.state.LIF(n_exc, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=15 * u.ms)\n",
- " self.I = brainpy.state.LIF(n_inh, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- " # E → E projection (AMPA, excitatory)\n",
- " self.E2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_exc, conn_num=0.02, conn_weight=0.6 * u.mS),\n",
- " syn=brainpy.state.Expon(n_exc, tau=2. * u.ms),\n",
- " out=brainpy.state.COBA(E=0.0 * u.mV),\n",
- " post=self.E\n",
- " )\n",
- "\n",
- " # E → I projection (AMPA, excitatory)\n",
- " self.E2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_inh, conn_num=0.02, conn_weight=0.6 * u.mS),\n",
- " syn=brainpy.state.Expon(n_inh, tau=2. * u.ms),\n",
- " out=brainpy.state.COBA(E=0.0 * u.mV),\n",
- " post=self.I\n",
- " )\n",
- "\n",
- " # I → E projection (GABAa, inhibitory)\n",
- " self.I2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_exc, conn_num=0.02, conn_weight=6.7 * u.mS),\n",
- " syn=brainpy.state.Expon(n_exc, tau=6. * u.ms),\n",
- " out=brainpy.state.COBA(E=-80.0 * u.mV),\n",
- " post=self.E\n",
- " )\n",
- "\n",
- " # I → I projection (GABAa, inhibitory)\n",
- " self.I2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_inh, conn_num=0.02, conn_weight=6.7 * u.mS),\n",
- " syn=brainpy.state.Expon(n_inh, tau=6. * u.ms),\n",
- " out=brainpy.state.COBA(E=-80.0 * u.mV),\n",
- " post=self.I\n",
- " )\n",
- "\n",
- " def update(self, i, inp_e, inp_i):\n",
- " t = brainstate.environ.get_dt() * i\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " # Get spikes BEFORE updating neurons\n",
- " spk_e = self.E.get_spike()\n",
- " spk_i = self.I.get_spike()\n",
- "\n",
- " # Update all projections\n",
- " self.E2E(spk_e)\n",
- " self.E2I(spk_e)\n",
- " self.I2E(spk_i)\n",
- " self.I2I(spk_i)\n",
- "\n",
- " # Update neurons (projections provide synaptic input)\n",
- " self.E(inp_e)\n",
- " self.I(inp_i)\n",
- "\n",
- " return spk_e, spk_i\n",
- "\n",
- "\n",
- "net = EINetwork()\n",
- "brainstate.nn.init_all_states(net)\n",
- "_ = brainstate.transform.for_loop(net.update, indices, inputs, inputs)"
- ],
- "outputs": [],
- "execution_count": 32
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 3: Multi-Timescale Synapses\n",
- "\n",
- "Combine AMPA (fast) and NMDA (slow) for realistic excitation."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 248,
- "metadata": {},
- "outputs": [],
- "source": [
- "class DualExcitatory(brainstate.nn.Module):\n",
- " \"\"\"E → E with both AMPA and NMDA.\"\"\"\n",
- "\n",
- " def __init__(self, n_pre=100, n_post=100):\n",
- " super().__init__()\n",
- "\n",
- " self.post = brainpy.state.LIF(n_post, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- " # Fast AMPA component\n",
- " self.ampa_proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_pre, n_post, conn_num=0.1, conn_weight=0.3 * u.mS),\n",
- " syn=brainpy.state.AMPA(n_post, tau=2.0 * u.ms),\n",
- " out=brainpy.state.COBA(E=0.0 * u.mV),\n",
- " post=self.post\n",
- " )\n",
- "\n",
- " # Slow NMDA component\n",
- " self.nmda_proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_pre, n_post, conn_num=0.1, conn_weight=0.3 * u.mS),\n",
- " syn=brainpy.state.NMDA(n_post, tau_decay=100.0 * u.ms, tau_rise=2.0 * u.ms),\n",
- " out=brainpy.state.MgBlock(E=0.0 * u.mV, cc_Mg=1.2 * u.mM),\n",
- " post=self.post\n",
- " )\n",
- "\n",
- " def update(self, t, i, pre_spikes):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " # Both projections share same presynaptic spikes\n",
- " self.ampa_proj(pre_spikes)\n",
- " self.nmda_proj(pre_spikes)\n",
- "\n",
- " # Post receives combined input\n",
- " self.post(0.0 * u.nA)\n",
- "\n",
- " return self.post.get_spike()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 4: Delay Projections\n",
- "\n",
- "Add synaptic delays to projections."
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T11:57:15.058629Z",
- "start_time": "2025-11-13T11:57:14.596654Z"
- }
- },
- "source": [
- "\n",
- "\n",
- "# To implement delay, use a separate Delay module\n",
- "delay_time = 5.0 * u.ms\n",
- "\n",
- "\n",
- "# Create a network with delay\n",
- "class DelayedProjection(brainstate.nn.Module):\n",
- " def __init__(self, pre_size, post_size):\n",
- " super().__init__()\n",
- "\n",
- " # Define post_neurons for demonstration\n",
- " self.post = brainpy.state.LIF(100, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- " self.delay = self.post.output_delay(delay_time)\n",
- "\n",
- " # Standard projection\n",
- " self.proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(pre_size, post_size, conn_num=0.1, conn_weight=0.5 * u.mS),\n",
- " syn=brainpy.state.Expon(post_size, tau=5.0 * u.ms),\n",
- " out=brainpy.state.CUBA(),\n",
- " post=self.post\n",
- " )\n",
- "\n",
- " def update(self, inp=0. * u.nA):\n",
- " # Retrieve delayed spikes\n",
- " delayed_spikes = self.delay()\n",
- " # Update projection with delayed spikes\n",
- " self.proj(delayed_spikes)\n",
- " self.post(inp)\n",
- " # Store current spikes in delay buffer\n",
- " self.delay(self.post.get_spike())\n",
- "\n",
- " def step_run(self, i, inp):\n",
- " t = brainstate.environ.get_dt() * i\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " # Update post neurons\n",
- " self.update(inp)\n",
- " return self.post.get_spike()\n",
- "\n",
- "\n",
- "net = DelayedProjection(100, 100)\n",
- "brainstate.nn.init_all_states(net)\n",
- "_ = brainstate.transform.for_loop(net.step_run, indices, inputs)"
- ],
- "outputs": [],
- "execution_count": 36
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/quickstart/core-concepts/synapses.ipynb b/docs_state/quickstart/core-concepts/synapses.ipynb
deleted file mode 100644
index 134f32fdb..000000000
--- a/docs_state/quickstart/core-concepts/synapses.ipynb
+++ /dev/null
@@ -1,495 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Synapses\n",
- "\n",
- "Synapses model the temporal dynamics of neural connections in `brainpy.state`. This document explains\n",
- "how synapses work, what models are available, and how to use them effectively.\n",
- "\n",
- "## Overview\n",
- "\n",
- "Synapses provide temporal filtering of spike trains, transforming discrete spikes into continuous currents or conductances. They model:\n",
- "\n",
- "- **Postsynaptic potentials** (PSPs)\n",
- "- **Temporal integration** of spike trains\n",
- "- **Synaptic dynamics** (rise and decay)\n",
- "\n",
- "In BrainPy's architecture, synapses are part of the projection system:"
- ]
- },
- {
- "metadata": {},
- "cell_type": "markdown",
- "source": [
- "```text\n",
- "Spikes → [Connectivity] → [Synapse] → [Output] → Neurons\n",
- " ↑\n",
- " Temporal filtering\n",
- "```\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Basic Usage\n",
- "\n",
- "### Creating Synapses\n",
- "\n",
- "Synapses are typically created as part of projections:"
- ]
- },
- {
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:44:12.956284Z",
- "start_time": "2025-11-13T09:44:07.906351Z"
- }
- },
- "cell_type": "code",
- "source": [
- "import brainstate\n",
- "import braintools\n",
- "import brainunit as u\n",
- "import jax.numpy as jnp\n",
- "import matplotlib.pyplot as plt\n",
- "\n",
- "import brainpy"
- ],
- "outputs": [],
- "execution_count": 1
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:44:12.985015Z",
- "start_time": "2025-11-13T09:44:12.956284Z"
- }
- },
- "source": [
- "# Create neurons for demonstration\n",
- "neurons = brainpy.state.LIF(50, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- "# Create synapse descriptor\n",
- "syn = brainpy.state.Expon(\n",
- " in_size=100, # Number of synapses\n",
- " tau=5. * u.ms # Time constant\n",
- ")\n",
- "\n",
- "# Use in projection\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(100, 50, 0.1, 0.5),\n",
- " syn=syn, # Synapse here\n",
- " out=brainpy.state.CUBA(),\n",
- " post=neurons\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 2
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Synapse Lifecycle\n",
- "\n",
- "1. **Creation**: Define synapse with `()` method\n",
- "2. **Integration**: Include in projection\n",
- "3. **Update**: Called automatically by projection\n",
- "4. **Access**: Read synaptic variables as needed"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:56:55.823289Z",
- "start_time": "2025-11-13T09:56:55.338315Z"
- }
- },
- "source": [
- "# Example presynaptic spikes\n",
- "presynaptic_spikes = jnp.zeros(100) # 100 presynaptic neurons\n",
- "\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.AllToAll(100, 100, braintools.init.KaimingNormal(unit=u.mS)),\n",
- " syn=brainpy.state.Expon(100, tau=5.0),\n",
- " out=brainpy.state.COBA(E=0),\n",
- " post=neurons,\n",
- ")\n",
- "brainstate.nn.init_all_states(projection)\n",
- "\n",
- "# During simulation\n",
- "projection(presynaptic_spikes) # Updates synapse internally\n",
- "\n",
- "# Access synaptic variable\n",
- "synaptic_current = projection.syn"
- ],
- "outputs": [],
- "execution_count": 5
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Available Synapse Models\n",
- "\n",
- "For more synapse models, see the [API reference](../../api/index.rst).\n",
- "\n",
- "### Expon (Single Exponential)\n",
- "\n",
- "The simplest and most commonly used synapse model.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\tau \\frac{dg}{dt} = -g\n",
- "$$\n",
- "When spike arrives: \n",
- "$g \\leftarrow g + 1$\n",
- "\n",
- "**Impulse Response:**\n",
- "\n",
- "\n",
- "$$\n",
- "g(t) = \\exp(-t/\\tau)\n",
- "$$\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:57:06.489948Z",
- "start_time": "2025-11-13T09:57:06.486122Z"
- }
- },
- "source": [
- "syn = brainpy.state.Expon(\n",
- " in_size=100,\n",
- " tau=5. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 7
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Parameters:**\n",
- "\n",
- "- `size`: Number of synapses\n",
- "- `tau`: Decay time constant\n",
- "- `g_initializer`: Initial synaptic variable (optional)\n",
- "\n",
- "**Key Features:**\n",
- "\n",
- "- Single time constant\n",
- "- Fast computation\n",
- "- Instantaneous rise\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- General-purpose modeling\n",
- "- Fast simulations\n",
- "- When precise kinetics are not critical\n",
- "\n",
- "**Behavior:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Response to single spike at t=0\n",
- "# g(t) = exp(-t/τ)\n",
- "# Fast rise, exponential decay"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Alpha Synapse\n",
- "\n",
- "A more realistic model with non-instantaneous rise time.\n",
- "\n",
- "**Mathematical Model:**\n",
- "\n",
- "\n",
- "$$\n",
- "\\begin{aligned}\n",
- "\\tau \\frac{dh}{dt} &= -h \\\\\n",
- "\\tau \\frac{dg}{dt} &= -g + h\n",
- "\\end{aligned}\n",
- "$$\n",
- "When spike arrives: $ h\\leftarrow h + 1 $\n",
- "\n",
- "**Impulse Response:**\n",
- "\n",
- "$$\n",
- "g(t) = \\frac{t}{\\tau}\\exp(-t/\\tau)\n",
- "$$\n",
- "**Example:**"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:57:12.935057Z",
- "start_time": "2025-11-13T09:57:12.929863Z"
- }
- },
- "source": [
- "syn = brainpy.state.Alpha(\n",
- " in_size=100,\n",
- " tau=5. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")"
- ],
- "outputs": [],
- "execution_count": 8
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Parameters:**\n",
- "\n",
- "Same as ``Expon``, but produces alpha-shaped response.\n",
- "\n",
- "**Key Features:**\n",
- "\n",
- "- Smooth rise and fall\n",
- "- Biologically realistic\n",
- "- Peak at t = τ\n",
- "\n",
- "**Use cases:**\n",
- "\n",
- "- Biological realism\n",
- "- Detailed cortical modeling\n",
- "- When kinetics matter\n",
- "\n",
- "**Behavior:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Response to single spike at t=0\n",
- "# g(t) = (t/τ) * exp(-t/τ)\n",
- "# Gradual rise to peak at τ, then decay"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Synaptic Variables\n",
- "\n",
- "### The Descriptor Pattern\n",
- "\n",
- "BrainPy synapses use a descriptor pattern:"
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:58:19.442492Z",
- "start_time": "2025-11-13T09:58:19.435903Z"
- }
- },
- "source": [
- "# Define neurons for example\n",
- "example_neurons = brainpy.state.LIF(100, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- "# Instantiated within projection\n",
- "example_projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(100, 100, 0.1, 0.5 * u.mS),\n",
- " syn=brainpy.state.Expon(in_size=100, tau=5 * u.ms),\n",
- " out=brainpy.state.CUBA(),\n",
- " post=example_neurons\n",
- ")\n",
- "brainstate.nn.init_all_states(example_projection)\n",
- "\n",
- "# Access instantiated synapse\n",
- "actual_synapse = example_projection.syn\n",
- "g_value = actual_synapse"
- ],
- "outputs": [],
- "execution_count": 9
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": "### Accessing Synaptic State"
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T09:58:32.435703Z",
- "start_time": "2025-11-13T09:58:32.429353Z"
- }
- },
- "source": [
- "# Define neurons for this example\n",
- "demo_neurons = brainpy.state.LIF(100, V_rest=-65 * u.mV, V_th=-50 * u.mV, tau=10 * u.ms)\n",
- "\n",
- "# Within projection\n",
- "demo_projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(100, 100, conn_num=10, conn_weight=0.5 * u.mS),\n",
- " syn=brainpy.state.Expon(in_size=100, tau=5 * u.ms),\n",
- " out=brainpy.state.CUBA(),\n",
- " post=demo_neurons\n",
- ")\n",
- "\n",
- "# Initialize states\n",
- "brainstate.nn.init_all_states(demo_projection)\n",
- "\n",
- "# Access the synaptic conductance state\n",
- "synaptic_var = demo_projection.syn.g.value # Current value with units\n",
- "\n",
- "# Convert to array for plotting\n",
- "g_array = u.get_magnitude(synaptic_var)"
- ],
- "outputs": [],
- "execution_count": 10
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": "## Synaptic Dynamics Visualization\n"
- },
- {
- "cell_type": "code",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-11-13T10:06:26.322483Z",
- "start_time": "2025-11-13T10:06:25.930516Z"
- }
- },
- "source": [
- "# Set simulation timestep\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create different synapses (without unit initializers to avoid mismatch)\n",
- "expon = brainpy.state.Expon(1, tau=5 * u.ms)\n",
- "alpha = brainpy.state.Alpha(1, tau=5 * u.ms)\n",
- "ampa = brainpy.state.AMPA(1, T=2 * u.mM)\n",
- "gaba = brainpy.state.GABAa(1, T=1. * u.mM)\n",
- "\n",
- "# Initialize\n",
- "for syn in [expon, alpha, ampa, gaba]:\n",
- " brainstate.nn.init_all_states(syn)\n",
- "\n",
- "# Single spike at t=0 (dimensionless spike count)\n",
- "spike_input = jnp.zeros(100) * u.mS\n",
- "spike_input = spike_input.at[0].set(1.0 * u.mS)\n",
- "\n",
- "# Simulate\n",
- "times = u.math.arange(0 * u.ms, 50 * u.ms, 0.1 * u.ms)\n",
- "responses = {\n",
- " 'Expon': [],\n",
- " 'Alpha': [],\n",
- " 'AMPA': [],\n",
- " 'GABAa': []\n",
- "}\n",
- "\n",
- "for syn, name in zip([expon, alpha], ['Expon', 'Alpha']):\n",
- " brainstate.nn.init_all_states(syn)\n",
- "\n",
- "\n",
- " def step_run(i, t):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " inp = u.math.where(i == 0, 1.0 * u.mS, 0.0 * u.mS)\n",
- " g_val = syn(inp)\n",
- " return g_val\n",
- "\n",
- "\n",
- " responses[name] = brainstate.transform.for_loop(\n",
- " step_run, u.math.arange(times.size), times,\n",
- " )\n",
- "\n",
- "for syn, name in zip([ampa, gaba], ['AMPA', 'GABAa']):\n",
- " brainstate.nn.init_all_states(syn)\n",
- "\n",
- "\n",
- " def step_run(i, t):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " inp = u.math.where(i == 0, 1.0, 0.0)\n",
- " g_val = syn(inp)\n",
- " return g_val\n",
- "\n",
- "\n",
- " responses[name] = brainstate.transform.for_loop(\n",
- " step_run, u.math.arange(times.size), times,\n",
- " )\n",
- "\n",
- "# Plot\n",
- "plt.figure(figsize=(10, 6))\n",
- "for name, response in responses.items():\n",
- " plt.plot(times, response, label=name, linewidth=2)\n",
- "\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Synaptic Variable (normalized)')\n",
- "plt.title('Comparison of Synapse Models (Single Spike)')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.show()"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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zLQef//99w3AmDFjhvXY2LFjDcDms8nL9OnTDcDw8vIybr75ZuPFF180/vrrL5s2DMMwdu/ebQDGhx9+aHO8d+/eRnR0tGE2mw3DMIw//vjDAIyaNWsaqamp1vPeeecdAzC2bt1qPXbl98swDGPixImGyWSy6Rf57QPDhw83goKCjIyMjDzf7yuvvGL4+/sbe/bssTn+7LPPGu7u7sbhw4fzvNYwDKN9+/ZG7dq1DcMwjCZNmhgPPPCAYRiGce7cOcPLy8uYNWuW9TP4+uuvrdf16dPH8PLyMvbv3289dvz4cSMwMNBo166d9diIESMMwFizZo312OnTp41SpUoZgBEbG2sYhmEkJSUZwcHBxtChQ23iO3nypFGqVCmb41n9IcuUKVPy3T+yS09PN0wmk/HUU0/leC2//cgwcv6MZcV3//3325x3++23G2XLlrU+X79+vQEYI0aMsDlv8ODBOe756aefFvjzys22bdsMX19fAzAaNGhgDB8+3Pjhhx+Mixcv5jg369+8b7/91nosISHBiIiIMBo2bGg9ltVPsv97l71/ffvtt4anp6cxdOhQm8+xY8eORt26dY2UlBTrMbPZbLRq1cqoVq1ajngmTJhgAMapU6eu+h5F5Oo04iQiACQmJgLke/HwL7/8ApDjL/RPPfUUQI4Rnlq1atGyZUvr8+bNmwNwyy23ULFixRzHDxw4kKPNxx9/3Po4a6pdWloaixcvth739fW1Pj537hwJCQm0bds2x7Q6gPbt21OrVq1rvFPLOqE1a9Zw/PjxXF9ft24dp0+f5rHHHrNZr9CjRw9q1KiR62jXI488YvO8bdu2ub7n7BYvXkxaWhojRozAze3yP99Dhw4lKCiowOvP7r//fhYuXEiHDh1YsWIFr7zyCm3btqVatWo2f6W+6aabaN68uU0J6vj4eH799VfuvffeHOWuhwwZYjNtq23btoDt9zb79+vixYucOXOGVq1aYRhGjimbcO0+EBwczMWLF6/6V/2vv/6atm3bUrp0ac6cOWP96tSpE5mZmSxfvvyan1mW/v37891335GWlsY333yDu7u7dbQvu8zMTH777Tf69OlDlSpVrMcjIiLo378/K1assP4M/vLLL7Ro0cJm7VRoaGiO0brff/+d8+fP069fP5v34e7uTvPmzfnjjz/yjDtr7dv8+fPtmp4YHx+PYRiULl06x2v57UdXk9vPxdmzZ62fTdZ02scee8zmvCeeeOKa976ezwugdu3abNq0iQEDBnDw4EHeeecd+vTpQ3h4OJ988kmO8yMjI236QlBQEAMHDmTjxo2cPHnymvHOnTuXu+++m4cffpiPPvrI+jMfHx/P0qVLraNzWe/j7NmzdOnShb179+aYIpz1/Tpz5sw12xWRvClxEhHA8j91sKznyY9Dhw7h5uaWo2JbuXLlCA4O5tChQzbHsydHAKVKlQIgKioq1+Pnzp2zOe7m5mbzCydYfpEHbKbYLFiwgBYtWuDj40OZMmUIDQ3lww8/JCEhIcd7qFy58rXeJmBZ+7Vt2zaioqJo1qwZL7/8ss0v/1nvtXr16jmurVGjRo7PwsfHh9DQUJtjpUuXzvGer5RXO15eXlSpUiVHO/bo0qULixYt4vz58yxfvpxhw4Zx6NAhevbsabPwfeDAgaxcudLa1tdff016ejr33Xdfjnte+T3P+uUt+/s8fPgwgwcPpkyZMtb1Xu3btwfI8T3LTx947LHHuOmmm+jWrRsVKlSw/jKf3d69e1m4cCGhoaE2X506dQLsW+h/zz33kJCQwK+//sqcOXPo2bNnrn98iIuL49KlS7n2kZo1a2I2mzly5Ahg+T7nVur8ymv37t0LWP74cOV7+e233676Pu6++25at27Ngw8+SHh4OPfccw9fffVVvpMo44p1ZVny24/ycq0+k/XvzpU/u9eqHAnX93lluemmm5g9ezZnzpxhy5Yt1unADz30kM0fcLJiuvKPCbn9m5Wb2NhYBgwYQN++fXnvvfds7rNv3z4Mw+DFF1/M8T6ypq1e+V6yvl+O3MtLpCRSVT0RASyJU2RkJNu2bbPruvz+jzh72eL8HM/rF7Or+euvv+jduzft2rVj6tSpRERE4OnpyaeffprrPjLZRzuu5q677qJt27Z8//33/Pbbb7zxxhtMmjSJ7777jm7dutkdZ17vuSjw8/Ojbdu2tG3blpCQEMaNG8evv/7KoEGDAEuiMHLkSObMmcNzzz3H559/TpMmTXJNCK71vc3MzOTWW28lPj6eZ555hho1auDv78+xY8cYPHiwXSMhWcLCwti0aROLFi3i119/5ddff+XTTz9l4MCBzJo1C7BUULz11lt5+umnc71H1i+3+REREUGHDh146623WLlyZaFW0sv6fGbPnk25cuVyvH61ct++vr4sX76cP/74g59//pmFCxcyb948brnlFn777bc8v3dlypTBZDJdM8m/Vj/KiyP/PbjS9XxeV3J3d6du3brUrVuXli1bcvPNNzNnzhxr8n29IiIiiIiI4JdffmHdunU0adLE+lrW+xg9ejRdunTJ9forE8ms71dISIhD4hMpqZQ4iYhVz549+fjjj1m9erXNtLrcVKpUCbPZzN69e6lZs6b1+KlTpzh//nyulaeuh9ls5sCBAza/1O7ZswfAWtTh22+/xcfHh0WLFuHt7W0979NPP73u9iMiInjsscd47LHHOH36NI0aNeK1116jW7du1ve6e/dubrnlFpvrdu/e7bDPIns72Ude0tLSiI2NddgvbVmyflk7ceKE9ViZMmXo0aMHc+bM4d5772XlypW8/fbbBbr/1q1b2bNnD7NmzbIpBpHXNLv89AGwjMD16tWLXr16YTabeeyxx/joo4948cUXqVq1KjExMVy4cMFhn1f//v158MEHCQ4Opnv37rmeExoaip+fH7t3787x2q5du3Bzc7OOvlaqVMk6OpLdlddmVbULCwsr0Htxc3OjY8eOdOzYkcmTJzNhwgSef/55/vjjjzzv5+HhQUxMDLGxsfluJ7d+VFBZ/+7ExsbajMpdWa0xN9f7eeUlr/eXNTKU/Y9LufXX3Pj4+LBgwQJuueUWunbtyp9//knt2rUBrD/7np6e+X4fsbGxhISE5BjpFhH7aKqeiFg9/fTT+Pv78+CDD3Lq1Kkcr+/fv99a2SvrF8Qrf2mePHkyQL6rXNnj/ffftz42DIP3338fT09POnbsCFj+CmwymWzKeh88eJAffvihwG1mZmbmmDIWFhZGZGSktex6kyZNCAsLY9q0aTal2H/99Vd27tzpsM+iU6dOeHl58e6779r8BX769OkkJCQUuJ0lS5bkejxrHduVo0n33XcfO3bs4P/+7/9wd3fPtYpifmSNLmR/L4Zh5Fo9Lsu1+sDZs2dtzndzc6NevXoA1u/NXXfdxerVq1m0aFGO+58/f95a7jm//vOf/zB27FimTp2a50am7u7udO7cmfnz59tM0zp16hRffPEFbdq0sU6X7d69O3///Tdr1661nhcXF2eztgws0+KCgoKYMGGCtaJidnFxcXnGfGVlRIAGDRoA5NhO4EotW7Zk3bp1OY7b248KImuEZerU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jZPZbOb48eMEBgZedaM8ERERERG5sRmGQVJSEpGRkbi5XX1MqcQlTsePH1fVHRERERERsTpy5AgVKlS46jklLnEKDAwELB9OUFCQi6OxjIDFxcURGhp6zSxXBNRnxH7qM2Iv9Rmxl/qM2Kuo9JnExESioqKsOcLVlLjEKWt6XlBQUJFJnFJSUggKCtI/NJIv6jNiL/UZsZf6jNhLfUbsVdT6TH6W8Lg+ShERERERkSJOiZOIiIiIiMg1KHESERERERG5hhK3xklEREREpDAZhkFGRgaZmZmuDqXIMJvNpKenk5KS4vQ1Tp6enri7u1/3fZQ4iYiIiIg4SVpaGidOnODSpUuuDqVIMQwDs9lMUlKS0/dWNZlMVKhQgYCAgOu6jxInEREREREnMJvNxMbG4u7uTmRkJF5eXk5PEoqLrFE4Dw8Pp34mhmEQFxfH0aNHqVat2nWNPClxEhERERFxgrS0NMxmM1FRUfj5+bk6nCKlsBIngNDQUA4ePEh6evp1JU4qDiEiIiIi4kRFYZ+iksxRiZm+iyIiIiIiItegxElEREREROQalDiJiIiIiIhcgxInERERERGxMXjwYEwmU46vrl27ujo0l1FVPRERERERyaFr1658+umnNse8vb1dFI3racRJRERERERy8Pb2ply5cjZfpUuXZtmyZXh5efHXX39Zz/3vf/9LWFgYp06dAqBDhw48/vjjPP7445QqVYqQkBBefPFFDMOwXnPu3DkGDRpE6dKl8fPzo1u3buzdu9f6+syZMwkODmbRokXUrFmTgIAAunbtyokTJwrvQ8jGpSNOy5cv54033mD9+vWcOHGC77//nj59+lz1mmXLljFq1Ci2b99OVFQUL7zwAoMHDy6UeEVERERErlev91YQl5Ra6O2GBnrz0xNtrvs+HTp0YMSIEdx3331s3ryZAwcO8OKLL/L1118THh5uPW/WrFk88MADrF27lnXr1vHQQw9RsWJFhg4dCsADDzzA/v37+fHHHwkKCuKZZ56he/fu7NixA09PTwAuXbrEm2++yezZs3Fzc2PAgAGMHj2aOXPmXPf7sJdLE6eLFy9Sv3597r//fu64445rnh8bG0uPHj145JFHmDNnDkuWLOHBBx8kIiKCLl26FELEIiIiIiLXJy4plZOJKa4O45oWLFhAQECAzbHnnnuO5557jldffZXff/+d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O08mkZ5pxtNdg4UiIiIixVHGmTNknDrl6jCuat++fRiGQfXq1W2Oh4SEWKfODRs2jEmTJpGYmMg333zD6tWrARgwYABt27blnXfeISAgwHptQkKC9XlycjKenp589NFHxMTEWM8xm83MnDmT9957D4B77rmHp556itjYWCpXrgxA+fLlGT16tPWaJ554gkWLFvHVV18pcRKoE1mKA3EXScsws+/0BWpGBF37IhEREREpcjxCQoptu2vXrsVsNnPvvfeSmpoKWAo5xMTEUL9+fQAaNGhApUqVmDdvHg888ID12sDAQDZs2ADAxYsX+e2333j00UcJCQmxTvv7/fffuXjxIt27dwcsidqtt97KjBkzeOWVVwDLaNWECRP46quvOHbsGGlpaaSmpuLn53fd7+9qlDgVE7Ujg/hx83HAshGuEicRERGR4im/0+VcqWrVqphMphyFG6pUqQKAr6+v9dj06dPZvn07Hh6XUwuz2cyMGTNsEic3NzeqVq0KgGEY1KpViyVLljBp0iRr4jR9+nTi4+Nt7m82m9myZQvjxo3Dzc2NN954g3feeYe3336bunXr4u/vz4gRI0hLS3P8B5GNEqdiInuBiO3HE7nThbGIiIiIyI2tbNmy3Hrrrbz//vs88cQTea5z2rp1K+vWrWPZsmWUKVPGejw+Pp4OHTqwa9cuatSokWc77u7uJCcnA5Z1VfPnz+fLL7+kdu3a1nMyMzNp06YNv/32G127dmXlypXcdtttDBgwALAkVnv27KFWrVqOeOt5UuJUTNSOzF6SXAUiRERERMS5pk6dSuvWrWnSpAkvv/wy9erVw83NjX/++Yddu3bRuHFjpk+fTrNmzWjXrl2O65s2bcr06dOt+zoZhsHJkycBuHTpEosWLWLRokW89NJLAMyePZuyZcty11132RSeAOjevTvTp0+na9euVKtWjW+++YZVq1ZRunRpJk+ezKlTp5Q4iUWwnxcVSvty9FwyO04kkmk2cHczXftCEREREZECiImJYePGjUyYMIExY8Zw9OhRvL29qVWrFqNHj+ahhx6iSpUqPPPMM7le37dvX9566y0mTJgAQGJiIhEREQB4e3tTsWJFxo0bx7PPPgtY9oG6/fbbcyRNWfe67777OHPmDC+88AIHDhygS5cu+Pn58dBDD9GnTx8SEpw7uGAyDMNwagtFTGJiIqVK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zEzGjBlD//796dKlC+eeey6nnnpqnTqTk5PJyMho5X8pIYQQbUECJyGEEO3CgAEDvPtGo5GYmBj69+/vLUtISAAgJycH0JM8LFu2zPvMVGhoKL169QJg9+7dDd6jsrISq9XaYAKL2vevvldT97/lllt46KGHGDNmDPfff783oKstKCjIO0ImhBAisEngJIQQol0wm8113iuKUqesOthRVRWAsrIyJk+ezIYNG+psO3furDfyUy02NpaKigqcTmeT96++V1P3v+aaa9izZw/Tpk1j06ZNDBs2jBdeeKFOnQUFBcTFxbXsH0AIIYRfSeAkhBDiuDRkyBC2bNlCp06d6NatW50tJCSkwWsGDRoE6OsstYbU1FRuuOEGPvnkE/7xj3/w+uuv1zm+efNmBg8e3Cr3EkII0bYkcBJCCHFcmjVrFgUFBUydOpW1a9eye/duvvvuO2bOnInH42nwmri4OIYMGcLKlSuP+v633XYb3333Henp6axfv55ly5bRu3dv7/G9e/dy4MABxo0bd9T3EkII0fYkcBJCCHFcSk5O5pdffsHj8TB+/Hj69+/PbbfdRmRkJAZD47/+rrnmGj744IOjvr/H42HWrFn07t2biRMn0qNHD15++WXv8fnz5zN+/HjS0tKO+l5CCCHaniyAK4QQQtRSWVlJz549WbhwIaNHj26TezidTrp37868efMYM2ZMm9xDCCFE65IRJyGEEKKWoKAg3nvvvSYXyj1amZmZ3H333RI0CSFEOyIjTkIIIYQQQgjRDBlxEkIIIYQQQohmSOAkhBBCCCGEEM2QwEkIIYQQQgghmiGBkxBCCCGEEEI0QwInIYQQQgghhGiGBE5CCCGEEEII0QwJnIQQQgghhBCiGRI4CSGEEEIIIUQzJHASQgghhBBCiGb8f9jNULSfGkbHAAAAAElFTkSuQmCC"
- },
- "metadata": {},
- "output_type": "display_data",
- "jetTransient": {
- "display_id": null
- }
- }
- ],
- "execution_count": 18
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/quickstart/index.rst b/docs_state/quickstart/index.rst
deleted file mode 100644
index c3b53d9fe..000000000
--- a/docs_state/quickstart/index.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-Quickstart
-==========
-
-Welcome to the quickstart guide for ``brainpy.state``! This section will help you get up and running
-with the State-based programming paradigm for building and simulating spiking neural networks.
-
-Whether you're new to BrainPy or transitioning from ``brainpy.dyn``, this guide provides everything
-you need to start building neural models with the improved State-based approach.
-
-
-What you'll learn
------------------
-
-This quickstart guide covers:
-
-- **Installation**: How to install BrainPy with the appropriate backend (CPU, GPU, TPU) for your needs
-- **5-Minute Tutorial**: A hands-on introduction to building your first neural network with ``brainpy.state``
-- **Core Concepts**: Understanding the fundamental concepts of State-based programming and how it differs from traditional approaches
-
-
-Getting started
----------------
-
-If you're new to ``brainpy.state``, we recommend following these steps:
-
-1. Start with :doc:`installation` to set up your environment
-2. Follow the :doc:`5min-tutorial` to build your first model
-3. Review :doc:`core-concepts/index` to understand the underlying principles
-
-For experienced users, you can jump directly to the concepts overview or explore the tutorials and examples sections.
-
-
-.. toctree::
- :hidden:
- :maxdepth: 2
-
- installation.rst
- 5min-tutorial.ipynb
- core-concepts/index
-
diff --git a/docs_state/quickstart/installation.rst b/docs_state/quickstart/installation.rst
deleted file mode 100644
index 693bafb16..000000000
--- a/docs_state/quickstart/installation.rst
+++ /dev/null
@@ -1,163 +0,0 @@
-Installation Guide
-==================
-
-``brainpy.state`` is a flexible, efficient, and extensible framework for computational neuroscience and
-brain-inspired computation. This guide will help you install BrainPy on your system.
-
-Requirements
-------------
-
-- Python 3.10 or later
-- pip package manager
-- Supported platforms: Linux (Ubuntu 16.04+), macOS (10.12+), Windows
-
-Basic Installation
-------------------
-
-Install the latest version of BrainPy:
-
-.. code-block:: bash
-
- pip install brainpy -U
-
-This will install BrainPy with CPU support by default.
-
-Hardware-Specific Installation
--------------------------------
-
-Depending on your hardware, you can install BrainPy with optimized support:
-
-CPU Only
-~~~~~~~~
-
-For CPU-only installations:
-
-.. code-block:: bash
-
- pip install brainpy[cpu] -U
-
-This is suitable for development, testing, and small-scale simulations.
-
-GPU Support (CUDA)
-~~~~~~~~~~~~~~~~~~
-
-For NVIDIA GPU acceleration:
-
-**CUDA 12.x:**
-
-.. code-block:: bash
-
- pip install brainpy[cuda12] -U
-
-**CUDA 13.x:**
-
-.. code-block:: bash
-
- pip install brainpy[cuda13] -U
-
-.. note::
- Make sure you have the appropriate CUDA toolkit installed on your system before installing the GPU version.
-
-TPU Support
-~~~~~~~~~~~
-
-For Google Cloud TPU support:
-
-.. code-block:: bash
-
- pip install brainpy[tpu] -U
-
-This is typically used when running on Google Cloud Platform or Colab with TPU runtime.
-
-Ecosystem Installation
-----------------------
-
-To install BrainPy along with the entire ecosystem of tools:
-
-.. code-block:: bash
-
- pip install BrainX -U
-
-This includes:
-
-- ``brainpy``: Main framework
-- ``brainstate``: State management and compilation backend
-- ``brainunit``: Physical units system
-- ``braintools``: Utilities and tools
-- Additional ecosystem packages
-
-Verifying Installation
-----------------------
-
-To verify that BrainPy is installed correctly:
-
-.. code-block:: python
-
- import brainpy
- import brainstate
- import brainunit as u
-
- print(f"BrainPy version: {brainpy.__version__}")
- print(f"BrainState version: {brainstate.__version__}")
-
- # Test basic functionality
- neuron = brainpy.LIF(10)
- print("Installation successful!")
-
-Development Installation
-------------------------
-
-If you want to install BrainPy from source for development:
-
-.. code-block:: bash
-
- git clone https://github.com/brainpy/BrainPy.git
- cd BrainPy
- pip install -e .
-
-This creates an editable installation that reflects your local changes.
-
-Troubleshooting
----------------
-
-Common Issues
-~~~~~~~~~~~~~
-
-**ImportError: No module named 'brainpy'**
-
-Make sure you've activated the correct Python environment and that the installation completed successfully.
-
-**CUDA not found**
-
-If you installed the GPU version but get CUDA errors, ensure that:
-
-1. Your NVIDIA drivers are up to date
-2. CUDA toolkit is installed and matches the version (12.x or 13.x)
-3. Your GPU is CUDA-capable
-
-**Version Conflicts**
-
-If you're upgrading from BrainPy 2.x, you might need to uninstall the old version first:
-
-.. code-block:: bash
-
- pip uninstall brainpy
- pip install brainpy -U
-
-Getting Help
-~~~~~~~~~~~~
-
-If you encounter issues:
-
-- Check the `GitHub Issues `_
-- Read the documentation at `https://brainpy-state.readthedocs.io/ `_
-- Join our community discussions
-
-Next Steps
-----------
-
-Now that you have BrainPy installed, you can:
-
-- Follow the :doc:`5-minute tutorial <5min-tutorial>` for a quick introduction
-- Read about :doc:`core concepts ` to understand BrainPy's architecture
-- Explore the :doc:`tutorials <../tutorials/index>` for detailed guides
diff --git a/docs_state/quickstart/overview.ipynb b/docs_state/quickstart/overview.ipynb
deleted file mode 100644
index 332475645..000000000
--- a/docs_state/quickstart/overview.ipynb
+++ /dev/null
@@ -1,402 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Overview\n",
- "\n",
- "`brainpy.state` introduces a modern, state-based architecture built on top of `brainstate`. This overview will help you understand the key concepts and design philosophy.\n",
- "\n",
- "## What's New\n",
- "\n",
- "`brainpy.state` has been completely rewritten to provide:\n",
- "\n",
- "- **State-based programming**: Built on `brainstate` for efficient state management\n",
- "- **Modular architecture**: Clear separation of concerns (communication, dynamics, outputs)\n",
- "- **Physical units**: Integration with `brainunit` for scientifically accurate simulations\n",
- "- **Modern API**: Cleaner, more intuitive interfaces\n",
- "- **Better performance**: Optimized JIT compilation and memory management\n",
- "\n",
- "## Key Architectural Components\n",
- "\n",
- "`brainpy.state` is organized around several core concepts:\n",
- "\n",
- "### 1. State Management\n",
- "\n",
- "Everything in `brainpy.state` revolves around **states**. States are variables that persist across time steps:\n",
- "\n",
- "- `brainstate.State`: Base state container\n",
- "- `brainstate.ParamState`: Trainable parameters\n",
- "- `brainstate.ShortTermState`: Temporary variables\n",
- "\n",
- "States enable:\n",
- "\n",
- "- Automatic differentiation for training\n",
- "- Efficient memory management\n",
- "- Batching and parallelization\n",
- "\n",
- "### 2. Neurons\n",
- "\n",
- "Neurons are the fundamental computational units:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainunit as u\n",
- "\n",
- "# Create a population of 100 LIF neurons\n",
- "neurons = brainpy.state.LIF(100, tau=10*u.ms, V_th=-50*u.mV)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Key neuron models:\n",
- "\n",
- "- `brainpy.state.IF`: Integrate-and-Fire\n",
- "- `brainpy.state.LIF`: Leaky Integrate-and-Fire\n",
- "- `brainpy.state.LIFRef`: LIF with refractory period\n",
- "- `brainpy.state.ALIF`: Adaptive LIF\n",
- "\n",
- "### 3. Synapses\n",
- "\n",
- "Synapses model the dynamics of neural connections:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Exponential synapse\n",
- "synapse = brainpy.state.Expon(100, tau=5*u.ms)\n",
- "\n",
- "# Alpha synapse (more realistic)\n",
- "synapse = brainpy.state.Alpha(100, tau=5*u.ms)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Synapse models:\n",
- "\n",
- "- `brainpy.state.Expon`: Single exponential decay\n",
- "- `brainpy.state.Alpha`: Double exponential (alpha function)\n",
- "- `brainpy.state.AMPA`: Excitatory receptor dynamics\n",
- "- `brainpy.state.GABAa`: Inhibitory receptor dynamics\n",
- "\n",
- "### 4. Projections\n",
- "\n",
- "Projections connect neural populations:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainstate\n",
- "\n",
- "N_pre=100\n",
- "N_post=50\n",
- "prob=0.1\n",
- "weight=0.5\n",
- "\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(N_pre, N_post, prob, weight),\n",
- " syn=brainpy.state.Expon.desc(N_post, tau=5*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=neurons\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The projection architecture separates:\n",
- "\n",
- "- **Communication**: How spikes are transmitted (connectivity, weights)\n",
- "- **Synaptic dynamics**: How synapses respond (temporal filtering)\n",
- "- **Output mechanism**: How synaptic currents affect neurons (CUBA/COBA)\n",
- "\n",
- "### 5. Networks\n",
- "\n",
- "Networks combine neurons and projections:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {},
- "outputs": [],
- "source": [
- "class EINet(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " self.E = brainpy.state.LIF(800)\n",
- " self.I = brainpy.state.LIF(200)\n",
- " self.E2E = brainpy.state.AlignPostProj(...)\n",
- " self.E2I = brainpy.state.AlignPostProj(...)\n",
- " # ... more projections\n",
- "\n",
- " def update(self, input):\n",
- " # Define network dynamics\n",
- " pass"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Computational Model\n",
- "\n",
- "### Time-Stepped Simulation\n",
- "\n",
- "BrainPy uses discrete time steps for simulation:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Set simulation time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create a simple neuron for demonstration\n",
- "neurons = brainpy.state.LIF(100, tau=10*u.ms, V_th=-50*u.mV)\n",
- "\n",
- "# Initialize all states\n",
- "brainstate.nn.init_all_states(neurons)\n",
- "\n",
- "# Run simulation\n",
- "def step(t, i):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " # Provide input current to the neurons\n",
- " neurons.update(5 * u.nA)\n",
- " return neurons.get_spike()\n",
- "\n",
- "times = u.math.arange(0*u.ms, 1000*u.ms, brainstate.environ.get_dt())\n",
- "indices = u.math.arange(times.size)\n",
- "results = brainstate.transform.for_loop(step, times, indices)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### JIT Compilation\n",
- "\n",
- "BrainPy leverages JAX for Just-In-Time compilation:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a simple network for demonstration\n",
- "network = brainpy.state.LIF(100, tau=10*u.ms, V_th=-50*u.mV)\n",
- "brainstate.nn.init_all_states(network)\n",
- "\n",
- "# Define input current\n",
- "input_current = 5 * u.nA\n",
- "\n",
- "# JIT-compiled simulation function\n",
- "@brainstate.transform.jit\n",
- "def simulate(t, i):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " network.update(input_current)\n",
- " return network.get_spike()\n",
- "\n",
- "# First call compiles, subsequent calls are fast\n",
- "times = u.math.arange(0*u.ms, 100*u.ms, brainstate.environ.get_dt())\n",
- "indices = u.math.arange(times.size)\n",
- "result = brainstate.transform.for_loop(simulate, times, indices)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Benefits:\n",
- "\n",
- "- Near-C performance\n",
- "- Automatic GPU/TPU dispatch\n",
- "- Optimized memory usage\n",
- "\n",
- "### Physical Units\n",
- "\n",
- "``brainpy.state`` integrates `brainunit` for scientific accuracy:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainunit as u\n",
- "\n",
- "# Define parameters with units\n",
- "tau = 10 * u.ms\n",
- "V_threshold = -50 * u.mV\n",
- "current = 5 * u.nA\n",
- "\n",
- "# Units are checked automatically\n",
- "neurons = brainpy.state.LIF(100, tau=tau, V_th=V_threshold)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This prevents unit-related bugs and makes code self-documenting.\n",
- "\n",
- "## Training and Learning\n",
- "\n",
- "``brainpy.state`` supports gradient-based training:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {},
- "outputs": [],
- "source": [
- "import braintools\n",
- "\n",
- "# Create a simple network for training\n",
- "net = brainpy.state.LIF(10, tau=10*u.ms, V_th=-50*u.mV)\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "# Define optimizer\n",
- "optimizer = braintools.optim.Adam(lr=1e-3)\n",
- "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n",
- "\n",
- "# Prepare dummy data for demonstration\n",
- "num_steps = 100\n",
- "inputs = u.math.ones((num_steps,)) * 5 * u.nA\n",
- "targets = u.math.zeros((num_steps, 10)) # dummy target\n",
- "\n",
- "# Define loss function\n",
- "def loss_fn():\n",
- " def step(t, i, inp):\n",
- " with brainstate.environ.context(t=t, i=i):\n",
- " net.update(inp)\n",
- " return net.spike.value\n",
- " \n",
- " times = u.math.arange(0*u.ms, num_steps*brainstate.environ.get_dt(), brainstate.environ.get_dt())\n",
- " indices = u.math.arange(times.size)\n",
- " predictions = brainstate.transform.for_loop(step, times, indices, inputs)\n",
- " # Simple MSE loss\n",
- " return u.math.mean((predictions.astype(float) - targets) ** 2)\n",
- "\n",
- "# Training step\n",
- "@brainstate.transform.jit\n",
- "def train_step():\n",
- " grads, loss_value = brainstate.transform.grad(\n",
- " loss_fn,\n",
- " net.states(brainstate.ParamState),\n",
- " return_value=True\n",
- " )()\n",
- " optimizer.update(grads)\n",
- " return loss_value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Key features:\n",
- "\n",
- "- Surrogate gradients for spiking neurons\n",
- "- Automatic differentiation\n",
- "- Various optimizers (Adam, SGD, etc.)\n",
- "\n",
- "## Ecosystem Components\n",
- "\n",
- "`brainpy.state` is part of a larger ecosystem:\n",
- "\n",
- "### brainstate\n",
- "\n",
- "The foundation for state management and compilation:\n",
- "\n",
- "- State-based IR construction\n",
- "- JIT compilation\n",
- "- Program augmentation (batching, etc.)\n",
- "\n",
- "### brainunit\n",
- "\n",
- "Physical units system:\n",
- "\n",
- "- SI units support\n",
- "- Automatic unit checking\n",
- "- Unit conversions\n",
- "\n",
- "### braintools\n",
- "\n",
- "Utilities and tools:\n",
- "\n",
- "- Optimizers (`braintools.optim`)\n",
- "- Initialization (`braintools.init`)\n",
- "- Metrics and losses (`braintools.metric`)\n",
- "- Surrogate gradients (`braintools.surrogate`)\n",
- "- Visualization (`braintools.visualize`)\n",
- "\n",
- "## Design Philosophy\n",
- "\n",
- "`brainpy.state` follows these principles:\n",
- "\n",
- "1. **Explicit over implicit**: Clear, readable code\n",
- "2. **Modular composition**: Build complex models from simple components\n",
- "3. **Performance by default**: JIT compilation and optimization built-in\n",
- "4. **Scientific accuracy**: Physical units and biologically realistic models\n",
- "5. **Extensibility**: Easy to add custom components\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "Now that you understand the core concepts:\n",
- "\n",
- "- Try the [5-minute tutorial](5min-tutorial.ipynb) to get hands-on experience\n",
- "- Read the detailed [core concepts](../core-concepts/index.rst) documentation\n",
- "- Explore [basic tutorials](../tutorials/index.rst) to learn each component\n",
- "- Check out the [examples gallery](../examples/gallery.rst) for real-world models"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/advanced/05-snn-training.ipynb b/docs_state/tutorials/advanced/05-snn-training.ipynb
deleted file mode 100644
index 27627f581..000000000
--- a/docs_state/tutorials/advanced/05-snn-training.ipynb
+++ /dev/null
@@ -1,925 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 5: Training Spiking Neural Networks\n",
- "\n",
- "**Duration:** ~45 minutes | **Prerequisites:** Basic Tutorials 1-4\n",
- "\n",
- "## Learning Objectives\n",
- "\n",
- "By the end of this tutorial, you will:\n",
- "\n",
- "- ✅ Understand surrogate gradient methods for training SNNs\n",
- "- ✅ Implement backpropagation through time (BPTT) for SNNs\n",
- "- ✅ Use appropriate loss functions for spike-based learning\n",
- "- ✅ Configure optimizers and learning rates\n",
- "- ✅ Train an SNN classifier on real datasets\n",
- "- ✅ Evaluate and visualize training progress\n",
- "\n",
- "## Overview\n",
- "\n",
- "Training spiking neural networks is challenging because spike generation is a discrete, non-differentiable operation. In this tutorial, we'll learn how to overcome this using **surrogate gradient methods**, which allow us to train SNNs using standard gradient-based optimization.\n",
- "\n",
- "**Key Concepts:**\n",
- "- **The gradient problem**: Spike generation has zero gradient almost everywhere\n",
- "- **Surrogate gradients**: Use smooth approximations during backpropagation\n",
- "- **BPTT for SNNs**: Unroll network dynamics through time\n",
- "- **Rate-based losses**: Train on spike rates or membrane potentials\n",
- "- **Temporal credit assignment**: Learn when to spike\n",
- "\n",
- "Let's start by understanding why training SNNs is difficult and how we can solve it!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import jax.numpy as jnp\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "\n",
- "# Set random seed for reproducibility\n",
- "brainstate.random.seed(42)\n",
- "\n",
- "# Configure environment\n",
- "brainstate.environ.set(dt=1.0 * u.ms)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: The Gradient Problem\n",
- "\n",
- "Let's visualize why training SNNs is challenging. The spike generation function is a Heaviside step function:\n",
- "\n",
- "$$\n",
- "S(V) = \\begin{cases}\n",
- "1 & \\text{if } V \\geq V_{th} \\\\\n",
- "0 & \\text{if } V < V_{th}\n",
- "\\end{cases}\n",
- "$$\n",
- "\n",
- "The gradient of this function is:\n",
- "\n",
- "$$\n",
- "\\frac{dS}{dV} = \\begin{cases}\n",
- "\\infty & \\text{at } V = V_{th} \\\\\n",
- "0 & \\text{everywhere else}\n",
- "\\end{cases}\n",
- "$$\n",
- "\n",
- "This makes gradient-based learning impossible! Let's see this visually."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Heaviside step function\n",
- "def heaviside(x, threshold=0.0):\n",
- " return (x >= threshold).astype(float)\n",
- "\n",
- "# Voltage values\n",
- "V = np.linspace(-2, 2, 1000)\n",
- "V_th = 0.0\n",
- "\n",
- "# Spike function and its \"gradient\"\n",
- "spikes = heaviside(V, V_th)\n",
- "# Numerical gradient (will be mostly zeros)\n",
- "grad_spike = np.gradient(spikes, V)\n",
- "\n",
- "# Plot\n",
- "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n",
- "\n",
- "# Spike function\n",
- "axes[0].plot(V, spikes, 'b-', linewidth=2)\n",
- "axes[0].axvline(V_th, color='r', linestyle='--', label='Threshold')\n",
- "axes[0].set_xlabel('Membrane Potential (V)', fontsize=12)\n",
- "axes[0].set_ylabel('Spike Output', fontsize=12)\n",
- "axes[0].set_title('Spike Generation Function', fontsize=14, fontweight='bold')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Gradient (problematic!)\n",
- "axes[1].plot(V, grad_spike, 'r-', linewidth=2)\n",
- "axes[1].axvline(V_th, color='r', linestyle='--', label='Threshold')\n",
- "axes[1].set_xlabel('Membrane Potential (V)', fontsize=12)\n",
- "axes[1].set_ylabel('Gradient dS/dV', fontsize=12)\n",
- "axes[1].set_title('Gradient (Problematic!)', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "axes[1].set_ylim(-0.1, 0.6)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"❌ Problem: Gradient is zero almost everywhere!\")\n",
- "print(\" This prevents gradient descent from working.\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Surrogate Gradient Solution\n",
- "\n",
- "The solution is **surrogate gradients**: Use the true spike function in the forward pass, but use a smooth approximation during backpropagation.\n",
- "\n",
- "**Common surrogate gradient functions:**\n",
- "\n",
- "1. **Sigmoid**: $\\sigma'(\\beta(V - V_{th}))$\n",
- "2. **ReLU**: $\\max(0, 1 - |V - V_{th}|)$\n",
- "3. **SuperSpike**: $\\frac{1}{(1 + |\\beta(V - V_{th})|)^2}$\n",
- "\n",
- "BrainPy provides these in `braintools.surrogate`. Let's visualize them!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create surrogate gradient functions\n",
- "sigmoid_surrogate = braintools.surrogate.Sigmoid(alpha=4.0)\n",
- "relu_surrogate = braintools.surrogate.ReluGrad(alpha=1.0)\n",
- "superspike_surrogate = braintools.surrogate.SlayerGrad(alpha=4.0)\n",
- "\n",
- "# Voltage range\n",
- "V_range = np.linspace(-2, 2, 1000)\n",
- "V_th = 0.0\n",
- "\n",
- "# Compute surrogate gradients\n",
- "grad_sigmoid = sigmoid_surrogate(V_range - V_th)\n",
- "grad_relu = relu_surrogate(V_range - V_th)\n",
- "grad_superspike = superspike_surrogate(V_range - V_th)\n",
- "\n",
- "# Plot\n",
- "fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n",
- "\n",
- "# Sigmoid surrogate\n",
- "axes[0].plot(V_range, grad_sigmoid, 'g-', linewidth=2, label='Sigmoid surrogate')\n",
- "axes[0].axvline(V_th, color='r', linestyle='--', alpha=0.5)\n",
- "axes[0].set_xlabel('V - V_th', fontsize=12)\n",
- "axes[0].set_ylabel('Surrogate Gradient', fontsize=12)\n",
- "axes[0].set_title('Sigmoid Surrogate', fontsize=14, fontweight='bold')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# ReLU surrogate\n",
- "axes[1].plot(V_range, grad_relu, 'b-', linewidth=2, label='ReLU surrogate')\n",
- "axes[1].axvline(V_th, color='r', linestyle='--', alpha=0.5)\n",
- "axes[1].set_xlabel('V - V_th', fontsize=12)\n",
- "axes[1].set_ylabel('Surrogate Gradient', fontsize=12)\n",
- "axes[1].set_title('ReLU Surrogate', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "# SuperSpike surrogate\n",
- "axes[2].plot(V_range, grad_superspike, 'm-', linewidth=2, label='SuperSpike surrogate')\n",
- "axes[2].axvline(V_th, color='r', linestyle='--', alpha=0.5)\n",
- "axes[2].set_xlabel('V - V_th', fontsize=12)\n",
- "axes[2].set_ylabel('Surrogate Gradient', fontsize=12)\n",
- "axes[2].set_title('SuperSpike Surrogate', fontsize=14, fontweight='bold')\n",
- "axes[2].legend()\n",
- "axes[2].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"✅ Solution: Smooth surrogate gradients enable learning!\")\n",
- "print(\" Forward pass: Use real spikes\")\n",
- "print(\" Backward pass: Use smooth gradient approximation\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Creating a Trainable SNN\n",
- "\n",
- "Now let's create an SNN classifier. We'll build a simple network:\n",
- "\n",
- "**Architecture:**\n",
- "- Input layer: 784 neurons (28×28 image)\n",
- "- Hidden layer: 128 LIF neurons\n",
- "- Output layer: 10 LIF neurons (digits 0-9)\n",
- "\n",
- "**Key for training:**\n",
- "- Use LIF neurons with surrogate gradient spike functions\n",
- "- Use `brainpy.state.Readout` to convert spikes to logits"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "class TrainableSNN(brainstate.nn.Module):\n",
- " \"\"\"Simple feedforward SNN for classification.\"\"\"\n",
- " \n",
- " def __init__(self, n_input=784, n_hidden=128, n_output=10):\n",
- " super().__init__()\n",
- " \n",
- " # Input to hidden projection\n",
- " self.fc1 = brainstate.nn.Linear(n_input, n_hidden, w_init=braintools.init.KaimingNormal())\n",
- " \n",
- " # Hidden LIF neurons with surrogate gradient\n",
- " self.lif1 = brainpy.state.LIF(\n",
- " n_hidden,\n",
- " V_rest=-65.0 * u.mV,\n",
- " V_th=-50.0 * u.mV,\n",
- " V_reset=-65.0 * u.mV,\n",
- " tau=10.0 * u.ms,\n",
- " spike_fun=braintools.surrogate.ReluGrad() # Surrogate gradient!\n",
- " )\n",
- " \n",
- " # Hidden to output projection\n",
- " self.fc2 = brainstate.nn.Linear(n_hidden, n_output, w_init=braintools.init.KaimingNormal())\n",
- " \n",
- " # Output LIF neurons with surrogate gradient\n",
- " self.lif2 = brainpy.state.LIF(\n",
- " n_output,\n",
- " V_rest=-65.0 * u.mV,\n",
- " V_th=-50.0 * u.mV,\n",
- " V_reset=-65.0 * u.mV,\n",
- " tau=10.0 * u.ms,\n",
- " spike_fun=braintools.surrogate.ReluGrad() # Surrogate gradient!\n",
- " )\n",
- " \n",
- " # Readout layer to convert spikes to logits\n",
- " self.readout = brainpy.state.Readout(n_output, n_output)\n",
- " \n",
- " def update(self, x):\n",
- " \"\"\"Forward pass for one time step.\n",
- " \n",
- " Args:\n",
- " x: Input current (batch_size, n_input) with physical units\n",
- " \n",
- " Returns:\n",
- " logits: Output logits (batch_size, n_output)\n",
- " \"\"\"\n",
- " # Input to hidden\n",
- " current1 = self.fc1(x)\n",
- " self.lif1(current1)\n",
- " hidden_spikes = self.lif1.get_spike()\n",
- " \n",
- " # Hidden to output\n",
- " current2 = self.fc2(hidden_spikes)\n",
- " self.lif2(current2)\n",
- " output_spikes = self.lif2.get_spike()\n",
- " \n",
- " # Convert spikes to logits\n",
- " logits = self.readout(output_spikes)\n",
- " \n",
- " return logits\n",
- "\n",
- "# Create network\n",
- "net = TrainableSNN(n_input=784, n_hidden=128, n_output=10)\n",
- "brainstate.nn.init_all_states(net, batch_size=32)\n",
- "\n",
- "print(\"✅ Created trainable SNN with surrogate gradients\")\n",
- "print(f\" Input: 784 neurons\")\n",
- "print(f\" Hidden: 128 LIF neurons\")\n",
- "print(f\" Output: 10 LIF neurons\")\n",
- "print(f\" Total parameters: {sum(p.size for p in net.states(brainstate.ParamState).values())}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: Loss Functions for SNNs\n",
- "\n",
- "For classification, we typically use **cross-entropy loss** on the output logits. The logits are computed by integrating spikes over time.\n",
- "\n",
- "**Loss computation:**\n",
- "1. Run the network for `T` time steps\n",
- "2. Accumulate output logits over time\n",
- "3. Compute cross-entropy loss: $L = -\\sum_i y_i \\log(\\text{softmax}(\\text{logits}_i))$\n",
- "\n",
- "Let's implement the training step!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def loss_fn(network, inputs, labels, n_steps=25):\n",
- " \"\"\"Compute loss for SNN classification.\n",
- " \n",
- " Args:\n",
- " network: SNN model\n",
- " inputs: Input data (batch_size, n_features)\n",
- " labels: True labels (batch_size,)\n",
- " n_steps: Number of simulation time steps\n",
- " \n",
- " Returns:\n",
- " loss: Cross-entropy loss\n",
- " \"\"\"\n",
- " # Reset network state\n",
- " brainstate.nn.init_all_states(network)\n",
- " \n",
- " # Add physical units to input (convert to current)\n",
- " inputs_with_units = inputs * u.nA\n",
- " \n",
- " # Simulate for n_steps and accumulate output\n",
- " def run_step(i):\n",
- " return network(inputs_with_units)\n",
- " \n",
- " # Run simulation and accumulate logits\n",
- " logits_sum = brainstate.transform.for_loop(run_step, jnp.arange(n_steps))\n",
- " logits_sum = jnp.sum(logits_sum, axis=0) # Sum over time\n",
- " \n",
- " # Compute cross-entropy loss\n",
- " loss = braintools.metric.softmax_cross_entropy_with_integer_labels(\n",
- " logits_sum, labels\n",
- " ).mean()\n",
- " \n",
- " return loss\n",
- "\n",
- "def accuracy_fn(network, inputs, labels, n_steps=25):\n",
- " \"\"\"Compute accuracy for SNN classification.\"\"\"\n",
- " # Reset network state\n",
- " brainstate.nn.init_all_states(network)\n",
- " \n",
- " # Add physical units\n",
- " inputs_with_units = inputs * u.nA\n",
- " \n",
- " # Simulate and accumulate logits\n",
- " def run_step(i):\n",
- " return network(inputs_with_units)\n",
- " \n",
- " logits_sum = brainstate.transform.for_loop(run_step, jnp.arange(n_steps))\n",
- " logits_sum = jnp.sum(logits_sum, axis=0)\n",
- " \n",
- " # Compute accuracy\n",
- " predictions = jnp.argmax(logits_sum, axis=1)\n",
- " accuracy = jnp.mean(predictions == labels)\n",
- " \n",
- " return accuracy\n",
- "\n",
- "print(\"✅ Defined loss and accuracy functions\")\n",
- "print(\" Loss: Cross-entropy on accumulated logits\")\n",
- "print(\" Accuracy: Argmax of accumulated logits\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Optimizers and Training Loop\n",
- "\n",
- "Now we'll set up the optimizer and training loop. BrainPy uses `braintools.optim` which provides standard optimizers like Adam, SGD, etc.\n",
- "\n",
- "**Training loop:**\n",
- "1. Get batch of data\n",
- "2. Compute gradients using `brainstate.transform.grad()`\n",
- "3. Update parameters using optimizer\n",
- "4. Track loss and accuracy\n",
- "\n",
- "We'll use synthetic data for this demo (in practice, you'd use MNIST)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create synthetic dataset (in practice, use real data like MNIST)\n",
- "def create_synthetic_data(n_samples=1000, n_features=784, n_classes=10):\n",
- " \"\"\"Create synthetic classification data.\"\"\"\n",
- " X = np.random.randn(n_samples, n_features).astype(np.float32) * 0.5\n",
- " y = np.random.randint(0, n_classes, size=n_samples)\n",
- " return X, y\n",
- "\n",
- "# Generate data\n",
- "X_train, y_train = create_synthetic_data(n_samples=1000)\n",
- "X_test, y_test = create_synthetic_data(n_samples=200)\n",
- "\n",
- "print(\"✅ Created synthetic dataset\")\n",
- "print(f\" Training: {X_train.shape[0]} samples\")\n",
- "print(f\" Test: {X_test.shape[0]} samples\")\n",
- "print(f\" Features: {X_train.shape[1]}\")\n",
- "print(f\" Classes: {len(np.unique(y_train))}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Reset network and create optimizer\n",
- "net = TrainableSNN(n_input=784, n_hidden=128, n_output=10)\n",
- "brainstate.nn.init_all_states(net, batch_size=32)\n",
- "\n",
- "# Create Adam optimizer\n",
- "optimizer = braintools.optim.Adam(learning_rate=1e-3)\n",
- "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n",
- "\n",
- "print(\"✅ Created optimizer\")\n",
- "print(f\" Type: Adam\")\n",
- "print(f\" Learning rate: 1e-3\")\n",
- "print(f\" Trainable parameters: {len(net.states(brainstate.ParamState))}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Training loop\n",
- "n_epochs = 5\n",
- "batch_size = 32\n",
- "n_steps = 25 # Simulation steps per sample\n",
- "\n",
- "train_losses = []\n",
- "train_accs = []\n",
- "test_accs = []\n",
- "\n",
- "print(\"🚀 Starting training...\\n\")\n",
- "\n",
- "for epoch in range(n_epochs):\n",
- " # Shuffle training data\n",
- " indices = np.random.permutation(len(X_train))\n",
- " X_shuffled = X_train[indices]\n",
- " y_shuffled = y_train[indices]\n",
- " \n",
- " epoch_losses = []\n",
- " epoch_accs = []\n",
- " \n",
- " # Mini-batch training\n",
- " n_batches = len(X_train) // batch_size\n",
- " for i in range(n_batches):\n",
- " # Get batch\n",
- " start_idx = i * batch_size\n",
- " end_idx = start_idx + batch_size\n",
- " X_batch = X_shuffled[start_idx:end_idx]\n",
- " y_batch = y_shuffled[start_idx:end_idx]\n",
- " \n",
- " # Compute gradients\n",
- " grads, loss = brainstate.transform.grad(\n",
- " loss_fn,\n",
- " net.states(brainstate.ParamState),\n",
- " return_value=True\n",
- " )(net, X_batch, y_batch, n_steps)\n",
- " \n",
- " # Update parameters\n",
- " optimizer.update(grads)\n",
- " \n",
- " # Track metrics\n",
- " epoch_losses.append(float(loss))\n",
- " \n",
- " # Compute accuracy every 10 batches\n",
- " if i % 10 == 0:\n",
- " acc = accuracy_fn(net, X_batch, y_batch, n_steps)\n",
- " epoch_accs.append(float(acc))\n",
- " \n",
- " # Epoch statistics\n",
- " avg_loss = np.mean(epoch_losses)\n",
- " avg_train_acc = np.mean(epoch_accs) if epoch_accs else 0.0\n",
- " \n",
- " # Test accuracy\n",
- " test_acc = float(accuracy_fn(net, X_test, y_test, n_steps))\n",
- " \n",
- " train_losses.append(avg_loss)\n",
- " train_accs.append(avg_train_acc)\n",
- " test_accs.append(test_acc)\n",
- " \n",
- " print(f\"Epoch {epoch+1}/{n_epochs}:\")\n",
- " print(f\" Loss: {avg_loss:.4f}\")\n",
- " print(f\" Train Acc: {avg_train_acc:.2%}\")\n",
- " print(f\" Test Acc: {test_acc:.2%}\\n\")\n",
- "\n",
- "print(\"✅ Training complete!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Visualizing Training Progress\n",
- "\n",
- "Let's visualize how the loss and accuracy evolved during training."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
- "\n",
- "epochs_range = np.arange(1, n_epochs + 1)\n",
- "\n",
- "# Plot loss\n",
- "axes[0].plot(epochs_range, train_losses, 'b-o', linewidth=2, markersize=8, label='Training Loss')\n",
- "axes[0].set_xlabel('Epoch', fontsize=12)\n",
- "axes[0].set_ylabel('Loss', fontsize=12)\n",
- "axes[0].set_title('Training Loss', fontsize=14, fontweight='bold')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Plot accuracy\n",
- "axes[1].plot(epochs_range, train_accs, 'g-o', linewidth=2, markersize=8, label='Train Accuracy')\n",
- "axes[1].plot(epochs_range, test_accs, 'r-s', linewidth=2, markersize=8, label='Test Accuracy')\n",
- "axes[1].set_xlabel('Epoch', fontsize=12)\n",
- "axes[1].set_ylabel('Accuracy', fontsize=12)\n",
- "axes[1].set_title('Classification Accuracy', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "axes[1].set_ylim(0, 1)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(f\"📊 Final Results:\")\n",
- "print(f\" Final train accuracy: {train_accs[-1]:.2%}\")\n",
- "print(f\" Final test accuracy: {test_accs[-1]:.2%}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Understanding BPTT for SNNs\n",
- "\n",
- "Let's visualize what happens during backpropagation through time (BPTT). The network processes input over multiple time steps, and gradients flow backward through time.\n",
- "\n",
- "**BPTT process:**\n",
- "1. **Forward pass**: Simulate network for T steps, accumulate outputs\n",
- "2. **Backward pass**: Compute gradients backward through all T steps\n",
- "3. **Surrogate gradients**: Used at spike generation points\n",
- "\n",
- "Let's examine the gradient flow!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Analyze gradient magnitudes during training\n",
- "def analyze_gradients(network, inputs, labels, n_steps=25):\n",
- " \"\"\"Compute and analyze gradient magnitudes.\"\"\"\n",
- " grads = brainstate.transform.grad(\n",
- " loss_fn,\n",
- " network.states(brainstate.ParamState)\n",
- " )(network, inputs, labels, n_steps)\n",
- " \n",
- " # Compute gradient norms for each layer\n",
- " grad_norms = {}\n",
- " for name, grad in grads.items():\n",
- " grad_norm = float(jnp.linalg.norm(grad.value.flatten()))\n",
- " grad_norms[name] = grad_norm\n",
- " \n",
- " return grad_norms\n",
- "\n",
- "# Analyze gradients on a batch\n",
- "sample_X = X_train[:32]\n",
- "sample_y = y_train[:32]\n",
- "grad_norms = analyze_gradients(net, sample_X, sample_y)\n",
- "\n",
- "# Plot gradient magnitudes\n",
- "fig, ax = plt.subplots(figsize=(10, 6))\n",
- "\n",
- "layer_names = list(grad_norms.keys())\n",
- "grad_values = list(grad_norms.values())\n",
- "\n",
- "colors = ['blue' if 'fc1' in name else 'green' if 'fc2' in name else 'red' for name in layer_names]\n",
- "\n",
- "bars = ax.bar(range(len(layer_names)), grad_values, color=colors, alpha=0.7)\n",
- "ax.set_xticks(range(len(layer_names)))\n",
- "ax.set_xticklabels(layer_names, rotation=45, ha='right')\n",
- "ax.set_ylabel('Gradient Norm', fontsize=12)\n",
- "ax.set_title('Gradient Magnitudes Across Layers', fontsize=14, fontweight='bold')\n",
- "ax.grid(True, alpha=0.3, axis='y')\n",
- "\n",
- "# Add legend\n",
- "from matplotlib.patches import Patch\n",
- "legend_elements = [\n",
- " Patch(facecolor='blue', alpha=0.7, label='Input Layer'),\n",
- " Patch(facecolor='green', alpha=0.7, label='Hidden Layer'),\n",
- " Patch(facecolor='red', alpha=0.7, label='Readout Layer')\n",
- "]\n",
- "ax.legend(handles=legend_elements, loc='upper right')\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 Gradient Analysis:\")\n",
- "for name, norm in grad_norms.items():\n",
- " print(f\" {name}: {norm:.6f}\")\n",
- "print(\"\\n✅ Surrogate gradients enable backpropagation through spike generation!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 8: Real-World Example - MNIST Classification\n",
- "\n",
- "Now let's see how to train on real data. Here's the complete workflow for MNIST (or Fashion-MNIST):\n",
- "\n",
- "**Steps:**\n",
- "1. Load and preprocess MNIST data\n",
- "2. Convert images to rate-coded spike trains (or use pixel intensities as currents)\n",
- "3. Train SNN classifier\n",
- "4. Evaluate on test set\n",
- "\n",
- "Below is a template you can use with real MNIST data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Template for MNIST training (requires torchvision or tensorflow)\n",
- "\n",
- "def load_mnist_data():\n",
- " \"\"\"Load and preprocess MNIST data.\n",
- " \n",
- " In practice, use:\n",
- " from torchvision import datasets, transforms\n",
- " \n",
- " train_dataset = datasets.MNIST(\n",
- " './data', train=True, download=True,\n",
- " transform=transforms.Compose([\n",
- " transforms.ToTensor(),\n",
- " transforms.Normalize((0.1307,), (0.3081,))\n",
- " ])\n",
- " )\n",
- " \"\"\"\n",
- " pass\n",
- "\n",
- "def train_on_mnist():\n",
- " \"\"\"Complete MNIST training workflow.\"\"\"\n",
- " \n",
- " # 1. Load data\n",
- " # X_train, y_train, X_test, y_test = load_mnist_data()\n",
- " \n",
- " # 2. Create network\n",
- " net = TrainableSNN(n_input=784, n_hidden=256, n_output=10)\n",
- " brainstate.nn.init_all_states(net, batch_size=128)\n",
- " \n",
- " # 3. Create optimizer\n",
- " optimizer = braintools.optim.Adam(learning_rate=1e-3)\n",
- " optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n",
- " \n",
- " # 4. Training loop (epochs, batches, gradient updates)\n",
- " # for epoch in range(n_epochs):\n",
- " # for batch in data_loader:\n",
- " # grads, loss = compute_gradients(...)\n",
- " # optimizer.update(grads)\n",
- " \n",
- " # 5. Evaluation\n",
- " # test_acc = evaluate(net, X_test, y_test)\n",
- " \n",
- " return net\n",
- "\n",
- "print(\"📝 MNIST Training Template:\")\n",
- "print(\"\"\"\\n1. Load MNIST: Use torchvision.datasets.MNIST or tensorflow.keras.datasets.mnist\n",
- "2. Preprocess: Flatten images (28×28 → 784), normalize to [0,1]\n",
- "3. Convert to currents: Multiply by scaling factor (e.g., 5 nA)\n",
- "4. Train: Use same loss_fn and training loop as above\n",
- "5. Expected accuracy: 95-98% on MNIST with proper hyperparameters\n",
- "\n",
- "Key hyperparameters to tune:\n",
- "- Learning rate: Try 1e-3, 5e-4, 1e-4\n",
- "- Hidden size: Try 128, 256, 512\n",
- "- Simulation steps: Try 25, 50, 100\n",
- "- Batch size: Try 32, 64, 128\n",
- "\"\"\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 9: Advanced Training Techniques\n",
- "\n",
- "Here are some advanced techniques to improve SNN training:\n",
- "\n",
- "### 1. Learning Rate Scheduling\n",
- "\n",
- "Reduce learning rate during training for better convergence."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Example: Exponential decay learning rate schedule\n",
- "def create_lr_schedule(initial_lr=1e-3, decay_rate=0.95, decay_steps=1000):\n",
- " \"\"\"Create exponential decay learning rate schedule.\"\"\"\n",
- " def lr_schedule(step):\n",
- " return initial_lr * (decay_rate ** (step / decay_steps))\n",
- " return lr_schedule\n",
- "\n",
- "# Usage:\n",
- "# lr_schedule = create_lr_schedule()\n",
- "# optimizer = braintools.optim.Adam(learning_rate=lr_schedule)\n",
- "\n",
- "print(\"✅ Learning rate scheduling helps with convergence\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### 2. Gradient Clipping\n",
- "\n",
- "Prevent gradient explosion by clipping large gradients."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def clip_gradients(grads, max_norm=1.0):\n",
- " \"\"\"Clip gradients by global norm.\"\"\"\n",
- " # Compute global norm\n",
- " global_norm = jnp.sqrt(\n",
- " sum(jnp.sum(g.value ** 2) for g in grads.values())\n",
- " )\n",
- " \n",
- " # Clip if necessary\n",
- " clip_coef = max_norm / (global_norm + 1e-6)\n",
- " clip_coef = jnp.minimum(1.0, clip_coef)\n",
- " \n",
- " # Apply clipping\n",
- " clipped_grads = {}\n",
- " for name, grad in grads.items():\n",
- " clipped_grads[name] = brainstate.ParamState(grad.value * clip_coef)\n",
- " \n",
- " return clipped_grads\n",
- "\n",
- "# Usage in training loop:\n",
- "# grads = compute_gradients(...)\n",
- "# grads = clip_gradients(grads, max_norm=1.0)\n",
- "# optimizer.update(grads)\n",
- "\n",
- "print(\"✅ Gradient clipping prevents training instabilities\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### 3. Regularization\n",
- "\n",
- "Add L2 regularization to prevent overfitting."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def loss_with_regularization(network, inputs, labels, n_steps=25, l2_weight=1e-4):\n",
- " \"\"\"Loss function with L2 regularization.\"\"\"\n",
- " # Standard loss\n",
- " ce_loss = loss_fn(network, inputs, labels, n_steps)\n",
- " \n",
- " # L2 regularization\n",
- " l2_loss = 0.0\n",
- " for param in network.states(brainstate.ParamState).values():\n",
- " l2_loss += jnp.sum(param.value ** 2)\n",
- " \n",
- " total_loss = ce_loss + l2_weight * l2_loss\n",
- " return total_loss\n",
- "\n",
- "print(\"✅ L2 regularization improves generalization\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ **The gradient problem**: Spike generation is non-differentiable\n",
- "\n",
- "✅ **Surrogate gradients**: Use smooth approximations during backprop\n",
- " - Forward: Real spikes\n",
- " - Backward: Smooth surrogate\n",
- "\n",
- "✅ **SNN architecture**: Create trainable networks with LIF neurons\n",
- "\n",
- "✅ **Loss functions**: Cross-entropy on accumulated spike outputs\n",
- "\n",
- "✅ **Training loop**: BPTT with gradient descent\n",
- " ```python\n",
- " grads, loss = brainstate.transform.grad(loss_fn, params)(net, X, y)\n",
- " optimizer.update(grads)\n",
- " ```\n",
- "\n",
- "✅ **Advanced techniques**: LR scheduling, gradient clipping, regularization\n",
- "\n",
- "**Key code pattern:**\n",
- "```python\n",
- "# 1. Create network with surrogate gradients\n",
- "lif = brainpy.state.LIF(..., spike_fun=braintools.surrogate.ReluGrad())\n",
- "\n",
- "# 2. Define loss over time\n",
- "def loss_fn(net, X, y, n_steps):\n",
- " logits = simulate_for_n_steps(net, X, n_steps)\n",
- " return cross_entropy(logits, y)\n",
- "\n",
- "# 3. Compute gradients and update\n",
- "grads = brainstate.transform.grad(loss_fn, params)(...)\n",
- "optimizer.update(grads)\n",
- "```\n",
- "\n",
- "**Next steps:**\n",
- "- Try training on real MNIST/Fashion-MNIST\n",
- "- Experiment with different surrogate functions\n",
- "- Tune hyperparameters (learning rate, hidden size, simulation steps)\n",
- "- Add recurrent connections for temporal tasks\n",
- "- See Tutorial 6 for incorporating synaptic plasticity\n",
- "\n",
- "**References:**\n",
- "- Neftci et al. (2019): \"Surrogate Gradient Learning in Spiking Neural Networks\"\n",
- "- Zenke & Ganguli (2018): \"SuperSpike: Supervised learning in multilayer spiking neural networks\"\n",
- "- Shrestha & Orchard (2018): \"SLAYER: Spike Layer Error Reassignment in Time\"\n",
- "- Wu et al. (2018): \"Spatio-Temporal Backpropagation for Training High-Performance Spiking Neural Networks\""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Exercises\n",
- "\n",
- "Test your understanding:\n",
- "\n",
- "### Exercise 1: Surrogate Function Comparison\n",
- "Compare training with different surrogate gradient functions (Sigmoid, ReLU, SuperSpike). Which works best?\n",
- "\n",
- "### Exercise 2: Simulation Steps\n",
- "How does the number of simulation steps (n_steps) affect accuracy and training time? Plot the trade-off.\n",
- "\n",
- "### Exercise 3: Network Architecture\n",
- "Add a second hidden layer. Does deeper architecture improve performance?\n",
- "\n",
- "### Exercise 4: Learning Rate Tuning\n",
- "Implement learning rate scheduling and compare convergence with fixed learning rate.\n",
- "\n",
- "### Exercise 5: Real MNIST\n",
- "Load real MNIST data and train a classifier. Aim for >95% test accuracy!\n",
- "\n",
- "**Bonus Challenge:** Implement online learning where the network is trained on streaming data one sample at a time (no batches)."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/advanced/06-synaptic-plasticity.ipynb b/docs_state/tutorials/advanced/06-synaptic-plasticity.ipynb
deleted file mode 100644
index 83a99db97..000000000
--- a/docs_state/tutorials/advanced/06-synaptic-plasticity.ipynb
+++ /dev/null
@@ -1,1101 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 6: Synaptic Plasticity\n",
- "\n",
- "**Duration:** ~40 minutes | **Prerequisites:** Basic Tutorials, Tutorial 5\n",
- "\n",
- "## Learning Objectives\n",
- "\n",
- "By the end of this tutorial, you will:\n",
- "\n",
- "- ✅ Understand short-term plasticity (STP) mechanisms\n",
- "- ✅ Implement synaptic depression and facilitation\n",
- "- ✅ Learn spike-timing-dependent plasticity (STDP) principles\n",
- "- ✅ Create adaptive synapses with learning rules\n",
- "- ✅ Build networks with plastic connections\n",
- "- ✅ Combine plasticity with network training\n",
- "\n",
- "## Overview\n",
- "\n",
- "Synaptic plasticity is the ability of synapses to change their strength over time. This is fundamental to learning and memory in biological brains. BrainPy supports multiple forms of plasticity:\n",
- "\n",
- "**Types of plasticity:**\n",
- "- **Short-term plasticity (STP)**: Temporary changes on timescales of milliseconds to seconds\n",
- " - Depression (STD): Synaptic strength decreases with repeated use\n",
- " - Facilitation (STF): Synaptic strength increases with repeated use\n",
- "- **Long-term plasticity**: Persistent changes\n",
- " - STDP: Depends on relative timing of pre and post spikes\n",
- " - Rate-based: Depends on firing rates\n",
- "\n",
- "Let's explore these mechanisms!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import jax.numpy as jnp\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "\n",
- "# Set random seed for reproducibility\n",
- "brainstate.random.seed(42)\n",
- "\n",
- "# Configure environment\n",
- "brainstate.environ.set(dt=0.1 * u.ms)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: Short-Term Depression (STD)\n",
- "\n",
- "Short-term depression models the depletion of neurotransmitter resources. Each spike consumes some fraction of available resources, which recover over time.\n",
- "\n",
- "**STD dynamics:**\n",
- "$$\n",
- "\\frac{dx}{dt} = \\frac{1 - x}{\\tau_d} - u \\cdot x \\cdot \\delta(t - t_{spike})\n",
- "$$\n",
- "\n",
- "Where:\n",
- "- $x$: Fraction of available resources (0 to 1)\n",
- "- $\\tau_d$: Recovery time constant\n",
- "- $u$: Utilization fraction per spike\n",
- "\n",
- "**Effect:** Repeated spikes deplete resources → synaptic current decreases"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Qd8W9X1wPEj2c5O7Cxnkw0hEBIIIewwUkICFMrm37JLWyhlld2SQFv2ChvKLi0QaNkjQFI2AUpCCBACIYtsZ9rOsJ1I+n/OVZ78LEu2rHjoXv2+rT55lmT5Hd17hd/xufcGIpFIRAAAAAAAAIBGFGzMHwYAAAAAAAAoklIAAAAAAABodCSlAAAAAAAA0OhISgEAAAAAAKDRkZQCAAAAAABAoyMpBQAAAAAAgEZHUgoAAAAAAACNjqQUAAAAAAAAGh1JKQAAAAAAADQ6klIAAMB44oknJBAIxG4AqjvooINiY+SMM85o6tMBAMBqJKUAAHDUs88+K2PGjJEuXbpIXl6e5OfnS9++fc1F9YUXXihvvfWW2MCfKNPEWV2Ta6nc9D1xQXxcubm50qZNG+nZs6fsu+++csEFF8gXX3zR1KcJAABg5Eb/AQAALjnttNPkqaeeqnJfSUmJuS1cuFDef/99WbRokUlawV2hUEg2btxobkuXLpVp06bJPffcI8cee6w88sgj0r59+6Y+Reuce+65cuSRR5rjXXfdtalPBwAAq5GUAgDAMZMnT66SkBo+fLhJPmnFzKpVq2TGjBkmOZHJNHnWrl27tL53xIgRcuutt1a5b9KkSVUqhOIf79Wrl9SniooKiUQi0rx5c2kqe+65p5x00kmyadMmmTt3rrz66qtSXFxsHnvhhRdMcvLDDz+UVq1aSabJhPcvGX1PAQBAPYkAAACnXHzxxRH9T7zeBgwYENm6dWu15xQXF0c++uijKvc9/vjjse/TW0VFReTmm2+O7LTTTpFmzZpFevToEfnjH/8YKSsrS/hz//3vf0fGjRsX6dKlSyQvLy9SUFAQ2WeffSK33XZbZOPGjdWe7/9Z+rNfeukl8/zWrVtH8vPzI6NGjarynPhb7969U35PTj/99Crfm8i8efMif/jDHyKDBg2KtGrVKtKiRYvIzjvvHLniiisiq1atqvZ8//np63/99deRo48+OtKhQwdz35dffhlZsGBBlZ87derUyMSJEyM77rijef1ddtkl8tRTT5nX27Bhg2m77t27R5o3bx4ZNmxY5MUXX0w5xvj3VM/Jb926dZHDDz+8ynM0tngrVqyIXHXVVZGhQ4dG2rRpY86lf//+kfPOOy+yaNGiGt9bfU+WLl1q7issLDTfu/vuu0eeeeaZtN6/dNtG79O+OnjwYPN87Y/aL0eMGBH5/e9/H5k2bVqV57/88suRMWPGmHPOzc2NtG3bNtKvXz9zPjfccEMkFAolPe9433//feR3v/udaeOWLVua28CBAyO/+c1vIt99912t79+yZcsi55xzTqRr165m3GnMf//736t9HwAALiApBQCAY/Ti3bvI7dSpU+THH39M6fvik1J6kZ4oGXTqqadW+T5Nep144ok1JpA0gaAX237+xw844IAqXzd2UkoTYpq8SPazNCE3e/bsKt/jPz9NvGgyzf89iZJSw4cPT/j6999/f2Svvfaqdn8gEIhMmTKlXpJSqrS01CRnvOdo0qm8vDz2+CeffGL6TLL3Qdvlgw8+SPreaiJG36tE33v77bfX+f1Lp202b95sEqk19R1/Mi6+3ye66WsmOu/49/i5554zCbNkr6NJuvgEnf/900RYt27dEn7vo48+mnI/AADAFkzfAwDAMXvssUfsePXq1bLjjjvKsGHDzLQ2ncp38MEHy4ABA2p9HV0I/Re/+IUMHjxY/vWvf5npXkqPb7rpJunevbv5+oYbbpDnnnsu9n177723HHbYYfLdd9/J888/b+7T41/+8pfy3//+N+HP0mlknTp1kpNPPlk6duwo3377rRx//PFm7Z7LLrusytQpnZamdOH2+rBgwQI55ZRTZPPmzebrXXbZxcQdDodNrLr2lq7HdNxxx8nXX38tOTk51V7jyy+/NIuKn3rqqTJw4ECZM2eOtGjRotrzpk+fLocffrhpC13Tafny5eb+8847z/z785//3Px8Xfdpw4YNZgqbTjU89NBD6yVWncKp7/Fdd91lvtafodMadRF0nTJ5zDHHmD6jevfubd7vli1byr///W/TJjr9T98HnQ6Y6P3/4YcfzP0XX3yxWWj9sccek/Xr15vHrrzyShNfor6X7P1Lp23effdd+f77783z9TXOPvts6dGjh6xYsUJ+/PFHs56a3wMPPBA71nbRPrd161ZZvHixfPbZZ6bvpkJfW8+/vLzcfK39+PTTTzfvw5NPPmneV31M79NxqHHGmz9/vjlnXbdK33c9Ny/2W265Rc4666yUzgUAAGs0dVYMAADUry1btkT23HPPGis/9t9//8jMmTOrfF98xchFF10Ue0yf63/slVdeMffrtCZvupXedPqdf7rg5ZdfnrD6Rfnvb9euXcKpYfHP03NMR02VUv7pjlrp46+K0equnJyc2OM6zcsTX8mlFT3x4iulDjvssEg4HDaPPfTQQ1UeO+KII2Lfd+WVV8bu1/e3viqllFZl+Z+n1T3qrrvuit3Xvn37yJo1a2Lfo1MLO3fuHHtcn5vsvf34449jj+mx/7E//elPdXr/0mmbF154oUq1XzydfrpkyZLY17vttlvs+fHT+rw2TGX63oUXXhi7PxgMmumIHj3W+7zH9bnJ3j//+6BTPf2PlZSUJGhRAADsRaUUAACO0YoTrUi68cYbTaXKypUrqz3no48+kp/97Gem+qVz584JX8er3lE77bRTlcfWrVtn/tWKlLVr18bu/9WvflWlkkirQrTCw6MLrGvVVqLdAnfYYQdJd2H3b775ptr9Y8eONZU1tfn444+rVPpohUoyn3zyian2iae7sB199NG1/qz/+7//M5Uzqk+fPlUeO/HEE2PH/fv3r/Ze15do7qrm90F/plb61PQ+XHDBBdXu79evn6m68uhx3759TcWTVymWSLL3L5220WonXSBdq5K02k/7wG677WYqBnfffXdTdaaVU54DDjhAZs2aZY51TOyzzz6mikkrBA888EAZMmSIpMK/eYBWQvl35tNjve9///tftef6afWh/31INO7atm2b0vkAAGADklIAADhIL1x1Wt31118vs2fPNtOQPvjgA7PrWmlpqXmO7sSnu/RdcsklCV/DnzSJ3wVNp08pf0JKdenSpcavkyVYBg0aJOl69tlnzfSoeDodMJWkVHwMNdH3bHvO35vyqJo1a5b0MU0s1pZESpcmd/y8BE19vA+FhYXV7tM+4CWlvKl8qb5/6ZxTz5495YknnpA//OEPZsqc9n+9+acwPvzww2Yao9JxotPm3nzzTTOd8Z133jE3z6hRo+T111+X1q1b1/jz/eca3+/j70s2DuITlcnGHQAAriApBQCAw7QqRxMzetP1aK699lpTheNd3OraQMnk5eVVeZ1EOnToUOXr+Kqs+K/bt2+f8HVqu+BvSP4Y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WdW6dWvp378/0/fQqEhKAQAAAABgl5QzR926dTM39e6778rgwYOlc+fODXluQMrKypr6DAAAAAAAQIPvvjdkyBBZvnx50se//vprWbduXTovDaSlvLypzwAAAAAAADR4Uuriiy820/mS+e1vfyuXXnppOi8NpIWkFAAAAAAAdklr4af//ve/cu655yZ9/KijjjI78AENIRQJyieyrzkOb8urWjl9LxiUTcP2lRYt9DCt/HBm0HPfd9/KY8vjqFi1yu44HGyT2LGtXInDpXHiSpu4EgcAAMhaaf0Gs2rVKunUqVPSxzt27ChFRUVpndB9990nffr0kRYtWsjIkSPl888/T/rcb7/9Vo477jjzfF1kfeLEidWec+2115rH/LdBgwaldW7IEIGArJWO5iYSsLZS6vP/BaTrLh1lyEEdpbwiGoeVAgEd9NGbHlseR6RDB7vjcLBNiCODuDJOXGkTV+IAAABZK62klC54/uWXXyZ9fPr06Wktgj5p0iS55JJLZMKECTJjxgwZOnSojBkzJmmCa9OmTdKvXz+56aabpGvXrklfd5dddjFrYHm3jz76qM7nhsxmY6XUMceIlJaKzJ4t8sgjTX02AAAAAABYkJQ65phj5NFHH5VXXnml2mMvv/yyPP744/KLX/yizq97xx13yDnnnCNnnnmm2d1PpwC2atVKHnvssYTPHzFihNx6661y8sknS/PmzZO+bm5urklaebeaqryQ+QKRsPSWheYWkLC1SakVyyvjWLEsGoeVwmGRhQujNz221bY4chYvtjsOB9uEODKIK+PElTZxJQ4AAJC10lpTSqfETZkyxSSetJpp1113Nfd/88038tVXX8nOO+8s1113XZ1es6KiwlRYXXXVVbH7dJ2d0aNHy7Rp02R7zJ07V7p3726mBO6zzz5y4403yg477LBdr4mmE5CIDJGvzfFi6SURS6fv+eMoL+sl1opEdMvN6HEv++PILS4WGTZMrOZYmxjEkRlcGSeutIkrcQAAgKyVVlIqPz9fPv30U7nlllvkhRdekH//+9/m/v79+8s111wjl112mbRu3bpOr7l69WoJhULSpUuXKvfr13PmzJF06bpUTzzxhOy0005m6p4myw444ACTQGvbtm3C7ykvLzc3T0lJifk3HA6bm6303CORiNUxRGkaqqrNmzWu6vdnsmAgEgulrMzidtHz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IC+88IL897//NUluAABQdySlAABZ5aSTTpI999xTSkpK5KWXXpKvv/7a3K+VUnfeeafccccdkq30PWnXrp1kYgJm69atpo2mTJki3377rbl/8eLFcuihh8o777wjBx54oGSTSy+9tKlPIatcffXVprJS++A///lPKSoqMvdrYur111+Xn//85019itbI1M8ZAEDTYPoeACCrHH744eaC/i9/+Yt8+OGHZjqOZ/bs2Qm/R5938sknyw477CDNmzc3F1T77LOP3HfffaZyIp4mun71q19Jnz59zPNbtmxpvveQQw4x1T1Lly6t9j3/+c9/5IgjjpCuXbuac2rfvr3su+++cvvtt8umTZuqPHfhwoVVphTpFEW/gw46KPaYToWr6fseffRRM4VRzzE+saMJIE3i9e7d20yfy8/Pl1133VXOO+88U7EUf6F54403ysiRI83zNAaNWX++l0RKl7bXlVdeKRMnTjRVUg888EBs/aaKigo59dRTq03l00q4p556Sg477DAz3UrPR6f/6Xv8xhtv1DrNc/78+ebnDR482MTeo0cPueSSS6S0tLRO567nde+995r3tkOHDuY8unXrJieccIJMmzYtYbv5nXnmmbFz0v6U6hS/qVOnyvHHHy89e/aM9Vlt5wkTJsjatWurPV9f23s9nbo2ffp0OfLII00iplWrVnLAAQfIRx99lHLcmkS85pprZNy4cdK/f3/zOnl5edKxY0fzWvfcc0+1sZOofz777LOmT+k56JjQ902TkYl+3k033SQDBw408erP/Nvf/pZwfKbjnHPOkcsuu8yMxyeffLLKY4k+N+ra/zxz5syR3//+96bftWnTxsTdr18/8/nzxRdfVHluKBSSxx57zCRmO3XqFHt/Dz74YHn44YfNe+LvD/73dsGCBdXOt3v37rHHr7/++u36DIzvny+//LL5PNOY9DW0H3qPa3Wq/nw//czwv8Znn32W9D0DAFguAgCAw959992I/ufOuz3++ONVHu/QoUPssV/+8pfVvv/qq6+u8v3xtwMOOCCyYcOG2PO//fbbSKtWrWr8njfffDP2/K1bt0ZOPPHEGp+/8847R5YtWxb7ngULFlR5XGP0GzVqVOyx008/Pen36bn7vx46dKh5Xjgcjvz617+u8Zy+/PLL2Ov+8MMPkT59+iR9bvPmzSPPPfdcym2m5+z//kR+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5cqVw/Tp02VNKivx2kL+/Pnj/fWJiIhIH1hTioiIiEhjxAp3YoqeKGgeHh7+0vOiMPrriJXv3N3dZTH1+BQYGIiIiAi7YyI5ZTQa5Yp8L64AKKbulSlTJl7bQERERPrBkVJEREREGiMSUmIlvnbt2qFEiRJo2bIlUqdOjevXr2P9+vVyZNLkyZNf+fOenp6oUaMGtm3bhuHDh8dbu3bs2IFevXrJAu558uSRCSoxxVBM+xNF0qMTxdpFO61TCYmIiIhexKQUERERkQa1bt0aGTJkwJgxYzBu3Dg5EiljxoyyuHinTp3e+POdO3eWiaIbN268VMD8bRUtWlSO4lq7dq1cKTBJkiTy2MaNG/HBBx/Yvi8gIEDWm5o6dWq8vC4RERHpk8HyqmVZiIiIiEhZJpMJBQoUQPPmzTFixIgEfe2JEydi7NixuHTpEry8vBL0tYmIiEgdrClFREREpENiSp2YujdlyhQ8ffo0wV5X1MCaMGGCLILOhBQRERG9DkdKERERERERERFRguNIKSIiIiIiIiIiSnBMShERERERERERUYJjUoqIiIiIiIiIiBIck1JERERERERERJTgmJQiIiIiIiIiIqIEx6QUERERERERERElOCaliIiIiIiIiIgowTEpRURERERERERECY5JKSIiIiIiIiIiSnBMShERERERERERUYJjUoqIiIiIiIiIiJDQ/g82mW5bYHzYJwAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 STD Observations:\n",
- " • Each spike depletes available resources\n",
- " • Synaptic conductance decreases with repeated spikes\n",
- " • Resources recover exponentially between spikes\n",
- " • Implements synaptic fatigue\n"
- ]
- }
- ],
- "source": [
- "# Create synapse with short-term depression\n",
- "class STDSynapse(brainpy.state.Synapse):\n",
- " \"\"\"Synapse with short-term depression.\"\"\"\n",
- " \n",
- " def __init__(self, size, tau=5.0*u.ms, tau_d=200.0*u.ms, U=0.5, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " \n",
- " # Synapse parameters\n",
- " self.tau = tau # Synaptic time constant\n",
- " self.tau_d = tau_d # Depression time constant\n",
- " self.U = U # Utilization fraction\n",
- " \n",
- " # States\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size)) # Conductance\n",
- " self.x = brainstate.ShortTermState(jnp.ones(size)) # Available resources\n",
- " \n",
- " def reset_state(self, batch_size=None):\n",
- " self.g.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.x.value = jnp.ones(self.size if batch_size is None else (batch_size, self.size))\n",
- " \n",
- " def update(self, pre_spike):\n",
- " # Get time step\n",
- " dt = brainstate.environ.get_dt()\n",
- " \n",
- " # Depression: reduce available resources on spike\n",
- " x_new = self.x.value + pre_spike * (-self.U * self.x.value)\n",
- " \n",
- " # Recovery: exponential recovery of resources\n",
- " dx = (1.0 - x_new) / self.tau_d.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.x.value = x_new + dx\n",
- " \n",
- " # Synaptic current: modulated by available resources\n",
- " dg = -self.g.value / self.tau.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.g.value += dg + pre_spike * self.U * self.x.value\n",
- " \n",
- " return self.g.value\n",
- "\n",
- "# Test with spike train\n",
- "std_syn = STDSynapse(size=1, tau=5.0*u.ms, tau_d=200.0*u.ms, U=0.5)\n",
- "brainstate.nn.init_all_states(std_syn)\n",
- "\n",
- "# Generate spike train: 10 spikes at 20 Hz\n",
- "duration = 1000 * u.ms\n",
- "n_steps = int(duration / brainstate.environ.get_dt())\n",
- "spike_times = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500] # in ms\n",
- "spike_indices = [int(t / 0.1) for t in spike_times]\n",
- "\n",
- "# Simulate\n",
- "g_history = []\n",
- "x_history = []\n",
- "\n",
- "for i in range(n_steps):\n",
- " spike = 1.0 if i in spike_indices else 0.0\n",
- " g = std_syn(spike)\n",
- " g_history.append(float(g.item()))\n",
- " x_history.append(float(std_syn.x.value.item()))\n",
- "\n",
- "# Plot\n",
- "times = np.arange(n_steps) * 0.1\n",
- "\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Synaptic conductance\n",
- "axes[0].plot(times, g_history, 'b-', linewidth=2)\n",
- "for st in spike_times:\n",
- " axes[0].axvline(st, color='r', linestyle='--', alpha=0.3)\n",
- "axes[0].set_ylabel('Synaptic Conductance g', fontsize=12)\n",
- "axes[0].set_title('Short-Term Depression', fontsize=14, fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Available resources\n",
- "axes[1].plot(times, x_history, 'g-', linewidth=2)\n",
- "for st in spike_times:\n",
- " axes[1].axvline(st, color='r', linestyle='--', alpha=0.3, label='Spike' if st == spike_times[0] else '')\n",
- "axes[1].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[1].set_ylabel('Available Resources x', fontsize=12)\n",
- "axes[1].set_title('Resource Depletion and Recovery', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 STD Observations:\")\n",
- "print(\" • Each spike depletes available resources\")\n",
- "print(\" • Synaptic conductance decreases with repeated spikes\")\n",
- "print(\" • Resources recover exponentially between spikes\")\n",
- "print(\" • Implements synaptic fatigue\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Short-Term Facilitation (STF)\n",
- "\n",
- "Short-term facilitation models the buildup of calcium in the presynaptic terminal, which increases neurotransmitter release probability.\n",
- "\n",
- "**STF dynamics:**\n",
- "$$\n",
- "\\frac{du}{dt} = \\frac{U - u}{\\tau_f} + U(1 - u) \\cdot \\delta(t - t_{spike})\n",
- "$$\n",
- "\n",
- "Where:\n",
- "- $u$: Utilization parameter (increases with spikes)\n",
- "- $\\tau_f$: Facilitation time constant\n",
- "- $U$: Baseline utilization\n",
- "\n",
- "**Effect:** Repeated spikes increase utilization → synaptic current increases"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAPdCAYAAABba9tpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYVNX5P/B3ZvvSyy69SFFEERAFNRqNolgjaoz6SwSNQWP+xkLssWHvorFg7Bp7TSJK7B00UhQLKCogdZey7C6wde7/+Z7ZO3tndmb77N73zPfzPPNwd2Z29r5zzhn2vvuecwKO4zhCRERERERERETUhoJt+cOIiIiIiIiIiIiASSkiIiIiIiIiImpzTEoREREREREREVGbY1KKiIiIiIiIiIjaHJNSRERERERERETU5piUIiIiIiIiIiKiNsekFBERERERERERtTkmpYiIiIiIiIiIqM0xKUVERERERERERG2OSSkiIiJqkUAgELk9+uij7X065EMHHHBApI+ccsop7X06RERE5BNMShERkbXee++9qIQJbpmZmdKlSxcZMmSITJw4UWbMmCE///xze58qtSMk0uL1k27dusnw4cPl8MMPl1tvvVU2bNjQ3qdKSXTVVVfV6QduX8jPz5f9999f7rzzTikrK2vvUyUiIrJGenufABERUVuqrKw0t+LiYvnpp5/k7bfflmuuuUYuv/xycwsG+feaprrlllsix3vuuafYAH2kqKjI3JYtWyavv/66XHHFFXLHHXfIGWec0d6np86ZZ54pRx55pDneddddRVtfKCwsNLcPPvhAXnrpJXnnnXckLS2tvU+NiIhIPSaliIgoZZxwwgmyxx57yJYtW2TBggXy3//+V6qrq80NVRLr1q2T++67T/wISbTOnTuLH51//vlikz/96U+mkm7Tpk3y6aefmoo7x3Fk+/bt5rHNmzfLxRdfLH7i5/7hjj1tLr30Uunatav5XPjnP/8pBQUF5n4kpmbPni2//vWv2/sUiYiI1OOfg4mIKGUceuihJoGCyihcVC5evFh22GGHyOOzZs2SOXPm1Pm+L774Qv7whz/I0KFDJScnRzp27Chjx46V66+/XrZu3Vrn+YMHD45M/UGyC4mNQw45xEwb7NSpk0yaNEnmz5/f4NpM//rXv2SfffYxP2/gwIFRz/3www/lxBNPNPdnZWWZhMTee+8t99xzj6nsiIVYf//735tzw/MRB773wAMPlEsuuURWr14deW5VVZXMnDnTvB4uytPT06VHjx6yyy67yJQpU+SZZ56p97xjoRrtN7/5jfTv3z9yrrvvvrtceeWVJvHT0PuH9wpVNjiX3Nxc2W+//eSjjz5qcPpVSxIoF1xwgdxwww2mIgbvNeJ3/e1vf5Ovv/66zvc1tU1g48aNpj/utddeZrogvq9fv36mjzz77LMJpxhu27bNnAeSZxkZGaaKy1VeXi533323/PKXv5Tu3bub6Wd9+vSR448/XubOnVvnHNAGF154oRx00EHmvUcfxff06tVLDj74YHniiSdMUi7Wv//9bzOm8DycA+LFGJk8ebJ570KhUINrSi1fvjwqLiQA0b8mTJhg2hrvCc473hRb9NObb77ZTLHE+4afjTGJ97o11jmbNm2a6Qe33XabPPbYY1GPffPNN3Wej3jxXmGsY7of3sO8vDw54ogj5LXXXov7M1ryHi5ZskSOO+4408Z4r/bdd19566234v4cJFKvvvpqk5TH5xDODf3s2GOPlTfffLPO82P7G/rUddddJzvuuKN5rzGW8VmK+72a+tkB69evNwnAMWPGmL6XnZ0tw4YNk//3//6frFy5sp4WIiIiKzhERESWevfdd3ElHbk98sgjdZ7z2WefRT3nkEMOiXr83nvvddLT06Oe472NHDnSWbt2bdT3DBo0KPL4vvvu62RkZNT5vpycHOfDDz+M+j7v4/vtt1/U1126dIk879JLL014Pu73lpaWRp7/9ddfO7m5ufV+z+uvvx55/tSpU+t97oQJExKed+x7PH369Hpfq1+/fs5XX32V8P0bP3583PcvKyvL+eabb6K+78orr4x6TmPhnL3fh34T6/nnn496zumnnx71eFPbxO17vXv3Tvg9Rx99dMJzjO0f55xzjnleQUGBM2bMmISvGQwGnZkzZ0adx+LFi+s9d9xOPfXUet+zeLft27dHnr///vtH7kf/cv30009R34PxEu+1hg8fHvV6cOKJJ8Z97lFHHdXguI8ntv/g3Fxffvll1GMPPPBA1Pdu27bNmThxYr3vB8ZCa72H48aNczp37hy3fZ977rmon4Nx0r9//3p/jtt/Ep1bonY5+eSTo76vqZ8dn3zyidOzZ8+Ez8fn3gcffNCo9iMiIp04fY+IiFIa1kAa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6lSTXBo/frzMnDlTtm7dGsncTZkyRfr162feILjppptMVvCpp56SwYMHy7p168z9HTt2NDese4H1odBQqLbCmlIXXnihDBs2TCZNmtSusVLzOBKUhTLWHFdUBaWDKIXM8dhwHKr/um1ZHFasy2JZm0SOtbIlDpvGiS1tYkscRERE1CxIIH344YdmaaL999/f3Ddo0CCTS4mVk5NjNnSLNwsN1U7u/Sje2XnnneWoo44yiS3kT/75z39KyiSlTjjhhEj5GRJMY8aMkTlz5kQWP1+5cmVUGdh9991nsoK/+c1vol7nyiuvlKuuuspMB/zyyy9N1hANhgzfIYccItdcc03cKXqkJzHlVkqpZstFhE1x2BSLDRiH/9gyTmyIwaY4iIiIfAgTsWrqXtpM794ic+c27rluMc4rr7wie+21V6vmOPLz8+V3v/udPPzww2bh9XibxFmZlAJM1Us0XQ8ZQC+UmtUH2UBM6yM7VVS09xkQERERERGRjZCQWr1afL3Q+KOPPirTpk2TWbNmye67724qprDZW0NrbTfGiBEjzALwWP4ISaqUSUoR1c+RQbLCHFWUD0KxoajkOCIrwnHIoEFmNyuVbIpj+XJJ27gR2zqKaja1CePwF1vGiS1tYkscREREPtXAfmu++JnHHXecWZQc0/jmzZsnr7/+ull3+8EHH5RTTjmlReeCNaYgmYu/MylF6gTEkR6y0RxXlA/UnZTChR0MHKj3YsKyOAKbNoWPNbOsTQzG4Q+2jBNb2sSWOIiIiHzq88/b57/3qqqmfU92drYcfPDB5nb55ZfLH//4R7OkUUuTUt9++61ZBL1Hjx6SLFyIgFTj9D0iIiIiIiKiWiNHjjQbxrVEQUGB2VBu8uTJUet6tzZWSpFqTEoRERERERFRKtq4caMcf/zx8oc//MGsIdWpUyf5/PPPzfS9o48+uknT9LDRHP7FBnFz586V66+/Xrp06SI33nhjUmNgUopUU7/7HhEREREREVEzYOe9CRMmyB133CE//PCDVFZWyoABA8zC55deemmjX6e4uFj69Olj1o7CdL2ddtpJpk6dKuecc475OpmYlCLVWClFREREREREqSgrK0tuuOEGc2sIdumLB+tOtXTtqZbgmlKkGpNSRERERERERDoxKUWqMSlFREREREREpBOn75E6jgTlCxltjiuqFOdVsYPB6NG1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3bt3vd976623mqTUG2+8Ibvttlvkfvf7mvOa5E8BcaS/rDI3HHuW/9J3MbFqVfjmr6XdUjqO4Jo1uuOwsE0Yh4/YMk5saRNb4iAiIqKU5aukVGZmpowbN07efvvtqNI1fL333nsn/D7srnfNNdfInDlzZI899oh6bIcddjDJJ+9rYjoeduGr7zVJD+6+R0RERERERKSP76bvYS2nqVOnmuTS+PHjZebMmbJ161Y59dRTzePYUa9fv35mMXK46aab5IorrpCnnnpKBg8eHFknqmPHjuaGsrdzzz1Xrr32Whk+fLhJUl1++eVm3anJkye3a6zUOtRWShERERERERGlMN8lpU444QSzyx0STUgwjRkzxlRAuQuVr1y5Mmpu4n333Wd27fvNb34T9TpXXnmlXHXVVeb4wgsvNImt008/XYqKimTfffc1r9mSdafIPxRviEhERERERESUsnyXlIKzzjrL3OLBIuZey5cvb/D1UC119dVXmxvpF7tsBiuliIiIiIiIiPTx1ZpSRM3BpBQRERERERGRPkxKkXqcvkdERERERESkjy+n7xHVx5GAfCc7Ro7VVkoFAiI77lh7rJVlcVQXFuqOw8I2iRxrZUscNo0TW9rEljiIiIgoZTEpRfoEAlIqnSJfqk5KdaqNQy3L4nC2b9d/cWdZm6hnSxw2jRNb2sSWOIiIiChlcfoeqcfpe0RERERERET6MClF+jiO9JRCc8MEPrWVUthGEFNgcIvdUlATy+IIbNigOw4L24Rx+Igt48SWNrElDiIiIkpZnL5H6gTEkYGy0hxvlB5SVqZ0CgkuIFaG45AePfROhbEsjrRNm0RGjBDVLGsTg3H4gy3jxJY2sSUOIiIiSlmslCL11FZKEREREREREaUwJqVIndgZCkxKEREREREREenDpBSpx4XOiYiIiIiIiPRhUorUY6UUERERERERkT5MSpF6TEoRERERERER6cOkFKnH6XtERERERERE+qS39wkQNZUjAVkmwyLHaiulsHX3sHAcqrfxtiyO6sJC3XFY2CaRY61sicOmcWJLm9gSBxEREaUsJqVIn0BAiqVL5EvVSakutXGoZVkcDjqU9os7y9pEPVvisGmc2NImtsRBREREKatF0/eKi4vlxhtvlEmTJsnYsWPls88+M/dv2rRJbr/9dlm2bFlrnSdRQpy+R0RERERERJRClVKrVq2S/fffX37++WcZPny4LFmyREpLS81j3bt3l/vvv19WrFghd955Z2ueL5GI40h32WQON0l3KS9X+td6x0EGN3zcvbveqgOb4ti4UQKIJS9PVLOpTRiHv9gyTmxpE1viICIiopTV7KTUBRdcICUlJbJo0SLJz883N6/JkyfLq6++2hrnSBQlII4MluXmeLN0052UWh6OQ7p103sxYVkcabjA23FHUc2yNjEYhz/YMk5saRNb4iAiIqKU1ezpe2+88YacffbZMnLkSAnE+SVoyJAhpoqKKBm/g3tx+h4RERERERFRCiWltm/fLnn1lO6jioqoLahd6JyIiIiIiIgohTU7KYUKqQ8++CDh46+88opZ/Jwo2ZiUIiIiIiIiIkqhpNS5554rzzzzjNx0002yZcsWc18oFDI77p188skyd+5cOe+881rzXIni4vQ9IiIiIiIiohRa6Pz3v/+92V3vsssuk7/97W/mvkMPPVQcx5FgMCjXX3+9WeycKNlYKUVERERERESUQkkpQDIKVVEvvviiqZBCpdTQoUPl2GOPNQudE7UFJqWIiIiIiIiIUiwpBQMHDuQ0PWpTjgTkRxkSOUZSCjvyqdsJGyfsJm/Vnby9cVR36qQ7DgvbJHKslS1x2DRObGkTW+IgIiKilNXsNaUWLFgg9957b8LH8diiRYua+/JEiQUCUiTdzE0k/Et4RYXogwuIbt3CN80XE5bF4XTtqjsOC9uEcfiILePEljaxJQ4iIiJKWcGWTN176623Ej7+zjvvmPWmiNoCp/ARERERERERpUhSav78+bLffvslfByPff755819eaKEnJAjXWWzuWECn9od+DDncPPm8A3HWlkWR6CoSHccFrYJ4/ARW8aJLW1iSxxERESUspqdlCopKZH09MRLUmEHvi1btjT35YkSCogjQ8yqUj+aY7WVUriA+PHH8E3zxYRlcaStWKE7DgvbhHH4iC3jxJY2sSUOIiIiSlnNTkoNHz5c3njjjYSPz5kzhzvwUZtRWSlFRERERERElMKanZQ67bTTZPbs2TJ9+nQpQhl/DRxjNz4kpfAcoragslKKiIiIiIiIKIUlnn/XgLPPPtvsrjdz5ky56667pG/fvub+NWvWSCgUkpNPPtkkp4jaApNSRERERERERCmSlAoEAvLII4/IlClT5MUXX5QfsZ6BiBx99NFy3HHHyQEHHNCa50lUL07fIyIiIiIiIkqRpJTrV7/6lbkRtSdWShERERERERGlyJpSRH7CSikiIiIiIiKiFKmUchxH/vGPf8hDDz1kpu5t3rw57hS/qqqqlp4jURRHArJcBkeOYft20ScQEBk8uPZYK8viqO7QQXccFrZJ5FgrW+KwaZzY0ia2xEFEREQpq9lJqQsvvFBuv/12GTNmjPz+97+Xbt26te6ZESWARNQm6RF1n9qkVI/oOFSyLA6nulr/xZ1lbaKeLXHYNE5saRNb4iAiIqKU1eyk1GOPPWYWNH/uueda94yImkFjUmr5cpHf/15k+HCRhx/WfX1HRERERERE1GZrSm3fvl0mTpwore2ee+6RwYMHS3Z2tkyYMEE+++yzhM/9+uuvTWIMz8dUwZkzZ9Z5zlVXXWUe895GjBjR6udNbchxpLNsMTfUTcG2baLOKVMdWfzxFnnp0S3ywvPhOFRyHJEtW8I3HCuPI1BcrDsOC9uEcfiILePEljaxJQ4iIiJKWc1OSh100EHyv//9r1VP5tlnn5Xp06fLlVdeKQsWLJDRo0fLpEmTpKCgIO7zt23bJkOGDJEbb7xRevfunfB1d9llF1m7dm3k9tFHH7XqeVPbCogjw2SZueFYa6XUBx/UxvHlF4ovJnAhtGxZ+ObojyPtp590x2FhmzAOH7FlnNjSJrbEQURERCmr2dP37r33XpMwuv766+WMM86QHq2wpgHWqJo2bZqceuqp5utZs2bJ7Nmz5eGHH5aLL764zvP33HNPc4N4j7vS09PrTVrFKi8vNzdXMf4iLCKhUMjctMK5Y4F6zTGE1f3Fe9s2xKX3F/Lt2xW3C87bPXetMUDN+EYvMm2hPBZb2oRx+Iwt48SWNrElDsvY8/sWUXJwjBClxhgJNfL8m52U2mmnncwPufzyy80N0+3S0tKinoOpcltQUt4IFRUVMn/+fLnkkksi9wWDQTNFcO7cudIS33//vfTt29ec49577y033HCDDBw4MOHz8fiMGTPq3F9YWChlZWWiFdoL7YEOjvdWq+rq7nXu27hxqxQUlIomGel5IjWbU27atE0KCraKSqGQpG/aZA6rUNWotW+FQpK2ebOUlpZKZUGBBNOb/fHY/ixqE8bhM7aME1vaxJY4LGPL71tEycIxQpQaY6SkpKRRz2v2b5NYywlJp9ayYcMGqa6ull69ekXdj6+XLFnS7NfFulSPPvqoSaJh6h6STfvtt5989dVX0qlTp7jfg8QYphF6K6UGDBggeXl50rlzZ9HcudFmiENz505Lq1sRFQh0kPz8XNEkN9cRKY58Jfn5HUQlZMC71yQK8/P1XhShAgS7iAYC0i0/X+/FtmVtwjh8xpZxYkub2BKHZWz5fYsoWThGiFJjjGRnZzfqec3+bRKJHg0OO+ywyPFuu+1mklSDBg0yuwaedtppcb8nKyvL3GKhQ2juFIDOrT+OumWA27cjLl3b1+XkhCJJqfD5K24T99zxr/I40Iv0jxG72iTyL+PwB1vGiS1tYksclrHj9y2i5OEYIbJ/jAQbee6+ibBnz55m+t/69euj7sfXTVkPqiFdu3aVHXfcUZZhUVCyhsaFznNydJ8/ERERERERUUu0uO5+1apVsnDhQjPnMd5CVlOmTGnU62RmZsq4cePk7bfflsmTJ5v78Hr4+qyzzpLWgnUwfvjhBzn55JNb7TWp/WlM6jApRURERERERKms2UkpLPg9depUefHFFyNzHrEQF3jXmmpsUgqwjhNec4899pDx48fLzJkzZevWrZHd+PBa/fr1MwuRu4ujf/PNN5Hj1atXy6JFi6Rjx44ybNgwc//5558vRx11lJmyt2bNGrnyyitNRdZJJ53U3NCpnYWcgKyUgZIWFHFCAbVJnZzcgCyX8IL7udt1TT2MgvHubhzQiuvMtVcc1cgWao7DwjaJHGtlSxw2jRNb2sSWOIiIiChlNTspdemll8pLL70k1113ndnR7oADDpDHHntM+vTpY5JJSAA9/vjjTXrNE044wexwd8UVV8i6detkzJgxMmfOnMji5ytXroyal4ifMXbs2MjXt956q7ntv//+8t5770UquZCA2rhxo1kobN9995V58+aZY1IqEJANkiedsC54zYL+GpNSuR3CccA2hecfgQshG8ZTTRwmua794s6yNlHPljhsGie2tIktcRAREVHKanZS6oUXXjAVTBdddJFJ+ACqmA488ECZOHGi+feee+6R++67r0mvi6l6iabruYkm1+DBgyPVWYk888wzTfr5pEdmZvj3cXQB7dP3tm1rzzMhIiIiIiIianvNXui8oKDATLGDnJqra0y1cx133HGmkoqo1TmOdJQS6eiUSE62ozapg3M3cUiJbN9Wf3LV15AVLCkJ3xpIEmuII1BaqjsOC9uEcfiILePEljaxJQ4iIiJKWc1OSmFKnVshlZubK926dZOlS5dGHi8uLjbrThG1toA4sqN8J0ND30luTviXcI2VUh1yw3Hgpj4p9d134ZujP460H37QHYeFbcI4fMSWcWJLm9gSBxEREaWsZk/fmzBhgnz00Udm+h5gMfFbbrnFrCmFhc/vuOMO2WuvvVrzXIkSToHTmJTi7ntERERERESUyppdKXX22WfLkCFDpLy83Hx9zTXXSNeuXeXkk082O+h16dJF7rrrrtY8VyKrklK5ubXHGs+fiIiIiIiIqF0qpbCLHW6uAQMGyLfffiuLFy+WtLQ0GTFihKSnN/vliZqU2NGY1MnIqD2uDrXnmRAREREREREpqpR6/PHHZfny5dEvFgzK6NGjZdddd5XVq1eb5xC1RaUUCvaqq0UVzbupExEREREREbVbUurUU0+VTz75JOHj8+bNM88ham3etVy96zJpW1efa9ISERERERFRKmt2Uspp4Ip669atnL5HScfFwomIiIiIiIh0alLW6Msvv5RFixZFvv7www+lqqqqzvOKiopk1qxZsuOOO7bOWRJ5OBKQVdJfytJEds4JqE1KuXG4x2phHmL//vrnJNbEEcrO1h2HhW0SOdbKljhsGie2tIktcRAREVHKalJS6uWXX5YZM2aY40AgIPfff7+5xYOd+LimFCVFICAF0kucoMjumnewq4lDPVwI9bInjhD+1X5xZ1mbqGdLHDaNE1vaxJY4iIiIKGU1KSl1+umny5FHHmmm7o0fP16uvvpqOeyww6Keg2RVhw4dZOjQoZy+R222+57KpFSMysroHfmIiIiIiIiIbNakrFGfPn3MDd59910ZOXKk5OXlJevciOJzHMmVbZLriORkIysV/mv9tm2iMg7YJrmyfXtAZ1IK68u5bz6yhFqrJxDH1q0SQCzaV6G3qU0Yh7/YMk5saRNb4iAiIqKU1eyFzkeNGiVr165N+PjixYtl8+bNzX15ooQC4sgIWSLDqpZIbo6jt1LKCceBG2JSl1TzXhQtWRK+ab9IXbJE0r7/XnccFrYJ4/ARW8aJLW1iSxxERESUspqdlDrvvPPMdL5EzjjjDDn//POb+/JEjYK1dtUmpWKoTUoRERERERERtWVS6p133pFf//rXCR8/6qij5K233mruyxM1Sk6OPUkp7edP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k5Dq27dvvRVfrJRqBLyB/fv3F1ugY2vu3ETJxjFC1DCOE6L6cYwQ1Y9jhKh+NoyR+iqkXHonKBIRERERERERkVpMShERERERERERUZtjUiqFZGVlyZVXXmn+JaK6OEaIGsZxQlQ/jhGi+nGMENUvK8XGCBc6JyIiIiIiIiKiNsdKKSIiIiIiIiIianNMShERERERERERUZtjUoqIiIiIiIiIiNock1JERERERERERNTmmJQiIiIiIiIiIqI2x6QUERERERERERG1OSaliIiIiIiIiIiozTEpRUREREREREREbY5JKSIiIiIiIiIianNMShERERERERERUZtjUoqIiIiIiIiIiNock1JERERERERERNTmmJQiIiIiIiIiIqI2x6QUERERERERERG1OSaliIiI2tlVV10lgUDA3AYPHhz1GL52H8PzXO+9917kftyWL18ufnHAAQdEzuuUU05p79OhduDtm48++mh7nw4RERH5FJNSRESUUmKTOYlumpMpyUxYpULCCe+X9/3zJgPJHt6+7L1lZ2fLwIED5eijj5aXX365vU+TiIjIauntfQJERESp7pBDDpGOHTua4y5dujTqe4YOHSq33HJL5Ovu3buLX5x55ply5JFHmuNdd921vU+H2oG3b+65556iSXl5ufz888/m9u9//1suvfRSue6669r7tIiIiKzEpBQREaW0E044QfbYY48697dlMmWfffYxt6YYMGCAnH/++eLX95SSp7q62iROcnNzxa/82jcT6datm0k+VVVVyXfffSdPPvmkVFRUmMduuukm+etf/+qrxC8REZEtOH2PiIhS2qGHHmouoGNvuB9wkXr55ZfL4YcfbqqTunbtKhkZGdKjRw/Zb7/95O9//7tUVlbGfe1Vq1bJRRddJGPHjpXOnTtHpgVNnjxZ3nzzzUatKdXUKXo4/tWvfhX13B122KHOlLumxuWe4/vvvx+577HHHot7Dg1N8cNFP6qpdtppJ5NYwW3HHXeUM844Q5YsWVLn+XgN9/Xw2mvXrpXTTz9d+vTpI1lZWbLzzjvLAw880OB7hK9be2ofXvOZZ56RCRMmmDiQ3Dj++ONNlU08iO///b//JyNHjjTVcfieIUOGyIknniiff/55wphXrlwpJ598svTq1cu00xtvvBF57vr1601CZcyYMdKpUyfTz4YNG2Z+Dr4v1qJFi+TPf/6zOed+/fpJTk6O+Z5BgwaZhOJHH31U53vQX2bOnCl777236Svp6emmr+yyyy4yZcoU8x40Zk0pHHsfQ3INVUhof7Rl//79zfjD/bE2btxo+k3v3r3NOSOZ/Pzzz7fKdFWMT/zciy++WB5++GE577zzopKA6LOxiouL5YYbbjDvIyocMzMzzfhG23399det/h6+9tprsu+++5p+g372m9/8RpYtWxY3nrYaYxs2bDDvG2Lo0KGDeQ/QPuPHj5ezzjpL5s2bV+d7vvjiC/nDH/5gPnfQjogHn5HXX3+9bN26tZ5WIiIiKzlEREQp5N1333Xw3597e+SRR+p9fklJSdTz490mTpzoVFVVRX3f7NmznU6dOiX8nnPOOSfy3CuvvDJy/6BBg6JeB1+7j+F5ieL46aefzP0NnevUqVObFZf3HBPd3HPYf//96/w813PPPedkZ2cnfI2srCzn6aefjvoevIb7+JAhQ5w+ffrE/d6HHnqo3rbG142BOLzf533fYx/bd999457L8OHDne3bt0e97oMPPuhkZmYmjP2OO+6IGzNeq3fv3lHPffnll83zPvnkE6dnz54JX7NLly7OBx98EHUef//73+ttx0AgUGdceM8n3m3ChAlRz080xnDcmPfv5JNPjnq9zZs3OyNGjIj73KOOOipuP2yIt5/Gjru77ror6jW///77qMe/++47Z/DgwfX2Y/T11noPf/WrX8X9nh49ejhLly5tlzGG/r3TTjvVG9NFF10U9XPuvfdeJz09PeHzR44c6axdu7ZR7UdERHbg9D0iIkppc+bMMX/tj4WKEUyRQ+UAKln22msvU1WCCgVUEKHaAFUaqH5466235MUXX5Tf/va35ntXrFhhqmW2bdtmvsZr/PrXvzaVLIWFhfLOO+8kdS2fH374QWbNmhW5D1U0OG/vtMSmxuWue3XffffJjz/+aF4DlSreqXoNTW9CVQeqfdwqGFSJTJ061ZwLqq7QDngM940bN06GDx9e5zXws1HVgyoQVFngfLZv324eu/nmm00FRltCVRHWTJo0aZK8++678vHHH5v7v//+e3nllVdMBRSgYgSVJ6FQyHyNKhn0kREjRpiKOvTDRPBacOyxx8ro0aNN/0JlDip1UHXn9l+30gnvywsvvGCqdbZs2SLHHXeceQ13vTJUvqDd0R/RBmhXPO/tt9+W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tY3CKOhMxn9Q/CC12eU8GZM6JqjniSSk+vI8iXBG2Oa1ODU2VW2ToXdvSznXx0SOCdqxZRf+vyV8v0XUKZ4jRIGdI2mxaVqfI4Huu1YRpqWlweVy7VThJPcHD+68qkEe78n3ExERERERERFR6GmVlJKpeNOnT8eXX37ZLoso983T+czkcfP3i88//7zL7yciIiIiIiIiotDTbvqeNC0///zzMWPGDMycORP333+/Wl3vwgsvVF8/77zzVN8paVYurrrqKhx44IG49957ceyxx+LVV1/FvHnz8MQTT/RzJNRrHg+wrnUltlGj+rQXSFAxDuvFsWYNXKWlUpapbxx2GxPGYS12OU/sMiZ2iYOIiIgGLO2SUmeccYZaBW/27NkoLCzE1KlT8cknn2DQIF/fj02bNrWbu7jPPvvg5Zdfxl//+lfceOONGDt2rFp5b/Jkvfs4DHiVoVtiu08xDmuprISjyiarSdloTGzBLnHY6Tyxy5jYJQ4iIiIakLRLSokrr7xSbZ35+uuvd3rstNNOUxsREREREREREVkD67yJiIiIiIiIiKjPMSlFRERERERERER9jkkpIiIiIiIiIiLqc0xKERERERERERFRn9Oy0Xlf83q96t8qzVcb8ng8qK6uRlRUVLsVCrVcArumxndbxkTXWBiHtXg88NTUoLq2FmFVVXCGafzyaKMxYRwWY5fzxC5jYpc4bMY277eIQoTnCNHAOEeqWvMnRj6lK5q+m+xbckCIrKys/t4VIiIiIiIiIiJt8imJiYldft3h3VXailSmctu2bYiPj4fD4YDOmUpJrG3evBkJCQn9vTtElsNzhGjXeJ4QdY/nCFH3eI4QDYxzxOv1qoTU0KFDu634YqVUAOQXOGzYMNiFHNg6H9xEocZzhGjXeJ4QdY/nCFH3eI4Qdc8O50h3FVIGfScoEhERERERERGRtpiUIiIiIiIiIiKiPsek1AASGRmJm2++Wf1LRDvjOUK0azxPiLrHc4SoezxHiLoXOcDOETY6JyIiIiIiIiKiPsdKKSIiIiIiIiIi6nNMShERERERERERUZ9jUoqIiIiIiIiIiPock1JERERERERERNTnmJQiIiIiIiIiIqI+x6QUERERERERERH1OSaliIiIiIiIiIiozzEpRUREROrKYSEAAKiYSURBVEREREREfY5JKSIiIiIiIiIi6nNM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kyYhJSVFFiL3FEffvXu39/qJEyewdetWhIaGonv37vL+P//5z7j++uvllL2cnBzMmTNHjsiaOHFiB0ZKP7qGxqFD7uuZmcatocE4/C+OrCxYTp9212gxahyqnRPG4V9U6SeqnBNV4iAiIqJOy6+SUrfddptc4W727NnIzc3FJZdcgjVr1niLnx87dqzBvESRZBo4cKD39tNPPy3b6NGjsW7dOnnf8ePHZQLq9OnTslDYqFGjsGHDBnmdDKykBEpgHP6lpASm0lIoQaFzogRV4lCpn6hyTlSJg4iIiDolv0pKCdOmTZOtKZ5Ek0dGRoZcJrElq1evbtPjIyIiIiIiIiKiH4/jvImIiIiIiIiIyOeYlCIiIiIiIiIiIp9jUoqIiIiIiIiIiHyOSSkiIiIiIiIiIvI5vyt07o88xdRLDb7akKZpKCsrg91ub7CKoSGXwC4vd18X58SosTAO/6Jp0MrLUVZRAWtpKcxWA/96VOicMA4/o0o/UeWcqBKHYpR5v0XUTthHiDpHHyk9kz851+J0Bn036VviBSGkpqZ29KEQERERERERERkmnxIREdHs4yb9XGkrkpnKnJwchIWFwWQywciZSpFYy87ORnh4eEcfDpHfYR8hOjf2E6KWsY8QtYx9hKhz9BFd12VCKjk5ucURXxwp1QriH7BLly5QhXhhG/nFTdTe2EeIzo39hKhl7CNELWMfIWqZCn2kpRFSHsadoEhERERERERERIbFpBQREREREREREfkck1KdiM1mw5w5c+QlETXGPkJ0buwnRC1jHyFqGfsIUctsnayPsNA5ERERERERERH5HEdKERERERERERGRzzEpRUREREREREREPsekFBERERERERER+RyTUkRERERERERE5HNMSnUiS5cuRUZGBux2O4YOHYpNmzZ19CERtbt58+bhsssuQ1hYGOLj43HjjTdi3759Dbaprq7Gvffei5iYGISGhuLmm29GXl5eg22OHTuGa6+9FsHBwXI///u//wun0+njaIja3/z582EymTB9+nTvfewj1NmdOHECv/71r2UfCAoKQr9+/bB582bv42LdoNmzZyMpKUk+PnbsWBw4cKDBPgoLC/GrX/0K4eHhiIyMxF133YXy8vIOiIao7blcLjzyyCPo2rWr7APdunXD448/LvuGB/sJdSZff/01rr/+eiQnJ8v3Ve+/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IiKidnLrrbc2GD00dOhQefnrX//am5Dy3C9GIYkkliAKqouRRxMnTkRBQYG3WSwWue1XX33V4vOePn3am2xqypgxYxqMtPIcl5iW50lI1b//0KFD8tITy2effSZHbrXE89ziuImIiIiawpFSRERERO0kLS2twW1PUic1NbXJ+8WUOUGMrhLENL+mhIeHt+r5myvKfqHHJUZezZgxA4sXL5Yju0S9q//5n/+RSbb6ybf6zy1qWBERERE1hUkpIiIionYiRjadz/2eRI6mad66UqJu09nqj7JqSkxMjDeZJAqRt9VxCc8884ws7P7BBx/gX//6l5xmKKb4bdiwocFzeRJZsbGxLR4rERERdV5MShERERH5mW7dusnL+Pj4JlfQO5fevXvLS1H/qV+/fm1+fGKfoj388MOykPnIkSOxfPlyWZPKQzy3cNFFF7X58xMREZEaWFOKiIiIyM+IFe7EFD1R0Ly2trbR46IwekvEyneBgYGymHpbKi0thdPpbHCfSE6ZzWa5It/ZKwCKqXvDhw9v02MgIiIidXCkFBEREZGfEQkpsRLf7bffjksvvRQTJkxAXFwcjh07hk8++USOTPrrX//a7M/b7XaMGzcOX3zxBR577LE2O64vv/wS06ZNkwXce/bsKRNUYoqhmPYniqTXJ4q1i+P0TCUkIiIiOhuTUkRERER+6Je//CWSk5Mxf/58LFq0SI5ESklJkcXFp0yZcs6fv/POO2WiKDs7u1EB8ws1YMAAOYrro48+kisFBgcHy/s+/fRTDBs2zLtdSUmJrDf1/PPPt8nzEhERkZpMenPLshARERGRYblcLvTp0we/+MUv8Pjjj/v0uZcsWYKFCxfi4MGDCAoK8ulzExERkXGwphQRERGRgsSUOjF1b+nSpSgvL/fZ84oaWIsXL5ZF0JmQIiIiopZwpBQREREREREREfkcR0oREREREREREZHPMSlFREREREREREQ+x6QUERERERERERH5HJNSRERERERERETkc0xKERERERERERGRzzEpRUREREREREREPsekFBERERERERER+RyTUkRERERERERE5HNMShERERERERERkc8xKUVERERERERERPC1/w/Ccmo1/1o9lQAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 STF vs STD:\n",
- " STD: Synaptic strength DECREASES with repeated use\n",
- " STF: Synaptic strength INCREASES with repeated use\n",
- " Both effects are temporary (100s of ms)\n"
- ]
- }
- ],
- "source": [
- "class STFSynapse(brainpy.state.Synapse):\n",
- " \"\"\"Synapse with short-term facilitation.\"\"\"\n",
- " \n",
- " def __init__(self, size, tau=5.0*u.ms, tau_f=200.0*u.ms, U=0.15, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " \n",
- " self.tau = tau\n",
- " self.tau_f = tau_f # Facilitation time constant\n",
- " self.U = U # Baseline utilization\n",
- " \n",
- " # States\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.u = brainstate.ShortTermState(jnp.ones(size) * U) # Current utilization\n",
- " \n",
- " def reset_state(self, batch_size=None):\n",
- " self.g.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.u.value = jnp.ones(self.size if batch_size is None else (batch_size, self.size)) * self.U\n",
- " \n",
- " def update(self, pre_spike):\n",
- " dt = brainstate.environ.get_dt()\n",
- " \n",
- " # Facilitation: increase utilization on spike\n",
- " u_new = self.u.value + pre_spike * (self.U * (1.0 - self.u.value))\n",
- " \n",
- " # Decay: exponential decay of facilitation\n",
- " du = -(u_new - self.U) / self.tau_f.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.u.value = u_new + du\n",
- " \n",
- " # Synaptic current: modulated by current utilization\n",
- " dg = -self.g.value / self.tau.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.g.value += dg + pre_spike * self.u.value\n",
- " \n",
- " return self.g.value\n",
- "\n",
- "# Test facilitation\n",
- "stf_syn = STFSynapse(size=1, tau=5.0*u.ms, tau_f=200.0*u.ms, U=0.15)\n",
- "brainstate.nn.init_all_states(stf_syn)\n",
- "\n",
- "# Same spike train as STD\n",
- "g_history_f = []\n",
- "u_history = []\n",
- "\n",
- "for i in range(n_steps):\n",
- " spike = 1.0 if i in spike_indices else 0.0\n",
- " g = stf_syn(spike)\n",
- " g_history_f.append(float(g.item()))\n",
- " u_history.append(float(stf_syn.u.value.item()))\n",
- "\n",
- "# Plot comparison\n",
- "fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)\n",
- "\n",
- "# STD conductance\n",
- "axes[0].plot(times, g_history, 'b-', linewidth=2, label='STD')\n",
- "for st in spike_times:\n",
- " axes[0].axvline(st, color='r', linestyle='--', alpha=0.2)\n",
- "axes[0].set_ylabel('Conductance', fontsize=12)\n",
- "axes[0].set_title('Depression: Decreasing Response', fontsize=14, fontweight='bold')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# STF conductance\n",
- "axes[1].plot(times, g_history_f, 'g-', linewidth=2, label='STF')\n",
- "for st in spike_times:\n",
- " axes[1].axvline(st, color='r', linestyle='--', alpha=0.2)\n",
- "axes[1].set_ylabel('Conductance', fontsize=12)\n",
- "axes[1].set_title('Facilitation: Increasing Response', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "# Utilization parameter\n",
- "axes[2].plot(times, u_history, 'm-', linewidth=2)\n",
- "for st in spike_times:\n",
- " axes[2].axvline(st, color='r', linestyle='--', alpha=0.2, label='Spike' if st == spike_times[0] else '')\n",
- "axes[2].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[2].set_ylabel('Utilization u', fontsize=12)\n",
- "axes[2].set_title('Facilitation Buildup', fontsize=14, fontweight='bold')\n",
- "axes[2].legend()\n",
- "axes[2].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 STF vs STD:\")\n",
- "print(\" STD: Synaptic strength DECREASES with repeated use\")\n",
- "print(\" STF: Synaptic strength INCREASES with repeated use\")\n",
- "print(\" Both effects are temporary (100s of ms)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Combined STP (Depression + Facilitation)\n",
- "\n",
- "Real synapses often exhibit both depression and facilitation. BrainPy provides a combined STP model.\n",
- "\n",
- "**Combined dynamics:**\n",
- "- Depression: Resource depletion with time constant $\\tau_d$\n",
- "- Facilitation: Utilization increase with time constant $\\tau_f$\n",
- "- Effective synaptic current: $g_{eff} = u \\cdot x \\cdot g$\n",
- "\n",
- "Depending on relative values of $\\tau_d$, $\\tau_f$, and $U$, synapses can be:\n",
- "- **Depressing**: $\\tau_d \\gg \\tau_f$, large $U$\n",
- "- **Facilitating**: $\\tau_f \\gg \\tau_d$, small $U$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABW4AAAJOCAYAAAAnP56mAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYG9XVBuAzKlvdO8bGxvTeOwQIhN5LgAQwJqH8QGihh2IIPQEceu+h19A7CQm9V5uOwQUbd3ubpJn/+e5qtCOtdr1e766153xvHgWtpJXm6N7RWmfOnOsFQRAIEREREREREREREZWM2JLeACIiIiIiIiIiIiLKx8QtERERERERERERUYlh4paIiIiIiIiIiIioxDBxS0RERERERERERFRimLglIiIiIiIiIiIiKjFM3BIRERERERERERGVGCZuiYiIiIiIiIiIiEoME7dEREREREREREREJYaJWyIiIiIiIiIiIqISw8QtERGRUbfffrt4npe7kB3Rccc80Do3v//++7znefXVVzt0O4k0498IIiKiJY+JWyIiIiXuu+8+2X777WXw4MGSTCald+/esuyyy8pWW20lxx13nDz33HOiMalYmFxoywXviQYtxVdRUSEjRoyQ/fffX/7zn/9IKSmVZFApJnUxL4uNZyKRkEGDBsl2220nd955pwRBsKQ3teSVyjwrZuzYsUXHuayszI3zlltuKf/4xz+krq5uSW8qERERLWGJJb0BREREtPgOPvhgueuuu/Jumzt3rrsgQfXvf/9bfvjhB5fYJf3q6+tl4sSJ7nL//ffL+eefL3/5y1+ku9hggw3kb3/722I/T79+/fKeZ7nllpPuKJPJyPTp0+WFF15wlwceeEAeffRRd4CG9EilUm6cccEBl0ceeURefvllicfj3Xo/JCIiovZj4paIiKibe/bZZ/OStuutt55L0Pbo0cMlAN5//3154403pJQhwdyrV68OSy4gWfnuu+/mfi68f/jw4dKRGhoaXBVkeXm5LCnrr7++7LfffuL7vnz11VduTiCBC2eddZbstNNOss4660h3sNpqq7nL4sKcOumkk6Q76tu3r5xxxhnu+s8//+zGE/+Fp556Sq699lpXSV9q+6N17XnvMM59+vSRqVOnyt133y3Tpk1ztyN5i7HebbfdpDvvh0RERLQYAiIiIurWTjjhBJw3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GozVxD5rdGxNxEpEZEBFRYVcddVV0tDQIDfffHPefbfffrusueaa7jFLL720/OUvf5FMJpN3P9oQvPnmm66iFSvM41T3W2+9Ne95cEr96quvLk8//bSstdZaLpn6xBNPuPvCatjq6mrXvuF3v/udTJs2Le/3L774YpdIwnYMHDhQtt12W/nuu+/adH+xVgnh6fhISo0YMcK97h577CHTp0/Pe93PPvtMfvWrX7nnXWGFFeSf//ynexxaHrQGr/3aa6/JPvvs0+rjxo8fL/vvv78MHz7cvXerrrqqXHbZZXnJwnD78V7j1PX+/fu7FgwwZ84cOfDAA6Vnz54yaNAgOeOMM9zvFy4YNXv2bDnqqKNc9THe+/XWW0+ef/55WRL+9a9/yfrrry89evSQPn36uOuYF6155JFHXFU4xmHo0KHugENdXV3u/uWWW07OOuus3M8PP/ywew9OPvnk3G3PPfecu61wjKPCeXHppZe6eYGk+8yZM9u0L8CkSZPk4IMPlsGDB7vfXXnlleUf//hH7n6M6/nnny/LLrusi3+VVVaRG264IXf/q6++6rbx3XffzXtevM6QIUPk9NNPz92G9ia77767m7vYd3beeWf55ptv8n4Pz4V9A9Wz+H3MEex3uL2wknbWrFlum6+99trcbfvuu6+b8+l0WrpCoktehagU4UvVlCmN14cMwd4rajFW9fHG8Idz9dVFNaNjayJeg7Ga2GeNjq2JWImIjEDCEMkoJFFDl19+uZxyyilywgknuGQgEkVhsgrJoCgkH4844giXILrvvvtc9S4SbDvssEPuMZMnT5Zjjz1WzjzzTFlmmWXcBa+HJOhOO+0k999/vyxYsMDdj4RUuC04XRtJufPOO0822WQTl6xEUnTu3Lltur+1BCKSV0je/vLLLy7OP/3pT277w+rE7bbbziUXwzYS5557rkuCIlHYmpdeekkSiUQuwdoSJPpWWmkl+f3vf++Sr6h+Puecc2T+/Pnuv1FI2iE5d++99+YSu2h18fLLL+cSjTfddJO89957eb+HhDyqq3/++We54IIL3DgjHjzX+++/7/ocdxUkFpHMRiXyRRdd5OL46KOPXNKwtXHC72COYd4h2Y0E9cSJE3PJeCTX//Of/+R+59///rdLsBbehkQqEvutQdIXSXokXOPxuEuKtmVfmDFjhpt/gPd51KhRbn5F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XTNLsUbizUyfrj9eo2Obu66ZwVhN7LNGxzZ3nYiIiIhoMbHiluzyPPHj1e4SaF+cDF8ge/ZsvGj/Mmkp1ki8QY8e+uM1OrYm4jUYq4l91ujYmoiViEiRsWPHiud5zS6rr756h73G7bff7p7zl19+cT9///337ueHHnoo95iRI0fKMccck/v5sccek2uvvbZdr4fnR1yTJ0/Ou/3VV191r/vuu+9KV6qrq5Phw4fLU089JaXikEMOyRvjwjEqprX378MPP3T34TGL6v3335eNN95Yqqqq3HPMnj17kZ+jpe298MILO+S5LPnnP/8pq6yyimQyGSkFTNwSsVUCERERERGRWZWVlfLGG2/kXe65554Oe/6dd97ZPWefPn1afMyjjz4qJ510Uoclbs8999xmidt1113XbQeSUl3puuuuk759+7r3gZo79thjXZIQiW2MT08cBO4ATNy2z/777y/19fVy5513SilgqwSyKwgkkc4eyUoPEdWCQCQ8cjhggO5KIEuxhvFOny4eYh44UFSzOLZW4rUWq5V91uLYWomViEiZWCzmKh47y8CBA92lNeuss450tl69enVqnMUEQSBXXnmlS05ScePHj5ejjjpKtt56aykVGLeGhgYpLy8XDTKZjPi+L8lkcqGPjcfjriIb83bMmDGypLHilgwLpKxhqrsEaeW9EvBlcuLExguua2Yp1ki88UmT9MdrdGxNxGswVhP7rNGxNRErEZERCxYscO0LVlppJXcaO9oZHHnkkTJnzpxmj0V1HpKvFRUVMmDAANlpp53khx9+aPNp+NFWCUga3XHHHfLZZ5/lWjfgNkBF5m677SZDhw6V6upqWXvtteWuu+7Kq7IME4AbbLBB7vdbOtUfP1966aWutcLgwYPdtiNZhdij/vvf/+biW3PNNeWFF15wrx1uV0v+/e9/uwrgffbZJ+/2f/3rX7L++utLjx49XCUyrj/99NPN3o9x48a5NguoQsVroRISbQk222wzF/+GG24on3zySd5zX3bZZS723r17y6BBg2SXXXaRL7/8UkpNOB4zZsyQv/71r+76VlttlZtPm2++ufTr189VK+P2t99+O+/3f/rpJ/ntb3/rxg3jsuyyy8oJJ5zg7sN4ouoa4xjOgfC5W2sdgTFYa621XML2iSeeyM25X//61+79xnv6u9/9TqZNm5b3+xiXM888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UZdgxS0ZFkhF3ffugutBOtD9ZXL8+MaL9kSBpVgj8ca/+kp/vEbH1kS8BmM1sc8aHVsTsRIRERFRl2Diluwq+E7FVglERERERERERFQqmLglCmlulUBERERERERERN0KE7dEWay4JSIiIiIiIiKiUsHELVGW6h63RERERERERETUrTBxS5QV+EzcEhERERERERFRaWDiliiUWdIbQERERERERERE1CiR/S+RQZ6kkgNy11X3uPU8kaWWarqumaVYI/H6yaT+eI2Obe66ZgZjNbHPGh3b3HUiIiIiosXExC3Z5XmSKhuY+1F94nboUDHBUqyReP1EQn+iwOjYmmAwVhP7rNGxJSIiIiLqKGyVQGQhcUtERERERERERN0KE7dkmufXuYuJHre1tY0XCyzFai1eS7Fai5ex6mUpXkuxEhEREVGnY+KW7Ap8qaz9zl1wXXXFre+LfP554wXXNbMUayTexJdf6o/X6NiaiNdgrCb2WaNjayJWIiIiIuoSTNwSZQVpxYlbIiIiIiIiIiLqVpi4Jcpi4paIiIiIiIiIiEpFSSZur7nmGhk5cqRUVFTIRhttJG+//XaLj73ppptkiy22kL59+7rLtttu2+zxQRDI2WefLUsttZRUVla6x3z11VddEAl1J6pbJRARERERERERUbdSconb+++/X0488UQ555xz5P3335e11lpLtt9+e5k2bVrRx7/66qtywAEHyCuvvCJvvPGGDB8+XLbbbjuZNGlS7jGXXnqpXHnllXL99dfLW2+9JdXV1e456+qyi1IRseKWiIiIiIiIiIhKSMklbi+//HI57LDDZMyYMbLqqqu6ZGtVVZXceuutRR//z3/+U4466ihZe+21ZeWVV5abb75ZfN+Xl156KVdtO27cODnzzDNl9913lzXXXFPuvPNOmTx5sjz22GNdHB2VMlbcEhERERERERFRqSipxG1DQ4O89957rpVBKBaLuZ9RTdsWNTU1kkqlpF+/fu7n7777TqZOnZr3nL1793YtGNr6nGQDK26JSt/4X8bLc18/JzWpGtHule9ekROePUGemPDEkt4UIiIiIiIiWgISUkJ++eUXyWQyMnjw4Lzb8fP48ePb9BynnnqqDB06NJeoRdI2fI7C5wzvK1RfX+8uoblz57r/opIXF80QH6qUtccJQSCSSjYm+EU88VOKxxfBDhzYdF1r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jy3nMRERERFR+7FVAtkV+FK14At3taZqJdc6QWvF7f9+eE1ef+wqd/3SdEou+M1Fopbvy8o/LHBXJwyv0p8oyMabTqflm2V7iWrGxjYhsVy8/rK6Yw38TN7Y4mCT53km9ln1ByCCpnmcGZwSS59RqucxEREREXUJVtwSGehx+8nPn+SuP//N82KJ9uSeZdoX7Ip7cbPz2A/09kINhC0/rND+GUVEREREnY+JW6IIrRW30S/O1lhLFFiifWyZ8LJBe6zReaw91kLW9lsiIiIi6nhM3BJFMHGrj/YvzoULdlmi/RTzeKyp4pYJL720x2r6AITyzygiIiIi6nxM3JJdRfJdTNzqwy/OemlPAllOeFmKV3us0ZYf1j6PtY8tEREREXU+Jm6JDPS4tZy45RdnvbSPLRNeNmgfW1aOExERERG1HxO3RBGsuNWHX5z10p4EYsWtDdpjtTSPCxee0/4ZRURERESdz242hwhfquI9zFTczq9sqnrSLhqr9kRBGG9a6UEHy2Mb3W/LDSSAomOrvQo1us9qT+554uXG1le+z1r7jCIiIiKizsfELdnlxaS+YriNittEmfw0qEJMiMXyYtWeFAnjTaVSkox5Ymls1SdF4k3x9hIb89jE2Bbss6pjxd/VmJcb20Hii2qW5jERERERlXarhLlz58rFF18s22+/vayzzjry9ttvu9tnzpwpl19+uXz99dcduZ1EXUNpboStEuzwA+WJEaNjaylWa/EyVr2sxUtEREREHa9d2ZyffvpJttxyS/nxxx9lhRVWkPHjx8v8+fPdff369ZMbbrhBfvjhB/nHP/7R0dtL1KnUVtwycWsGTjGPxWM2+kcqP53e9DzWXilvdGwtxWoxXiIiIiLqeO3K5px88skyb948+fDDD2XQoEHuErXHHnvIk08+2VHbSNQ5Al8qaya4q7WVK7jWCWp73EpMVppY465/OaxSVPP9vFjVf3HOxptOp+XbkQkXbzKeFJWsjW2mKd66nilRzdLYFtlnNfP8IDe2Py3Lvz9ERERERIuiXWVZzz//vBx77LGy6qqriuc176k4atQoV41LVOq8wHcXCxW3XhC4iwXRWC18cbYUr6VYo/FaqECNjq32amqr89hSrBbmMRERERGVaOK2trZWBg4c2OL9qMYl6o40J26tsvbF2UKCz2KsFhJeVuO19BllaZ+1No+JiIiIqIQSt6i0/c9//tPi/Y899phbsIyou9GauI15OnuetoW1L86W4rUUq6XknrUEH+exXpbGloiIiIg6R7uyOccff7zcd999cskll8icOXPcbb7vy9dffy0HHXSQvPHGG3LCCSd09LYSdTqtPW4t0/7FuXDBLu3xWk0CWRpXa/FaSlJbw7ElIiIiosXVrvOnDzzwQPnhhx/kzDPPlL/85S/uth122EGCIJBYLCYXXnihW6CMqLvRWnFrmaUEEDCZqZOlWK3Fa+3gkiXax5aIiIiIOl+7G18iYYvq2ocffthV2qLidrnllpO99trLLU5G1B2x4lYfaxVPlhIFlsbWUqzW5rGlWK3h2BIRERHR4lqsFYuWWWYZtkSgbi0TrzJTcVtTERcrorFa+OKMeNOpwESCz+LYWovVQrx5+6yBKvno2OLsLM/zRCPEFo3VwtgSERERUQkmbt9//31588035aijjip6/7XXXiubbrqprL322ou7fUSdKCb1FSPyb9L6HSsWk4mDK8SEgli1J4DCeFOplCRjnu54jY1tEPNy8cbEF9UKxlZ1wsvSPlswj93PEognOhO31j6jiIiIiKhEFydDm4QXX3yxxftffvll1/+WqLthqwR9rH1xthSvpVj9wHcXKyyNrfYqectjaylWIiIiIiqhxO17770nW2yxRYv347533313cbaLaInQ3CrBKmtfnC3FaylW9VWohsfWUqzW4rWWlCciIiKiEmmVMG/ePEkkWv7VWCwmc+bMWZztIup8gS+VNV+6q7WVy4t4MbWJ28DPyAo/1rjrXy9dKar5vqw8qd4luRCr+iSB77uxTafT8v2IhOp4g0z+PNaeyPT8IC9ejG0ynhTN8zg3tpoTXob22ZbmsVoF81h1rERERERUuhW3K6ywgjz//PMt3v/ss8/KqFGjFme7iLqEF2TcJaQ1cQtxP3AXC8qCWC5WC1+co2OrPZkZjdXa2GqPl7HqZSleS7ESERERUYkmbv/whz/IU089JSeeeKLMnj07dzuun3DCCS5xi8cQdTeaE7eWxLymjzZrX5wtxWspVtBchRoE+Z+9mg9AFMZqbR5bitdSrERERERUQq0Sjj32WPnwww9l3LhxcuWVV8rQoUPd7ZMnTxbf9+Wggw5yCVyi7sZK4haLHEWTm9rEYwkTCSDriQLNiUzrY2spVmvz2NJnsqV5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S/FailV7MtPy2FqKFTiPdbIUKxERERGVUOK22Gl+UQsWLGh3q4RrrrlGRo4cKRUVFW4RtLfffrvFx3722Wey9957u8d7nifjxo1r9pixY8e6+6IXtHIgigriTXM6SDFxq42leC1VFwPHVidLsZqbx4aS1NbmMRERERF1vDZnVz/++GP58MMPcz+/9tprkk43/6Ixe/Zsuf7662XFFVdc5I25//775cQTT3S/j6QtErHbb7+9TJgwQQYNGtTs8TU1NW6RtH333VdOOOGEFp93tdVWkxdffDH3M/vvUsjP7gJ+TH/FbSoRM5MkSCdikvJjZhIFGNt04JkY2+g8tpAYicZrYR6HMI9xkBgHW7Xvs9bmsaXPKO3zmIiIiIg6X5szmI8++qice+657jr+AXrDDTe4SzF9+vRpV4/byy+/XA477LBcmwUkcJ966im59dZb5bTTTmv2+A022MBdoNj90UTtkCFDFnl7SLfA82R22XB3fUCyKVnrp5qSuGrEYvLN0pU2vjjHYvLd8B4ypy5jIymSHdtUKiHJmKc7uVcwj7XP5SDmmdpv88Y2CMQPfIl7cdG+z1qbxxY+j03MYyIiIiIqrcTt4YcfLrvssourHNhwww3lvPPOkx133DHvMUjoVldXy3LLLbfIVa0NDQ3y3nvvyemnn5634Nm2224rb7zxhiyOr776SoYOHeraL2yyySZy0UUXyTLLLLNYz0m6WKi4jdKcJChGdTKzgOqkSBEcW92fU/GYjYSXqXmsONZircSw31qZx0RERETU8dqcXV1qqaXcBV555RVZddVVZeDAgR22Ib/88otkMhkZPHhw3u34efz48e1+XrRcuP3222WllVaSKVOmuKrhLbbYQj799FPp2bNn0d+pr693l9DcuXPdf33fdxfNEB++eGiPs1Am3lSd6dfrG+fCeBrSDepizFPw3bk+Xa82XuyvYbIA/0VSRGusxeLSPrZRqsc2KD62yVhStP6dhfA0ekvzuCHTYGsep+qlLFa2RLaHOpbVfyMTdVfcZ4m6H0v7rb8IMbar2esaa6whP/30U4uJ208++USGDRsmffv2lSUtWhW85pprukTuiBEj5IEHHpA//OEPRX8HFblhW4io6dOnS11dnWifPHPmzHE7CyqeNfMzaenVMMldr00lJJ1qrEL95edfpLx3uWgya8YMGfbjPHf9+0Hl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s12l7fvvvy+nnXba4m4bUaeKxVpI3Crscesl8ntiau9xaznZZS1RYClWawkvxqqXpf3W2tgSERERUQkkbseOHVv09r59+8pyyy0n119/vRx22GGLu21EXdYqIRXTXXEryeZfJDUvcmQ5SWAtUaA5VuyjlueypQMumuex9XgtxUpEREREJZK49f2m066JunPiNpDGxGWD11SB6qcUzu8EFnbymn2ZTMYLMrpKBB4unpkvzojVSrzROLXHai3ewlg1J6kL91nNsYr1eWzoAAQRERERlUjilkiDWCwhs8pGuusNsW90V9yWx3KxRhMFKhO3sZh8PaKnzK0PTCQJEO+EZaoklUpJMubpThRkY43SnPAKYl6zeNXO5SJjqz1WE/tsC/NYbbzGPqOIiIiIqEQStxMnTmzXky+zzDLt+j2iruBFKlCjFbcae9wWtkpQnRQpQvMX50AC02NrKVbVCS/jY6s51mKfUZo/ky2NLRERERGVSOJ25MiR7eqFmclk2rNNRF0uL3GrsOI2SDSPydICZZaSXdaSItbG1lISyNLYWtpngfOYiIiIiKgDE7e33nprXuIWPW7/8Y9/yA8//CC///3vZaWVVnK3jx8/Xu655x6X6D322GPbuAlES4jvS8/UdHc15dfrrriNI9af3dV5iYG6v0z6vgz9uUZ6NdTJpAHl7jRd1UkR35dh0+oknU7Lz0MSjfEqHlvECuHYak4AeX7QLF61c9nS2FraZ1uax0rjDTIZO/ssEREREZVO4vaQQw7J+/mCCy6Quro6+frrr6V///55940dO1Y233xzmTp1asduKVEnSAY1JipusaeHsYY0f5msrs2gpDj3s9YkQahHbUbS6Yz8bKCaDbFamcdF41U8ly2NraV91uLYRmkfWyIiIiLqXLH2/NL1118vhx9+eLOkLQwcOFAOO+wwue666zpi+4i6RCaeUZ249RLNW51Y+jJpKVbtSZFCmhOZ1ucyY9XLUryWYiUiIiKiEknczpgxQ2pq8qv3onAfHkNU6oKgeeLWb/BFnbiY7nFr7Yuz1niDcIc1EGtLmJTXydo8thSvpXlMRERERCWSuN14441l3Lhx8t577zW7791333X9bzfaaKOO2D6iTjNrlkiqQaShQSQT83X3uPVsf5m0lOyylhSxFKu1eC3tt4i12IEJrfj3h4iIiIioA3vcFrr66qtl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Zpq7oO9rzG/8IjlXFqhM3PZIT3OXoNzPLRKTTCf1fZmMxIoxDscwlxRR1gcV8S79S70M+6VBvED5YjjZWHGJJrzCxIiqWLGPBuJiXWpabdGEl6oEX5Gx1ZzcK9xno/NYVayRedzS2Krabxcyj1XFSkRERESlnbjNPUEs5ipu77rrLpk4caLss88+8vnnn8tpp50mI0eOlG233Vaeeuqpjtlaok5SUSESyzR+aZ7rz9eXuI0Ikk2VirmKW20LlBW0StCcFCnGWoWX2opb42OreeG5YtQeXDLazsVirERERERUgolb+O9//ytHHnmkLL/88vLggw/mKm4vu+wymT59uuy2225y9tlnd8RLEXWK8goRz2/8cjVPeeJW4iJewmtslZBW2CqhQKY2k/flWVWVYgvUVmW2wFLiVm0VqvFYo/E2ZBp0LRhpfGytfR4TERERUcdqzNq0A6pq7777brn33ntdpe2gQYPcQmUHHXSQrL322rnHHXfccXL44YfLNddcI+edd15HbTdRhyovE4nVN365qknXSqwi5pK2ahK3BWvhIL5oxa3mL86FrRJSmZRk/ExusTKNLCVFChO36F0dLlymcRErS2NrKdbCykwcTItWV2tjaXEyS1XyRERERFQiiVskZj/55BMpLy+X3XffXa699lrXLgFtE4rZeuut5eabb17cbSXq1IrbWE3jl6v6dIO+xG2BWHlM8L9kSmGP2xZaJRQmgarLqkUrqwkvVCmm/JSUxctEK61jWyxJbSm5V6wyU3PiVus8th4rEREREZVI4rZPnz5y4403yr777iu9evVa6OOR3P3uu+/a81JEXaLcLU7W+CUZ64kE5Y1JBJWJW6+x4hatEuLpuPovk7ket9F+melaNYlbVJhaTxQUxqstcRutILY0tslY0sWOOa49Vs1ja/0zCvMYf29xYEl7rERERERUIonbV199dZEeX1VVJSNGjGjPSxF1WasEL9P4RdJHni+b91GZuM22SsAXyWRDY8VtTapGrLRKAO1fnq0thlM4tr3KF35AsbuyNI+RtEW8WKxLe6zWxtZS5Xg4j/F31kLlOBERERGVSI/bqPHjx7tFyaZMmSIrr7yyHHLIIW2qxCVasjyZFx/grpVVeLmKWyRu/TJfV+LW82R+Ntak57lWCbket4Gy05ARa2KAq/KKiZcbw7zTrjWt2u55MqV/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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 STP Parameter Regimes:\n",
- " Blue (Depressing): High U, slow depression recovery\n",
- " Green (Facilitating): Low U, fast depression recovery\n",
- " Magenta (Mixed): Balanced parameters\n"
- ]
- }
- ],
- "source": [
- "# Use BrainPy's built-in STP model\n",
- "# For demonstration, we'll test different parameter regimes\n",
- "\n",
- "def simulate_stp(tau_f, tau_d, U, spike_indices, n_steps, label):\n",
- " \"\"\"Simulate STP synapse and return conductance history.\"\"\"\n",
- " \n",
- " class STPSynapse(brainpy.state.Synapse):\n",
- " def __init__(self, size, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " self.tau = 5.0 * u.ms\n",
- " self.tau_f = tau_f\n",
- " self.tau_d = tau_d\n",
- " self.U = U\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.x = brainstate.ShortTermState(jnp.ones(size))\n",
- " self.u = brainstate.ShortTermState(jnp.ones(size) * U)\n",
- " \n",
- " def reset_state(self, batch_size=None):\n",
- " self.g.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.x.value = jnp.ones(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.u.value = jnp.ones(self.size if batch_size is None else (batch_size, self.size)) * self.U\n",
- " \n",
- " def update(self, pre_spike):\n",
- " dt = brainstate.environ.get_dt()\n",
- " \n",
- " # Facilitation\n",
- " u_new = self.u.value + pre_spike * (self.U * (1.0 - self.u.value))\n",
- " du = -(u_new - self.U) / self.tau_f.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.u.value = u_new + du\n",
- " \n",
- " # Depression\n",
- " x_new = self.x.value + pre_spike * (-self.u.value * self.x.value)\n",
- " dx = (1.0 - x_new) / self.tau_d.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.x.value = x_new + dx\n",
- " \n",
- " # Conductance\n",
- " dg = -self.g.value / self.tau.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.g.value += dg + pre_spike * self.u.value * self.x.value\n",
- " \n",
- " return self.g.value\n",
- " \n",
- " syn = STPSynapse(size=1)\n",
- " brainstate.nn.init_all_states(syn)\n",
- " \n",
- " g_hist = []\n",
- " for i in range(n_steps):\n",
- " spike = 1.0 if i in spike_indices else 0.0\n",
- " g = syn(spike)\n",
- " g_hist.append(float(g.item()))\n",
- " \n",
- " return g_hist\n",
- "\n",
- "# Three parameter regimes\n",
- "g_depressing = simulate_stp(\n",
- " tau_f=50.0*u.ms, tau_d=400.0*u.ms, U=0.6,\n",
- " spike_indices=spike_indices, n_steps=n_steps, label='Depressing'\n",
- ")\n",
- "\n",
- "g_facilitating = simulate_stp(\n",
- " tau_f=400.0*u.ms, tau_d=50.0*u.ms, U=0.1,\n",
- " spike_indices=spike_indices, n_steps=n_steps, label='Facilitating'\n",
- ")\n",
- "\n",
- "g_mixed = simulate_stp(\n",
- " tau_f=200.0*u.ms, tau_d=200.0*u.ms, U=0.3,\n",
- " spike_indices=spike_indices, n_steps=n_steps, label='Mixed'\n",
- ")\n",
- "\n",
- "# Plot all three\n",
- "fig, ax = plt.subplots(figsize=(14, 6))\n",
- "\n",
- "ax.plot(times, g_depressing, 'b-', linewidth=2, label='Depressing (large U, slow recovery)', alpha=0.8)\n",
- "ax.plot(times, g_facilitating, 'g-', linewidth=2, label='Facilitating (small U, fast recovery)', alpha=0.8)\n",
- "ax.plot(times, g_mixed, 'm-', linewidth=2, label='Mixed (balanced)', alpha=0.8)\n",
- "\n",
- "for st in spike_times:\n",
- " ax.axvline(st, color='r', linestyle='--', alpha=0.2)\n",
- "\n",
- "ax.set_xlabel('Time (ms)', fontsize=12)\n",
- "ax.set_ylabel('Synaptic Conductance', fontsize=12)\n",
- "ax.set_title('Short-Term Plasticity: Parameter Regimes', fontsize=14, fontweight='bold')\n",
- "ax.legend(fontsize=11)\n",
- "ax.grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 STP Parameter Regimes:\")\n",
- "print(\" Blue (Depressing): High U, slow depression recovery\")\n",
- "print(\" Green (Facilitating): Low U, fast depression recovery\")\n",
- "print(\" Magenta (Mixed): Balanced parameters\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: Spike-Timing-Dependent Plasticity (STDP)\n",
- "\n",
- "STDP is a form of long-term plasticity where synaptic strength changes depend on the relative timing of pre- and postsynaptic spikes.\n",
- "\n",
- "**STDP rule:**\n",
- "- **Potentiation**: If pre-spike occurs before post-spike ($\\Delta t > 0$), strengthen synapse\n",
- "- **Depression**: If post-spike occurs before pre-spike ($\\Delta t < 0$), weaken synapse\n",
- "\n",
- "**Weight update:**\n",
- "$$\n",
- "\\Delta w = \\begin{cases}\n",
- "A_+ e^{-\\Delta t / \\tau_+} & \\text{if } \\Delta t > 0 \\\\\n",
- "-A_- e^{\\Delta t / \\tau_-} & \\text{if } \\Delta t < 0\n",
- "\\end{cases}\n",
- "$$\n",
- "\n",
- "Where $\\Delta t = t_{post} - t_{pre}$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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LixDhw51WX+RcXq9tmnTRqKjoyVr1qxSokQJs+pLXFycwzFc095hzJgx5rrW67VGjRqyfv16V3cJN2DQoEFy6623So4cOcx7rIcfflh27tzpcMzdd9+d4trt0KGDy/qM69O3b98U41i2bFn7/vPnz0unTp0kV65cEhoaKk2bNpVDhw65tM/InPdduunYKq5nz/TDDz/Igw8+KAUKFDBj9tVXXzns1zXoevfuLfnz5zfvxerXry9//PGHwzHHjh2Tp556SsLCwszf3fre7fTp0+LJCEohU+gfLc2aNZOOHTumuj8hIcEEpPS41atXy0cffWQCTnrR2ezevdscU7duXdm8ebN06dJFnnvuOfn++++d+EyQXhqEPHDggMOm46V/0FavXt3h2MWLFzscFxMT47J+4/r179/fYRxfeOEF+76TJ09KgwYNpGjRorJp0yZ55513zBvniRMnurTPSL/ffvtNEhMTZcKECbJ9+3YZPny4jB8/Xl5//fUUx3JNe7YZM2ZI165dTdDxp59+kipVqkjDhg3l8OHDru4artOKFSvMH6saIF60aJFcvHjR/Ew+c+aMw3Ft27Z1uHb58MAzVahQwWEcV65cad/38ssvyzfffCOzZs0y3xf79++XJk2auLS/yDj9gDfpGOt1rfTvLRuuZ8+jP5P1d65+MJSaoUOHysiRI837r3Xr1kn27NnN72cNNttoQErfp+n3xLx580ygq127duLRLCATTZkyxQoPD0/RPn/+fMvf3986ePCgvW3cuHFWWFiYdeHCBXP7tddesypUqOBwv8cff9xq2LChE3qOGxUXF2flyZPH6t+/v71t9+7dlv6Y+fnnn13aN9y4okWLWsOHD7/q/rFjx1oRERH261l1797dKlOmjJN6iJth6NChVnR0tP0217R3uO2226xOnTrZbyckJFgFChSwBg0a5NJ+IfMcPnzYXKsrVqywt911113WSy+95NJ+4cb16dPHqlKlSqr7Tpw4YQUFBVmzZs2yt+3YscN8L6xZs8aJvURm02u3RIkSVmJiornN9ez59LqcM2eO/baObb58+ax33nnH4ZoODg62Pv/8c3P7119/NffbsGGD/ZjvvvvO8vPzs/bt22d5KjKl4BRr1qyRSpUqSd68ee1tGvXV7AqN9NqO0RTFpPQYbYf7+/rrr+Xo0aPSunXrFPseeughM52g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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 STDP Principle:\n",
- " 'Neurons that fire together, wire together'\n",
- " Positive Δt (pre→post): Potentiation (LTP)\n",
- " Negative Δt (post→pre): Depression (LTD)\n",
- " Exponential decay with distance from Δt=0\n"
- ]
- }
- ],
- "source": [
- "# STDP learning window\n",
- "def stdp_window(dt_values, A_plus=0.01, A_minus=0.01, tau_plus=20.0, tau_minus=20.0):\n",
- " \"\"\"Compute STDP weight change as a function of spike timing difference.\"\"\"\n",
- " dw = np.zeros_like(dt_values)\n",
- " \n",
- " # Potentiation (pre before post)\n",
- " pos_mask = dt_values > 0\n",
- " dw[pos_mask] = A_plus * np.exp(-dt_values[pos_mask] / tau_plus)\n",
- " \n",
- " # Depression (post before pre)\n",
- " neg_mask = dt_values < 0\n",
- " dw[neg_mask] = -A_minus * np.exp(dt_values[neg_mask] / tau_minus)\n",
- " \n",
- " return dw\n",
- "\n",
- "# Plot STDP window\n",
- "dt_range = np.linspace(-100, 100, 1000)\n",
- "dw_values = stdp_window(dt_range)\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(12, 6))\n",
- "\n",
- "# Plot STDP curve\n",
- "ax.plot(dt_range, dw_values, 'b-', linewidth=3)\n",
- "ax.axhline(0, color='k', linestyle='--', alpha=0.3)\n",
- "ax.axvline(0, color='k', linestyle='--', alpha=0.3)\n",
- "\n",
- "# Annotate regions\n",
- "ax.fill_between(dt_range[dt_range > 0], 0, dw_values[dt_range > 0], \n",
- " alpha=0.3, color='green', label='LTP (potentiation)')\n",
- "ax.fill_between(dt_range[dt_range < 0], 0, dw_values[dt_range < 0], \n",
- " alpha=0.3, color='red', label='LTD (depression)')\n",
- "\n",
- "ax.set_xlabel('Δt = t_post - t_pre (ms)', fontsize=12)\n",
- "ax.set_ylabel('Weight Change Δw', fontsize=12)\n",
- "ax.set_title('STDP Learning Window', fontsize=14, fontweight='bold')\n",
- "ax.legend(fontsize=11)\n",
- "ax.grid(True, alpha=0.3)\n",
- "\n",
- "# Add annotations\n",
- "ax.annotate('Pre → Post\\nStrengthen', xy=(30, 0.006), fontsize=10,\n",
- " ha='center', bbox=dict(boxstyle='round', facecolor='green', alpha=0.2))\n",
- "ax.annotate('Post → Pre\\nWeaken', xy=(-30, -0.006), fontsize=10,\n",
- " ha='center', bbox=dict(boxstyle='round', facecolor='red', alpha=0.2))\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 STDP Principle:\")\n",
- "print(\" 'Neurons that fire together, wire together'\")\n",
- "print(\" Positive Δt (pre→post): Potentiation (LTP)\")\n",
- "print(\" Negative Δt (post→pre): Depression (LTD)\")\n",
- "print(\" Exponential decay with distance from Δt=0\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Implementing STDP in Networks\n",
- "\n",
- "Let's implement a simple STDP learning rule in a small network. We'll track spike times and update weights according to the STDP rule."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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TSiEhO8kiwsJh0XWRMakSROmZMB3iAvAibiAFwSDQTnppJOilzt16mSqkCZMmCD/+te/4m5rWZbs3btXypcvf8jPZx4jtNesl8spF6mW0ka1eyNjUq5cStVS7du3P+RtgD/x2xbwID1oLF+/3Cy6XjgobWS5Wawwnc7hP0XFhSxfHlk4AwB8iLgAnIgLeFGTJk3MNL7vvvsuOiVu5syZcvzxx5tk1Kuvvmput2jRIjPVr3LlypKbmysXXHCB5OfnH/Dxv/jiC/nd734n9evWN/c95phj5P777xfZtcssF118sXnON954w/ysUKGCdOjQQRYvXlzs9L1E4XBYLr30Uqldu7Z89NFHZmzLli1y5ZVXSv369c1r0cd96623DnufwRuolAKyBO0PAAAAgHg79u4o8rqcYI5UKFMhpdtqRV3FshUP6bYlYevWrbJp0yZp0KCB7Nu3T37++We5+uqr5dZbbzUJK100IdW9e3fp27evTJs2TXbs2GGuP+ecc8x1xTn77LOldp3a8shjj0j92vVl1apV8uMPP8TdZu3atSZ5pD2vdIre3//+d+nVq5esWLFC8vLyDvga9u/fL4MGDZJ58+aZRZNbWuH129/+VtavXy+jR4+Whg0bypQpU+TMM880UxXbtGlz2PsO7kZSCshC/IEPAAAAEKkypuizx/U9qq+8fsHr0ct5D+bJzn07k9721KanyryL5kUvN3u4mWzcuTHpbTs26CgfDv1QDpcmceyeUjfccIOEQiH5/e9/L88995z88ssvpmqpc+fO0dtfcskl0rFjR5kxY0a0WbkmdeyqKk1WJbNx40ZTgTX6gdHS58w+kls+11RbmS8VBQXR223evFmmT58euU73yamnSuPGjeWhhx6SMWPGFPta9uzZI3/4wx9k2bJl8t5778lRRx1lxp955hkz9umnn0qrVq3MmJ3o0j5azz///GHvR7gb0/eALEGlFAAAAJAdtMqpbNmyZjniiCNk7ty5ppeUJmxUrVq14hJSO3fulPfff1/OP/98k7zShJYuRx99tEkcffhhJEkWe50uOoVVH6tp06Zy9+13y3NTnjNJsGR0OqCdkLIv9+jRQz744INiX8uuXbvM1MCvvvrKnEHQTkgpnaaniTPdztjt0uope5uR3aiUArIQlVIAAACAyPZR24udvhcrf0TRvZdMQ/wYq69ZnfJt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+PHSrFkzqVChgnTu3FmWLFmS6U0CSsWYMWPkxBNPlKpVq0peXp7069dPvvnmm7jb7N69W4YNGya1atWSKlWqSP/+/WX9+vVxt1mzZo2ceeaZUqlSJfM4I0eOlP3796f51QAl7+9//7sEAgG59tpro2PEBPzqp59+kgsvvNB89itWrCht2rSRjz76KHq9tnC9/fbbpX79+ub6Hj16yIoVK+IeY/PmzTJw4ECpVq2aVK9eXS655BLZvn17Bl4NcPhCoZDcdtttcsQRR5jPfIsWLeSee+4xsWAjLpDt3nvvPTnrrLOkQYMG5v9ML730Utz1JRUDn332mXTr1s18R2/cuLHcf//94iUkpZCyadOmyfXXX2/OAvDxxx/L8ccfL7169ZL8/PxMbxpQ4t59913z5Xrx4sUye/Zs2bdvn/Ts2VN27NgRvc11110nr776qkyfPt3c/ueff5bzzjsv7j9k+uV77969snDhQnnqqadk8uTJ5uADeNmHH34ojz/+uLRt2zZunJiAH/3yyy/ym9/8RsqWLStvvPGGfPnll/KPf/xDatSoEb2NfkH45z//KRMmTJAPPvhAKleubP4PpYlcm37p+OKLL8wx57XXXjNfZi677LIMvSrg8Nx3333y2GOPyb/+9S/56quvzGWNg0ceeSR6G+IC2U6/N+h3Zi3sSKYkYmDr1q3mO0rTpk1l6dKl8sADD8idd94p//73v8Uz9Ox7QCo6depkDRs2LHo5FApZDRo0sMaMGZPR7QLSIT8/X/+0Z7377rvm8pYtW6yyZcta06dPj97mq6++MrdZtGiRuTxz5kwrGAxa69ati97mscces6pVq2bt2bMnA68COHzbtm2zjjrqKGv27NnWqaeeal1zzTVmnJiAX910003WySefXOT14XDYqlevnvXAAw9ExzReypcvbz333HPm8pdffmli5cMPP4ze5o033rACgYD1008/lfIrAEremWeeaf35z3+OGzvvvPOsgQMHmnXiAn6jn+UXX3wxermkYuDRRx+1atSoEff/KD0uHXPMMZZXUCmFlOhftTXzqiWFtmAwaC4vWrQoo9sGpENBQYH5WbNmTfNT40Grp2JjomXLltKkSZNoTOhPncJRt27d6G30rx/6Fw39iwfgRVpBqNVOsZ99RUzAr1555RXp2LGjnH/++WZKavv27WXixInR67/77jtZ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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 STDP Learning Result:\n",
- " Initial weight: 0.500\n",
- " Final weight: 0.481\n",
- " Change: -0.019\n",
- " ✅ Weight increased due to consistent pre→post timing!\n"
- ]
- }
- ],
- "source": [
- "class STDPSynapse(brainpy.state.Synapse):\n",
- " \"\"\"Synapse with STDP learning.\"\"\"\n",
- " \n",
- " def __init__(self, size, tau=5.0*u.ms, A_plus=0.01, A_minus=0.01, \n",
- " tau_plus=20.0*u.ms, tau_minus=20.0*u.ms, w_max=1.0, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " \n",
- " self.tau = tau\n",
- " self.A_plus = A_plus\n",
- " self.A_minus = A_minus\n",
- " self.tau_plus = tau_plus\n",
- " self.tau_minus = tau_minus\n",
- " self.w_max = w_max\n",
- " \n",
- " # States\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.w = brainstate.ParamState(jnp.ones(size) * 0.5) # Learnable weights\n",
- " self.pre_trace = brainstate.ShortTermState(jnp.zeros(size)) # Pre-synaptic trace\n",
- " self.post_trace = brainstate.ShortTermState(jnp.zeros(size)) # Post-synaptic trace\n",
- " \n",
- " def reset_state(self, batch_size=None):\n",
- " self.g.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.pre_trace.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " self.post_trace.value = jnp.zeros(self.size if batch_size is None else (batch_size, self.size))\n",
- " \n",
- " def update(self, pre_spike, post_spike=None):\n",
- " dt = brainstate.environ.get_dt()\n",
- " \n",
- " # Update pre-synaptic trace\n",
- " self.pre_trace.value += -self.pre_trace.value / self.tau_plus.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.pre_trace.value += pre_spike\n",
- " \n",
- " # Update conductance\n",
- " dg = -self.g.value / self.tau.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.g.value += dg + pre_spike * self.w.value\n",
- " \n",
- " # STDP learning (if post spike provided)\n",
- " if post_spike is not None:\n",
- " # Update post-synaptic trace\n",
- " self.post_trace.value += -self.post_trace.value / self.tau_minus.to_decimal(u.ms) * dt.to_decimal(u.ms)\n",
- " self.post_trace.value += post_spike\n",
- " \n",
- " # Weight updates\n",
- " # LTP: pre spike causes weight increase proportional to post trace\n",
- " dw_ltp = self.A_plus * pre_spike * self.post_trace.value\n",
- " # LTD: post spike causes weight decrease proportional to pre trace\n",
- " dw_ltd = -self.A_minus * post_spike * self.pre_trace.value\n",
- " \n",
- " # Update weights with bounds\n",
- " self.w.value = jnp.clip(self.w.value + dw_ltp + dw_ltd, 0.0, self.w_max)\n",
- " \n",
- " return self.g.value\n",
- "\n",
- "# Test STDP learning\n",
- "stdp_syn = STDPSynapse(size=1, A_plus=0.005, A_minus=0.005)\n",
- "brainstate.nn.init_all_states(stdp_syn)\n",
- "\n",
- "# Simulate with correlated pre-post spikes\n",
- "duration = 1000 * u.ms\n",
- "n_steps = int(duration / brainstate.environ.get_dt())\n",
- "\n",
- "# Pre spikes followed by post spikes (should cause LTP)\n",
- "pre_spike_times = [100, 300, 500, 700, 900] # ms\n",
- "post_spike_times = [105, 305, 505, 705, 905] # 5ms after pre (potentiation)\n",
- "\n",
- "pre_indices = [int(t / 0.1) for t in pre_spike_times]\n",
- "post_indices = [int(t / 0.1) for t in post_spike_times]\n",
- "\n",
- "w_history = []\n",
- "for i in range(n_steps):\n",
- " pre_spike = 1.0 if i in pre_indices else 0.0\n",
- " post_spike = 1.0 if i in post_indices else 0.0\n",
- " stdp_syn(pre_spike, post_spike)\n",
- " w_history.append(float(stdp_syn.w.value.item()))\n",
- "\n",
- "# Plot weight evolution\n",
- "times_plot = np.arange(n_steps) * 0.1\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(12, 6))\n",
- "\n",
- "ax.plot(times_plot, w_history, 'b-', linewidth=2, label='Synaptic Weight')\n",
- "\n",
- "for pt, pst in zip(pre_spike_times, post_spike_times):\n",
- " ax.axvline(pt, color='g', linestyle='--', alpha=0.3, linewidth=1.5)\n",
- " ax.axvline(pst, color='r', linestyle='--', alpha=0.3, linewidth=1.5)\n",
- "\n",
- "# Add legend entries\n",
- "from matplotlib.lines import Line2D\n",
- "legend_elements = [\n",
- " Line2D([0], [0], color='b', linewidth=2, label='Synaptic Weight'),\n",
- " Line2D([0], [0], color='g', linestyle='--', label='Pre-spike'),\n",
- " Line2D([0], [0], color='r', linestyle='--', label='Post-spike (5ms later)')\n",
- "]\n",
- "ax.legend(handles=legend_elements, fontsize=11)\n",
- "\n",
- "ax.set_xlabel('Time (ms)', fontsize=12)\n",
- "ax.set_ylabel('Weight', fontsize=12)\n",
- "ax.set_title('STDP Learning: Weight Potentiation', fontsize=14, fontweight='bold')\n",
- "ax.grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(f\"📊 STDP Learning Result:\")\n",
- "print(f\" Initial weight: {w_history[0]:.3f}\")\n",
- "print(f\" Final weight: {w_history[-1]:.3f}\")\n",
- "print(f\" Change: {w_history[-1] - w_history[0]:+.3f}\")\n",
- "print(f\" ✅ Weight increased due to consistent pre→post timing!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Network with Plastic Synapses\n",
- "\n",
- "Let's build a small recurrent network with STDP to see how plasticity affects network dynamics."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAMWCAYAAACKoqSLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA7rlJREFUeJzs3QmYFNW5+P93BhRQmBlUVmVxxw0VR1TAEEFFY4hb4nIVcYneKBqFaIzGDTVCNG4Rt3gVyTWuUTEY4aqDikYRwQWXyA9RFmUZRIYBBESm/89b+Vfb3dNLLedUF93fz/M03bWdOmtVc+b0qYpEIpEQAAAAAAAAAEAsVBY7AgAAAAAAAACAH9BpCwAAAAAAAAAxQqctAAAAAAAAAMQInbYAAAAAAAAAECN02gIAAAAAAABAjNBpCwAAAAAAAAAxQqctAAAAAAAAAMQInbYAAAAAAAAAECN02gIAAAAAAABAjNBpCwAAgMBeffVVqaioSL7mz58vpeS6665Lpq1nz56hwtK8Sc0rzbtScOaZZybT9OMf/zjy4wEAAEoRnbYAAKCsZXY6tmjRQj788MO0fdasWZO2j3bkhfXwww+nhYnmli5dKltssUVaPv385z+PZYdsWHTomvfvf/9bzj33XNl1112lTZs20rp1a9l+++1l//33l2HDhsmtt94qGzdubFYXvL40bdmOrayslFatWsm2224re+yxhxx33HFy3333yerVqz1dC1Jf7dq1k/32209+97vfSX19faT5BwAAiqtlkc8PAAAQK01NTXLVVVfJc889V+yolL3//d//le+//z5t3aRJk+Sbb76RbbbZJpI4HHnkkdK2bVvnc3V1daiwNM633HJLcnnnnXeWUnDKKafI3nvv7Xzu1q2bxMHkyZOdztLvvvsubf3ixYud1/vvvy+PPPKInHPOOVJTU2P03IlEwjmv1lN9ffrpp8715Pe//708+OCDTry80j8YffDBB85Lj62rq5PevXsbjS8AAIgnOm0BAAAy/OMf/5C3335bDjrooGJHJbbWrl3rjF60acKECc3WaWfYo48+KhdeeKFEoV+/fs7LhKqqKrn00kul1Bx11FHOKy42bdokv/zlL5Mdtjri9aSTTnI6lL/99lunE3XatGlpI1dTO+dd9957r3z++efO5/bt28uVV16Ztt3tqM6k+2kH//Lly+W1116Td955x1mvHbgnnHCCU3+1ozuXX/3qV06H/rp16+Tll1924qq+/vprGT58uLz33nuB8wYAAGxGEgAAAGXslVdeSehXoszXoEGDkvusXr06bdu1117bLJx58+YlLrrookSvXr0SW221VaJ169aJPfbYI3H55Zcnli9fntzviy++yHq+zPDff//9tHULFixIhnHFFVck148cOTK5funSpWnHTJ8+PS2OL7/8cuLEE09MbL/99oktt9wy0a5du8T++++fuOaaaxIrVqxolqYePXqkxen1119PDB48OFFVVeWsW7lyZbP80/S5br/99oL5lsuMGTPSjt1tt92Snw844IC8x7700kuJk046KdG9e/dEq1atnPjutddeifPPP98pi1xlnvoaP368E5bG2V2n+aFWrVrllHHmvqn0/O72ww8/PGvZazwy8znba+DAgYmpU6emrZszZ07a+TZt2pTo1KlTcvvYsWPz5tEdd9yR3HfHHXdM23bIIYcktz333HPJ9Y8//nhyvdadjRs3OuuHDx+eFleleVIoj930Zx6vZaRl1aVLF6eeapv6y1/+kvDqgw8+SDvPq6++2myfpqamRF1dXWL9+vU5w9G4ZJZ9Nql1JLMNqIkTJzr10N3etm3bRH19fXJ7Zl65+eIaMGBA2na91gAAgNLHnLYAAAApOnfu7LxPnTrVGeXmhf70eZ999pG77rrLGcWno/nWr1/vzKn5xz/+0ZmTUj/7oT+B1hGCrjfeeCP5+fXXXy/4WUd11tbWJpd/85vfyOGHHy5PP/20fPXVV84oRJ1jU0ftXX/99c75Pv7445zxefHFF505SfXn2Y2NjQXjf88998jIkSOTy2PHjvU1F/D48eOTn3fYYQe5+eabk8uzZs1qNu+w+7N0ncP0iCOOkCeffFIWLlwoGzZscOKradORk19++aWEpXl74oknJpcfe+yxZj9p12kcXGeffXbocx522GFpIzv/53/+J227juhctmyZ81nnZT7jjDMKhuf64osvnCkDlI7u1PwtVL8OPfRQadmypZV5jA888ECnrJYsWeLUU21T5513njz00EOewsicUkOnFsik88UOGjTImXvWtmOPPVZuvPHGtPqRWX75HHzwwc3yCAAAlD46bQEAAFJcfvnlyc6ozJ9DZ6MdXqeeeqrTUav22msvZ05cPbZHjx7OOu0k1U4+/dm2O6/pySefnBaOrnNf+lNt7VQaOHBgsw4z7YR0f26ttNNVO4FS93E71bTzzp0b9rbbbktuc+OonYnuPhpH/el2ZoeX66233nI6uLTzbPTo0c68nO6xmbRDKnX6gjvvvNPJV680jY8//nhyWX/afvTRR6fNPaoPb8r0pz/9Ka0zTDu9zz//fKez+L/+679k6623dtbrT881n7Vz16U/f08tA+04zOess85KftaO7NSf2k+cONHp/FQa5+OPPz5vWDrXaWZd05/Iu3HRNKjUPP3rX/+afIiWeuqpp5KfdaqCLl265D2n/pFhu+22Sy67dUenBUmdB9b9aX7qPpmdvtlo/mncU/9wsNNOO6XlcbY5fefMmeN0SmqaR40alTYFR2rHfT69evVKO+7iiy92HkD2i1/8QsaMGeOkSdtilLStpT5w8JVXXvF87PTp07P+YQkAAJS4Yg/1BQAAKKbMn8pPmjQpcd555yWXn3nmmbzTI+j0BKk/4V+3bl1y2+LFixMtWrTI+lPzzJ9EZzNu3Ljkdv15v5o2bZqzrD+33nrrrZ3P//d//+ds22+//ZL733rrrclw9t133+T6nj17Jr799tvktnvuuSctHs8++2xyW+rP9jUds2bNKph/o0ePTlRWVjqfKyoqEvfff7/vMnniiSfSwnznnXec9WeffXZynU4F4P48350eoEOHDsntOgXEsmXL0sL9+uuvEw0NDcnlbFMfZMq1j/68XqcVcLfdddddyW0/+clPkuv1Z/6uXNMjFNrmWrNmTaKmpia5z9NPP+2s//7779OmRnDXF/Lzn/88ecyIESOcdddff72zvO222zrvLVu2dM6rU2G45aqv1LqQbXoEL9uy7aMvnU4g2zQO+mpsbPSUtszjMl+aX3fffXfeMExNj+Dq2LFjcp8999wz57XgV7/6VeKWW25J3HDDDWlx0Je2ZQAAUB4YaQsAAJDhmmuukdatWzufdURqU1NTzn3/9a9/JT//v//3/5wRfjqiTl9du3ZNG9H35ptv+opH6mjGTz75xHmQkTtNQt++feWQQw5JjoBctWqVzJ49u9mxOgI4db2ONkwdhZj5M3odUZuNjnTt06dPwThfe+21Tn5VVlY6UxzoyFy/UkfR7rLLLsnRmqkPb9KpAF544YW0EZr64CfXr3/9a+nYsWNauDryVh8QZYKW75lnntls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9Gjj8QYAAAAAAABQuor+IDIdfTp27FgZMmSI7L///s4DyZTObXvbbbfJZ599ZrXDdsGCBc4ct/lG2WajUynstttueeN3xRVXOFMvuK9FixYZiDkAAAAAAACAUlbUkbZffvmlDBw40OnM3HXXXeXTTz+VNWvWJOe2vf/++51O1TvvvNNKh63OUfvKK6/Itttu6zsMjee8efNk2LBhOfdp1aqV8wIAAAAAAACAzWKk7WWXXebMCasPHHvttdecaQpSHXfccfLyyy8H6lDVMPWldP5Z/awPDtMOW50vd+bMmfK3v/1NNm3aJEuXLnVe3333XTIMnUt33LhxyeVLL73UieP8+fPlzTfflOOPP15atGjhzIULAAAAAAAAACUx0vbFF1+UkSNHyp577ikrVqxotn2nnXYKNKWAdsgedthhyeVRo0Y578OHD5frrrvOefiZ2m+//dKO01G3P/7xj53POor266+/ThsVrB20Gs8OHTrIgAEDZPr06c5nAAAAAAAAACiJTtt169bl7fTUUbhBaMdr5qjdVPm2uXREbarHH388UFwAAAAAAAAAYLOZHkFH2E6bNi3n9okTJzoPJwMAAAAAAACAclHUkbaXXHKJM2VB79695Re/+IWzrqmpST777DMZPXq0vPXWW/L0009LqdEpIUaMGCF1dXXO3LnK/VxbW5s2zUPm+sx1YZdNh+k1LWHi1aVLF1myZEnO83mNX67PXvPFb7oyz2E6n4PEz8txQc8VZl22svZbvl7rWZgwvdahQYMGSbdu3WTWrFkydepUK2VeKO1B9vdzTJB64ie8qOqpnzpkOs0mys1Emw/S1oKUR9i4m7w2mbje54pfv379nKmecrX9MGXqN5+DlIuN625U90rT11Ub9dhEHhWq52HupX6vxUHzxEQ4tr7j2Gr7Ya8tNu4jYcvbxDUmX/2zVd/8ptt2HKO4zti459o8Z9j7nalrcaF80e/6M2bMkL59+8qBBx7oKQwTcQ9yHlt1J4r7YDHS4vfaW4x7WpTfO8LW41zX5qD1VoX9DpgtDC/hlnSn7emnny4LFiyQq666Sn7/+98764466ihn+oLKykq56aabnIeRlZpJkyZJr169ZPLkycl17ufUQteKkLk+c13YZdNhek1LmHi1adPGmVoj1/m8xi/XZ6/54jddmecwnc9B4ufluKDnCrMuW1n7LV+v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lMrKymJHB0BEaPtAeaLtA+WJtg+Up4aGBmnfvr2V6RG4kgAAAAAAAABAjNBpCwAAAAAAAAAxQqctAAAAAAAAAMQInbYAAAAAAAAAECN02gIAAAAAAABAjNBpCwAAAAAAAAAxQqctAAAAAAAAAMQInbYAAAAAAAAAECNl2Wl73XXXSUVFRdqrV69eeY956qmnnH1at24t++yzj7zwwguRxRcAAAAAAABA+SjLTlu11157yZIlS5KvN954I+e+b775ppx66qlyzjnnyHvvvSfHHXec8/roo48ijTMAAAAAAACA0le2nbYtW7aUzp07J1/bbbddzn3vvPNOOeqoo+Syyy6TPfbYQ2644Qbp06ePjBs3LtI4AwAAAAAAACh9LaVMzZ07V7p27epMd3DIIYfImDFjpHv37ln3feutt2TUqFFp64YMGSITJ07Me44NGzY4L1djY6PzPmzYMBkwYIAMHjzYWa6rq2v2uba2NnnczJkz09anLmcek29btrDChB92uVDYheKW65jM4/ymIeh5Ted9VPllIm1h65HX/AmSxiB5YKrupe7Xr18/WbRokUydOtVze40qvXE4h992G6adh7mumW6HYa7hfrd7jYeXzybbmulrtsn7Vti46B941axZs3K2/WK0QS/XGxN13dY+ptuGl/tAkGOC3CuiqKcm78Emys9E/TVdVibuE3rf79ixo++4maiLtr7b5TvOb7nYqpf54mTj+4rt+5Kf9NhsN1GVn4l0+Yl7rm1dunRxfo3rN06DBg2S9evXy4QJE4xdk02XTdi8MbVsq44EqaumrgVBrg+2vxfauA7GKf4zA9zLbOSBTWXZaXvQQQfJww8/LLvvvrtzMR49erQceuihznQH7dq1a7b/0qVLpVOnTmnrdFnX56MdwRp2Jv2P2+rVq5PLkydPbvY5teC1MqSuT13OPCbftmxhhQk/7HKhsAvFLdcxmcf5TUPQ85rO+6jyy0TawtYjr/kTJI1B8iBoXuY6bsqUKdK2bVtZs2aNr/YaVXrjcI5C9Szs/qaua37jFSa8bHUizHav8fDy2WRbCxPvsOk2XVcy4+J22up932abC3tvD1IOhc5hc59s8Te53eZ9PVteR11PTd6DTZSfifpruqzC5Kly7/v9+/f3HTcTddHWd7t8x/ktF1v1Ml+cbHxfsX1f8pMem+0mqvIzkS4/cc+1rU2bNrJu3bpAcdK2r9eAIMdGUTZh88bUsq064jfe2eqMyfibrvOmvyNEHR+b33FUkLL1so/XemRDWXbaHn300cnPvXv3djpxe/ToIU8++aQzb60pV1xxRdoIXR1p261bN+cvcKkjbVWuz6nLud69bvN7rJ99gr6bPm+YdIY9r428jyK/TKTNRtxNpTFs+sLWPfddrzU6st9rXKJMbxzO4TecsOe1lT6b4YXd7icefs4RtoxNxttGPTcRF73vm4yTiTiHLQcb8Qhaxra3m2xvXvezWU+DtqEwabZZt8Jut5Wnet8PEjcTddFEmGHj4vV42/XS7zmiuGaFOafNcEymIYp8CVt3821LHWnrJy7uSFsdqGEiPTbKJmzemHoPs85EOy1UZ2y1c5t5GrcyjiL+gwNcD2zkgU0ViUQiYf0sm4EDDzxQDj/8cGd0bCadNkE7Xy+55JLkumuvvdaZHuGDDz7wfA7ttK2urpaVK1dKTU2NsbgDiLempiapr693fiZZWVm2U4kDZYe2D5Qn2j5Qnmj7QHlqaGiQ9u3by6pVq6Sqqspo2FxJRJy/hM2bN8/5i1o2OuetDn9O9dJLLznrAQAAAAAAAMCksuy0vfTSS+W1116T+fPny5tvvinHH3+8tGjRQk499VRn+xlnnOFMbeC6+OKLnXlpbr31Vvn000/luuuucyYevvDCC4uYCgAAAAAAAAClqCzntP3yyy+dDtoVK1ZIhw4dnPllp0+f7nxWCxcuTPs5gz799dFHH5WrrrpKrrzyStl1112dqRH23nvvIqYCAAAAAAAAQCliTtsIMactUJ6Y3wooT7R9oDzR9oHyRNsHylMDc9oCAAAAAAAAQHmg0xYAAAAAAAAAYoROWwAAAAAAAACIETptAQAAAAAAACBG6LQFAAAAAAAAgBih0xYAAAAAAAAAYoROWwAAAAAAAACIETptAQAAAAAAACBGWhY7AuVo2LBhMmDAABk8eLDU1tY662bOnCl1dXV51/ldzgxD+dke9vwmwzaRH7mWu3TpIkuWLAmcj6bLwUt6vYThJV5ezx00/DD1z0S+e0mL6Xqf7bx9+vRx1s2aNUumTp1qtK4ELb+g60zUvSivS37jl+98ptqdyetJ1NfysGmy0d7C7JN5/Td9Px40aJB069YtdNu3XWdsXY9Ml1cxvzNEce8oRjqKWQbFKmubZemGFbTtF7MNp24Pe292mb4n26pXhY7xkl7bdTloXpi+joRtL0HiFLS+RXFNzXaOuXPnyoQJE4y2exP34GKcw+b110t8g67LF3ahvgMT13Cb19go2oqf+4npe6ONe0+u86SG27dvX7GFTtsi0C9vq1evdj67ha4FPXny5Lzr/C5nhqH8bA97fpNhm8iPXMtt2rSRdevWBc5H0+XgJb1ewvASL6/nDhp+mPpnIt+9pMVvuEHO63baats3XVeCll/QdUHiFKYuhy0fv/HLdz4TaQ+bviBlZOvaGeT8puPmpQzy7ZN5/feSv37jOXz48NBt33adsXU9Ml1eJs8Tddu1VU6bcxkUq6xtlmVqWEHafjHbcOp2P/uG+Q4W9juCrTrh97ob5Jxh4+A1L0zEzfT3srD1IGiYpvMi1zlmz54tU6ZMCRWPzH2ClH8czmHz+uslvkHX5Qu7UN+BiWt4oXxx2br3hi371PgHqVdB97F178l1ntRw169fL7bQaVsE+td3d6Sty/2cb53f90LrbJ3XT3yiOLbQe+pfy4LkY7HKIWz++Dl30PDDpDtsPGynL8h5te2bzrOg6TO1zlSe2Sof08fYCNvG8WHyzHaabJ/bzz6Z13/T8XXbfNi2H0WdiaLtm9onijCibmfFTEexyiCq8xSjLMO0/WK24aD7ZtsWNN5hrzthzxFknyDnDBsHr/ubiJvJ9AY93kSYNvIi2zl69+4ta9assdruTcXV9jn8ntP09cHUOj99B6bSXGibjXBt1a+o4ugykZ5C2zL3sTnStiKRSCSshY40jY2NUl1dLStXrpSamppiRwdARJqamqS+vl46duwolZVMJQ6UC9o+UJ5o+0B5ou0D5amhoUHat28vq1atkqqqKqNhcyUBAAAAAAAAgBih0xYAAAAAAAAAYoROWwAAAAAAAACIETptAQAAAAAAACBG6LQFAAAAAAAAgBih0xYAAAAAAAAAYoROWwAAAAAAAACIETptAQAAAAAAACBG6LQFAAAAAAAAgBih0xYAAAAAAAAAYoROWwAAAAAAAACIkZbFjkA5GjZsmAwYMEAGDx4stbW1yfUzZ86Uurq6tPWZ61KXlddtYcLycrzXffwuZ4bpN56F9je57Kc8wpSV7bKOolyLVb9ytbVC+VmoXhUKs0+fPjJ37lyZMGGCtbZgIl22yiLI9cVUPPxcE4K0jWK0j0JlH6QOm7zG+Cljk2EV+36QLQ6zZs2SGTNmSN++feXAAw+0Xl+8tvOo6oK7f5cuXWTJkiWhrmdhr4Em8jLq7zSmv6fZjH/Y9mUjf4v9Hadfv37SsWNHX20wSL0rRtmbujbYvIaHqa9hr5smrmF+z2Eyf6II33ZbDZt/QevAoEGDZP369Tm/8+eLV9Btfr4b2bgWuIJe18Leb6O+l0bddkzlmdc6EqTehMmTsNeGmZavPV7D1+/6ttBpWwRTp06V1atXO59TL3Ra2JMnT05bn7kudVl53RYmLC/He93H73JmmH7jWWh/k8t+yiNMWdku6yjKtVj1y+U3PwvVq0Jhaqft7NmzZcqUKcbyKGy558oLG2VRqM7ZjEehfAvbNvzmRRRl76Ws/aS10PmCtvGg+ee1voRJs6nrmN7v58yZI2vWrEl22kZ5H/KSxzbrgrt/mzZtZN26dZ7LJkh5ms5bG+EXSoPt72k24+8nLTbv8cU4b7Zlvd+3bdtW+vfvX/Ac+fLRS/yKUfamrg359s9X32zXV7/xN3FP8ptem/kTRfi222rY/AtTB7Tt5/rOn++4oNv8fDeycS1wBb2u+c17k99jguSZ3/j7iZ/N70Be64jf/A+bJ37zpy7ia4/X8PWPNbbQaVsE+hc4d6RtKnc5dX3mOj/72AorzD5+303E00a8TOdh2Pj6Pd5UmqLIN5PxCHKuXMf4jVvv3r2djhtbbcFGukyWRZi0ma43ptIWNC+iKHsv8QwaB5NpsJEfYeuVyXLS+73+5y31r+9R1hev5wwTvpf9U0fa5jquULgm4hI2L2235TDlZCP9UZaBrfhFcd58932v5wiTpzbTEDQeJvYPm9YwcQybJ6biY+IcJvPHZPjFbt9B0u8lDHekbb7v/CbjbCu//Z7HT3762ddG/QgbTpD4h42fiTwLs852ngQ55+AitYVc62yOtK1IJBIJa6EjTWNjo1RXV8vKlSulpqam2NEBEJGmpiapr693fiZZWclU4kC5oO0D5Ym2D5Qn2j5QnhoaGqR9+/ayatUqqaqqMhp2WV5JxowZ4/xMsV27ds4F9bjjjnN+vpjPww8/LBUVFWmv1q1bRxZnAAAAAAAAAOWhLDttX3vtNRkxYoRMnz5dXnrpJdm4caMceeSRsnbt2rzHaY+5/rzPfS1YsCCyOAMAAAAAAAAoD2U5p607MXjqKFodcatPef7Rj36U8zgdXdu5c+cIYggAAAAAAACgXJXlSNtMOu+E2mabbfLupxOK9+jRQ7p16ybHHnusfPzxx3n337BhgzOPbeoLAAAAAAAAAPIp+05bnSz8kksukf79+8vee++dc7/dd99dHnroIXnuuefkkUcecY7r16+ffPnll3nnztUHj7kv7ewFAAAAAAAAgHwqEolEQsrY+eefL5MnT5Y33nhDdthhB8/H6Ty4e+yxh5x66qlyww035Bxpqy+XjrTVjtuVK1dKTU2NkfgDiD+eJAuUJ9o+UJ5o+0B5ou0D5amhoUHat2/v/Ipfn4VlUlnOaeu68MIL5fnnn5dp06b56rBVW2yxhey///7y2Wef5dynVatWzgsAAAAAAAAAvCrLP//o4GLtsH322Wdl6tSpsuOOO/oOY9OmTfLhhx9Kly5drMQRAAAAAAAAQHkqy5G2I0aMkEcffdSZn7Zdu3aydOlSZ73OO9umTRvn8xlnnCHbb7+9My+tuv766+Xggw+WXXbZxRn6fMstt8iCBQvkl7/8ZVHTAgAAAAAAAKC0lGWn7b333uu8//jHP05bP378eDnzzDOdzwsXLkybh0bnoT333HOdDl6dq+KAAw6QN998U/bcc8+IYw8AAAAAAACglJVlp62XZ6+9+uqracu333678wIAAAAAAAAAm8qy07bYhg0bJgMGDJDBgwdLbW2tzJw5U+rq6nIuq0L7pC4rr/sGCT/bMSbO6SfMzG2p/MQr7P42ysdLeIX2yZY/ubYX2jdMPviNp6nzZtunGGWdutyvXz/nSbImwzTZvrLlkYm4RFkvbV4ni3musNeYMNdWW+cJe61JXa9zyy9ZssTotShI3LLV30GDBkm3bt1k1qxZzhz6UdQ3E2mzXUdNxMN0u/KST1Hfn8Peb03dq02Vp438CxJPG9eDzGVt8zNmzJC+ffvKgQcemPO8Jq5Xpr9X2Wg7cbhmRBVm0O81Ju6ZpuqJn/pqsv6Zvq7nSouNdpK6j37nX7RokXPfL/Qdpdh5Vszrj6n7k5fjTFzXw+SV3/Nn29/2NSNofntJW75j/NQbZfoe6nf/XPvq/d4WOm2LQC/gq1evdj5rQWshT548OeeyKrRP6rLyum+Q8LMdY+KcfsLM3JbKT7zC7m+jfLyEV2ifbPmTa3uhfcPkg994mjpvtn2KUdbu8pQpU6Rt27bSv39/Y2Gabl/Z8shEXKKslzavk8U8l9+0+8nnMHENc56w15rU9ToX/bp16woeEyYtfu8fqZ+HDx/u3Pejqm8m0ma7jpqIR6H6FfZ7TJB6ZPr+HPZ+G2adjfK0kX9B4hm2jLycR9v8nDlzZM2aNWmdtra/O/nNnyBpyzwmSH6ZOG+xrl1Br1OF8qlQ2fmNa5h64rLdPv3mgYnvDCbimW8f9zu/tn0v31GKnWfFvP6Yuj95OS4zbl7CNZlXfs+fbX+/ZR8kjUHy20va8h1TKB11hr+rhS2LXPuuX79ebKHTtgh05I070lYVeveyT5hjTIVv43ivYaQKGoaN/YPkedjjc+WP1+1Bz28zLSbO4ffYsHHNfO/du7fxME2Wj624RFkvTbbDOJ3Ldj6bapM2zpNrXepy6iiWIPEIWt+8hKH3+9T3qOpb2LRFXUfj0q78bDdVr03Fw/Q6G2UR5T75jvV7jiDn0TavHTeZI29MlYep/Amah2Hzy9R5i3kNCXIOP/loO88KbQsah7DxC5LOQuHZiGe+ffQ7f+vWrY1+R7GVZ8W8/phKW5B1xcirsMf6jUMUafKatiDH+M3TwQbKJUy+2BxpW5HwMsErjGhsbJTq6mrnoWY1NTXFjg6AiDQ1NUl9fb0zPULqAw4BlDbaPlCeaPtAeaLtA+WpoaFB2rdvL6tWrZKqqiqjYXMlAQAAAAAAAIAYodMWAAAAAAAAAGKETlsAAAAAAAAAiBE6bQEAAAAAAAAgRui0BQAAAAAAAIAYodMWAAAAAAAAAGKETlsAAAAAAAAAiBE6bQEAAAAAAAAgRui0BQAAAAAAAIAYodMWAAAAAAAAAGKETlsAAAAAAAAAiJGWxY5AORo2bJgMGDBABg8eLLW1tTJz5kypq6tLLruyrfeyzvay6XOqbJ/z5YWJOJkIN1t8i52fXs/h97yZaQ1yjkJh+M3b1HVdunSRJUuW+Ko7fuITpD642wYNGiTdunUzUj/ytRdb8bex7KWtB6lztq9vYeqwzbSZuhYFuS56TWfQ63uclwvle58+fZx1s2bNkqlTpxq9/9i8z9k6d5h1Jut71NdOG23Lxj26WN+Dovje5CX9JuuFe9/PbPum42Xq2m+rfftNW77tfsvHdLr9xDVfWJnfV4t17bd577PR5ky0z6B13c9xub7zh62/2eLhtRxM13Vb3z9M3Uu9HmejnXgpozDXzyD5GsdriIk657Lx3SZIfv/zn/8UW+i0LQL98rZ69Wrnsxa0FvrkyZOTy65s672ss71s+pwq2+d8eWEiTibCzRbfYuen13P4PW9mWoOco1AYfvM2dV2bNm1k3bp1vuqOn/gEqQ+p24YPH26kfqSeI8r4m17OVr5+60uQ/Iwyj/Ltazpt2fIzSNq9HOennFK3eSnzKO5htutx6na301bv+6bvPzbvc7bOHWadyfqeebzt64KNtmXjHl2s70FRfG/ykn7T9ULv+5lt33S8TOS/rfwMUsfzbfdbPqbT7Seu+cLK/L5arGu/zXufjTbnt/y9xsnUd6PMth8mrV7j4bUc/MbfS7g2vn8UyqMgacl3XJCwTFzjgsbFa/pNpMtG3piucy4b322C5PfLL78sttBpWwT6Fzh3pK3KfHdlW+9lne1322F6yQsTcbKxT1zy01bdMXGOoOcrtD115EIqk/kfdB9t837P5TXdUcQ/inrpJa1RX4ts1xnTaTNxfNA0BYlX0HjG7d1L3rjXgKjbYtB9bJ3b5PnDxjeKfLTdtsJeU2yk3U98bdZrm3XPy75um89s+zbiZSNvbNXVIPEPG1db6Q4aZub3VRPxshGGjbwIG9ew+wZNp5/9833nD5vfhcI0Ef8oryt+jwsTl6BxNJFuU3EJk69xvIaErXMuU3UvbH6vX79e3njjDbGhIpFIJKyEjGYaGxulurpaVq5cKTU1NcWODoCINDU1SX19vXTs2FEqK5lKHCgXtH2gPNH2gfJE2wfKU0NDg7Rv315WrVolVVVVRsPmSgIAAAAAAAAAMUKnLQAAAAAAAADECJ22AAAAAAAAABAjdNoCAAAAAAAAQIzQaQsAAAAAAAAAMUKnLQAAAAAAAADECJ22AAAAAAAAABAjdNoCAAAAAAAAQIyUdaft3XffLT179pTWrVvLQQcdJDNmzMi7/1NPPSW9evVy9t9nn33khRdeiCyuAAAAAAAAAMpD2XbaPvHEEzJq1Ci59tpr5d1335V9991XhgwZIvX19Vn3f/PNN+XUU0+Vc845R9577z057rjjnNdHH30UedwBAAAAAAAAlK6KRCKRkDKkI2sPPPBAGTdunLPc1NQk3bp1k4suukh+97vfNdv/5JNPlrVr18rzzz+fXHfwwQfLfvvtJ/fdd5+nczY2Nkp1dbWsXLlSampqDKYGQJzp9UX/INSxY0eprCzbv5UBZYe2D5Qn2j5Qnmj7QHlqaGiQ9u3by6pVq6Sqqspo2GV5Jfnuu+9k1qxZcvjhhyfX6UVVl996662sx+j61P2VjszNtT8AAAAAAAAABNFSytDXX38tmzZtkk6dOqWt1+VPP/006zFLly7Nur+uz2XDhg3OK3WkrRo5cqSMGDFC6urqZPDgwc4693NtbW1y/5kzZzZbn7mu0HLmMZnnCrO/n21+4xFmOWzYXvI+rmk3UeZh89dr3Q2bz37jaatNec2ffv36yaJFi2Tq1KmR1Otc15FiL5sqh2LH2+t120TbMVl3vRwXJK1h7y1h2r6Xth4kb8LEwd02aNAgWb9+vUyYMMFq/pm6ToW914epW2HvjUHqdpjjTOe53zYSxb06bDs0Wd5h4laM7z76Q0Z9Vkbfvn2dX/aZqme202mqrgS9Dpu4FgWJi618ClPHTFxTTKXL5j3FRvmEvT4EvW4pHRiW2vbD1gET+V+M64+pOHm5/ti6ftq+Hoe9D4ZZV6gd+t1u4/tX0Gv+zCLcR20ry07bqIwZM0ZGjx7dbP2kSZOcB5pNnjw5uc79nFroWhEy12euK7SceUzmucLs72eb33iEWQ4btpe8j2vaTZR52Pz1kn8m8tlvPL3GIUj9KBTnKVOmSNu2bWXNmjWR1WuX6fplun4GLYdixztb/QpSN7zkjcm66+W4IGn1m7ZsYQat74XCCpo3YeKQuk3bvl4DbOafieuUiXt9mLrlN6wgbSLbPkGPM53nhcq4GPfqMPXEZaq8w8StGN991Jw5c5z7vttpazpONtJpqq4EOW+hY/KVQb66FVXehw3Db7zz5YfJ74FewikUl7B1xW86/MTHT1he8lwHZ6S2/bB1wET+28hjG/cgr3XP67q4LWfGsVAeBU23l3XZ6lqY7Ta+f+U7h7LR3sPWVVvKstN2u+22kxYtWsiyZcvS1uty586dsx6j6/3sr6644grnYWepI2113tyhQ4cm/yrgvmd+Tl3Oto/Xd7/hmNg/V5pMpCdMuk3n2eaUdtN5ZSv/TOeVjbCD7tO7d29p3bq1sfR42TfMueJSP+PyXmid13QEOYepPAsTx7Bx8hJm2PpuI2+CxsF9d0fa6n/ebOafqeuUqXprsh6YiGPYehbFPjbyxkReBD2f6TSFjZuJY/1s05G2+gcbHW3n9Xxh0mMzzCDrbMXV6zaT4RYrr03kh6k4mU6/yXRG0Z785Lne91PbfthzmcijqPPLZJy8Hmsj/lHkh43jg6wLu91W2r1ui7rcctVVW8r6QWR6Mb3rrruSk4Z3795dLrzwwpwPIvv222+dUbIu/bmzdsTwIDIA+fBQAqA80faB8kTbB8oTbR8oTw0WH0RWliNtlY6AHT58uDOcWTtv77jjDlm7dq2cddZZzvYzzjhDtt9+e2eKA3XxxRfLwIED5dZbb5VjjjlGHn/8cWcui7/85S9FTgkAAAAAAACAUlK2nbY6cnb58uVyzTXXOA8T22+//Zw559yHjS1cuDDtr2M6qvbRRx+Vq666Sq688krZddddZeLEibL33nsXMRUAAAAAAAAASk3ZTo9QDEyPAJQnfioFlCfaPlCeaPtAeaLtA+WpweL0CFxJAAAAAAAAACBG6LQFAAAAAAAAgBih0xYAAAAAAAAAYoROWwAAAAAAAACIETptAQAAAAAAACBG6LQFAAAAAAAAgBih0xYAAAAAAAAAYqRlsSNQThKJhPPe2NgolZX0lwPloqmpSVavXi2tW7em7QNlhLYPlCfaPlCeaPtAeWpsbEzr8zOJTtsIrVixwnnv0aNHsaMCAAAAAAAAwFCfX3V1tZhEp22EttlmG+d94cKFxgsSQLz/8tatWzdZtGiRVFVVFTs6ACJC2wfKE20fKE+0faA8rVq1Srp3757s8zOJTtsIuT+R0A5bLuJA+dF2T9sHyg9tHyhPtH2gPNH2gfJUaWFaFCZaAQAAAAAAAIAYodMWAAAAAAAAAGKETtsItWrVSq699lrnHUD5oO0D5Ym2D5Qn2j5Qnmj7QHlqZbHtVyQSiYTxUAEAAAAAAAAAgTDSFgAAAAAAAABihE5bAAAAAAAAAIgROm0BAAAAAAAAIEbotAUAAAAAAACAGKHTNiJ333239OzZU1q3bi0HHXSQzJgxo9hRAhDCtGnTZOjQodK1a1epqKiQiRMnpm3XZzxec8010qVLF2nTpo0cfvjhMnfu3LR9vvnmGznttNOkqqpKampq5JxzzpE1a9ZEnBIAfowZM0YOPPBAadeunXTs2FGOO+44mTNnTto+69evlxEjRsi2224rbdu2lRNPPFGWLVuWts/ChQvlmGOOka222soJ57LLLpPvv/8+4tQA8Oree++V3r17O/dsfR1yyCEyefLk5HbaPVD6xo4d63zvv+SSS5LraPtAabruuuuc9p766tWrV+Rtn07bCDzxxBMyatQoufbaa+Xdd9+VfffdV4YMGSL19fXFjhqAgNauXeu0Zf2DTDY333yz/PnPf5b77rtP3n77bdl6662ddq8Xd5d22H788cfy0ksvyfPPP+90BJ933nkRpgKAX6+99przBW369OlO2924caMceeSRzjXBNXLkSJk0aZI89dRTzv6LFy+WE044Ibl906ZNzhe47777Tt58802ZMGGCPPzww84fegDE0w477OB02MyaNUtmzpwpgwYNkmOPPda5jyvaPVDa3nnnHbn//vudP96kou0DpWuvvfaSJUuWJF9vvPFG9G0/Aev69u2bGDFiRHJ506ZNia5duybGjBlT1HgBMEMvpc8++2xyuampKdG5c+fELbfcklzX0NCQaNWqVeKxxx5zlj/55BPnuHfeeSe5z+TJkxMVFRWJr776KuIUAAiqvr7eacuvvfZasq1vscUWiaeeeiq5z7///W9nn7feestZfuGFFxKVlZWJpUuXJve59957E1VVVYkNGzYUIRUAgmjfvn3if/7nf2j3QIlbvXp1Ytddd0289NJLiYEDByYuvvhiZz1tHyhd1157bWLffffNui3Kts9IW8u0V13/Iq8/jXZVVlY6y2+99VZR4wbAji+++EKWLl2a1u6rq6udqVHcdq/vOiVCbW1tch/dX68POjIXwOZh1apVzvs222zjvOs9X0ffprZ//SlV9+7d09r/PvvsI506dUruoyPxGxsbk6P2AMSXjp55/PHHnRH2Ok0C7R4obfoLGx0xl9rGFW0fKG1z5851pkPcaaednF/J6nQHUbf9lkZThGa+/vpr54tdakEpXf7000+LFi8A9miHrcrW7t1t+q7z2qRq2bKl0/Hj7gMg3pqampx57fr37y977723s07b75Zbbun8USZf+892fXC3AYinDz/80Omk1amOdP66Z599Vvbcc095//33afdAidI/0OgUhzo9Qibu+UDpOuigg5zpDHbffXdnaoTRo0fLoYceKh999FGkbZ9OWwAAgIAjb/SLW+r8VgBKl/7HTTtodYT93//+dxk+fLgzjx2A0rRo0SK5+OKLnTns9YHiAMrH0Ucfnfysc1lrJ26PHj3kySefdB40HhWmR7Bsu+22kxYtWjR7ipwud+7cuWjxAmCP27bztXt9z3wYoT5J8ptvvuHaAGwGLrzwQucBgq+88orzgCKXtl+dGqmhoSFv+892fXC3AYgnHVWzyy67yAEHHCBjxoxxHkh655130u6BEqU/gdbv63369HF+Eacv/UONPmxYP+uoOdo+UB5qampkt912k88++yzS+z6dthF8udMvdnV1dWk/p9Rl/XkVgNKz4447Ohfi1Havc9foXLVuu9d3vcjrl0HX1KlTneuD/hUPQDzpswe1w1Z/Fq1tVtt7Kr3nb7HFFmntf86cOc4cWKntX39mnfqHGx3FU1VV5fzUGsDmQe/ZGzZsoN0DJWrw4MFOu9UR9u5Ln0ehc1u6n2n7QHlYs2aNzJs3T7p06RLtfT/U49TgyeOPP+48Nf7hhx92nhh/3nnnJWpqatKeIgdg83uK7Hvvvee89FJ62223OZ8XLFjgbB87dqzTzp977rnE7NmzE8cee2xixx13TKxbty4ZxlFHHZXYf//9E2+//XbijTfecJ5Ke+qppxYxVQAKOf/88xPV1dWJV199NbFkyZLk69tvv03u86tf/SrRvXv3xNSpUxMzZ85MHHLIIc7L9f333yf23nvvxJFHHpl4//33E1OmTEl06NAhccUVVxQpVQAK+d3vfpd47bXXEl988YVzX9flioqKxIsvvuhsp90D5WHgwIGJiy++OLlM2wdK029+8xvn+77e9//1r38lDj/88MR2222XqK+vj7Tt02kbkbvuussp0C233DLRt2/fxPTp04sdJQAhvPLKK05nbeZr+PDhzvampqbE1VdfnejUqZPzR5vBgwcn5syZkxbGihUrnE7atm3bJqqqqhJnnXWW0xkMIL6ytXt9jR8/PrmP/nHmggsuSLRv3z6x1VZbJY4//ninYzfV/PnzE0cffXSiTZs2zhdA/WK4cePGIqQIgBdnn312okePHs53ef1Pl97X3Q5bRbsHyrPTlrYPlKaTTz450aVLF+e+v/322zvLn332WeRtv0L/MTtoGAAAAAAAAAAQFHPaAgAAAAAAAECM0GkLAAAAAAAAADFCpy0AAAAAAAAAxAidtgAAAAAAAAAQI3TaAgAAAAAAAECM0GkLAAAAAAAAADFCpy0AAAAAAAAAxAidtgAAAAAAAAAQI3TaAgAAAAAAAECM0GkLAAAAAAAAADFCpy0AAAAAAAAAxAidtgAAAAAAAAAQI3TaAgAAAAAAAECM0GkLAAAAAAAAADFCpy0AAAAAAAAAxAidtgAAAAAAAAAQI3TaAgAAAAAAAECM0GkLAAAQgZ49e0pFRYXzuu666yI7r3tOfT388MNSSpYuXSpnnXWWbL/99tKyZctkOidOnFjsqJUcrbNu/mpdLmXaTlLbzebc/gEAwOaLTlsAAFASXn311bSOllyvM888U0pFKXfIFpJIJOTnP/+5k+7FixfLpk2bfB3//fffy3333ScDBw6UbbfdVrbYYgtp37697LLLLnLEEUfIZZddJm+99ZaUgzh0yN51111p9bm+vj5te11dXdr2a665plkY++yzT3L7ySefLKVAr1dumn784x8XOzoAACBCLaM8GQAAAKJ1yy23JD8feOCBUioWLlwo//rXv5LLP/3pT+XQQw+VyspK2XvvvfMeu3HjRjnqqKNk6tSpaesbGhqc17x58+Tll1929jvkkEOspWFzcuSRR0rbtm2dz9XV1cbD/9GPfpS2PG3aNKdT3vX666+nbc9cXrFihXz88cc5w/ND20lquwEAACgGOm0BAEBJ0pF2tbW1zdYX6tArNZdeeqmUogULFqQt33HHHbLzzjt7OvbBBx9M67DVEYza4du6dWtZsmSJvPPOO84LP+jXr5/zskVHydbU1Did5tk6bXU51dtvvy3fffedbLnllslOXB197dLyDGqvvfZyXgAAAMXE9AgAAKAk6UhK7bDMfOn6bD+3/uKLL9KOb2pqkq5duya3/+EPf0jbrsdrp9IOO+wgrVq1kqqqKunTp49ce+218s033xibPzPbFAjayZi5r87tmu0n7oWmUPCbjsy5OWfNmuWMctUOt6222srpLHvjjTfELw3njDPOkB133NHpPNVRndrB/pvf/Ea+/PLLZnmi0xqk0mkNvM5B+uKLLyY/a16+8sorcv3118uVV17p/Ex/+vTpTuft6aefntxv+PDhyfCzdV7+85//TG7X+XV1ygY3/NSpOebOnSunnnqqbLfddk46Na+fe+65ZuE9++yzMmzYMOndu7d06tTJ6ZzUPNlzzz3lwgsvlPnz5zc7JvNcn376qZx44omyzTbbOGUzYMAAZwRx5pQio0ePTusMz1ZnCk2hsHbtWqfj3J1uQuPbuXNnZ/nuu+8uWCY6Qlrjl20krY541k5a1aVLF+d93bp1MnPm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eVu+/IfPu+8usv/+wV6//a1I377FTAniIpYjbd955x25//77pXfv3p72nz9/vlx66aVy6KGHNtu2du1aGTBggJx00kly7rnnNtu+ePFi5/WnP/1J9txzT1mwYIH86le/ctb9/e9/T9t3/PjxctRRRyWXa2pqAqUPAAAAAAAA8bdmjUhTU+H9vv76h8+TJonsuqvVaKEMxK7Tds2aNXLaaafJAw88IDfeeGPB/Tdt2uTsP3r0aHn99delIXXmZhEZNmxYsmM3m7333luefvrp5PLOO+8sf/jDH+T000+X77//Xlq2bJnWSdu5c+cQqQMAAAAAAMDm4NRT9Zfd/o9jTlqUZKftiBEj5JhjjpHDDz/cU6ft9ddfLx07dpRzzjnH6bQ1QadGqKqqSuuwdeP2y1/+UnbaaSdnNO5ZZ53lTJOQy4YNG5yXq7Gx0XlvampyXqVI05VIJEo2fcDmjPYJxBftE4gv2icQX7RP2PTll9ph639W0aqqhFRXa72UslYu7bPJYvpi1Wmrc8S+++67zvQIXrzxxhvy4IMPNpunNoyvv/5abrjhBjnvvPOadQ4PGjRIttpqK3nxxRflggsucEYF6/y3uYwZM8YZAZxp+fLlsn79einVyqqd3towKytjO2UyUJZon0B80T6B+KJ9AvFF+4RNc+dql9l2zueuXTfJrrt+X/CYLbdMyH/91zpZufKHAXzlqlza5+rVq0u/03bRokVy8cUXy0svvSStW7f2lCk69YFOo7Dddv9pRGHpSFgd5atz21533XVp266++urk5/3339+ZK/eWW27J22l7xRVXyKhRo9LC79atm3To0MEZyVuqjVJHH2saS7lRApsj2icQX7RPIL5on0B80T7hx8KFIt99533/Zct++HzqqZVy881beDxyS99xK0Xl0j5be+jD3Ow7bWfNmiX19fXSp0+ftPlqp02bJuPGjXOmGWjRokVy27x585x5aocOHdpsSLJOazBnzhxnflqvtBNYHzLWrl07efbZZ2WLLfI3xoMOOsgZkavxatWqVdZ9dH22bVpZS7nCaqMs9TQCmyvaJxBftE8gvmifQHzRPuHFKaeIPPFE8ONrarSe5Z4eE+XbPistpi02nbaDBw+WDz/8MG2dzhnbq1cvufzyy9M6bJWuz9z/qquucjpf77zzTmdEq1c6AnbIkCFOB+s//vEPT73kOiVD+/btc3bYAgAAAAAAoLi+/TZch63abTdTsQE2w05bHeG69957p63beuutZdttt02uP+OMM2T77bd35orVjtXM/Wtqapz31PXffPONLFy4UBYvXuws6whc1blzZ+elHbZHHnmkfPvtt/LII484y+4Dw3QIt3YWT5o0SZYtWyYHH3ywc16dwuGmm26SSy+91HKuAAAAAAAAIKiGhh8+d+8u8qMf+Tu+d2+RE04wHi1g8+m09UI7X/0OO9aRszpi13WKjokXkWuvvdaZt1YffPb2228763bZZZe0Y7/44gvp2bOnM1XC3XffLSNHjnQmUNb9brvtNjn33HONpAsAAAAAAAD+rVolMnt27u0LFvzwedAgkfHjI4kWEFpFQnshEQkdwVtdXe08Pa+UH0SmcxN37NixpOcsATZHtE8gvmifQHzRPoH4on2ivl5k1121v8Xb/hdfLHLHHbZjhXJqn40W+/o2q5G2AAAAAAAAKA+ffJI+UjbTtGneO2zdqQ6AzQWdtgAAAAAAAIiVp54SOekk7/vrvLM775z/YWKnn24kakAk6LQFAAAAAABALGzYIDJ1qsi993o/pmVLkdtuE+nRw2bMgGjRaQsAAAAAAIBYOPVUkWefTV939dUiLVpk37+i4j8PGKPDFqWGTlsAAAAAAABYkUiIzJgh8v/+n7f9p0xJX95/f5Hrr7cSNSDW6LQFAAAAAACAFS+8IPLTn/o/bs89RS64QOT4423ECog/Om0BAAAAAABgxPz5Ii+9JLJp03+Wn3kmWDj60LARI4xGDdis0GkLAAAAAACA0L79VqRvX5Hly7Nvv+kmkerqwuF07SpyzDHGowdsVui0BQAAAAAAQMG5aV99VeS993Lvs3hx7g7b3XcX+e1vcz9QDEA6Om0BAAAAAACQ17/+JTJokPf9TzpJ5Cc/+c/nLbYQOfJIOmwBP+i0BQAAAAAAQF6zZvnb/7LLRGprbcUGKH102gIAAAAAAKDgfLUuneYgX4fsPvuI9OoVSbSAkkWnLQAAAAAAADx32h5+uMgRRxQzNkDpqyx2BAAAAAAAALD5dNputVUxYwKUB0baAgAAAAAAlJhnnhF59VVz4aWGtfXW5sIFkB2dtgAAAAAAACXkww9FTjzRXviMtAXso9MWAAAAAABgM/TkkyIvviiSSKSv//xze+fs3Vtkl13shQ/gP+i0BQAAAAAA2MzMmSNy8smF97vtNpEBA8ycs0WL/3TaVvKEJMA6Om0BAAAAAAAitn69yNixIp9+Guz4r74qvE/37iLnnivStm2wcwAoHjptAQAAAAAAIva//ysyerSZsHQ07ZAhzdfvuqvIFluYOQeAaNFpCwAAAAAA4JPOG3vjjSL19cGO//e/zcSjZ0+Rc84RqaoyEx6AeKDTFgAAAAAAwKerrxZ59FEzYb3zjkiHDsGO3WGH/8w1C6C00GkLAAAAAACQYzTtVVdlnz/2vffMnOPUU0Vqa82EBaB00GkLAAAAAACQxc03izz2WP59dt5Z5O23g4XfsqVIdXWwYwGUNjptAQAAAAAAsliyJP/2rbcW+d3vRLbdNqoYASgXdNoCAAAAAABk8d13P3xeulSkffv07TqXLPPJArCBTlsAAAAAAIACnbZt24psuWUxYwOgnFQWOwIAAAAAAABx77SlwxZAlOi0BQAAAAAAKNBpqw8NA4Co0GkLAAAAAACQp9O2VSuRiopixwZAOaHTFgAAAAAAIE+nLVMjAIganbYAAAAAAABZ0GkLoFhi22k7duxYqaiokEsuucTT/o8//riz/3HHHZe2/plnnpEjjzxStt12W2f7+++/3+zY9evXy4gRI5x92rZtKyeeeKIsW7YsbZ+FCxfKMcccI1tttZV07NhRLrvsMvn+++9DphIAAAAAABTDnXeKbLutyFZb5X599tl/9qXTFkDUYtlp+84778j9998vvXv39rT//Pnz5dJLL5VDDz202ba1a9fKgAED5I9//GPO40eOHCmTJk2Sp556Sl577TVZvHixnHDCCcntmzZtcjpsv/vuO3nzzTdlwoQJ8vDDD8s111wTMIUAAAAAAMC0RMLbq6lJ5KqrRL75RmTdutwv13bbFTNVAMpR7J59uGbNGjnttNPkgQcekBtvvLHg/tqhqvuPHj1aXn/9dWloaEjbPmzYsGTHbjarVq2SBx98UB599FEZNGiQs278+PGyxx57yPTp0+Xggw+WF198UT755BN5+eWXpVOnTrLffvvJDTfcIJdffrlcd911siV/cgMAAAAAoKg++UTkmGP0///+jquqEunZM/f2du1Err46dPQAYPPutNVpCnRU6+GHH+6p0/b66693pis455xznE5bv2bNmiUbN250zufq1auXdO/eXd566y2n01bf99ln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w+ctt/R2zJAhIoMG0WEKAEA2dNoCAAAAAELZsOE/73vuKfLxx8WODQAAm7/KMAdv3LhR5s+fL++99568++67zV5hjB07VioqKuSSSy7xtP/jjz/u7H/cccelrU8kEnLNNddIly5dpE2bNnL44YfL3Llzk9tfffVV57hsr3feecfZR9OYbfv06dNDpREAAAAASsH69f95b9262DEBAKCMR9o2NDTIpZdeKn/729/ku+++a7ZdO0q1U3PTpk2BIqWdpffff7/07t3b0/7aqarxOfTQQ5ttu/nmm+XPf/6zTJgwQXbccUe5+uqrZciQIfLJJ59I69atpV+/frJkyZK0Y3Sfuro6qa2tTVv/8ssvy1577ZVc3nbbbQOlDwAAAABKhf637/vv//O5VatixwYAgDLutD3zzDNl0qRJcsopp8hBBx0k1dXVxiK0Zs0aOe200+SBBx6QG2+8seD+2jGs+48ePVpef/11p0M5tfP4jjvukKuuukqOPfZYZ91f//pX6dSpk0ycONGJ/5ZbbimdO3dOGz383HPPyUUXXeR0PKfSTtrUfQEAAACg3LlTIyhG2gIAUMRO2xdffFF+/etfy+233y6mjRgxQo455hhnGgMvnbbXX3+9dOzYUc455xyn0zbVF198IUuXLnXCcmkHs3Y0v/XWW06nbaZ//OMfsmLFCjnrrLOabfvZz34m69evl912201++9vfOsv5bNiwwXm5GhsbnfempibnVYo0XdpZXqrpAzZntE8gvmifQHzRPgv79tsfZt7bckvNq0Sxo4QyQfsE4qtc2meTxfQF6rTVEae77LKL8cjovLQ6F647l2whb7zxhjz44IPy/vvvZ92uHbZKR9am0mV3WyYNT6dP2GGHHZLr2rZtK7feeqv0799fKisr5emnn3bmztXRuvk6bseMGeOMAM60fPlyp/O3VCvrqlWrnIapeQUgPmifQHzRPoH4Krf2OWlSK7nqqippbPSe1kRKH21FxQapr//h14+ATeXWPoHNSbm0z9WrV8er0/a8885zOljPP/98Yxm/aNEiufjii+Wll15y5pr1kinDhg1zplHYbrvtjMThyy+/lP/7v/+TJ598Mm29hj9q1Kjk8oEHHiiLFy+WW265JW+n7RVXXJF2nI607datm3To0EGqqqqkVBulTiuhaSzlRglsjmifQHzRPoH4Krf2effd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kTZtyn1szZrs53fcIVWoENSuAQAAwKmhbWpqqkaOHKlPP/00V13bYcOG2dq2AAAAAArnzTelnj3P3i4xMRi9AQAAgONDW2P48OF2tu1nn32m7du32321a9dW27ZtValSJX/2EQAAAAjb2bRmUbENG3IfW7z47O83i36Zxb8AAAAQXor0K54JZ7t37+6/3gAAAAAR5P33pd69fWtXtqz3vlKlpBYtAtY1AAAAhBB/lwcAAABC5Mcfz96mdWupSxcpKioYPQIAAECxCm0TEhIUVYDfFE3btJzL2gIAAADwcvx49vNx46SmTb2Px8VJl1xCYAsAABBpfA5tu3Xr5lNou3btWn333XcFCngBAACASA9tmzWj3AEAAAAKGNrOmDHjrGHtM888YwPbpKQkDRw40NdTAwAAABHpxIns5yVLhrInAAAACKuatiakHT58uD766CMb1prnAwYMsM8BAAAA+DbT1iwsBgAAABQptHXPrHWHtU8//bSdXZuYmMhXFgAAAPABoS0AAAD8EtqasNbMpv34449Vrlw5z8xawloAAAAg7xII//d/0vr1uY99/332c8ojAAAAoMCh7bfffmsD2jlz5tiw1syy7d+/P2EtAAAAcAbvvCONGXP2dmXKBKM3AAAACKvQtlmzZoqKilKTJk308MMP27D2s88+O+N7unbt6o8+AgAAAMXOd99JQ4eayQ9nbhcVJfXqJZUrF6yeAQAAIKzKI7hcLjvjtpf5rfJ/r/NjAt6MjIyi9xAAAAAohoYPlz7+2Hvfhg1SrVre+2JipPj4oHYNAAAADhfta8PFixd7tkWLFtkt577TN3O8KEaOHGmDX7O4mS/effdd275Lly5e+02wPGzYMKWkpCg+Pl5t27bVpk2bvNqcc8459r05N3P9nL7//nu1atVKpUqVUs2aNTVq1Kgi3R8AAADC25492c+jo7Nm0zZsKJUt670R2AIAAKDQM22vvvpqBcuqVas0efJkXXTRRT6137ZtmwYPHmxD1dOZcPWVV17RzJkzVadOHQ0dOlTt27fXDz/8YANYt2effVb333+/53VCQoLn+cGDB9WuXTsb+E6aNEnr1q1Tz549bW3fPn36FPl+AQAAEH6OH896jIvLem7KIAAAAAB+nWkbLIcPH1aPHj302muvqXz58mdtb0owmPZmYbS6devmmmU7ZswYPfXUU+rc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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "📊 Network with Plasticity:\n",
- " Initial weight norm: 4.396\n",
- " Final weight norm: 4.413\n",
- " Change: +0.017\n",
- " Weights adapt based on network activity!\n"
- ]
- }
- ],
- "source": [
- "class PlasticNetwork(brainstate.nn.Module):\n",
- " \"\"\"Recurrent network with STDP.\"\"\"\n",
- " \n",
- " def __init__(self, n_neurons=10, connectivity=0.3):\n",
- " super().__init__()\n",
- " \n",
- " self.n_neurons = n_neurons\n",
- " \n",
- " # LIF neurons\n",
- " self.neurons = brainpy.state.LIF(\n",
- " n_neurons,\n",
- " V_rest=-65.0 * u.mV,\n",
- " V_th=-50.0 * u.mV,\n",
- " V_reset=-65.0 * u.mV,\n",
- " tau=10.0 * u.ms\n",
- " )\n",
- " \n",
- " # Recurrent connections with STDP (simplified)\n",
- " # In practice, use projection structure\n",
- " self.connectivity = connectivity\n",
- " mask = (np.random.rand(n_neurons, n_neurons) < connectivity).astype(float)\n",
- " np.fill_diagonal(mask, 0) # No self-connections\n",
- " \n",
- " self.conn_matrix = brainstate.ParamState(jnp.array(mask))\n",
- " self.weights = brainstate.ParamState(\n",
- " jnp.array(mask * 0.5) # Initial weights\n",
- " )\n",
- " \n",
- " def update(self, inp):\n",
- " # Get current spikes\n",
- " spikes = self.neurons.get_spike()\n",
- " \n",
- " # Compute recurrent input\n",
- " recurrent_input = jnp.dot(spikes, self.weights.value) * u.mA\n",
- " \n",
- " # Update neurons\n",
- " self.neurons(inp + recurrent_input)\n",
- " \n",
- " return spikes\n",
- " \n",
- " def apply_stdp(self, pre_spikes, post_spikes, learning_rate=0.001):\n",
- " \"\"\"Apply STDP update to weights.\"\"\"\n",
- " # Simple STDP: strengthen connections where both fire\n",
- " # (This is simplified; real STDP uses spike timing)\n",
- " dw = learning_rate * jnp.outer(post_spikes, pre_spikes)\n",
- " \n",
- " # Update weights with connectivity mask\n",
- " new_weights = self.weights.value + dw * self.conn_matrix.value\n",
- " self.weights.value = jnp.clip(new_weights, 0.0, 1.0)\n",
- "\n",
- "# Create network\n",
- "net = PlasticNetwork(n_neurons=20, connectivity=0.2)\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "# Simulate with external input\n",
- "duration = 500 * u.ms\n",
- "n_steps = int(duration / brainstate.environ.get_dt())\n",
- "\n",
- "spike_records = []\n",
- "weight_norms = []\n",
- "\n",
- "for i in range(n_steps):\n",
- " # Random external input\n",
- " inp = brainstate.random.rand(net.n_neurons) * 200.0 * u.mA\n",
- " \n",
- " # Get spikes before update\n",
- " pre_spikes = net.neurons.get_spike()\n",
- " \n",
- " # Update network\n",
- " post_spikes = net(inp)\n",
- " \n",
- " # Apply STDP\n",
- " if i % 10 == 0: # Update every 10 steps\n",
- " net.apply_stdp(pre_spikes, post_spikes)\n",
- " \n",
- " spike_records.append(post_spikes)\n",
- " weight_norms.append(float(jnp.linalg.norm(net.weights.value)))\n",
- "\n",
- "spike_records = jnp.array(spike_records)\n",
- "\n",
- "# Visualize\n",
- "fig, axes = plt.subplots(2, 1, figsize=(14, 8))\n",
- "\n",
- "# Spike raster\n",
- "times_ms = np.arange(n_steps) * 0.1\n",
- "for neuron_idx in range(net.n_neurons):\n",
- " spike_times = times_ms[spike_records[:, neuron_idx] > 0]\n",
- " axes[0].scatter(spike_times, [neuron_idx] * len(spike_times), \n",
- " s=1, c='black', alpha=0.5)\n",
- "\n",
- "axes[0].set_ylabel('Neuron Index', fontsize=12)\n",
- "axes[0].set_title('Network Activity with STDP', fontsize=14, fontweight='bold')\n",
- "axes[0].set_xlim(0, float(duration.to_decimal(u.ms)))\n",
- "axes[0].grid(True, alpha=0.3, axis='x')\n",
- "\n",
- "# Weight evolution\n",
- "axes[1].plot(times_ms, weight_norms, 'b-', linewidth=2)\n",
- "axes[1].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[1].set_ylabel('Weight Norm', fontsize=12)\n",
- "axes[1].set_title('Evolution of Synaptic Weights', fontsize=14, fontweight='bold')\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"📊 Network with Plasticity:\")\n",
- "print(f\" Initial weight norm: {weight_norms[0]:.3f}\")\n",
- "print(f\" Final weight norm: {weight_norms[-1]:.3f}\")\n",
- "print(f\" Change: {weight_norms[-1] - weight_norms[0]:+.3f}\")\n",
- "print(\" Weights adapt based on network activity!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Combining Plasticity with Training\n",
- "\n",
- "Plasticity can be combined with gradient-based training. This creates networks that:\n",
- "1. Learn through backpropagation (supervised)\n",
- "2. Adapt through plasticity (unsupervised)\n",
- "\n",
- "**Hybrid approach:**\n",
- "- Use gradient descent to train feedforward weights\n",
- "- Use STDP/STP for recurrent weights\n",
- "- Combine benefits of both learning paradigms"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "💡 Hybrid Learning Strategy:\n",
- "\n",
- "1. Feedforward weights: Trained with gradient descent (supervised)\n",
- " - Fast convergence\n",
- " - Optimized for task objective\n",
- "\n",
- "2. Recurrent weights: Updated with STDP (unsupervised)\n",
- " - Biologically plausible\n",
- " - Adapts to input statistics\n",
- " - Provides temporal dynamics\n",
- "\n",
- "3. Benefits:\n",
- " - Best of both worlds\n",
- " - Robust to distribution shift\n",
- " - Continual adaptation\n",
- "\n",
- "Implementation:\n",
- " - Train feedforward with brainstate.transform.grad()\n",
- " - Update recurrent with STDP rule\n",
- " - Alternate or interleave both updates\n",
- "\n"
- ]
- }
- ],
- "source": [
- "# Template for hybrid learning\n",
- "class HybridNetwork(brainstate.nn.Module):\n",
- " \"\"\"Network combining gradient-based and plasticity-based learning.\"\"\"\n",
- " \n",
- " def __init__(self, n_input, n_hidden, n_output):\n",
- " super().__init__()\n",
- " \n",
- " # Feedforward layers (trained with gradients)\n",
- " self.fc1 = brainstate.nn.Linear(n_input, n_hidden)\n",
- " self.hidden = brainpy.state.LIF(\n",
- " n_hidden,\n",
- " V_rest=-65.0*u.mV, V_th=-50.0*u.mV, tau=10.0*u.ms,\n",
- " spike_fun=braintools.surrogate.ReluGrad()\n",
- " )\n",
- " \n",
- " # Recurrent connections (updated with STDP)\n",
- " # Would use STDPSynapse in practice\n",
- " \n",
- " self.fc2 = brainstate.nn.Linear(n_hidden, n_output)\n",
- " self.output = brainpy.state.LIF(\n",
- " n_output,\n",
- " V_rest=-65.0*u.mV, V_th=-50.0*u.mV, tau=10.0*u.ms,\n",
- " spike_fun=braintools.surrogate.ReluGrad()\n",
- " )\n",
- " \n",
- " self.readout = brainpy.state.Readout(n_output, n_output)\n",
- " \n",
- " def update(self, x):\n",
- " # Feedforward path (gradient-trained)\n",
- " current1 = self.fc1(x)\n",
- " self.hidden(current1)\n",
- " h_spikes = self.hidden.get_spike()\n",
- " \n",
- " # Add recurrent dynamics here (STDP-updated)\n",
- " # ...\n",
- " \n",
- " current2 = self.fc2(h_spikes)\n",
- " self.output(current2)\n",
- " o_spikes = self.output.get_spike()\n",
- " \n",
- " return self.readout(o_spikes)\n",
- "\n",
- "print(\"💡 Hybrid Learning Strategy:\")\n",
- "print(\"\"\"\\n1. Feedforward weights: Trained with gradient descent (supervised)\n",
- " - Fast convergence\n",
- " - Optimized for task objective\n",
- "\n",
- "2. Recurrent weights: Updated with STDP (unsupervised)\n",
- " - Biologically plausible\n",
- " - Adapts to input statistics\n",
- " - Provides temporal dynamics\n",
- "\n",
- "3. Benefits:\n",
- " - Best of both worlds\n",
- " - Robust to distribution shift\n",
- " - Continual adaptation\n",
- "\n",
- "Implementation:\n",
- " - Train feedforward with brainstate.transform.grad()\n",
- " - Update recurrent with STDP rule\n",
- " - Alternate or interleave both updates\n",
- "\"\"\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ **Short-term plasticity (STP)**\n",
- " - Depression: Resource depletion, decreasing response\n",
- " - Facilitation: Calcium buildup, increasing response\n",
- " - Combined dynamics for realistic synapses\n",
- "\n",
- "✅ **STDP principles**\n",
- " - Spike timing matters: pre→post strengthens, post→pre weakens\n",
- " - Exponential learning window\n",
- " - \"Fire together, wire together\"\n",
- "\n",
- "✅ **Implementation**\n",
- " - Create custom synapse classes with plasticity\n",
- " - Track spike traces for STDP\n",
- " - Update weights based on activity\n",
- "\n",
- "✅ **Network plasticity**\n",
- " - Embed plastic synapses in networks\n",
- " - Observe weight evolution\n",
- " - Combine with gradient-based training\n",
- "\n",
- "**Key code patterns:**\n",
- "\n",
- "```python\n",
- "# Short-term depression\n",
- "class STDSynapse(brainpy.state.Synapse):\n",
- " def update(self, pre_spike):\n",
- " # Deplete resources on spike\n",
- " self.x.value -= pre_spike * U * self.x.value\n",
- " # Exponential recovery\n",
- " self.x.value += (1 - self.x.value) / tau_d * dt\n",
- " # Modulated conductance\n",
- " self.g.value += pre_spike * U * self.x.value\n",
- "\n",
- "# STDP learning\n",
- "class STDPSynapse(brainpy.state.Synapse):\n",
- " def update(self, pre_spike, post_spike):\n",
- " # Update traces\n",
- " self.pre_trace.value += pre_spike\n",
- " self.post_trace.value += post_spike\n",
- " # Weight updates\n",
- " dw_ltp = A_plus * pre_spike * self.post_trace.value\n",
- " dw_ltd = -A_minus * post_spike * self.pre_trace.value\n",
- " self.w.value += dw_ltp + dw_ltd\n",
- "```\n",
- "\n",
- "**Next steps:**\n",
- "- Implement full STDP in recurrent networks\n",
- "- Explore homeostatic plasticity (weight normalization)\n",
- "- Combine plasticity with network training (Tutorial 5)\n",
- "- Study biological learning rules (BCM, Oja's rule)\n",
- "- See Tutorial 7 for scaling plastic networks\n",
- "\n",
- "**References:**\n",
- "- Markram et al. (1998): \"Redistribution of synaptic efficacy between neocortical pyramidal neurons\" (STP)\n",
- "- Bi & Poo (1998): \"Synaptic modifications in cultured hippocampal neurons\" (STDP)\n",
- "- Song et al. (2000): \"Competitive Hebbian learning through spike-timing-dependent synaptic plasticity\" (STDP theory)\n",
- "- Tsodyks & Markram (1997): \"The neural code between neocortical pyramidal neurons depends on neurotransmitter release probability\" (STP model)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Exercises\n",
- "\n",
- "Test your understanding:\n",
- "\n",
- "### Exercise 1: Parameter Exploration\n",
- "Vary STD/STF time constants and observe how they affect frequency filtering. Which regimes amplify or attenuate high-frequency inputs?\n",
- "\n",
- "### Exercise 2: STDP Pattern Learning\n",
- "Create a network that learns to respond to specific temporal patterns using STDP. Test with repeated spike sequences.\n",
- "\n",
- "### Exercise 3: Homeostatic Plasticity\n",
- "Implement weight normalization to prevent runaway potentiation/depression. Keep total synaptic weight constant.\n",
- "\n",
- "### Exercise 4: Recurrent STDP\n",
- "Build a recurrent network where all connections use STDP. Observe emergence of structured connectivity.\n",
- "\n",
- "### Exercise 5: Hybrid Training\n",
- "Combine gradient-based training (Tutorial 5) with STDP in recurrent connections. Compare performance with pure gradient descent.\n",
- "\n",
- "**Bonus Challenge:** Implement triplet STDP, which considers triplets of spikes for more accurate learning rules."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/advanced/07-large-scale-simulations.ipynb b/docs_state/tutorials/advanced/07-large-scale-simulations.ipynb
deleted file mode 100644
index 202c335bd..000000000
--- a/docs_state/tutorials/advanced/07-large-scale-simulations.ipynb
+++ /dev/null
@@ -1,1003 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 7: Large-Scale Simulations\n",
- "\n",
- "**Duration:** ~35 minutes | **Prerequisites:** All Basic Tutorials\n",
- "\n",
- "## Learning Objectives\n",
- "\n",
- "By the end of this tutorial, you will:\n",
- "\n",
- "- ✅ Optimize memory usage for large networks\n",
- "- ✅ Apply JIT compilation best practices\n",
- "- ✅ Use batching strategies effectively\n",
- "- ✅ Leverage GPU/TPU acceleration\n",
- "- ✅ Profile and optimize performance\n",
- "- ✅ Implement sparse connectivity\n",
- "\n",
- "## Overview\n",
- "\n",
- "Scaling neural simulations to thousands or millions of neurons requires careful optimization. BrainPy leverages JAX for high-performance computing on CPUs, GPUs, and TPUs.\n",
- "\n",
- "**Key concepts:**\n",
- "- **JIT compilation**: Compile Python code to optimized machine code\n",
- "- **Memory efficiency**: Minimize state storage and intermediate computations\n",
- "- **Sparse operations**: Only compute where connections exist\n",
- "- **Batching**: Process multiple trials simultaneously\n",
- "- **Device acceleration**: Utilize GPU/TPU parallelism\n",
- "\n",
- "Let's learn how to build efficient large-scale simulations!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import jax\n",
- "import jax.numpy as jnp\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import time\n",
- "\n",
- "# Set random seed\n",
- "brainstate.random.seed(42)\n",
- "\n",
- "# Configure environment\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Check available devices\n",
- "print(\"🖥️ Available devices:\")\n",
- "print(f\" {jax.devices()}\")\n",
- "print(f\" Default backend: {jax.default_backend()}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: JIT Compilation Basics\n",
- "\n",
- "Just-In-Time (JIT) compilation converts Python code to optimized machine code. This can provide 10-100× speedups!\n",
- "\n",
- "**Benefits of JIT:**\n",
- "- Eliminates Python interpreter overhead\n",
- "- Enables compiler optimizations (loop fusion, vectorization)\n",
- "- Required for GPU/TPU execution\n",
- "\n",
- "**Rules for JIT:**\n",
- "- Functions must be pure (no side effects)\n",
- "- Array shapes must be static (known at compile time)\n",
- "- Avoid Python loops over dynamic ranges\n",
- "\n",
- "Let's compare JIT vs non-JIT performance!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Simple network without JIT\n",
- "class SimpleNetwork(brainstate.nn.Module):\n",
- " def __init__(self, n_neurons=1000):\n",
- " super().__init__()\n",
- " self.neurons = brainpy.state.LIF(\n",
- " n_neurons,\n",
- " V_rest=-65.0*u.mV, V_th=-50.0*u.mV, tau=10.0*u.ms\n",
- " )\n",
- " \n",
- " def update(self, inp):\n",
- " self.neurons(inp)\n",
- " return self.neurons.get_spike()\n",
- "\n",
- "# Test without JIT\n",
- "net_no_jit = SimpleNetwork(n_neurons=1000)\n",
- "brainstate.nn.init_all_states(net_no_jit)\n",
- "\n",
- "# Warmup\n",
- "inp = brainstate.random.rand(1000) * 2.0 * u.nA\n",
- "_ = net_no_jit(inp)\n",
- "\n",
- "# Time execution\n",
- "n_steps = 1000\n",
- "start = time.time()\n",
- "for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(1000) * 2.0 * u.nA\n",
- " _ = net_no_jit(inp)\n",
- "time_no_jit = time.time() - start\n",
- "\n",
- "print(f\"⏱️ Without JIT: {time_no_jit:.3f} seconds for {n_steps} steps\")\n",
- "print(f\" ({time_no_jit/n_steps*1000:.2f} ms/step)\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Same network WITH JIT\n",
- "net_jit = SimpleNetwork(n_neurons=1000)\n",
- "brainstate.nn.init_all_states(net_jit)\n",
- "\n",
- "# Apply JIT compilation\n",
- "@brainstate.transform.jit\n",
- "def run_step_jit(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# Warmup (compilation happens here)\n",
- "inp = brainstate.random.rand(1000) * 2.0 * u.nA\n",
- "_ = run_step_jit(net_jit, inp)\n",
- "\n",
- "# Time execution\n",
- "start = time.time()\n",
- "for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(1000) * 2.0 * u.nA\n",
- " _ = run_step_jit(net_jit, inp)\n",
- "time_jit = time.time() - start\n",
- "\n",
- "print(f\"⏱️ With JIT: {time_jit:.3f} seconds for {n_steps} steps\")\n",
- "print(f\" ({time_jit/n_steps*1000:.2f} ms/step)\")\n",
- "print(f\"\\n🚀 Speedup: {time_no_jit/time_jit:.1f}×\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Memory Optimization\n",
- "\n",
- "Large networks require careful memory management. Key strategies:\n",
- "\n",
- "1. **Use appropriate data types**: Float32 instead of Float64\n",
- "2. **Minimize state storage**: Only keep necessary variables\n",
- "3. **Avoid unnecessary copies**: Use in-place updates where possible\n",
- "4. **Clear intermediate results**: Don't accumulate large histories\n",
- "\n",
- "Let's compare memory usage for different approaches."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Estimate memory usage\n",
- "def estimate_memory_mb(n_neurons, n_synapses, dtype_bytes=4):\n",
- " \"\"\"Estimate memory requirements.\n",
- " \n",
- " Args:\n",
- " n_neurons: Number of neurons\n",
- " n_synapses: Number of synaptic connections\n",
- " dtype_bytes: Bytes per element (4 for float32, 8 for float64)\n",
- " \"\"\"\n",
- " # Neuron states (V, spike)\n",
- " neuron_memory = n_neurons * 2 * dtype_bytes\n",
- " \n",
- " # Synapse states (g, x for plasticity)\n",
- " synapse_memory = n_synapses * 2 * dtype_bytes\n",
- " \n",
- " # Connection weights\n",
- " weight_memory = n_synapses * dtype_bytes\n",
- " \n",
- " total_bytes = neuron_memory + synapse_memory + weight_memory\n",
- " total_mb = total_bytes / (1024 * 1024)\n",
- " \n",
- " return total_mb\n",
- "\n",
- "# Compare different network sizes\n",
- "sizes = [100, 1000, 10000, 100000, 1000000]\n",
- "connectivity = 0.1\n",
- "\n",
- "print(\"📊 Memory Requirements (Float32):\")\n",
- "print(\"=\"*60)\n",
- "print(f\"{'Neurons':<12} {'Synapses':<15} {'Memory (MB)':<15} {'Memory (GB)'}\")\n",
- "print(\"=\"*60)\n",
- "\n",
- "for n in sizes:\n",
- " n_syn = int(n * n * connectivity)\n",
- " mem_mb = estimate_memory_mb(n, n_syn, dtype_bytes=4)\n",
- " mem_gb = mem_mb / 1024\n",
- " print(f\"{n:<12,} {n_syn:<15,} {mem_mb:<15.2f} {mem_gb:<.3f}\")\n",
- "\n",
- "print(\"\\n💡 Optimization tips:\")\n",
- "print(\" • Use sparse connectivity to reduce synapse count\")\n",
- "print(\" • Use float32 instead of float64 (2× memory savings)\")\n",
- "print(\" • Don't store full spike history (record only what you need)\")\n",
- "print(\" • Process in batches if memory-constrained\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Sparse Connectivity\n",
- "\n",
- "Biological networks are sparsely connected (~1-10% connectivity). Using sparse matrices dramatically reduces memory and computation.\n",
- "\n",
- "**Dense vs Sparse:**\n",
- "- Dense: Store all $N \\times N$ connections (even zeros)\n",
- "- Sparse: Store only non-zero connections\n",
- "\n",
- "**Memory savings:**\n",
- "- 10% connectivity → 90% memory reduction\n",
- "- 1% connectivity → 99% memory reduction\n",
- "\n",
- "BrainPy's `EventFixedProb` connection automatically uses sparse representations."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Compare dense vs sparse connectivity\n",
- "n_pre = 1000\n",
- "n_post = 1000\n",
- "prob = 0.05 # 5% connectivity\n",
- "\n",
- "# Dense connection matrix\n",
- "dense_matrix = (np.random.rand(n_post, n_pre) < prob).astype(np.float32)\n",
- "dense_size_mb = dense_matrix.nbytes / (1024 * 1024)\n",
- "\n",
- "# Sparse representation (only store indices and values)\n",
- "indices = np.argwhere(dense_matrix > 0)\n",
- "values = dense_matrix[dense_matrix > 0]\n",
- "sparse_size_mb = (indices.nbytes + values.nbytes) / (1024 * 1024)\n",
- "\n",
- "print(\"🔍 Dense vs Sparse Comparison:\")\n",
- "print(f\" Network size: {n_pre} → {n_post} neurons\")\n",
- "print(f\" Connectivity: {prob*100}%\")\n",
- "print(f\" Actual connections: {len(values):,}\")\n",
- "print()\n",
- "print(f\" Dense storage: {dense_size_mb:.2f} MB\")\n",
- "print(f\" Sparse storage: {sparse_size_mb:.2f} MB\")\n",
- "print(f\" Memory savings: {(1 - sparse_size_mb/dense_size_mb)*100:.1f}%\")\n",
- "print(f\" Space ratio: {dense_size_mb/sparse_size_mb:.1f}×\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Build large sparse network\n",
- "class LargeSparseNetwork(brainstate.nn.Module):\n",
- " \"\"\"Large network with sparse connectivity.\"\"\"\n",
- " \n",
- " def __init__(self, n_exc=4000, n_inh=1000, p_conn=0.02):\n",
- " super().__init__()\n",
- " \n",
- " # Neurons\n",
- " self.E = brainpy.state.LIF(n_exc, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=15.*u.ms)\n",
- " self.I = brainpy.state.LIF(n_inh, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- " \n",
- " # Sparse projections with EventFixedProb\n",
- " self.E2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_exc, p_conn, 0.6*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=5.*u.ms),\n",
- " out=brainpy.state.COBA.desc(E=0.*u.mV),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.E2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_inh, p_conn, 0.6*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=5.*u.ms),\n",
- " out=brainpy.state.COBA.desc(E=0.*u.mV),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " self.I2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_exc, p_conn, 6.7*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=10.*u.ms),\n",
- " out=brainpy.state.COBA.desc(E=-80.*u.mV),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.I2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_inh, p_conn, 6.7*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=10.*u.ms),\n",
- " out=brainpy.state.COBA.desc(E=-80.*u.mV),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " def update(self, inp_e, inp_i):\n",
- " spk_e = self.E.get_spike()\n",
- " spk_i = self.I.get_spike()\n",
- " \n",
- " self.E2E(spk_e)\n",
- " self.E2I(spk_e)\n",
- " self.I2E(spk_i)\n",
- " self.I2I(spk_i)\n",
- " \n",
- " self.E(inp_e)\n",
- " self.I(inp_i)\n",
- " \n",
- " return spk_e, spk_i\n",
- "\n",
- "# Create large network\n",
- "large_net = LargeSparseNetwork(n_exc=4000, n_inh=1000, p_conn=0.02)\n",
- "brainstate.nn.init_all_states(large_net)\n",
- "\n",
- "print(\"✅ Created large sparse network:\")\n",
- "print(f\" Excitatory neurons: 4,000\")\n",
- "print(f\" Inhibitory neurons: 1,000\")\n",
- "print(f\" Total neurons: 5,000\")\n",
- "print(f\" Connectivity: 2%\")\n",
- "print(f\" Approximate connections: {5000*5000*0.02:,.0f}\")\n",
- "print(f\" Estimated memory: ~20 MB (sparse) vs ~400 MB (dense)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: Batching for Parallelism\n",
- "\n",
- "Running multiple independent simulations (trials) can be done in parallel using batching. This is especially efficient on GPUs.\n",
- "\n",
- "**Batching benefits:**\n",
- "- Run multiple trials simultaneously\n",
- "- Amortize compilation cost\n",
- "- Better GPU utilization\n",
- "- Faster parameter sweeps\n",
- "\n",
- "**How it works:**\n",
- "- Add batch dimension: `(batch_size, n_neurons)`\n",
- "- Operations automatically vectorized\n",
- "- Each trial independent"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Single trial simulation\n",
- "def simulate_single_trial(n_steps=1000):\n",
- " net = SimpleNetwork(n_neurons=1000)\n",
- " brainstate.nn.init_all_states(net)\n",
- " \n",
- " @brainstate.transform.jit\n",
- " def step(net, inp):\n",
- " return net(inp)\n",
- " \n",
- " for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(1000) * 2.0 * u.nA\n",
- " _ = step(net, inp)\n",
- "\n",
- "# Batched simulation\n",
- "def simulate_batched_trials(n_trials=10, n_steps=1000):\n",
- " net = SimpleNetwork(n_neurons=1000)\n",
- " brainstate.nn.init_all_states(net, batch_size=n_trials)\n",
- " \n",
- " @brainstate.transform.jit\n",
- " def step(net, inp):\n",
- " return net(inp)\n",
- " \n",
- " for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(n_trials, 1000) * 2.0 * u.nA\n",
- " _ = step(net, inp)\n",
- "\n",
- "# Compare timing\n",
- "n_trials = 10\n",
- "\n",
- "# Sequential trials\n",
- "start = time.time()\n",
- "for _ in range(n_trials):\n",
- " simulate_single_trial(n_steps=100)\n",
- "time_sequential = time.time() - start\n",
- "\n",
- "# Batched trials\n",
- "start = time.time()\n",
- "simulate_batched_trials(n_trials=n_trials, n_steps=100)\n",
- "time_batched = time.time() - start\n",
- "\n",
- "print(f\"⏱️ Sequential (10 trials): {time_sequential:.3f} seconds\")\n",
- "print(f\"⏱️ Batched (10 trials): {time_batched:.3f} seconds\")\n",
- "print(f\"\\n🚀 Batching speedup: {time_sequential/time_batched:.1f}×\")\n",
- "print(f\"\\n💡 Batching is especially effective on GPUs!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: GPU Acceleration\n",
- "\n",
- "GPUs excel at parallel operations on large arrays. BrainPy automatically uses GPUs when available via JAX.\n",
- "\n",
- "**GPU benefits:**\n",
- "- Massive parallelism (1000s of cores)\n",
- "- High memory bandwidth\n",
- "- Fast matrix operations\n",
- "- 10-100× speedup for large networks\n",
- "\n",
- "**Best practices:**\n",
- "- Use large batch sizes\n",
- "- Minimize CPU-GPU data transfer\n",
- "- Keep data on GPU between operations\n",
- "- Use JIT compilation"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Check if GPU is available\n",
- "try:\n",
- " gpu_device = jax.devices('gpu')[0]\n",
- " has_gpu = True\n",
- " print(\"✅ GPU detected:\", gpu_device)\n",
- "except:\n",
- " has_gpu = False\n",
- " print(\"ℹ️ No GPU detected, using CPU\")\n",
- "\n",
- "if has_gpu:\n",
- " # Compare CPU vs GPU for large operation\n",
- " n = 10000\n",
- " \n",
- " # CPU\n",
- " with jax.default_device(jax.devices('cpu')[0]):\n",
- " x = jax.random.normal(jax.random.PRNGKey(0), (n, n))\n",
- " \n",
- " start = time.time()\n",
- " y = jnp.dot(x, x)\n",
- " y.block_until_ready() # Wait for computation\n",
- " time_cpu = time.time() - start\n",
- " \n",
- " # GPU\n",
- " with jax.default_device(gpu_device):\n",
- " x = jax.random.normal(jax.random.PRNGKey(0), (n, n))\n",
- " \n",
- " start = time.time()\n",
- " y = jnp.dot(x, x)\n",
- " y.block_until_ready()\n",
- " time_gpu = time.time() - start\n",
- " \n",
- " print(f\"\\n🖥️ CPU time: {time_cpu:.4f} seconds\")\n",
- " print(f\"🎮 GPU time: {time_gpu:.4f} seconds\")\n",
- " print(f\"🚀 GPU speedup: {time_cpu/time_gpu:.1f}×\")\n",
- "else:\n",
- " print(\"\\n💡 To use GPU:\")\n",
- " print(\" 1. Install JAX with GPU support\")\n",
- " print(\" 2. Install CUDA drivers\")\n",
- " print(\" 3. BrainPy will automatically use GPU\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Performance Profiling\n",
- "\n",
- "To optimize performance, you need to identify bottlenecks. Use profiling to find where time is spent.\n",
- "\n",
- "**Profiling strategies:**\n",
- "1. **Time individual operations**: Find slow components\n",
- "2. **Use JAX profiler**: Detailed GPU/TPU profiling\n",
- "3. **Monitor memory**: Detect memory leaks\n",
- "4. **Check compilation**: Ensure JIT is working"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Simple profiling example\n",
- "class ProfilingNetwork(brainstate.nn.Module):\n",
- " def __init__(self, n_neurons=5000):\n",
- " super().__init__()\n",
- " self.lif = brainpy.state.LIF(n_neurons, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- " self.proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_neurons, n_neurons, 0.01, 0.5*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_neurons, tau=5.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.lif\n",
- " )\n",
- " \n",
- " def update(self, inp):\n",
- " spk = self.lif.get_spike()\n",
- " self.proj(spk)\n",
- " self.lif(inp)\n",
- " return spk\n",
- "\n",
- "# Profile simulation\n",
- "net = ProfilingNetwork(n_neurons=5000)\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "@brainstate.transform.jit\n",
- "def run_step(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# Warmup\n",
- "inp = brainstate.random.rand(5000) * 2.0 * u.nA\n",
- "_ = run_step(net, inp)\n",
- "\n",
- "# Profile multiple steps\n",
- "n_steps = 100\n",
- "step_times = []\n",
- "\n",
- "for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(5000) * 2.0 * u.nA\n",
- " \n",
- " start = time.time()\n",
- " _ = run_step(net, inp)\n",
- " step_times.append(time.time() - start)\n",
- "\n",
- "step_times = np.array(step_times) * 1000 # Convert to ms\n",
- "\n",
- "# Plot timing distribution\n",
- "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
- "\n",
- "# Time series\n",
- "axes[0].plot(step_times, 'b-', linewidth=1, alpha=0.7)\n",
- "axes[0].axhline(np.mean(step_times), color='r', linestyle='--', \n",
- " label=f'Mean: {np.mean(step_times):.2f} ms')\n",
- "axes[0].set_xlabel('Step', fontsize=12)\n",
- "axes[0].set_ylabel('Time (ms)', fontsize=12)\n",
- "axes[0].set_title('Step-by-Step Timing', fontsize=14, fontweight='bold')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Histogram\n",
- "axes[1].hist(step_times, bins=30, color='blue', alpha=0.7, edgecolor='black')\n",
- "axes[1].axvline(np.mean(step_times), color='r', linestyle='--', linewidth=2,\n",
- " label=f'Mean: {np.mean(step_times):.2f} ms')\n",
- "axes[1].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[1].set_ylabel('Frequency', fontsize=12)\n",
- "axes[1].set_title('Timing Distribution', fontsize=14, fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3, axis='y')\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(f\"📊 Performance Statistics:\")\n",
- "print(f\" Mean time/step: {np.mean(step_times):.2f} ms\")\n",
- "print(f\" Std deviation: {np.std(step_times):.2f} ms\")\n",
- "print(f\" Min time: {np.min(step_times):.2f} ms\")\n",
- "print(f\" Max time: {np.max(step_times):.2f} ms\")\n",
- "print(f\" Throughput: {1000/np.mean(step_times):.1f} steps/second\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Optimization Checklist\n",
- "\n",
- "Here's a comprehensive checklist for optimizing large-scale simulations.\n",
- "\n",
- "### Before Optimization\n",
- "1. **Profile first**: Identify actual bottlenecks\n",
- "2. **Set target**: Define performance goals\n",
- "3. **Baseline**: Measure current performance\n",
- "\n",
- "### Code Optimizations\n",
- "- ✅ Use JIT compilation (`@brainstate.transform.jit`)\n",
- "- ✅ Use sparse connectivity (`EventFixedProb`)\n",
- "- ✅ Use float32 instead of float64\n",
- "- ✅ Batch multiple trials together\n",
- "- ✅ Avoid Python loops (use `for_loop` or `scan`)\n",
- "- ✅ Minimize state storage\n",
- "- ✅ Use appropriate time steps (larger = faster)\n",
- "\n",
- "### Hardware Optimizations\n",
- "- ✅ Use GPU/TPU when available\n",
- "- ✅ Increase batch size for better GPU utilization\n",
- "- ✅ Monitor GPU memory usage\n",
- "- ✅ Keep data on accelerator (avoid CPU-GPU transfers)\n",
- "\n",
- "### Algorithm Optimizations\n",
- "- ✅ Simplify neuron models if possible\n",
- "- ✅ Use event-driven dynamics where appropriate\n",
- "- ✅ Reduce synaptic computations (sparse updates)\n",
- "- ✅ Cache frequently computed values"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Demonstrate optimization impact\n",
- "def benchmark_configurations():\n",
- " \"\"\"Benchmark different optimization strategies.\"\"\"\n",
- " \n",
- " n_neurons = 2000\n",
- " n_steps = 100\n",
- " results = {}\n",
- " \n",
- " # 1. Baseline (no optimizations)\n",
- " print(\"Testing: Baseline (no optimizations)...\")\n",
- " net1 = SimpleNetwork(n_neurons)\n",
- " brainstate.nn.init_all_states(net1)\n",
- " \n",
- " start = time.time()\n",
- " for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(n_neurons) * 2.0 * u.nA\n",
- " _ = net1(inp)\n",
- " results['Baseline'] = time.time() - start\n",
- " \n",
- " # 2. With JIT\n",
- " print(\"Testing: With JIT...\")\n",
- " net2 = SimpleNetwork(n_neurons)\n",
- " brainstate.nn.init_all_states(net2)\n",
- " \n",
- " @brainstate.transform.jit\n",
- " def step_jit(net, inp):\n",
- " return net(inp)\n",
- " \n",
- " # Warmup\n",
- " inp = brainstate.random.rand(n_neurons) * 2.0 * u.nA\n",
- " _ = step_jit(net2, inp)\n",
- " \n",
- " start = time.time()\n",
- " for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(n_neurons) * 2.0 * u.nA\n",
- " _ = step_jit(net2, inp)\n",
- " results['JIT'] = time.time() - start\n",
- " \n",
- " # 3. With JIT + Batching\n",
- " print(\"Testing: JIT + Batching...\")\n",
- " batch_size = 10\n",
- " net3 = SimpleNetwork(n_neurons)\n",
- " brainstate.nn.init_all_states(net3, batch_size=batch_size)\n",
- " \n",
- " # Warmup\n",
- " inp = brainstate.random.rand(batch_size, n_neurons) * 2.0 * u.nA\n",
- " _ = step_jit(net3, inp)\n",
- " \n",
- " start = time.time()\n",
- " for _ in range(n_steps):\n",
- " inp = brainstate.random.rand(batch_size, n_neurons) * 2.0 * u.nA\n",
- " _ = step_jit(net3, inp)\n",
- " results['JIT+Batch'] = time.time() - start\n",
- " \n",
- " return results\n",
- "\n",
- "# Run benchmark\n",
- "results = benchmark_configurations()\n",
- "\n",
- "# Visualize results\n",
- "fig, ax = plt.subplots(figsize=(10, 6))\n",
- "\n",
- "configs = list(results.keys())\n",
- "times = list(results.values())\n",
- "speedups = [times[0] / t for t in times]\n",
- "\n",
- "bars = ax.bar(configs, times, color=['red', 'orange', 'green'], alpha=0.7)\n",
- "\n",
- "# Add speedup labels\n",
- "for i, (bar, speedup) in enumerate(zip(bars, speedups)):\n",
- " height = bar.get_height()\n",
- " ax.text(bar.get_x() + bar.get_width()/2., height,\n",
- " f'{speedup:.1f}× faster\\n{times[i]:.2f}s',\n",
- " ha='center', va='bottom', fontsize=11, fontweight='bold')\n",
- "\n",
- "ax.set_ylabel('Time (seconds)', fontsize=12)\n",
- "ax.set_title('Optimization Impact (2000 neurons, 100 steps)', fontsize=14, fontweight='bold')\n",
- "ax.grid(True, alpha=0.3, axis='y')\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"\\n📊 Optimization Results:\")\n",
- "for config, t in results.items():\n",
- " speedup = times[0] / t\n",
- " print(f\" {config:15s}: {t:.3f}s ({speedup:.1f}× faster)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 8: Complete Large-Scale Example\n",
- "\n",
- "Let's put it all together with a fully optimized large-scale simulation."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Optimized large-scale network\n",
- "class OptimizedLargeNetwork(brainstate.nn.Module):\n",
- " \"\"\"Fully optimized large-scale E-I network.\"\"\"\n",
- " \n",
- " def __init__(self, n_exc=8000, n_inh=2000, p_conn=0.02):\n",
- " super().__init__()\n",
- " \n",
- " self.n_exc = n_exc\n",
- " self.n_inh = n_inh\n",
- " \n",
- " # LIF neurons (using default float32)\n",
- " self.E = brainpy.state.LIF(n_exc, V_rest=-65.*u.mV, V_th=-50.*u.mV, \n",
- " V_reset=-65.*u.mV, tau=15.*u.ms)\n",
- " self.I = brainpy.state.LIF(n_inh, V_rest=-65.*u.mV, V_th=-50.*u.mV,\n",
- " V_reset=-65.*u.mV, tau=10.*u.ms)\n",
- " \n",
- " # Sparse connectivity\n",
- " self.E2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_exc, p_conn, 0.05*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=5.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.E2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_inh, p_conn, 0.05*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=5.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " self.I2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_exc, p_conn, 0.4*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=10.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.I2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_inh, p_conn, 0.4*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=10.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " def update(self, inp_e, inp_i):\n",
- " # Get spikes\n",
- " spk_e = self.E.get_spike()\n",
- " spk_i = self.I.get_spike()\n",
- " \n",
- " # Update projections\n",
- " self.E2E(spk_e)\n",
- " self.E2I(spk_e)\n",
- " self.I2E(spk_i)\n",
- " self.I2I(spk_i)\n",
- " \n",
- " # Update neurons\n",
- " self.E(inp_e)\n",
- " self.I(inp_i)\n",
- " \n",
- " return spk_e, spk_i\n",
- "\n",
- "# Create and simulate\n",
- "print(\"Creating large-scale network...\")\n",
- "large_net = OptimizedLargeNetwork(n_exc=8000, n_inh=2000, p_conn=0.02)\n",
- "brainstate.nn.init_all_states(large_net)\n",
- "\n",
- "print(\"\\n📊 Network Statistics:\")\n",
- "print(f\" Total neurons: {large_net.n_exc + large_net.n_inh:,}\")\n",
- "print(f\" Excitatory: {large_net.n_exc:,} (80%)\")\n",
- "print(f\" Inhibitory: {large_net.n_inh:,} (20%)\")\n",
- "print(f\" Connectivity: 2%\")\n",
- "print(f\" Estimated connections: {10000*10000*0.02:,.0f}\")\n",
- "print(f\" Estimated memory: ~50 MB\")\n",
- "\n",
- "# JIT-compiled simulation\n",
- "@brainstate.transform.jit\n",
- "def simulate_step(net, inp_e, inp_i):\n",
- " return net(inp_e, inp_i)\n",
- "\n",
- "# Warmup\n",
- "print(\"\\nCompiling (this takes a moment)...\")\n",
- "inp_e = brainstate.random.rand(large_net.n_exc) * 1.0 * u.nA\n",
- "inp_i = brainstate.random.rand(large_net.n_inh) * 1.0 * u.nA\n",
- "_ = simulate_step(large_net, inp_e, inp_i)\n",
- "print(\"✅ Compilation complete!\")\n",
- "\n",
- "# Run simulation\n",
- "print(\"\\nRunning simulation...\")\n",
- "n_steps = 500\n",
- "spike_history_e = []\n",
- "spike_history_i = []\n",
- "\n",
- "start = time.time()\n",
- "for i in range(n_steps):\n",
- " inp_e = brainstate.random.rand(large_net.n_exc) * 1.0 * u.nA\n",
- " inp_i = brainstate.random.rand(large_net.n_inh) * 1.0 * u.nA\n",
- " spk_e, spk_i = simulate_step(large_net, inp_e, inp_i)\n",
- " \n",
- " # Downsample recording (save memory)\n",
- " if i % 5 == 0:\n",
- " spike_history_e.append(spk_e)\n",
- " spike_history_i.append(spk_i)\n",
- "\n",
- "sim_time = time.time() - start\n",
- "\n",
- "print(f\"\\n⏱️ Simulation complete:\")\n",
- "print(f\" Real time: {sim_time:.2f} seconds\")\n",
- "print(f\" Simulated time: {n_steps * 0.1} ms\")\n",
- "print(f\" Speedup: {(n_steps * 0.1 / 1000) / sim_time:.1f}× real-time\")\n",
- "print(f\" Throughput: {n_steps / sim_time:.1f} steps/second\")\n",
- "\n",
- "# Visualize downsampled activity\n",
- "spike_history_e = jnp.array(spike_history_e)\n",
- "spike_history_i = jnp.array(spike_history_i)\n",
- "\n",
- "fig, axes = plt.subplots(2, 1, figsize=(14, 8), sharex=True)\n",
- "\n",
- "# Excitatory raster (subsample neurons for visibility)\n",
- "n_show = 500\n",
- "times_ms = np.arange(len(spike_history_e)) * 5 * 0.1 # Downsampled times\n",
- "\n",
- "for neuron_idx in range(min(n_show, large_net.n_exc)):\n",
- " spike_times = times_ms[spike_history_e[:, neuron_idx] > 0]\n",
- " axes[0].scatter(spike_times, [neuron_idx] * len(spike_times),\n",
- " s=0.5, c='blue', alpha=0.5)\n",
- "\n",
- "axes[0].set_ylabel('Excitatory Neuron', fontsize=12)\n",
- "axes[0].set_title(f'Large-Scale Network Activity ({large_net.n_exc + large_net.n_inh:,} neurons)', \n",
- " fontsize=14, fontweight='bold')\n",
- "axes[0].set_ylim(0, n_show)\n",
- "\n",
- "# Inhibitory raster\n",
- "for neuron_idx in range(large_net.n_inh):\n",
- " spike_times = times_ms[spike_history_i[:, neuron_idx] > 0]\n",
- " axes[1].scatter(spike_times, [neuron_idx] * len(spike_times),\n",
- " s=0.5, c='red', alpha=0.5)\n",
- "\n",
- "axes[1].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[1].set_ylabel('Inhibitory Neuron', fontsize=12)\n",
- "axes[1].set_title('Inhibitory Population', fontsize=14, fontweight='bold')\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"\\n✅ Successfully simulated 10,000 neuron network!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ **JIT compilation**\n",
- " - Use `@brainstate.transform.jit` for 10-100× speedup\n",
- " - Functions must be pure and have static shapes\n",
- " - Essential for large-scale simulations\n",
- "\n",
- "✅ **Memory optimization**\n",
- " - Use float32 instead of float64 (2× savings)\n",
- " - Minimize state storage\n",
- " - Don't accumulate full histories\n",
- "\n",
- "✅ **Sparse connectivity**\n",
- " - Use `EventFixedProb` for automatic sparse operations\n",
- " - 90-99% memory reduction for biological connectivity\n",
- " - Faster computation (skip zero connections)\n",
- "\n",
- "✅ **Batching**\n",
- " - Run multiple trials simultaneously\n",
- " - Better hardware utilization\n",
- " - Faster parameter sweeps\n",
- "\n",
- "✅ **GPU/TPU acceleration**\n",
- " - Automatic via JAX when available\n",
- " - 10-100× speedup for large networks\n",
- " - Keep data on device\n",
- "\n",
- "✅ **Performance profiling**\n",
- " - Identify bottlenecks before optimizing\n",
- " - Monitor memory usage\n",
- " - Track throughput metrics\n",
- "\n",
- "**Optimization workflow:**\n",
- "\n",
- "```python\n",
- "# 1. Create network with sparse connectivity\n",
- "net = OptimizedNetwork(\n",
- " n_neurons=10000,\n",
- " connectivity=0.02 # Sparse!\n",
- ")\n",
- "\n",
- "# 2. Initialize with batching\n",
- "brainstate.nn.init_all_states(net, batch_size=10)\n",
- "\n",
- "# 3. JIT compile simulation loop\n",
- "@brainstate.transform.jit\n",
- "def simulate_step(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# 4. Run on GPU (automatic if available)\n",
- "for i in range(n_steps):\n",
- " inp = get_input()\n",
- " output = simulate_step(net, inp)\n",
- "```\n",
- "\n",
- "**Scale achieved:**\n",
- "- ✅ 10,000 neurons: Easy on CPU\n",
- "- ✅ 100,000 neurons: Needs GPU\n",
- "- ✅ 1,000,000+ neurons: Multi-GPU or TPU\n",
- "\n",
- "**Next steps:**\n",
- "- Try your own large-scale models\n",
- "- Experiment with different connectivity patterns\n",
- "- Profile and optimize your specific use case\n",
- "- Use specialized tutorials for specific applications\n",
- "- Explore multi-GPU scaling (advanced)\n",
- "\n",
- "**References:**\n",
- "- JAX documentation: https://jax.readthedocs.io/\n",
- "- BrainPy optimization guide: https://brainpy.readthedocs.io/\n",
- "- Neuromorphic computing benchmarks\n",
- "- Large-scale brain simulation papers (Spaun, Blue Brain Project)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Exercises\n",
- "\n",
- "Test your understanding:\n",
- "\n",
- "### Exercise 1: JIT Compilation\n",
- "Take a non-JIT network and apply JIT compilation. Measure the speedup. What happens if you violate JIT rules (e.g., use Python loops)?\n",
- "\n",
- "### Exercise 2: Memory Analysis\n",
- "Estimate memory requirements for a 100,000 neuron network with 1% connectivity. Will it fit in 16GB RAM?\n",
- "\n",
- "### Exercise 3: Sparse vs Dense\n",
- "Implement the same network with dense and sparse connectivity. Compare memory usage and runtime.\n",
- "\n",
- "### Exercise 4: Batching Strategy\n",
- "Run 100 independent trials. Compare: (a) sequential, (b) batched 10×10, (c) batched 100×1. Which is fastest?\n",
- "\n",
- "### Exercise 5: Profiling\n",
- "Profile a large network and identify the slowest operation. Optimize it and measure improvement.\n",
- "\n",
- "**Bonus Challenge:** Scale up to the largest network your hardware can handle. How many neurons can you simulate in real-time?"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/basic/01-lif-neuron.ipynb b/docs_state/tutorials/basic/01-lif-neuron.ipynb
deleted file mode 100644
index 677a9029c..000000000
--- a/docs_state/tutorials/basic/01-lif-neuron.ipynb
+++ /dev/null
@@ -1,697 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 1: LIF Neuron Basics\n",
- "\n",
- "In this tutorial, you'll learn how to:\n",
- "\n",
- "- Create and configure LIF neurons\n",
- "- Simulate neuron dynamics\n",
- "- Analyze neuron behavior\n",
- "- Understand different reset modes\n",
- "- Work with physical units"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "BrainPy version: 2.7.2\n"
- ]
- }
- ],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import matplotlib.pyplot as plt\n",
- "import jax.numpy as jnp\n",
- "import numpy as np\n",
- "\n",
- "print(f\"BrainPy version: {brainpy.__version__}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: Understanding the LIF Model\n",
- "\n",
- "The Leaky Integrate-and-Fire (LIF) neuron is described by:\n",
- "\n",
- "$$\\tau \\frac{dV}{dt} = -(V - V_{rest}) + R \\cdot I(t)$$\n",
- "\n",
- "Where:\n",
- "- $V$ is the membrane potential\n",
- "- $\\tau$ is the membrane time constant\n",
- "- $V_{rest}$ is the resting potential\n",
- "- $R$ is the input resistance\n",
- "- $I(t)$ is the input current\n",
- "\n",
- "When $V \\geq V_{th}$ (threshold), the neuron spikes and resets."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Creating Your First LIF Neuron"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Neuron created successfully!\n",
- "Initial membrane potential: ArrayImpl([0.], dtype=float32) * mvolt\n"
- ]
- }
- ],
- "source": [
- "# Set simulation time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create a single LIF neuron\n",
- "neuron = brainpy.state.LIF(\n",
- " in_size=1,\n",
- " V_rest=-65. * u.mV, # Resting potential\n",
- " V_th=-50. * u.mV, # Spike threshold\n",
- " V_reset=-65. * u.mV, # Reset potential\n",
- " tau=10. * u.ms, # Membrane time constant\n",
- " R=1. * u.ohm, # Input resistance\n",
- " spk_reset='hard' # Reset mode\n",
- ")\n",
- "\n",
- "# Initialize neuron state\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "print(\"Neuron created successfully!\")\n",
- "print(f\"Initial membrane potential: {neuron.V.value}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Response to Constant Input\n",
- "\n",
- "Let's see how the neuron responds to a constant input current."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Reset neuron\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Simulation parameters\n",
- "duration = 200. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "# Constant input current\n",
- "I_input = 20.0 * u.mA\n",
- "\n",
- "# Run simulation\n",
- "voltages = []\n",
- "spikes = []\n",
- "\n",
- "for t in times:\n",
- " neuron(I_input)\n",
- " voltages.append(neuron.V.value)\n",
- " spikes.append(neuron.get_spike()[0]) # Single neuron\n",
- "\n",
- "voltages = u.math.asarray(voltages)\n",
- "spikes = u.math.asarray(spikes)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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Oub1uX6rc2Aun5WVBVOmTIHg4GDyPo8//jg0NTWB1qGOKR3yww8/wKOPPgoLFiyAffv2Qf/+/eGyyy6DgoICpS+NIhGbNm0iRmvHjh2wbt06MnGdNGkSVFdXC867++67ITc3l/t55ZVXFLtmijT07t1bcE+3bNnC/dvcuXPht99+g+XLl5M+gguXa6+9VtHrpUjD7t27Bfcdxz0yY8YM7hw63rUP2nB8ZuPmkhh4T99++2348MMPYefOncRRgc93nMiy4AL16NGjpI+sXr2aLIDuueceD34LipT3vaamhszlnn32WfL/FStWkIXM1KlTW527aNEigQ34v//7Pw99A4pcYx5BRxT/vn733XeCf6djXn/3nX+/8WfZsmXE8YROCj50zOtv/Ta3jbl8c3MzcUo1NDTAtm3b4IsvvoDPP/+cbFppHhNFdwwbNsw0Z84c7nVzc7MpOTnZtHjxYkWviyIfBQUFJhzOmzZt4n43btw408MPP6zodVGkZcGCBab+/fuL/ltZWZnJz8/PtHz5cu53x48fJ/1i+/btHrxKiifAsd25c2dTS0sLeU3Hu/7Asbty5UruNd7rxMRE06uvvioY9wEBAabvvvuOvD527Bj5u927d3Pn/PHHHyYvLy/ThQsXPPwNKFLcdzF27dpFzsvMzOR+16FDB9Mbb7zhgSukePLe33777aarr77a5t/QMW+MMY99YMKECYLf0TGvv/VbmQNz+TVr1pi8vb1NeXl53DkffPCBKTw83FRfX2/SMjRiSmeg93Tv3r0kvJ/F29ubvN6+fbui10aRj/LycvL/6Ohowe+/+eYbiI2NhT59+sD8+fPJzitF22DaDoZ+d+rUieySYjgvguMed174Yx/T/FJTU+nY16Gd//rrr+HOO+8kO6gsdLzrm3Pnzv1/e3cCZXV13wH8DjuILMomYtCAGrJo3ILWiiYYErQaFUPEuMRGYtRo3a1WQrUereZE05hGPDZa00artBoTjXqyENRWq4UQcCkNlsVECJGURRA1zOv53ZM3Z4Z1BgYu8+bzOefx5v3/j/nfee/+7/v/v+/e+09Llixpso/37t07D9ev7uNxH0N5Dj300IbnxPPjOCB6WFE7n/mx78d73VgM44nhHwcddFAe8lMLQztI6ec//3kerrP//vun888/Py1btqxhnX2+9sUwrscffzwP0Vyffb62zt9mNONYPu5jaPfAgQMbnhM9p1euXJl7TrZlnUoXgNb15ptv5i5+jStriMf//d//XaxcbD/19fXpkksuSUceeWQ+Ia06/fTT09ChQ3OIMXv27DxHRXT/j2EAtE1xAhrddePgNLpsX3/99emoo45KL730Uj5h7dKlywYnKrHvxzpqR8xFsXz58jz3SJX9vfZV9+ONfb5X18V9nMA21qlTp3zQqx2oDTFsM/bvCRMm5DmFqi6++OJ08MEH5/c6hndEOB2fE7fddlvR8rJtYhhfDOPZZ5990muvvZauvfbaNHbs2Hxy2rFjR/t8OxBDtWJOovWnZrDP197525JmHMvH/caOA6rr2jLBFLRxMVY5gonGcw2FxvMLRLIek+WOHj06H9gMGzasQEnZVnEwWnXAAQfkoCrCiIceeihPhEz78J3vfCfXhQihquzvUPvim/Tx48fnSfDvvPPOJutibtHGnw9xcnPeeeflyXa7du1aoLS0htNOO61J2x7vbbTp0Ysq2nhqX8wvFT3k44JWjdnna/P8rT0zlK/GxDCO+AZl/dn74/GgQYOKlYvt4ytf+Uqe6HLatGlpyJAhm31uhBhh3rx5O6h0bG/xjcp+++2X39PYv2OIV/Skacy+X1sWLlyYfvKTn6Rzzz13s8+zv9ee6n68uc/3uF//QicxtCOu2qUdqI1QKtqAmDS3cW+pTbUB8d4vWLBgh5WR7S+G8cexfrVtt8/XtmeeeSb3ft7SZ36wz7f987dBzTiWj/uNHQdU17VlgqkaE2n5IYcckn7605826SoYj4844oiiZaP1xLel0ag98sgj6Wc/+1nu4r0ls2bNyvfRk4LaEJeDjh4x8Z7Gft+5c+cm+34czMQcVPb92nHvvffmYRtxRZbNsb/Xnmjn46Cz8T4ec0rEPDLVfTzu44A25qmois+IOA6ohpW03VAq5hiMYDrmlNmSaANinqH1h3nRtv3617/Oc0xV23b7fO33kI7ju7iC35bY59v++dshzTiWj/s5c+Y0CaSrX1Z88IMfTG2ZoXw1KLp2nn322XkixI997GPpG9/4Rr4M5TnnnFO6aLRi98/7778/Pfroo3nceXVMcUyEG0O6IqyI9ccdd1w+gI05Z+Lyo6NGjcrdfWmbrrjiinTCCSfk4Xtx+djJkyfnHpIx10i89zExZuz/Md9AfEDFZYPjA+zwww8vXXRaQZxoRDAV7XvMIVJlf6+tsLlxL7eY8DxONmKfjslPYz6KG2+8Me277775gHbSpEl5SOdJJ52Unz9ixIg8J83EiRPTlClTcqARB8ExHKjx0E/azvseAcSpp56aZs6cmb9hj3lEq5/5sT6+kIz5hiKg/PjHP56PCeJxtAFnnHFG6tu3b8G/jG157+MWc0mOGzcuh9LR1l911VVp+PDhebLjYJ+vzba++sXD1KlT09e//vUN/r99vjbP33o341h+zJgxOYA688wz06233pp/x3XXXZd/d5sfwln6soBsH3fccUflfe97X6VLly6Vj33sY5Xnn3++dJFoRbHrbux277335vWLFi2qjBo1qrLbbrvlS4kPHz68cuWVV1ZWrFhRuuhsg8997nOVPfbYI+/Xe+65Z348b968hvVvv/125YILLqj07du30qNHj8rJJ59cWbx4cdEy03qeeuqpvJ/PnTu3yXL7e+2YNm3aRtv2uGR8qK+vr0yaNKkycODA/F6PHj16g/qwbNmyyoQJEyo9e/bMl48+55xzKqtWrSr0F7Gt7/v8+fM3+Zkf/y/MmDGjMnLkyErv3r0r3bp1q4wYMaJy0003VdauXVv6T2Mb3vs1a9ZUxowZU+nfv3++hPzQoUMrEydObHKZ+GCfr722Ptx1112V7t27V5YvX77B/7fP1+b5W3OP5RcsWFAZO3Zsrh/9+vWrXH755ZX33nuv0tbVxT+lwzEAAAAA2h9zTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGdymx251VfX5/eeOONtOuuu6a6urrSxQEAAABoUyqVSlq1alUaPHhw6tBh832iBFPriVBqr732Kl0MAAAAgDbt9ddfT0OGDNnscwRT64meUtUXr1evXqWLw1b2evvd736X+vfvv8VklvZNXaEl1BdaQn2hJdQXWkJ9obnUFUrWl5UrV+ZOP9WMZXMEU+upDt+LUEow1XZ3qLVr1+b3TwPM5qgrtIT6QkuoL7SE+kJLqC80l7rCzlBfmjNFktoJAAAAQBGCKQAAAACKEEwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGCKQAAAACKEEwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGCKQAAAACKEEwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBM1aDVq1enurq6fIufaR6vW8t5zbaO123reN22jtet5bxmW8frtnXitercuXM68cQTvW4toL61nNds63jdto7XreVWt+PXTDAFAAAAQBGCKQAAAACKaBfB1PLly0sXAQAAAIBaD6ZuueWW9OCDDzY8Hj9+fNp9993TnnvumX75y18WLRsAAAAANRxMTZkyJe2111755x//+Mf59sQTT6SxY8emK6+8snTxAAAAAPijTqnGLFmypCGYeuyxx3KPqTFjxqS99947jRw5snTxAAAAAKjVHlN9+/ZNr7/+ev75ySefTMcee2z+uVKppHXr1hUuHQAAAAA122PqlFNOSaeffnrad99907Jly/IQvvCLX/wiDR8+vHTxAAAAAKjVYOr222/Pw/ai19Stt96aevbsmZcvXrw4XXDBBaWLBwAAAECtBlOdO3dOV1xxxQbLL7300iLlAQAAAKCdzDEV/umf/in96Z/+aRo8eHBauHBhXvaNb3wjPfroo6WLBgAAAECtBlN33nlnuuyyy/LcUsuXL2+Y8LxPnz45nAIAAABg51BzwdQdd9yR7r777vRXf/VXqWPHjg3LDz300DRnzpyiZQMAAACghoOp+fPnp4MOOmiD5V27dk2rV68uUiYAAAAA2kEwtc8++6RZs2ZtsPzJJ59MI0aMKFImAAAAANrBVflifqkLL7wwrV27NlUqlfTCCy+kBx54IN18883pH/7hH0oXDwAAAIBaDabOPffc1L1793TdddelNWvWpNNPPz1fne/v/u7v0mmnnVa6eAAAAADUajC1cuXK9PnPfz7fIph666230oABA/K6efPmpeHDh5cuIgAAAAC1OMfU8ccfn9555538c48ePRpCqblz56ZjjjmmcOkAAAAAqNlgqmfPnunkk09Of/jDHxqWvfrqqzmUGjduXNGyAQAAAFDDwdTDDz+cVqxYkYfyxeTnL730Ug6lJkyYkOeZAgAAAGDnUHPBVEx8/vjjj+ehe+PHj0+jR49OZ511VrrttttKFw0AAACAWpv8PCY8b6xDhw7pwQcfTJ/85Cfz8L1JkyY1PKdXr16FSgkAAABAzQVTffr0SXV1dRssj6F8U6ZMSXfddVf+OZ6zbt26ImUEAAAAoAaDqWnTppUuAgAAAADtMZg6+uijSxcBAAAAgPYYTM2ePTt9+MMfznNLxc+bc8ABB+ywcgEAAABQ48HURz/60bRkyZI0YMCA/HPMJRVzSq3PHFMAAAAAO4+aCKbmz5+f+vfv3/AzAAAAADu/mgimhg4dutGfAQAAANh51UQwtb65c+emO+64I7366qv58YgRI9JFF12U9t9//9JFAwAAAOCPOqQa82//9m95IvQZM2akAw88MN9mzpyZl8U6AAAAAHYONddj6qqrrkrXXHNNuuGGG5osnzx5cl43bty4YmUDAAAAoIZ7TC1evDidddZZGyw/44wz8joAAAAAdg41F0wdc8wx6Zlnntlg+bPPPpuOOuqoImUCAAAAoB0M5TvxxBPT1VdfneeYOvzww/Oy559/Pk2dOjVdf/316Qc/+EGT5wIAAABQRs0FUxdccEG+//a3v51vG1sX6urq0rp163Z4+QAAAACo0WCqvr6+dBEAAAAAaE9zTD333HPpsccea7Lsu9/9btpnn33SgAED0pe+9KX0zjvvFCsfAAAAADUaTN1www3p5Zdfbng8Z86c9MUvfjEde+yx6S//8i/TD3/4w3TzzTcXLSMAAAAANRhMzZo1K40ePbrh8b/8y7+kkSNHprvvvjtddtll6Zvf/GZ66KGHipYRAAAAgBoMpv7v//4vDRw4sOHx9OnT09ixYxseH3bYYen1118vVDoAAAAAajaYilBq/vz5+ed33303zZw5Mx1++OEN61etWpU6d+5csIQAAAAA1ORV+Y477rg8l9Qtt9ySvv/976cePXqko446qmH97Nmz07Bhw1J7sMsuu6RKpVK6GG2O163lvGZbx+u2dbxuW8fr1nJes63jddv61+29995LS5cuzT/TPOpby3nNto7Xbet43Vpul3b8mtVMMPU3f/M36ZRTTklHH3106tmzZ7rvvvtSly5dGtbfc889acyYMUXLCAAAAEANBlP9+vVLTz/9dFqxYkUOpjp27Nhk/dSpU/NyAAAAAHYONRNMVfXu3Xujy3fbbbcdXhYAAAAA2sHk5wAAAAC0LYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGCKQAAAACKEEwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGCKQAAAACKEEwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgCIEUwAAAAAUIZgCAAAAoAjBFAAAAABFCKYAAAAAKEIwBQAAAEARgikAAAAAihBMAQAAAFCEYAoAAACAIgRTAAAAABQhmAIAAACgCMEUAAAAAEUIpgAAAAAoQjAFAAAAQBGdymx251WpVPL9ypUrSxeFrVRfX59WrVqVunXrljp0kL2yaeoKLaG+0BLqCy2hvtAS6gvNpa5Qsr5UM5VqxrI5gqn1xBsR9tprr9JFAQAAAGjTGUvv3r03+5y6SnPiq3aWEr7xxhtp1113TXV1daWLw1YmsxEsvv7666lXr16li8NOTF2hJdQXWkJ9oSXUF1pCfaG51BVK1peImiKUGjx48BZ7YOkxtZ54wYYMGVK6GLSC2Jk0wDSHukJLqC+0hPpCS6gvtIT6QnOpK5SqL1vqKVVloCkAAAAARQimAAAAAChCMEXN6dq1a5o8eXK+h81RV2gJ9YWWUF9oCfWFllBfaC51hbZSX0x+DgAAAEARekwBAAAAUIRgCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRRt0s0335wOO+ywtOuuu6YBAwakk046Kc2dO7fJc4455phUV1fX5PblL3+5WJkp56//+q83qAsf+MAHGtavXbs2XXjhhWn33XdPPXv2TOPGjUu//e1vi5aZcvbee+8N6kvcoo4EbUv79fTTT6cTTjghDR48OL/v3//+95usj+vJfPWrX0177LFH6t69ezr22GPTr371qybP+f3vf58+//nPp169eqU+ffqkL37xi+mtt97awX8JpevLe++9l66++ur0kY98JO2yyy75OWeddVZ64403ttge/e3f/m2Bv4bS7csXvvCFDerCpz/96SbP0b60H1uqLxs7jonb1772tYbnaF/ah5ubcd7cnHOhRYsWpeOPPz716NEj/54rr7wy/eEPf2i1cgqmaJOmT5+ed57nn38+/fjHP84HeGPGjEmrV69u8ryJEyemxYsXN9xuvfXWYmWmrA996ENN6sKzzz7bsO7SSy9NP/zhD9PUqVNz3YoTg1NOOaVoeSnnxRdfbFJXoo0Jn/3sZxueo21pn+Iz5sADD0x///d/v9H1UQ+++c1vpilTpqT//M//zIHDpz71qXzAVxUnjS+//HKuV4899lg+ufjSl760A/8Kdob6smbNmjRz5sw0adKkfP/www/nE4UTTzxxg+fecMMNTdqbiy66aAf9BexM7UuIIKpxXXjggQearNe+tB9bqi+N60nc7rnnnhw8ReDQmPal9k1vxnnzls6F1q1bl0Opd999N/3Hf/xHuu+++9I//uM/5i/jWk0FasDSpUsrUZ2nT5/esOzoo4+u/MVf/EXRcrFzmDx5cuXAAw/c6Lrly5dXOnfuXJk6dWrDsldffTXXp+eee24HlpKdVbQjw4YNq9TX1+fH2hZCtBGPPPJIw+OoH4MGDap87Wtfa9K+dO3atfLAAw/kx6+88kr+fy+++GLDc5544olKXV1d5Te/+c0O/gsoWV825oUXXsjPW7hw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aNWnT5+0o/3yl79Mn/jEJ9LChQtTz549t9t2Tj311HTggQemSZMmbbdtAADth2AKAKAZlixZ0vDzgw8+mL761a+muXPnNiyLMGh7BkJbcu6556ZOnTqlKVOmbNftPP7442nixIlp0aJFeXsAANvCUD4AgGYYNGhQw6137965B1XjZRFKrT+U75hjjkkXXXRRuuSSS1Lfvn3TwIED0913352Hwp1zzjlp1113TcOHD09PPPFEk2299NJLaezYsfl3xv+JIXpvvvnmJsu2bt269K//+q/phBNOaLJ87733TjfeeGM666yz8u8aOnRo+sEPfpB+97vfpc985jN52QEHHJD+67/+q+H/RI+r+D1R3l122SV96EMfSj/60Y8a1n/yk59Mv//979P06dNb6ZUFANozwRQAwHZ03333pX79+qUXXnghh1Tnn39++uxnP5v+5E/+JM2cOTONGTMmB09r1qzJz1++fHkeknfQQQflwOjJJ59Mv/3tb9P48eM3uY3Zs2enFStWpEMPPXSDdbfffns68sgj0y9+8Yt0/PHH521FUHXGGWfk7Q8bNiw/rnaiv/DCC9M777yTnn766TRnzpx0yy23NOkJ1qVLl/TRj340PfPMM9vl9QIA2hfBFADAdhTzMV133XVp3333Tddcc03q1q1bDqpiOFwsiyGBy5Yty+FS+Na3vpVDqZjE/AMf+ED++Z577knTpk1L//M//7PRbUQvp44dO6YBAwZssO64445L5513XsO2Vq5cmQ477LAcju23337p6quvTq+++moOv0IM0Ysg6yMf+Uh6//vfn/7sz/4sjRo1qsnvHDx4cN4mAMC2EkwBAGxHMVSuKsKj3XffPYc+VTFULyxdurRhEvMIoapzVsUtAqrw2muvbXQbb7/9duratetGJ2hvvP3qtja3/YsvvjgP/4twKiZ0rwZmjXXv3r2hhxcAwLYQTAEAbEedO3du8jjCo8bLqmFSfX19vn/rrbfyHE+zZs1qcvvVr361Qc+lquiBFUHRu+++u9ntV7e1ue3HJOr/+7//m4f8xVC+GB54xx13NPmdMcdU//79t+LVAABoSjAFALATOfjgg9PLL7+cJy6PidEb32Iy8o2JOZ/CK6+80ipl2GuvvdKXv/zl9PDDD6fLL788T9i+/uTsMcQQAGBbCaYAAHYiMfl49EiaMGFCevHFF/PwvaeeeipfxS+uvrcx0XspAq1nn312m7cfVxCM7c2fPz9Pjh7DCkeMGNGwfsGCBek3v/lNOvbYY7d5WwAAgikAgJ1ITCz+7//+7zmEiiv2xXxQERb16dMndeiw6UO3GIL3ve99b5u3H9uNcCzCqE9/+tN5gvRvf/vbDesfeOCBXK6hQ4du87YAAOoq1WsDAwDQZsUE6Pvvv3968MEH0xFHHLFdthFzWMXV/e6///48OToAwLbSYwoAoAbElfK++93vpjfffHO7bWPRokXp2muvFUoBAK1GjykAAAAAitBjCgAAAIAiBFMAAAAAFCGYAgAAAKAIwRQAAAAARQimAAAAAChCMAUAAABAEYIpAAAAAIoQTAEAAABQhGAKAAAAgFTC/wMrDZ6IFxt9TwAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Number of spikes: 14\n",
- "Firing rate: 70.00 Hz\n",
- "Mean ISI: 13.90 ms\n",
- "ISI CV: 0.000\n"
- ]
- }
- ],
- "source": [
- "# Plot results\n",
- "times_plot = times.to_decimal(u.ms)\n",
- "voltages_plot = voltages.to_decimal(u.mV)\n",
- "\n",
- "plt.figure(figsize=(12, 5))\n",
- "\n",
- "# Membrane potential\n",
- "plt.subplot(2, 1, 1)\n",
- "plt.plot(times_plot, voltages_plot, linewidth=2)\n",
- "plt.axhline(y=-50, color='r', linestyle='--', alpha=0.7, label='Threshold')\n",
- "plt.axhline(y=-65, color='g', linestyle='--', alpha=0.7, label='Rest/Reset')\n",
- "plt.ylabel('Voltage (mV)')\n",
- "plt.title(f'LIF Neuron Response to Constant Input (I = {I_input})')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "\n",
- "# Spike raster\n",
- "plt.subplot(2, 1, 2)\n",
- "spike_times = times_plot[spikes > 0]\n",
- "plt.scatter(spike_times, [0]*len(spike_times), marker='|', s=1000, c='black')\n",
- "plt.ylabel('Spikes')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylim([-0.5, 0.5])\n",
- "plt.yticks([])\n",
- "plt.grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Statistics\n",
- "n_spikes = int(u.math.sum(spikes > 0))\n",
- "firing_rate = n_spikes / (duration.to_decimal(u.second))\n",
- "print(f\"Number of spikes: {n_spikes}\")\n",
- "print(f\"Firing rate: {firing_rate:.2f} Hz\")\n",
- "\n",
- "if n_spikes > 1:\n",
- " isis = jnp.diff(times_plot[spikes > 0]) # Inter-spike intervals\n",
- " print(f\"Mean ISI: {jnp.mean(isis):.2f} ms\")\n",
- " print(f\"ISI CV: {jnp.std(isis)/jnp.mean(isis):.3f}\") # Coefficient of variation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: F-I Curve (Frequency-Current Relationship)\n",
- "\n",
- "Let's explore how firing rate changes with input current."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Completed 1/10: I = 0.0 * mamp, rate = 0.0 Hz\n",
- "Completed 2/10: I = 2.222222328186035 * mamp, rate = 0.0 Hz\n",
- "Completed 3/10: I = 4.44444465637207 * mamp, rate = 0.0 Hz\n",
- "Completed 4/10: I = 6.6666669845581055 * mamp, rate = 0.0 Hz\n",
- "Completed 5/10: I = 8.88888931274414 * mamp, rate = 0.0 Hz\n",
- "Completed 6/10: I = 11.111111640930176 * mamp, rate = 0.0 Hz\n",
- "Completed 7/10: I = 13.333333969116211 * mamp, rate = 0.0 Hz\n",
- "Completed 8/10: I = 15.55555534362793 * mamp, rate = 28.0 Hz\n",
- "Completed 9/10: I = 17.77777862548828 * mamp, rate = 52.0 Hz\n",
- "Completed 10/10: I = 20.0 * mamp, rate = 70.0 Hz\n"
- ]
- }
- ],
- "source": [
- "# Range of input currents\n",
- "currents = u.math.linspace(0 * u.mA, 20 * u.mA, 10)\n",
- "firing_rates = []\n",
- "\n",
- "duration = 500. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "# for I in currents:\n",
- "for i, I in enumerate(currents):\n",
- " # Reset neuron\n",
- " brainstate.nn.init_all_states(neuron)\n",
- " \n",
- " # Simulate\n",
- " spike_count = 0\n",
- " for t in times:\n",
- " neuron(I)\n",
- " if neuron.get_spike()[0] > 0:\n",
- " spike_count += 1\n",
- " \n",
- " # Calculate firing rate\n",
- " rate = spike_count / (duration.to_decimal(u.second))\n",
- " firing_rates.append(rate)\n",
- " print(f\"Completed {i+1}/{len(currents)}: I = {I}, rate = {rate} Hz\")\n",
- "\n",
- "firing_rates = jnp.array(firing_rates)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZRxJREFUeJzt3Qd8FNX2wPGTHlpCTygB6VVAUIqiIKCIyF/Up6LgQ8WGiCKWJzYEeaI+K4qgPsX+UERBUBEFBFFApCiIIL0n1DRCCsn+P+fGXTeNZJNJZsvv+/kszMxudm/Ozm7mzLn3TpDD4XAIAAAAAJRBcFl+GAAAAAAUiQUAAACAMiOxAAAAAFBmJBYAAAAAyozEAgAAAECZkVgAAAAAKDMSCwAAAABlRmIBAAAAoMxILAAAAACUGYkFAHiRG2+8Uc4444wSPXbXrl0SFBQk77zzTrm3CwCA4pBYACiUHqzqQWtht4ceeqjYn9fH3XXXXSV6rezsbJkxY4b07t1batasKREREebg+qabbpJffvlF/In+XkXFNT09XXzF999/n6ftISEhUrduXfnHP/4hf/zxR6mf96mnnpI5c+aIr/Fkf68IH330kbz00kse/Yy/fg7T0tLkiSeeMPssgPIVWs7PD8DHTZw4UZo0aZJnW/v27S17/pMnT8qVV14pCxYskAsuuEAefvhhc1CjZ+M/+eQTeffdd2XPnj3SsGFD8RedOnWS++67r8D28PBwefPNNyUnJ6dEz9O4cWMTv7CwMLHL3XffLeecc45kZWXJb7/9JtOnTzcHcBs3bpTY2NhSJRaanAwePLhc2hsoNLHQ92DMmDES6J9DTSwmTJhgljVpAlB+SCwAnNaAAQPk7LPPLrfnf+CBB8zBzIsvvljgIGj8+PFmuxX0YD0zM1MiIyPFbg0aNJBhw4YVel9wcPGF5FOnTpnfRxMRu3+f888/3yQCTq1atZKRI0fKe++9Jw8++KCtbYNvfQ5PnDghVapUseR1ANiDrlAAbLNv3z55/fXX5aKLLir0zKp2r7n//vtdZ0mLGn+g3Ry0K0phXVM+/PBDadeunenWMW/ePHMWVrt25JecnGwOdvT1nDIyMsxBVfPmzc3Px8XFmYNl3e7uyJEjsnnzZnNmtKzy/47OcRTPPfec6drSrFkz05ZNmzYVOsZCf75q1aqyf/9+c9Zfl+vUqWN+L+3q4u7o0aNyww03SFRUlFSvXl2GDx8uv/76a5nGbWiiobZv355nu7b/3HPPlVq1akmlSpWkS5cu8umnn+Z5jL6uHlzq2XFnFyv9fZz0d7r55pslJibGxEDf17fffrvYNmmF7cILLyz0IFeTPPfEaObMmaZt1apVM3E588wz5eWXXy51VzE92//vf//b7MO6f/Xt21e2bduW57F6Fl3buGbNGhMjjY9WCbX6U1j3RH3fC3stZ1cffb4vv/xSdu/e7Yrj6cbtVPTnUBMY5++ydOlSufPOO003OvdqyNdff232JU009L0YOHCg/P7773meuyT7usZKtymtWjjjoW0FYD0qFgBOKykpyRw4u6tdu7Ylz60HD3r2XQ9uy8PixYvNgZ0e2GibW7RoIVdccYV89tln5kBKz/g7ab9+TRiGDBniOuj8v//7P1m+fLncdttt0qZNG9mwYYM5c/vnn3/mGQfw6quvmoOWJUuWlKirhXYbyh/TypUrm1tRtO+7jsHQtujBmSZIRXWZ0oOq/v37S7du3cwB/XfffSfPP/+8SUq0muD8/QYNGiQ///yz2da6dWuZO3euSS7KwnnQW6NGjTzb9eBc4zl06FBzxloP4K+++mqZP3++OWhU77//vtxyyy3StWtX83sqbbNKSEiQ7t27uw5U9WBR958RI0aYpPB0XX6uvfZacyAZHx+fp3uWvrcHDhxwvefffvutXHfddebg/5lnnjHbdLzIjz/+KPfcc0+p4vH000+bKpQe7Opn6dlnnzUxWLVqVZ7HHT9+XC699FK55pprTBt0v9X3RfdRTaY88cgjj5jX0oTBWWnQg25v+RxqUrJ+/XpznyYV+l4+/vjjJql07ge6H+o+rO+DJuzTpk2Tnj17yrp16/IkNcXt6/rc+rO6rJ997e6lOnToUC6/KxDwHABQiBkzZjj0K6KwW0no40aNGnXax9x7773mcevWrSvRcw4fPtzRuHHjAtvHjx9foF26Hhwc7Pj999/zbP/mm2/MffPmzcuz/dJLL3U0bdrUtf7++++bn//hhx/yPG769Onm53/88ccCr79kyZJifwdtf2Ex1eco7HfcuXOnuT8qKspx6NChPM/lvE/fK/cY6baJEyfmeexZZ53l6NKli2t99uzZ5nEvvfSSa1t2drajT58+BZ6zMPq76uPefvttx+HDhx0HDhxw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/zb5M0/jqPtiYZ/r+Pj4PI9jfzx9HAv77tNbu3btAnp/nDx5spxzzjnmos1169aVwYMHy5YtW4r9OV86jiSx8NDHH38sY8eONSP0165dKx07dpT+/fvLoUOHCn38Tz/9JNddd52MGDFC1q1bZ3YivW3cuNH1mGeffVamTJki06dPl1WrVkmVKlXMc6anp4s/8zSW+oWvsVyyZImsWLHCXIny4osvlv379+d5nB64HTx40HX73//+J/7M0zgqPfBwj9Hu3bvz3B+I+6SncdQDOfcY6mc6JCRErr766oDeH0+cOGFipwdeJbFz506TjF144YWyfv16GTNmjNxyyy15DopLs48HWhz1wE8TCz3gWLNmjYmnHgjq3x13emDnvj8uX75c/JmncXTSgz33OOlBoBP7Y/FefvnlPPHTq0bXrFmzwPdjoO2PS5culVGjRsnKlSvl22+/laysLHMco/Etis8dR+qsUCi5rl27OkaNGuVaz87OdtSvX98xefLkQh9/zTXXOAYOHJhnW7du3Ry33367Wc7JyXHExsY6/vOf/7juT0xMdERERDj+97//OfyZp7HM79SpU45q1ao53n33Xde24cOHOy6//HJHIPE0jjNmzHBER0cX+XyBuk+WdX988cUXzf6Ympoa0PujO/0T8/nnn5/2MQ8++KCjXbt2ebZde+21jv79+1v23gRCHAvTtm1bx4QJE1zr48ePd3Ts2NERqEoSxyVLlpjHHT9+vMjHsD96vj/q44OCghy7du1ybQv0/VEdOnTIxHPp0qWOovjacSQVCw9kZmaaM0FaYnIKDg4263oGvTC63f3xSrNI5+P1bJ2WWN0fo5dN19JqUc8ZqLHMLy0tzWT7ehYkf2VDzy61atVKRo4cKUePHhV/Vdo4pqamSuPGjU3V5/LLL5fff//ddV8g7pNW7I9vvfWWDBkyxJwpCtT9sTSK+4604r0JRDk5OZKSklLg+1G7R2h3lqZNm8rQoUNlz549trXRm3Xq1Ml0K9Eq0I8//ujazv5YOvr9qDHSvzvuAn1/TEpKMv/n/5z68nEkiYUHjhw5ItnZ2RITE5Nnu67n73/ppNtP93jn/548Z6DGMr9//etf5gvJ/cOk3U7ee+89WbRokTzzzDOm7DhgwADzWv6oNHHUA9y3335b5s6dKx988IE5ADn33HNl3759AbtPlnV/1P7V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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Rheobase (minimum spiking current): 15.55555534362793 * mamp\n"
- ]
- }
- ],
- "source": [
- "# Plot F-I curve\n",
- "plt.figure(figsize=(8, 5))\n",
- "plt.plot(currents.to_decimal(u.nA), firing_rates, 'o-', linewidth=2, markersize=6)\n",
- "plt.xlabel('Input Current (nA)')\n",
- "plt.ylabel('Firing Rate (Hz)')\n",
- "plt.title('F-I Curve: Firing Rate vs Input Current')\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Find rheobase (minimum current for spiking)\n",
- "spiking_currents = currents[firing_rates > 0]\n",
- "if len(spiking_currents) > 0:\n",
- " rheobase = spiking_currents[0]\n",
- " print(f\"Rheobase (minimum spiking current): {rheobase}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Soft vs Hard Reset\n",
- "\n",
- "LIF neurons can use different reset mechanisms:\n",
- "\n",
- "- **Hard reset**: $V \\leftarrow V_{reset}$ (discards extra charge)\n",
- "- **Soft reset**: $V \\leftarrow V - V_{th}$ (preserves extra charge)\n",
- "\n",
- "Let's compare their behavior."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create two neurons with different reset modes\n",
- "neuron_hard = brainpy.state.LIF(\n",
- " 1,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " spk_reset='hard'\n",
- ")\n",
- "\n",
- "neuron_soft = brainpy.state.LIF(\n",
- " 1,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV, # Not used in soft reset\n",
- " tau=10. * u.ms,\n",
- " spk_reset='soft'\n",
- ")\n",
- "\n",
- "# Initialize\n",
- "brainstate.nn.init_all_states(neuron_hard)\n",
- "brainstate.nn.init_all_states(neuron_soft)\n",
- "\n",
- "# Simulate both with same input\n",
- "duration = 200. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "I_input = 20.0 * u.mA # Strong input\n",
- "\n",
- "voltages_hard = []\n",
- "voltages_soft = []\n",
- "spikes_hard = []\n",
- "spikes_soft = []\n",
- "\n",
- "for t in times:\n",
- " neuron_hard(I_input)\n",
- " neuron_soft(I_input)\n",
- " \n",
- " voltages_hard.append(neuron_hard.V.value)\n",
- " voltages_soft.append(neuron_soft.V.value)\n",
- " spikes_hard.append(neuron_hard.get_spike()[0])\n",
- " spikes_soft.append(neuron_soft.get_spike()[0])\n",
- "\n",
- "voltages_hard = u.math.asarray(voltages_hard)\n",
- "voltages_soft = u.math.asarray(voltages_soft)\n",
- "spikes_hard = u.math.asarray(spikes_hard)\n",
- "spikes_soft = u.math.asarray(spikes_soft)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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TzwRf/75p1oX+vrQSbsuw1clgCzLJLWkZIi2sb3XScBa1vmBAwdCWi9ERBRnbiIiIhPp16+fu2LFiu5ly5aV+NwbbrjBLV9l//nPf9yvvPKKe+DAger+gAEDPM/58MMP3b1793anpqaq2/Izb9489xNPPKGeO3jwYM/j69evD/pe7777rnr+ggULfB5/+eWX1eOvvfaa57Hly5e7K1eu7G7Xrp17zJgx6jmnnXaa2+Vyub/66ivP8x555BH12K233up+66233BMmTHBfffXV7meffTas15Llvvvuu9VyyGvqn2fXrl0+yy7/luSaa65xp6SkuPfv3+/z+Isvvqhe49dff3WH4s8//3RfeeWV7mPHjrlL6/jx4+4GDRq4u3XrVuR3l156qTs9Pd2dmZnpjpQ1a9aozzhkyBCfx/Pz8921atVS6z1Uc+bMcZ999tnq9fTtIT9i48aN6vEuXbq4W7Roobbr2LFj3TVq1FCfNzc3t9jXnjVrlvr7b7/9tsjv5PEOHTqo15J9XF67cePG7nLlyvkcUyNHjlTPlf3q4osvdr/66qvqGBJPPfWU2r9k+8njo0aNUq/XpEkT98GDB9VzZLs2bdrUXa9ePfX8SZMmqef16NHDvWnTJs/7hPJaok+fPu46deq4a9as6b7rrrvcb7zxhvvrr792f/DBB2o558+f7/M55T3k8XHjxoX1XqEudyAzZsxQx0avXr3Usfrcc8+5O3XqpB7766+/PM+TZZJl++abb9T9rKwsd/PmzdW6zsnJUY/973//U9u6TZs2nn1j2rRpPserPF/Wy0svveRpE7744gv3CSec4B4xYoT7zTffVMd71apV1TY+cuSIuySDBg1Sr33uuee6n3/+eff48ePV9pf3MO5D8h5169Z1P/nkk+p5zZo1U8fbvn37PM8LdVmK+zyyneR30kZLG3P//fe7q1WrptaXPNfYFsh3gyzDvffeq/aPO++8052UlKSWP9gx8t1335W4ToiIKP4YmCIiIlORi7PExET1IxeADz30kPvnn38ucrG+ePFideFxyy23+Dz+wAMPFAmgSACrfPnyPs+TAFOowRrjxdUvv/zi3rt3r3vr1q3uL7/8Ul1IS9BL7uvOPPNMd8eOHT0XoaKgoMB98sknu1u2bOl5TC7qzj///GLfN9TXkotEWb7ffvst6LKH8ll/+OEH9Vy5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113u3bt3+zxXphgfNWqUmq49OTnZ3bBhQ/ewYcPcOTk5Ps+74YYb3OXLly/yXt988427Xbt2aip3+UqUac2D0ac895/yXZ8evnnz5upHnw59/fr17oEDB7rr1Kmjlq1+/fruCy64wP3ll196/u6pp55yn3jiie4qVaq4y5Urpz6zTGufm5vr8/qhvJZ466233M2aNXMnJiaqZf3tt998lr24zxeITOMuf/fqq6+64+3AgQPu1NRUtTwrVqyI+vv98MMP6r3q1q2rtm9pyL4g+23NmjXdLpdLvZ7YuHGjuj1u3LgifyOPjxw5ssTX/uqrr9Rrbtmypcjf33HHHe6PPvrI3bJlS7XOunTp4tkXdPIe8ty9e/cGfP0pU6a4Tz31VHXcyI/sm/K6q1evVr/fsGGDOk5ln09LS3NXq1bN3bdvX/cvv/wS9muJPn36uNu3b1/sZ7722mvVMp911llBnxPJ5Q5k0aJF7ksvvdRdvXp1tW4bN27svuKKK9wzZsxQv3/hhRfUMspyGMl2qlSpkvu8887zPLZr1y73+eef765YsaL6G1kHJbU1Bw8edN94443uGjVqqPaxf//+7lWrVqnlkHYulH1S9jtZL9K2yr557rnnuv/+++8i+5A///cIdVmK+zzixRdfVH8j61Paw9mzZ7u7devmPuecc3yeJ+3imDFj1H4iz61atap6nnwHZGRkeJ536NAh9dkmTZpU4vogIiJzcMn/4h0cIyIiIqLQSbaIZKlIlsmTTz7peVyyTO644w5V84zIiiSLS2qhyfDMQEP3SiLDqseOHasmlihLwXUiIood1pgiIiIishgZeibD+GSoZ6CaR0RWIHX5/PvIpRaXFGiXYc7hysvLU3UGpag9g1JERNbBjCkiIiKiMEgNLym4XJxQZv+LBmZMkZXMnDkT9913n6r5JfWgpGj/22+/rWbTkwLmUoeKiIjsj8XPiYiIiMIgRaylyH5x2O9HVDKZVKFhw4aqILtkSckkEAMHDsSzzz7LoBQRkYMwY4qIiIgoDCtWrFCzAxZHZl8jIiIiopIxMEVERERERERERHHB4udERERERERERBQXrDEVYIpaSc+vWLGiKiBKREREREREREShk8F5mZmZqFevHhISis+JYmDKjwSlpAgjERERERERERGV3tatW9GgQYNin8PAlB/JlNJXXqVKlWDlzK+9e/eiZs2aJUYnyT643Z2L296ZuN2di9vembjdnYnb3bm47Z2pwCbb/fDhwyrpR4+xFIeBKT/68D0JSlk9MJWTk6M+g5V3ZgoPt7tzcds7E7e7c3HbOxO3uzNxuzsXt70zFdhsu4dSIsn6n5KIiIiIiIiIiCyJgSkiIiIiIiIiIooLBqaIiIiIiIiIiCguWGOKiIiIiIiIiKLm+PHjyMvLi/diWKbGVF5enqozZeYaU4mJiUhKSgqphlRJGJgiIiIiIiIioqjIysrCtm3b4Ha7470oluB2u1VwKjMzMyJBn2hKT09H3bp1kZKSUqbXYWCKiIiIiIiIiKKSKSVBKQlg1KxZ0/SBFrMEpvLz8yOWjRStZczNzcXevXuxceNGtGzZskzZXQxMEREREREREVHEyZA0CWJIUKpcuXLxXhxLcFsgMCVkeyYnJ2Pz5s0qSJWWllbq1zLvgEUiIiIiIiIisjwzB1io9CJVA4uBKSIiIiIiIiIiigsGpoiIiIiIiIiIIuzNN99Ew4YNVWbR888/H+/FMS0Gpuxo9+9w/X4eqi6+Gtj2dbyXhoiIiIiIiMgypKj3f//7XzRq1AipqamoU6cO+vfvj9mzZ4f8GocPH8add96JoUOHYvv27Rg8eDBOP/103HvvvSX+7VlnnaWCWTIEUmo3tWrVCqNHj47pzIahLmsksPi5HR3dCdfOn5EKoODIRfFeGiIiIiIiIiLLuOyyy1RB7/fffx/NmjXD7t27MWPGDOzfvz/k19iyZYsq/n7++eejbt26YS/DLbfcgieffBLHjh3Dr7/+qgJbVapUUQEzu2HGlB35FJaLXUSViIiIiIiIyMoOHTqEP//8E2PGjEHfvn3RuHFjnHjiiRg2bBguuugin8DTxRdfjAoVKqBSpUq44oorVABLvPfee+jYsaO6LYEtyXwaNGgQfv/9d7zwwgvqvvxs2rQp6HKkp6erTC15/xtvvBGdOnXC9OnTPb+XgNUDDzyA+vXro3z58ujZsydmzpzp+b3MlnfhhReiatWq6vft27fH1KlTPb9fvnw5zj33XLX8tWvXxvXXX499+/ap34W7rGXFwJQduQybNYapfkRERERERERWJoEa+fn6669V8CeQgoICFZQ6cOCACuBIwGjDhg248sor1e/l319++UXdnj9/Pnbu3KmCPL169cKtt96q7suP1J8qiQzfk0DZqlWrkJKS4nlchgnOnTsXn332GZYuXYrLL78c55xzDtauXat+f8cdd6jl/+OPP7Bs2TIVaJPPpQffzjjjDHTp0gULFy7ETz/9pIJqElwTpV3W0uJQPlsyZkwVxHE5iIiIiIiIiAx+6g4c3RX79y1XBzhnYYlPS0pKUhlPEpR5/fXX0bVrV/Tp0wdXXXWVyloSMqxPgj0bN270BGw++OADlZW0YMEC9OjRA9WrV1eP16xZU2U+CQks6ZlQJXnttdfw9ttvqyGFMiRQak3dfffdnmytd999V/1br1499ZhkT0mASR5/5pln1O9kSKIxc0v38ssvq6CUPE/3zjvvqM+yZs0aVdMqnGUtKwam7IgZU0RERERERGRGEpQ6uh1mJgEdqQ0lmUrz5s3Djz/+iLFjx2LSpElqmNvKlStVEMeYRdSuXTtVA0p+J4Gpsrr22msxfPhwHDx4ECNHjsTJJ5+sfoQExY4fP64CSEaSIaUHxCSIJfWopk2bpoqpy2fSA2tLlizBb7/95smgMlq/fn2R1402BqZsiRlTREREREREZEKSuWSB95UMpbPPPlv9PPbYY6oYuQSIJDAVC5UqVUKLFi3U7c8//1zdPumkk1SQKSsrC4mJifj777/Vv0Z6sEmWV2YS/OGHH1RwSmb1mzBhAu666y7191J/Sob3+StNofayYmDK7oEpZkwRERERERGRWYQwnM6MJCNK6k6Jtm3bYuvWrepHz5pasWKFqt0kzwtGhsdJplO4KlSogHvuuUcN11u0aJEahievs2fPHvTu3Tvo38my3X777epHire/9dZbKjAlwxOnTJmCJk2aqKGLkVzW0mDxc7sP5eOsfEREREREREQh2b9/vyoM/tFHH6mi4lJH6osvvlBD+aTguZCsJandJMPt/vnnH1XgfODAgaoWVffu3YO+tgSC/vrrLzXDncyAJ0XUQ3Xbbbep+k8SUJKhdvLe8p5fffWVWkZZBsmKkgwpce+99+Lnn39Wv5NllKF7ElDTC6NL4farr75a1cSS4XvyXJn9Tw9GlWVZw8XAlO0zpjiUj4iIiIiIiCjU7KSePXviueeew2mnnYYOHTqooXxSDF2KhguXy4VvvvkGVatWVc+RQJUUF588eXKxry0ZTzL0TrKqpCi6FCgPVbVq1VQg6vHHH1dBIilyLveHDBmC1q1bY8CAASrI1KhRI/V8CTBJAEqCUTJbnwSzXn31VfU7KZg+e/Zs9Zx+/fqpIJsEsqRGVkJCQpmXNVwut8w9SB6HDx9G5cqVkZGRocZ0WtL2H4DfL1A3Czo+gYSOj8V7iShGpIGSdM5atWp5GhRyBm57Z+J2dy5ue2fidncmbnfnssO2z8nJURk7TZs2VTWbqGRutxv5+flqiJ0EwKy6fcOJrVhz76YSMGOKiIiIiIiIiMyPgSk7Yo0pIiIiIiIiIrIABqZsnjHlYsYUEREREREREZkUA1N25DMOlRlTRERERERERGRODEzZfSgfa9sTERERERERkUkxMGVLxowpDuUjIiIiIiIiInNiYMqOmDFFRERERERERBbAwJQtMWOKiIiIiIiIiMyPgSm7B6aYMUVEREREREREJsXAlN2H8jFjioiIiIiIiChiZs6cCZfLhUOHDsX0fd977z1UqVKlTK+xadMmteyLFy82zedjYMqWmDFFREREREREFC4JyBT38/jjj8d7EW0nKd4LQNHOmGJgioiIiIiIiCgUO3fu9NyePHkyRowYgdWrV3seq1ChAhYuXBj26+bm5iIlJSViy2knzJiyfcYUh/IRERERERERhaJOnTqen8qVK6ssKeNjEpjS/f333+jevTvS09Nx8skn+wSwJLOqc+fOmDRpEpo2bYq0tDT1uAyPu+WWW1CzZk1UqlQJZ5xxBpYsWeL5O7l99tlnq9/JT7du3YoEwn7++We0bdtWLcs555zjE0wrKCjAE088gQYNGiA1NVUtw08//VTsZ546dSpatWqFcuXKoW/fvmq4XywxMGVHzJgiIiIiIiIis8rNDf6Tnx/6c/PyQntulAwfPhwTJkxQgaOkpCTcdNNNPr9ft24dpkyZgq+++spT0+nyyy/Hnj178OOPP6rAVteuXXHmmWfiwIED6vfXXXcd6tevj/nz56vfP/zww0hOTva8ZnZ2NsaPH48PP/wQf/zxB7Zs2YIHHnjA8/sXXnhBLZM8Z+nSpejfvz8uuugirF27NuBn2Lp1Ky699FJceOGFahklaCbvGUscymdLzJgiIiIiIiIik3rmmeC/a9kSuPZa7/1x44oGoHRNmgCDBnnvP/+8RG6KPi9KdaGefvpp9OnTR92WYM7555+PnJwcT3aUDN/74IMPVHaUmDVrlgo4SWBKspnE+PHj8fXXX+PLL7/E4MGDVaDpvvvuQ5s2bVS2VktZHwZ5eXl4/fXX0bx5c3X/zjvvVBlSOnm9oUOH4qqrrlL3x4wZg99++w3PP/88XnnllSKf4bXXXlOvJcEs0bp1ayxbtkz9XaxYImNK0shuvvlmlf4mqWWy0kaOHKk2spFEA3v37q12goYNG2Ls2LFwJJchMMWMKSIiIiIiIqKI69Spk+d23bp11b8SdNI1btzYE5TSh+llZWWhevXqahie/rNx40asX79ePUeCUrfffrsazvfss896HtfJsEE9KKW/r/6ehw8fxo4dO3DKKaf4/I3cX7lyZcDPII/37NnT57FevXohliyRMbVq1So1TvKNN95AixYtsHz5ctx66604cuSIigbqG6Bfv34466yzVPRQInySRidTKUrU0VE4lI+IiIiIiIjM6pFHgv8uwS9/5sEHQ0zKAHDvvYgl4xA7yW4SErvQlS9f3uf5EpSSQNLMmTOLvFaVKlU8tamuuOIKVUdKakNJUs5nn32GSy65pMh76u/rdlv7ut8SgSkp5iU/umbNmqmiYpJypgemPv74Y5VB9c4776hK9+3bt1fjIydOnOi8wBSH8hEREREREZFZhTM7XbSeGwdST2rXrl2qHlUTGYYYRKtWrdCuXTvcf//9uPrqq/Huu+96AlPFkWLp9erVw+zZsz1DDIXcP/HEEwP+jRRR//bbb30emzdvHmLJEoGpQDIyMlCtWjXP/blz5+K0007zmX5RinzJuMiDBw+iatWqAV/n2LFj6kcnmVd6lNMY6bQUt3eMpttdALdVPweFTfZZiZZbdt+lUuO2dyZud+fitncmbndn4nZ3Ljtse/0z6D9Woy+z/7IbH/d/jv/nNf6tFDmXYXIDBgxQsQoJQO3YsQM//PCDCjxJgs2DDz6ofi+1pbZt24YFCxao4uTBXtP/MSmELllXktAjM/JJUEuSdj766KMiryE/t912m6ovJX8nhc+l4Pp7771X5PMFWz/6Puq/n4az31oyMCWV7V966SVPtpSQqKPUoDKqXbu253fBAlOjR4/GqFGjijy+d+9eVbTMipIyD6JG4e2j2UeQaRjjSvYmB78EbaVxSPBPgSVb47Z3Jm535+K2dyZud2fidncuO2x7KdQtnyM/P1/9WI0eXPFf9uPHj3se139n/Fd+9KCc/99+8803GDFihCo9JHGHOnXq4NRTT1V1p+T5+/btU7+TulE1atRQQarHHnvM85r+y2NcFvF///d/KjlHAk3yGpIRJbMCSrzEf3nlRzKsJk+erAJiL7/8Mnr06IEnn3xSlU8qabvpy7R///4iQwwzMzNDXs8udxzDllK1vqRK71KIS6rR67Zv365S0k4//XRMmjTJ87jUl5IVLXWodCtWrFARR/lXNkaoGVNSOF02pKTBWdKhpUj4qYu6WdDsZuDEN+O9RBQj0ihI4yYF9qz65UWlw23vTNzuzsVt70zc7s7E7e5cdtj2kuwhk5nJtbo+Ux2FFtBL9gv0mHX7SuF2GZbov30ltiIJQhJcLSm2EteMqSFDhmCQcWrHACT9TCcpbn379sXJJ5+MN9/0DbZIlHH37t0+j+n35XfByBSN+jSNRnLgW/XgR4J3s7rghsuqn4NKRYrfWXr/pVLjtncmbnfn4rZ3Jm53Z+J2dy6rb3tZbvkM+g+VzO12e9aV2deZvl0D7aPh7LNxDUxJ5Nc4dWJxJFNKglLdunVTYyT9P6SM0xw+fLhPZHH69Olo3bp10GF8zih+br1xvERERERERETkDJYIu0pQSobuNWrUSNWVknRGqRslP7prrrlGFT6/+eab8e+//6oxki+88IKqYu84LuNmZWCKiIiIiIiIiMzJEsXPJfNJCp7LT4MGDXx+p5fIqly5MqZNm4Y77rhDZVVJkTApKDZ48GA4jzFjyrozOBARERERERGRvVkiMCV1qEqqRSU6deqEP//8MybLZGrMmCIiIiIiIiIiC7DEUD4KFzOmiIiIiIiIyBz0kU5kL+4IbVcGpuzIp3I/GwAiIiIiIiKKvcTERPVvbm5uvBeFoiA7O1v9q09AZ+uhfBQmDuUjIiIiIiKiOEtKSkJ6erqawEyCFwkJzI0JJQspPz9frTuXT9KJuZZRglJ79uxBlSpVPAHI0mJgypY4lI+IiIiIiIjiSwIrdevWxcaNG7F58+Z4L44luN1uFBQUqCCeWQNTOglK1alTp8yvw8CUHTFjioiIiIiIiEwgJSUFLVu25HC+EBUUFGD//v2oXr26qTPMJAOurJlSOgambIkZU0RERERERGQOEmBJS0uL92JYJjCVnJys1peZA1OR5IxP6Tgsfk5ERERERERE5sfAlN2H8jFjioiIiIiIiIhMioEpW2LGFBERERERERGZHwNTts+YYmCKiIiIiIiIiMyJgSnbZ0xxKB8RERERERERmRMDU3bEjCkiIiIiIiIisgAGpmyJGVNEREREREREZH4MTNmRyxCYYsYUEREREREREZkUA1N2H8rHjCkiIiIiIiIiMikGpmyJGVNEREREREREZH4MTNk+Y4qBKSIiIiIiIiIyJwambJ8xxaF8RERERERERGRODEzZPmOKiIiIiIiIiMicGMGwJWZMEREREREREZH5MTBl98AUa0wRERERERERkUkxMGX3oXyclY+IiIiIiIiITIqBKdtnTHEoHxERERERERGZEwNTdsSMKSIiIiIiIiKyAAambIkZU0RERERERERkfgxM2ZHLOCsfM6aIiIiIiIiIyJwYmLIlZkwRERERERERkfkxMGVHzJgiIiIiIiIiIgtgYMqm3J4C6AxMEREREREREZE5MTBlW4VZU24O5SMiIiIiIiIic2Jgyq6YMUVEREREREREJsfAlG0xY4qIiIiIiIiIzI2BKdvSC6AzY4qIiIiIiIiIzImBKbviUD4iIiIiIiIiMjkGpmyLQ/mIiIiIiIiIyNwYmLIrZkwRERERERERkckxMGVbzJgiIiIiIiIiInNjYMquXCx+TkRERERERETmxsCU3TctM6aIiIiIiIiIyKQYmLIrZkwRERERERERkckxMGX7jCkGpoiIiIiIiIjInBiYsnvGFIfyEREREREREZFJMTBl+03LjCkiIiIiIiIiMicGpuyKGVNEREREREREZHIMTNkWi58TERERERERkbkxMGVXLr34OTOmiIiIiIiIiMicGJiyLWZMEREREREREZG5MTBl94wpBqaIiIiIiIiIyKQYmLItFj8nIiIiIiIiInNjYMq2OJSPiIiIiIiIiMzNMoGpiy66CI0aNUJaWhrq1q2L66+/Hjt27PB5ztKlS9G7d2/1nIYNG2Ls2LFwLBY/JyIiIiIiIiKTs0xgqm/fvvj888+xevVqTJkyBevXr8d//vMfz+8PHz6Mfv36oXHjxvj7778xbtw4PP7443jzzTfhTMyYIiIiIiIiIiJzS4JF3HfffZ7bEnx6+OGHMWDAAOTl5SE5ORkff/wxcnNz8c477yAlJQXt27fH4sWLMXHiRAwePBjOzZhiYIqIiIiIiIiIzMkygSmjAwcOqEDUySefrIJSYu7cuTjttNNUUErXv39/jBkzBgcPHkTVqlUDvtaxY8fUjzHzShQU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RERERERks8BUlSpVcOmll0ZnaShKGVMMTBERERERERGRDQJT7777bnSWhKKYMcWhfERERERERERkgxpTZBEuQ2CKGVNEREREREREZNXA1DnnnIN58+aV+LzMzEyMGTMGr7zySiSWjSI1lI8ZU0RERERERERk1aF8l19+OS677DJUrlwZF154Ibp374569eohLS0NBw8exIoVKzBr1ixMnToV559/PsaNGxf9JacSMGOKiIiIiIiIiGwQmLr55ptx3XXX4YsvvsDkyZPx5ptvIiMjQ/3O5XKhXbt26N+/PxYsWIC2bdtGe5kpFCx+TkRERERERER2KX6empqqglPyIyQwdfToUVSvXh3JycnRXEYqFRY/JyIiIiIiIiKbzcqnk2F98kNWCEwxY4qIiIiIiIiIzIez8jliKB8zpoiIiIiIiIjIfBiYsi1mTBERERERERGRuTEwZVfMmCIiIiIiIiIik2NgyraYMUVERERERERENgxMHTp0CJMmTcKwYcNw4MAB9dg///yD7du3R3r5KCIZUwxMEREREREREZENAlNLly5Fq1atMGbMGIwfP14FqcRXX32lAlXRduzYMXTu3BkulwuLFy8usmy9e/dGWloaGjZsiLFjx8K5jBlTHMpHRERERERERDYITN1///0YNGgQ1q5dqwJAuvPOOw9//PEHou2hhx5CvXr1ijx++PBh9OvXD40bN8bff/+NcePG4fHHH8ebb74JR3IZAlPMmCIiIiIiIiIiE0oK9w8WLFiAN954o8jj9evXx65duxBNP/74I6ZNm4YpU6ao20Yff/wxcnNz8c477yAlJQXt27dXGVUTJ07E4MGD4eiYIzOmiIiIiIiIiMgOGVOpqakqO8nfmjVrULNmTUTL7t27ceutt+LDDz9Eenp6kd/PnTsXp512mgpK6fr374/Vq1fj4MGDcBxmTBERERERERGR3TKmLrroIjzxxBP4/PPP1X2p9bRlyxYMHToUl112WTSWEW63Ww0fvP3229G9e3ds2rSpyHMkW6tp06Y+j9WuXdvzu6pVqwatWSU/Oj3oVlBQoH4sy+3yVJkqKDgu/4vzAlEsyD4rx4ul910qFW57Z+J2dy5ue2fidncmbnfn4rZ3pgKbbPdwlj/swNSECRPwn//8B7Vq1cLRo0fRp08fFfjp1asXnn766bBe6+GHH1ZF1IuzcuVKNXwvMzMzKsXVR48ejVGjRhV5fO/evcjJyYFVlc/ORsXC24cOHkBuwp44LxHFghz8GRkZqiFLSCjVpJtkUdz2zsTt7lzc9s7E7e5M3O7OxW3vTAU22e4Sw4laYKpy5cqYPn06Zs2apWbBy8rKQteuXXHWWWeF+1IYMmSIyoQqTrNmzfDrr7+qoXoyjNBIsqeuvfZavP/++6hTp44a7mek35ffBSPBLinobsyYkhn9ZFhipUqVYFm7KnhuVqlSGahVK66LQ7FrxCSLUfZfKzdiFD5ue2fidncubntn4nZ3Jm535+K2d6YCm2x342R5EQ9M6U499VT1UxayokOpS/Xiiy/iqaee8tzfsWOHqh81efJk9OzZUz0mGVvDhw9HXl4ekpOT1WMSQGvdunXQYXxCgl3+AS8hO4CVd4KChETP7QQZ02fhz0LhkUbM6vsvlQ63vTNxuzsXt70zcbs7E7e7c3HbO5PLBts9nGUPOzAlQaJgK04iYi1atFBFyBMTvYGRsmrUqJHP/QoVtGyg5s2bo0GDBur2Nddco4bk3Xzzzare1fLly/HCCy/gueeegzMZip+7WfyciIiIiIiIiMwn7MCUBHqk/lJ2drYnE0lmvZOZ8iRgtGfPHjX87rffflND4mJFhhhKLao77rgD3bp1Q40aNTBixAgMHjwYjuQyRietXTSNiIiIiIiIiOwp7LywZ555Bj169MDatWuxf/9+9bNmzRo1pE4ylGSGPqnpdN9990VniQE0adJEFQLr3Lmzz+OdOnXCn3/+qYqWb9u2TWVOORczpoiIiIiIiIjIZhlTjz76KKZMmaKG0elk+N748eNx2WWXYcOGDRg7dqy6TWbJmGJgioiIiIiIiIhskDG1c+dO5OfnF3lcHtu1a5e6Xa9evbCmBqRoMGZMcSgfEREREREREdkgMNW3b1/cdtttWLRokecxuf3f//4XZ5xxhrq/bNkyNG3aNLJLSuFxGQJTzJgiIiIiIiIiIjsEpt5++21Uq1ZNFRhPTU1VP927d1ePye+EFEGfMGFCNJaXSrNpmTFFRERERERERHaoMSWFzadPn45Vq1apoueidevW6seYVUVxxowpIiIiIiIiIrJbYErXpk0b9UNmxYwpIiIiIiIiIrJhYGrbtm349ttvsWXLFuTm5vr8buLEiZFaNioLZkwRERERERERkd0CUzNmzMBFF12EZs2aqeF8HTp0wKZNm+B2u9G1a9foLCWVcVY+BqaIiIiIiIiIyAbFz4cNG4YHHnhAzbyXlpaGKVOmYOvWrejTpw8uv/zy6Cwlhc9l3LQcykdERERERERENghMrVy5EgMHDlS3k5KScPToUTUL3xNPPIExY8ZEYxmpVJgxRUREREREREQ2C0yVL1/eU1eqbt26WL9+ved3+/bti+zSUekxY4qIiIiIiIiI7FZj6qSTTsKsWbPQtm1bnHfeeRgyZIga1vfVV1+p35FZMGOKiIiIiIiIiGwWmJJZ97KystTtUaNGqduTJ09Gy5YtOSOfmXBWPiIiIiIiIiKyW2BKZuMzDut7/fXXI71MFPGMKQ7lIyIiIiIiIiIb1JiSwNT+/fuLPH7o0CGfoBXFGzOmiIiIiIiIiMhmgalNmzbh+PHjRR4/duwYtm/fHqnlokgWP2fGFBERERERERFZeSjft99+67n9888/o3Llyp77EqiaMWMGmjRpEvklpFJixhQRERERERER2SQwNWDAAPWvy+XCDTfc4PO75ORkFZSaMGFC5JeQSocZU0RERERERERkl8BUQYEW3GjatCkWLFiAGjVqRHO5qMyYMUVERERERERENpuVb+PGjdFZEopexhQDU0RERERERERk1cDUiy++GPIL3n333WVZHopGxhSH8hERERERERGRVQNTzz33XEgvJvWnGJgyCZcxMMWMKSIiIiIiIiKyaGCKw/esyDiUjxlTRERERERERGTu6EXY3G63+iETYsYUEREREREREdkxMPXBBx+gY8eOKFeunPrp1KkTPvzww8gvHUWo+DkzpoiIiIiIiIjIBrPyTZw4EY899hjuvPNOnHLKKeqxWbNm4fbbb8e+fftw3333RWM5KWzMmCIiIiIiIiIimwWmXnrpJbz22msYOHCg57GLLroI7du3x+OPP87AlBkDU2BgioiIiIiIiIhsMJRv586dOPnkk4s8Lo/J78iEQ/ncHMpHRERERERERDYITLVo0QKff/55kccnT56Mli1bRmq5qMyYMUVERERERERENhvKN2rUKFx55ZX4448/PDWmZs+ejRkzZgQMWFGcMGOKiIiIiIiIiOySMbV8+XL172WXXYa//voLNWrUwNdff61+5Pb8+fNxySWXRHNZKSzMmCIiIiIiIiIim2RMderUCT169MAtt9yCq666Ch999FF0l4wilzHFwBQRERERERERWTlj6vfff1cz7w0ZMgR169bFoEGD8Oeff0Z36SgyGVMcykdEREREREREVg5M9e7dG++8846aee+ll17Cxo0b0adPH7Rq1QpjxozBrl27orukFB6XMTDFjCkiIiIiIiIissGsfOXLl8eNN96oMqjWrFmDyy+/HK+88goaNWqEiy66KDpLSWXctMyYIiIiIiIiIiIbBKaMWrRogUceeQSPPvooKlasiB9++CFyS0Zlw4wpIiIiIiIiIrJL8XN/f/zxhxraN2XKFCQkJOCKK67AzTffHNmlozJgxhQRERERERER2SgwtWPHDrz33nvqZ926dTj55JPx4osvqqCUDPEjE2HGFBERERERERHZJTB17rnn4pdffkGNGjUwcOBA3HTTTWjdunV0l47KwBCYAgNTRERERERERGThwFRycjK+/PJLXHDBBUhMTIzuUlHZuQxD+dwcykdEREREREREFg5Mffvtt9FdEoowZkwRERERERERkY1n5SMTY8YUEREREREREZkcA1O2xYwpIiIiIiIiIjI3BqackDHFwBQRERERERERmRADU07ImOJQPiIiIiIiIiIyIQam7MplDEwxY4qIiIiIiIiIzIeBKUdsWmZMEREREREREZH5MDBlV8yYIiIiIiIiIiKTY2DKtpgxRURERERERETmxsCUXTFjioiIiIiIiIhMzjKBqSZNmsDlcvn8PPvssz7PWbp0KXr37o20tDQ0bNgQY8eOhXMZAlNgYIqIiIiIiIiIzCcJFvLEE0/g1ltv9dyvWLGi5/bhw4fRr18/nHXWWXj99dexbNky3HTTTahSpQoGDx4Mx3EZYo5uDuUjIiIiIiIiIvOxVGBKAlF16tQJ+LuPP/4Yubm5eOedd5CSkoL27dtj8eLFmDhxojMDU8yYIiIiIiIiIiKTs1RgSobuPfnkk2jUqBGuueYa3HfffUhK0j7C3Llzcdppp6mglK5///4YM2YMDh48iKpVq4b3Zrm52o+/hASg8D09zyuuzlNycumem5cXvDZUKM/NOw7kB8iYKu51hWH9hfXc/HygoCAyz5XPptfIKu65uRnA+peAnJ3ACU8DSdVCf93jx7WfSDxX9gfZL8zy3PxjwLIJwJ7fgLYPALVO9X1uYqL2I2R9yToOJhbPlX1M9rVIPNd4fAZ67rZvgfVvA3X6A23vLP65wV63pGM5Xm2ErHO93ZL1FU57cmQV8O8zQFJF4ITngATD31q5jSjLc+V4y94D/DsayNoIdB0HVGgW/LnxOu518rzijjnj65b1WC7IA9a8CuycBrS/H2hwbmRe1wxtRFmfu/0HYO2rQJVTgXZDSn7dsrQRxmNeXjPS5xGleW6wNiJjFbBitNa2dHsRSEq3RxtR1vOI3EPAimeBrDVA9wlApdYlv65+HEez7Yn3uUHBcWDNa8Dmb4CW/wUaXGCfNqK05xH68b5lKrD2NaB6d6DD8Phea5TmudE6j8hcB6wZC7iPAz1eAVzp9mgjhLyf8T3DOZZzDgHLRgOHlgInPANUaW+PNiLc5/ofn3JtvP5dYOtXQPObgKZXmLONyDV8x5f03GDi3UYU935WDUzdfffd6Nq1K6pVq4Y5c+Zg2LBh2Llzp8qIErt27ULTpk19/qZ27dqe3wULTB07dkz9GIcECvf48XCnphZ5vrtFC+Daa70PjB0LV5CdzN24MTBokPeB556DKzs78HPr1gWMmV0vvwzXoUOBn1uzJvB//+d94I034Nq71/dJR3cB6wGkA+5WBXDrDdrbb8O1c2fg101PBx580PvAhx/CtXlz4OfKjvjII94HPv0UrnXrAj5XPX/kSO+dL7+Ea+XK4M8dNsz7RfTtt3AtWVL0SRkrgW3/g+u8fCANKCjXANjcFa6FC4O/7j33AFWqaHemT4dr7tzgz/3vf4FatbQ7v/8O1++/B3/uLbcA9etrd+bMgeuXX4I/94YbpGCadmfBArh+/DH4c6++GmjVSruzZAlc33wT/Ln/+Q/Qvj0K9sxG9f8NQsLMDdrj6cuBZjf6Pvfii4HOnbU7a9bA9emnwV/33HOBE0/U7mzaBNf77wd/7llnAaecot3Zvh2uSZOCP7dPH+D007U7e/bA9dprwZ/bqxfQr59259AhuF54Ifhzu3cHzj9fu3PkCFzjx3uDmDt/hCtzjfY8/Az3VbWAy64q/H0uXKNHB3/dtm2BK67w3Hc9/XTw58arjXC7Uf7IEaB8eRTIvltSG6EHGI7+BXT7Ay639uVeMDMFruzq1m8j9Oc+8IBaJ8qPP4bWRsgX64dD4Zr6KlzHj2q/q74PqNvPdG1EQYsWcLvdKJA24rvvSmwjlH//hevLL4M/t7g2InsbsON7uHL2aM89dTPc9/S3fhsR6LknnAAMGBBaG9G8DlxNZ8C1dYp2/6WpQJsD3gBMNNoIwzHvdrkifx6hP1eOCTk2dOGcR3zwDlwLPgb2zYarsJPM3fAoULmdtduIsp5HqGDdv8Cun+HKPwL0BdwVGsDd/dUS24iC66+HW9p5Oa9buDDi5xFlbiPKeh7RrjxcC26Ha90C4DfAnfIP0OpO67cRZTyPQPYBVN/2IxKkI0mZCnerDLhbdorftUYk2oiynkdIEHPfHGDvH3BdqgVVCmqfCSxIs3Yb4fNEN1wDBmjnduGcR2z7Gq7PbofrL227uavsABoMsH4bUdbziJzdqhPJdXSb9rykv+C+sarp2gg884zPd7wl4xHyPEOcxdSBqYcfflhlNBVn5cqVaNOmDe6//37PY506dVKZUbfddhtGjx6N1AABpFDJ348aNarI40eOHEFigChs/uHDyNmjnZCL8llZcAWJ1h7PzMRR/+cePRrSc9MzM5EgO2MABWlpyC7hua5jOShsQnH0aDYOFz6/XGYmEoO8rgSvjhhet9jnJiX5PDft8GEkBXmuyAr3uYVfFqkZGUg2PNeVn4XU/TOQlO37xXT00FbkZjT3ea6/I3v3wl0YtU05dAgpxTw3e98+6H0TIT23MGKcfPAgUot57tH9+3FcvpRDfW7heks6cABpxTw3Z/dmpB8Yj3LbP4TrqDdaXZB3BEf9/i7nwAHkF75u4v79KFfM6x47eBB5pXhuwr59SC/mubmHDiG3FM91ZWRojXQQeRkZOKY/Nzsb5bMykXz4H6QclIsi73HqghsZh/Z6j+XcXFQo5nX9j/twnhurNkKCEzk5OdrtzMwS24jE7A3qWEpIOewz2jcn6wAKjqZZto0IeNwX/j6U5yYcWolKq4YiddVswNBxmH8sC8cMf2uWNiKvUiVkZGQg8cCBYo8j43FfYnsSqI0oOIaUA38iOXOJz0Dx47kZ2GflNiLE5wZtI9wFap0kZ8yGK8l78iXr6EjWIbiT3VFrI4zHvEwIE+nzCM9zExN9nhvqeYTsL5UXP4YEvxPVY0czkJ90xLJtRFnPI1x5h5C6/xckHfW9GM85vBsZe/aUeNwf2b8fh/Ly1PZPjeR5RFnbiLKeRxTkInHZBKRt+x4uyXop5M4/iuwAf2OZNqKs5xHuAlTZMRupe39DcoHvBd7RI4eQF8drjbK2ESU+t4Q2IiFnG9L2TUdC3gGfv8s6sA0Fh2tZto3wJ8e6JE7IsZyQkFBiG5Gz419UWHcH0vb9BBh2meO5R5Dj93eWaiPKeh6ReQgph+YiOWOhug7wOJ6DQyZsI8ofOeLzHW/FeIQ4EkZgyuWWvT1O9u7di/379xf7nGbNmvkMz9P9+++/6NChA1atWoXWrVtj4MCB6qD9+uuvPc/57bffcMYZZ+DAgQNhZUzJjH4Hd+9GpUqViv6BRVLnCg7+i6Tp3dVtd8tBcPd8u+TXNfMwHZVy+Q5cy4bDladltSmSdemSz3gH3CdMdOZQvp0/w/XPf+E6Vtg7JaugcDW4K7aG+9zF1kqvLctzjcdnxkq4Zg2C62Dgnq2CizcBFRuG/7omHconvefSptasWRMJxQ3lyz0E16IH4Nr8sff3hsUt6PY20Pga67URZX2u9LpufBWuZY/BJSf/huNIuJtcD/eJb5qujZBFVNu9WjUkFLctypKCv3UqXAv+C1fOjiJPdZdvCPclm6zZRpT1uZnr4Jo/GK79c7VIVOEiKLKrnbscqNi8+NctQxvhc8ybaSif6xhcix+Ea/1b3pICBgVdXwJa3GK9NqKs5xH5ecDaN+Ba9ghcx7WLDY8E6dW+HO5TPivxdQsSErB3/35tu8t2sMNQvt2/wTX/driObfHOF17YBrtTqsM9YJs124hgzw31PCJrE1zzb4Frx28Bn1bQbz5QtZPzhvLlZ8O19FG41vllyRWu3oIuE4Hmd1ivjQjyXNXWHzyImrVra219sOfKelz/FlzLH4Gr4EjRa4K658Ld+ytrthFlfe7e2XDNuhGuIzKcyJc7sRzcV2SYro0oyMnx/Y63YDxCj61UrV1bdaIGjK2YJWNKVrT8lIYUNpeNVKswrbFXr14YPnw48vLykFy4kqZPn66CVsXVl5Jsq0AZVwlpaeqnRKE8pzTPDScLLNBz5b2SvPuNS9+hy/q6wQQIHkbsudnbgXmDgF2FaavyuVJrAs0GASvHqYck8u0K53VlfRgPJis+Ny8TWPQAsM57sexOKo/Mpg+h4sbxcOVnwiXfecXtd/4NW0nLEI3nCv3LIBLPlSDm6heBJcNUL4h2HLiAlrcDmWs9+1GCrE9jQx/OMkTruC9LG1FQAFdqqtZ2+X+B6c/dOR346yZtOJa+eWr3Bap0AlZracsJKcmhL4dZ2oiyPjdzvdbG7J3lfaxiE6D1PcA/96m7rpTE4MdSPNsI2e4ul9qfi2z3sh6fqo15EFj3hnZf/iSpPNDxCWDlGCBnD1yJhu8Xq7QRZX2utDFS42XRQ8DxbO+x1PwW4OhOYMcP6rGEtNTQjqXSthHFHfPR/L4v7rm7ZwLzbgSOFAYrZd3UPAWo0QtYqQ13SEgN0saYuY0o67F8dCsw7yZg969aEFPWS3oDoO1Q4O+7fM/VSnpd/ZhPSNC2e7TanlicG+RnA4uHAWteLPy92kGADo+pC2wc2VzyeYwZ24hQFPeZVIDhbe37Jz/L08YcrfMfpCUdh2vb/9T9hNSUosdjLK81Yv1cOT73ztG+r+V8Tt+Vqp8I1DlLq5Up68VlwTaiuOfKMZ+Y6D3mAz1XrpX+ugXY+ZP3sbTaQIcRwMI71F1XckLJ1wRmayPK+ly5Dlg6ovD7x63tMwkpQPtHgM2fAYdXaecx/p/bJG2Eq7jveL/nhvO6sTyWE8KoMRXiWWx8SWHz559/HkuWLMGGDRvUDHxS+Py6667zBJ2kGLpkVt18880qm2ry5Ml44YUXfIYAOorLsGmNxc+tZvPnwNSO3qCUkIDUBSuBxlc7d+ZBOfmf2sknKIU6/eA+dzmyGw6GamVF/BIi40OKVM84QzuZ03ukK7YCzp4N9HgVSK5seLKD1k1eFrDg/4Df+mlBKZFcCZBMyjNmaOtI56R9RtpGKeItx5InKOUCWt8HnP8vUO9cZ64Xsft3YOoJ3qCUqHM2cP4KoO39gEs/GXTYejmyBfi1H7DwTi0oJaQo/pkzgZ5vASnVnLnPSIDh73uBGX0NQanyQI/XgLP+ACobC+46aL3oAYYfOmpBKV3L/9OOpQYX+z7XSfbNB37s4g1KiVqnA+cv14p6y8WjE9eLBBhmng/Mv1ULSon0Rig4/WdktHtJ65j1cNC6kXO6RUOBX3prQSmRWA7o+jxw9hygamE9IyfuM5s+066VjEEp6ShR10pXGp7osPWyfyHwU7fCJIbCzy6dJOctBTqO1ILgTlwvJmaJ4ueS0fTZZ5/h8ccfV8PupMi5BKaMQafKlStj2rRpuOOOO9CtWzfUqFEDI0aMwGBjAS9HcVm7gZZi1QvvAjZ96H2sXH3gpHe8BYizt9oj+BYOKVYtkX+ZxUcnJ/9dJgAtBmvb+sgeb2DSKetFbPoEmH+b90ROSMaLzEKiFyC2S8A2HAcWAbOv9J7ICelZlKBU+UZF14tx/Jqd5ewD5t0A7Jjqfax8U6DXe0Ct0wofcOD+UpAPLBupzUaon6ypNmY80OI277ADJ7YxW74E/roZMA4nlwBD5zFAcgXnHkuHlgOzrgAOGwoNyzF00ruGmSwdeCzlHtSypLZ5S0wgvaF2HiNtsDDuS07ZX2TY9PIngX+f0mZQE4lp2nEkRc71Y8iJbcy277RsoFxDzaTmNwNdJwKJFVQBZ0eex8isnnIeIzPL6aqfBPR6H6ikd6w5sO2VayU5790y2ftYubra+Z3esSbtkNP2F/mckiG15BFvGyOB7k5PAm2GAAmJzm1jTM4SgSmZjW/evHklPk+Kov/5558xWSbTs/LJ8f4F2kmu3usqGl2h9bymGnqjfb6ELBh8K01P/eyrtdlHgp38e4KQLuesF9VTf7fWK60r3xg46T2gduFsHB7G4oE2XzeyL8i09f/cr4rKKonpQJdx2rBGnzbC4oHscO35QzuWjhpqJsmU5J3HegMMwqfYpAPWy5GtwJyrVS0Gj5q9tWCdJ8AA57Ux0lMvx5EM39PJMKye0lFytu9zXQ46lvRsIBmKpmeoSoDhhNFA67t92xinHUv75gGzr1JD0Tya3aQFGFKMmbsO2l+EDHWdc62qKeVRrQfQ6wOgchsHtzG5wOKHgdXP+QYYTnwLqF84+5enrpHDjqWNHwIL/gvI7JWeAMMTQJsHvAEGp7W94sDf2rVSljYLt9L4KqD7K37XSg7bX3L2AnMH+maPVe2qBTGrdHBuG2MRlghMUWlYsIFWF9KvAf/cq2UG6cONpJFtcq3fia3/l5DFgm/h2vZtYS9aYc+HDKPpPBpoI0NqAozIdUovwKF/gdlXABkrvI81HQh0fxlIrlj0+U7pacw9pGV2bDUUuazWHTjlU6BiC3sFssPtqV8xWssI0rd/Wi3gpPeBeuc4d38R278H5t7g7amXNuaEp4G2Dzi7jTm8Rjv5P7TE9+S/x+t+AQadQ44lyfSZfzuw2TAFuNSqk+LdldsG+AOHHEuqp35CYU99YVFeGd4pHUgNLnJu2yukJIMEpXL2eD97h5FarZeEJOe2MRJYmHUlcMAwUUuDS4Cek/wCDA77XpJAlAyZ3vCe97HK7bQ2pkrHAH/gkGNJrpXWvAIsGuLtdEyuApz4ut+wPYftL3oJgjnXGDodXUD7YUDHx6WwrHPbGAthYMqurNY7KTVw5g/2PcmtcTJwyida9ktAFvuMpR1Ws3gosGqi9zFZH6dMBmr0LOYPHdALsOEDYMHtwPGj3mwgqSPV7IZi/sgB+4z0os32yzhsfa82TCIxxT6B7NIM3ZNsIGO9utpnACd/pPVMO7mNkYkCCgtTe9uYz4AaJzm7jdk8WQvw6j31kg3U7SVtaI1/R4mTeu0PLgX+vAzIWuc7pLHrBG0d2eGcpDSk42jOdb7Dg2ueCpws5zGFM8AW4YD9RQ3de0IbvqdveynNIB0ltXo7u43Z+rU2pFwf0inZQJJVJ8dTsDbGCftMxkqtjTEOD5aMw+4vakPLndr2ytC9BYOBrV96H5PC73JNUKFJkD9yQNsrgSUpP7BshG+nY6+PimY1O62NsRgGpmzLQhHyQF9AkgnU+dnAEW6n9AIc26/11BsLpja8VOtFSwk+06TPF7Qd14tcSMtshIWzyCnSeyZfzAF76o3snWWXtmsKXKsf8A6rkf1EhjQG6qk38jkBtt96wcHFwB8DvMNqVE/944U99YmO3V9w7IBWt8MYrGswQKuBU1Ibo68bO64XuZCWjJeVY72PVWoLnPp5gKEA/mx+LEmdLcms0wu/65MoNPpPCX9o82NJsneljfEE66Sn/pHCnvpiTrXtnvkt2buzrwF2/uh9rO452tC9tJrObWPkMy2TYN0o72MVWmhtTLUuzv6+ljpbklmXn2mYROF1oOl1JfyhvddLYvZ6uBbcDGSu9j4oE7XItVLQTkdh8zZGEhskuGscIVD7zMJOxzrOvVayKAam7MoqvZM7ftTqMOi9RUkVtZT3RpeF8McW+Yyl7ZH+42Jv1osE6LpMBFrdUUwvmlGCPdeLZL3IhbQxWCczj3STXrRyJf+9z7AJG62bgny4Fg1FldUTfQuDnjrZW+C8WMYgr43Wi571ItPX65l1aXW0bKDafZy7v4hDywovpDd4h+5Jxkuru0JrYzzrxm2/rBd1IW2oT9H0BqDHK8F76oN2mNho3ciJu0y88e/T3seqddMupIvUH3PYsSRZL3Ov9068kVpDy5IqtqdeZ+P1cni1dh4j/wqZLbjTU0C7hwIPD3ZKG5OXqdXAMRbFlzqqMqunBHpLZNc2xq21L9LO6NtcOh1P/dJQ4NyBba/Y+ROqL7warvzD3qF7UvvROKunE9vezPXaeUzG8sIHXEDHUSF0OupCaIcophiYsi2TZxPJl8bqF4FF93uXT30BTQEqtQztNez6JeTfI51WG+g9Bah5Suiv4bmwdNs7WCe1pGQ2wpDZMNVbLqRnXQnXrum+wTpZN4n6VLg2CWSHQ9qVJcN9Z7CUlPfeXwHp9UN8ERuuF7H1f4UX0ke8Ke9y8l/ssBp/ek+jjdaLZO/+fpE360UupGUq8pA7BNQfGW7bZN1Ix9Hsa4Ed33sfa3I9cOIboXUI2LXtlc8hQ9SWPe59rGoX4LT/FVOCwAFtr6fT8WogL0O7n1odOPULoHbfMF7Ehucxmeu08xi9Lqacx57wbGEtP5dz9xn5Lpo7yHeIWqPLtY7qUDoEFBuuF2ljVk2Aa/FQuPRrpcrtgT7fhtYhYNe2V0imt4wq0WvvJlfWOgTqnxf6a/gP/wz5e56ihYEpuzLzF5cUNpeChuve9B2iJqndIX8B2TA9VRrFleO0mlLGgtVykiszQIXFZgX9dk4D/vyPN7VbgnXqQvrU8F7HboVmszYBM8/zDIN1u5Lg7vo8EloVV5/CgoHscOUf1QIvW6d4H2s2SJvZM1gNHCcMF1YnuRO1obDG2WpO+7qYGjhB2K1o6O6ZWs+r50K6RuGFtP/Mng7bZ7K3ATPP907TLp+vy3itbl04bYzd2l6ZRe2vm4BNH/sWxZdhjUnpzt1fxOqXgL/v8c16Oe0boEJTZ7cxe+cCf1yolWnQs14ke7de/zBfyGb7zNFdwO8XGoq/u7SJN9o9XPo2xg7rRa6V5t8GbHjXG6KtfzFcJ38YeHIfp7S9Yv07Wl1i93HtfqU2WhsTSmZdcfuMdEZRXDEwZVdmbaCl5/WPS4HdM7yPtR+uTf0aSmq3XdNTpaaJTLltnI68yXXAiW+G0SNt04yp9e8WfgHllzFYZ7PimFLkXC4Yc3aru+7UmjjQ7g1UbXlx+L0+Zg5kl2a4p/RI75tjyHqZGPoQNR8ue7UxMuPpmpe9j8lspzIdudPbmE2faLOe6rPBVjlBC9YFLSbrkH1GslQl8H10u3Zf6o5JLb+Qhqj5s1HbK3WT/pTzmN8KH3BpdV7aPujsNkbONaVjzTiRgswuJ52OyRVK8YI2amOk/o3UTdLrP8rscnIhHWiWXCd9X2esAmae682El6GMKuvl/FK8mI3Wiwz3nHU5sPNnz0NZTe5Hes8xcCUmObftleWXWZXVRAqF6l2g1ZMKOEuug/YZm2BgyrZMeLAd3a19AR1cpN1PSNV6F5teW8oXtEnGlKQwS8r79u+8j3V8AujwaBnSSm3Q06i+gEb5FgeVwswnfxxej7QPm/Qcbf9BS2HWh3tWag33ad8jL7s0J//CpIHs0tQbkDYmc612P6mCVgOn3rn2CvCHKz9bm0J52zfex6QOQ4fH2MbIUE8pdK6rd54WfCnVhbSN9hkZJiGTkuj1H8s3Bfr+qNqaUrFLr/2RLVobow/FSiynXUg3HODs/eX4MS24u/kz72NS56XTk+F3OtotY2rV88A/93vPxaUws5RnKNWFtLDJPrPnDy1LVR+Kld4QOH1qCBNM2PxYOrpT63Q0XCsVnPQestJOR3ppjiW7tL2SpTr/VmDjB97HWt8DdJkQYj0pG+8zNsLAlG2ZLDAlF4y/9Qey1mv3U6oBfb4Dap5c+te0Q6+RpHRLj/T++d4CxBKsazawbK9r9WwGye5YcBuw/m3vY5Lx0vW50n8B2SVjSqUw3+r9EpXpyCW7I7kqkL3HucfSgX+A384Bju31FjmXk9ySZjgqlg3Wi8y8p9qYvwxtzCSg2Q3ObmPk+FkoWaqveh+TenXdXyl+FjUn7DOSQSZ1Dj1Zqj2A07/XapGVmg3a3kPLgd/6aReOIrWmdh5To6ez9xfJIJMAw57fvRd73V8FWt5Wxhe2ehvjBhY9qGoEeTQdqGWpFjuLmgO+ryWDTDpkC3K1+1U7A31+ANLrleFFbbBeVAbZOd4ZhCVLVTLrapwC7Nnj3LZXZt778xLDDMIuLRO+zb1lfGEb7DM2w8CUXZkpCnxgkdbQ5uzx9or0/Rmo3LaML2yiz1jacfW/nu2dTUJSmKUwc50zI/DiFu5plF6RudcBW74wfAFNCL+mSUAW7zla9YI2HMs4k0+v97W6SQUFzj2W9s7Wgi96docMk5CgVKgFiK3QjkaijZFZT0+TNuYsZ7cxBfnaTI2bPvI+dsIz4dc0seM+I7Uf59/uPUmvfxFwyidh1n+0Ya/9/gVa4Dv3gHa/Ykvg9B+Bis2dvb/I0GkJ1unZHYnp2myw9S8o+2tbeSp31bl2O7B+kvexDiOAjo9H9jzGiutmwwfAXzd6l71uf62eXzh1k0rseLTgejm4WPu+PrZPuy/nL9LGyLVSWc7vrN7GSOBbMsj08gxyvtvroxBnb7f5urEhBqZsyyQR8n3ztEwpzwVje6DvT6WrD2SnXiPpDZlxlnf2J8nuOGOaViQ0EqyazSBFq2Vc/Y4fvDPvyRdQ4ysi8/pWzZhS0yg/Ayx91DeFWXqMSjtMwi7HkvSg/X6xd1ijZJDJjDXS01hmFt1f9CFHv57lHdYoEwb0nQZU7eTsNkaGHElP/bb/eWuQycxPTa+P0BtY+FhaOcG3MH6L2wozyBKdfSzJkKOZF3gn31AZZFOBtBrO3l8kc0zaGH1Yo0wYIFkvNU6M0BskWHPGLKlVJxmHmz8tfMClzWDZ4tbIvL6Vv6/XvAosvMN7v+kNQM+3tHO9MrNw3dl9f2mB77xD3gwyaWPK1XX2/pKzV7uG1APfMmGAZO+GM0t5sSy8bmyKgSm7MkPvpGQx/Hau92QuoheMFv4SOrwW+PVMIHurt1fkjF9KVwQzKAv2NEqxRylarReUlV4RySArbX2gEr+ELLJu5IR8yTBgxZgo9LzqLNrTKDWTpNaWPhygTj8tI6is2R06n/VbYLE25iwge4t2P72R1sZUaunsNkZqbf0hwwGmafcTUrR6UqWtD2SXYylQPT8p5N15TOTaGKtmM+z4WRtCcvyodr9WH234XlmzO6wesJPA94wzvZ1r5eoBZ8wAKreJ3HsUuaC2QGBKipvPuhLY/q136LQUZm58ZQTfxKLH0oqxvrNOt7oT6PZCZDrXrNzGqMD3+UB+lna/Ri8tKJVSJfLvZaX1kr1dyyArnHVaDZ2WDnwJ2kWMRfcZG2NgyrbifLKz+3fgd2loj3iLPUpQqtRFq23yJXR4NfBLH89MaqjYSrtgDHeq9pCLhrqtE5SS3iI9VVeKVsvJf7hTtYeVtmuBdSPL+M99wOoXvI91GQe0NWQ1RIIVZ7jcMgWYfaV3umCZ/emUT4HEVOfuL+LwmsI2Zpd3yJFqYxpF9n0868ZtnaCUnPzvmekdciS12Uo1w5yNjiUV+H5EKwKvk4LVMltuRDNULLZe9EkmJCilz9ZY91yg95cRPo8xQSdiuLI2ADPO8NbBKd8EOHMGUKFZZN/Hv/11WSAoJbW29JnUZIIfGaLW4EJntzFi+VPA0se892XYtAyfdnobozK+L/IGvmv3BU77tvSTbxS3z6jrJLd1glJyHqPXJS5XXzuPiWTg26rHks0xMGVX8TzYds0Afr/Q29DK+PHe/yvdlOTFsliDkrlOO5nTg1JVOmlDa8rVjsKbWWiYjQQvf7/AG5SSjDoZV1+mgrI2SNuVE3HpXfQEpVxAj9ciUFDWBr32274FZl/lDUo1uU4bjlWmotUW31/0SSZUG1MYlJKhwaqNqePsNkZdMF7sDUpJPT8ZclTr1Mi/l9WGC0umlDEoJRNMlLmgrA2Gk+ycBvx5qTco1fAybfa9shStDshi+4tkSv3S15uNGa3ONcVC+4zUxvzzP96glGTtStHqiNQMtfg+I5lSxqCUBKTaD4v8+1it7d09s/BaKcc7I+ypX0bhWsli39cyRFjOY/SglMwIqwLfTZ3dxjgEA1O2Fadsoj2zfINS9c7XehhlWFakWSljKmuT1tAe3aHdl1RUSXtPrRad97PKNMtSU0rqA0kqsx6UOvPXCKfqWrTQ4dIRwMpx3vsyW2PzG6PzXlbqtd/xk1aHTJ8xrNkgbd1EajiAVfcXVbdO2pjt2v0qJ2gnc6nVnd3GSE2pPy71zuYjQSm5kK7eI0pvaKFjSerWGYfv9ZCZ1P4bpTez0LEkw8klkKkPEW58FdDrwygEvi3W9mbv0NoYPSglk0zIeUxUAt8Wan8leCkdJXptTAlKnf5TdALfsipcCYYzfBOvF7Hqed/he13GA22HROnNLHQs7Z2jdcjqQSmV8f1ZFALfxoyp4+Y+jvSaUqo25hrtfoXmwFkzI1OX2MptjINE4UyeTCEevZMyXbsM39ODUjKbT+8p0QlKWSlj6sjWwpO5wppSlTsAfadHLyhlld4RuWCUHundM7wXjKo4c5SCUlbqHZG093+f8t6XwqnRCkopFulplGxMGSqhXzA2uRY4cVJ0glIW2l8ScnbAZawpJZNMnDE9ekEpq7Qx6oLxSmDnj94hwnLBGLWglIV67aXQ+ZLh3vtS6yVqQSkLZUxJ59pMwwVjw0uBXh9EJyilWGR/kVmVpTamnsWgMqWiGJRSLLDPyAyfc673TqaQWA7o833UglKW2mfWvqaVIjBmSkUtKGWhtvfA38DMc72lTupdEN2glFW+r4/t951MQervSkd1tIJSVmljHIYZU7YV4yhwxkrf2fekCPGpn0e23osVM6b0k7kjG7X7ldpovfURmc3HwtkMcjKnLhh/8l4w9v0ZqN49uu9rhd6RlRN90967vQS0GBzd97RCr71MpiDZmAXHtPuNLgdOei9CM4ZZeH/J2Ytqi6+AK3uD79CatJoOb2OOA3Ou0wrk6zWlTv8BqNkrym9sgWNJLhiNs+91Hgu0vju672mFY2n/QmDmed4ZPutfCJz8aYRmDLNwjZNjBwqLEK/yHVoT1aCUMPk5ngQ//roF2DLZW1NKhu9FujamFb+vN7wPLPg/7/0OI6MzfM9K+4s4tAz4tZ/hWuksoPcXUQ5KWeD7WtWZ7Q8cWqrdl2CUBKUiXRvTit9LDsOMKbuKZe+kDFOTk5Zj+7T7Mo2nzIwVzaCUYvLekbws7SRXn669QovCHsZo1JSyUO+IbKsF//W7YJwK1DgpBm9u8t6RjR8Diww9il0mAK3vjMEbm/xYkh404xDhBhcDJ38cxSwGi+wveVlw/XEhkrLXe9Pe5WQu6heMJt9n1KQB9wJbPtfuS9auTL5R67Tov7fZe+23fAksuMO30Hm7B2PwxiY/lqQGpHxf67MIS23MU2NxwWjyi2k13P4CvwvGGVHOYrBI0E5my934vnZbgpcyi3CkJ1MIyORtzPapwF83e++3GwZ0HBn99zX7/qKulfoBuQe0+zV7axNwRG1UiUWuCVR9tku1TDJRri5wxq+Rn0zBisfS4cLOAAdhYMq2YhQFztmnBaX0uiZVu2hFZSM1XbtVe41UQ3uZt6H1nMzVi8376ye7ZjzRXfY4sH6S92ROXTD2jtGbm/giQIrtzhvkvd9xFND2/ti8t5l7jbK3aTM25h7U7tc5GzhlcnSzGKywXmSY2qzL4TqwQN11y6w1qo2pH5v3N/NFwIoxwJqXtduuRODUKVEqQhyIib+XZLbcOdd6t1e7oUCHR2Pz3mY+lo7u1nrrj+31XjDKhC1R71wz+UWjyjq8Gtg3V7ufVlvrXItKEWKLfV+vekFrZxSXlllX/7zYvLeZz333/VVYA7JwYpJWdwEnPB3h2fcsuL/IMLWZ53gnJql+opbBG4trJcWk1wSyPPNu9NaAlDqzkvFdqWVs3t/Mx9Kq5+H6sRPK7fgETsLAlF3FImNKetL+uAjIWucdpibDsVIqIzZMGumWhlZ6i3ZN0+4nV9HqmkQ7JdWHSadyX/s6sPwJ7/2TPojhBaOJL6YlgCmBTL2gt9R66WAYzufUbAYJRv12rrc+W9WuhXXrYn3BaLL1og8hKRwKW5BUCe4+U7WaDDFj0vZ3w3taJoNOCuPH6oLRzBlTMoTEWNC76Q3ACaNjuAAmPZZkCIlkSmVt8NaAlM6SqMyMZaGOJNl3/77Lm9ms6rP9CFRqFbtlMOv39ebJvrWTZNKARpfFcAFM2sYcXlNYZ7ZwKGyjK4Buz8coKGXi/UVlHV4IHF6t3a/UWhslkFwxdsvgWTcmWi9i0UPA5k8Mmc3fa5MqOP37essU4J/74XIfR+VVQ4CDi+AUDEzZVpRPAuUEau713p60cvW0wtXRrmtihS+hxcOATR8ZGtrvgCrtY7sMnsbWROtl69fAwjt8pyVvclVsl8GMwyYy1xcOIcnyFtuVulKxOpkz63qR4sMyY2PGcu2+pHXH+mTOrD2wSx4BNn6gbroTUnGw43tAlQ6xXQaf/dMk62bHj1rATieBl2Y3xHghTLjPHNmiZR3mZWj3654L9Hwrtm2MGdeLntl88B/tfnpDoO+PQEqVGC+ICb+vVzyr1SITriRtmFq1LjFeCBPuMzJj49yB3m0lHUgtb4/tMpix7T26szDrcL92v3ZfbdKAqE1MYpH9RWUdXmPIOqyjdVRHdWKSQEwY/JZ6qqsmaLdlP5FM+Jonx3ghTHgs7Z0DzL3O08ZkNblfG43kEAxM2VW00+Ylyr11iqEn7QegfEPElgm/hNa+Aawc690Gkt4d1dlZgjFZoUMpKitDAvTlafsg0ObeOCyIyYKZkhEkQSkpkq8PIVG1k6JY0NsK60V6rubdBOz9U7ufWlPLxoxJfTaTB7/XTdIuGhUX3L0+Ql7VaBf0DsT4HWOCdXNwadEhJDJULdbMts9IRpDUCDq6Q7tfrYdWbDcWQ2HNvF70Woe7pnuHkPT9KTa1k8xemHjjh1rwW3fSOzGqnWTyfUYyXv64xJt12Pxmbci909ve/Gzg94uAI5u0+1VOiPFQWJPuL0JqHW772nCtNBWo0CT2y2G2jKmt//Otp9rjdaDBRXG+Vnabo9bhHxd5ZoV1N7keWU0NE5U4AANTthXFjKk1rxii3FK/43OgamfEnNm+hHbPBBYaClV3fwVoOCA+y2KmjKnsHdoQEn367SbXAp31C+sYM1ParsxMOOsqIHONdl/Sl/t8E6NCmCafyn3FaGDzp77F8Su2iMOCmGy97PkDWGiY6aj7y1qGXTyYaZ+RwK6czOnTbzf8j5aRGdOMIJ2J1osEOmRmQhnGp0/AEdO6JkYmanvF6heADe94Z1OTzOZYDiHxYaLv633zfLMO5bu66fVxWhgTHUsyM6EMx9KzDutdoF1Mx6ONMVPbq3ciHVio3Zfh5CrrMFYlPYxMtF6EZBx6ah3GK+vQP2PKBOvl4GLte0nX8XGgxa1xWhgT7TMyU+PvFxmyDs+Eu8ebcTqPiR8GpuwqWhlTu2YAf9/tO7a+3rmIDxNlTEl9CmONoNb3xT6924dJemBVHbIB3t76GidrNV9imt5tZKJChzJdu16HLLWGNrZeeu3jwUyFiaUnbclw733JIKvePT7LYqb1krVRa2Ok6LlofQ/QyhCkijmTrJvjx7T1cmSzdr9ad20IScyzDk24zyx5FNj+raHW4Q+xHW5v1vWy4yff3vqT3tVmE44XT8aUO/4TTRgzglrcBrR9KH7LY5Yh5mqiiSu8MyxX6QSc8mkMZoUNxkTH0r9PA1smezOCJMArs6o5eX/xdFQbrpVk6HQ8sg7NlpUpE01I8EWvQ9b4GqDDiPgtj1m+l2TI5+xrgMMrtfuV2hbWU43yrLAmxMCUbUWhd1IujGZfaRiO9RDQYjDixiy9RirKfaF3Cti65wBdCofzxYsZMoNUgeabgcJZw5DeCDgtDundZlsvYt1bWo+9Z5rpKTGc6SgQkxxLB5dotet0MptPvLIOzbS/qOFY0pO2T7tfpx/QZTziygztrz4ca+8sb63D076JbeHqIkywXsTGj7TMQ2NmcywLV5t1vWSs9D2PaT8caHI14ktfNwXx70TSZw2rdTrQPca1DoswyTCbv+8Dds/wDiuX4vjJFZzd9uoFmpc+ZpiZ8GOgSsf4LY9ZShJIR/Ws/3g7qtsMAZoZZlx26igK1Yl0qXcyG5mZsOekOLcxJjmWlg4Hdvyg3ZYOamlj4pJ1GH8MTNlVpIsjyhAJ6UnTUwzrnQec8AziywSRbhXlvhrIWOGdmfCUz+LYk2aiL2jjcCwZOiINbVotxJcJMqZkONYCQ6ZLj9eAWqchrszQayTDsX43DMeSnrR2htnVnHrRqIZjXestAi8z+pw62VxtTLz2mVXPARve1W7LEFgJSqXXA5x+LMmU7cbhWDKsMZ699WZZL57hWIe1+w0uAToZZol1asaUpxPpb+1++abAqXGoQ2bGIt8yk/DaVwydSF/FePbTQExwLB1YVFgEvlDn0fGpEWS2jCnViXSx91pJOqo7j0H8xTljStqY+bcB++Zo98vVB077Os6dSCb5Xtr4MbBijKET6Ys4la4wBwambMwdqTHFagz5zcChJdr9ii3jVKDZhL1Gy58Adkw1RLm/M0eUO96ZHjt+1oaR6Hp9BFQ9AXD6epF6W6pAsz7k816tgGrcxflYknpbs68CsreYqCfNfyr3eLUxTwHbv/O2Mad9F4dZw0zY/spQicUPeu+f9F78hnz6iPN6kQCvGvJ5zDscq5Wh9qFT14tebytrvbdAc8xnDTNp8FsmbPF0IlUo7ESqgbiLd2HivXOBhXd575/4ZpwmszFZ2yuTtkjmiz4cq8n18R3yaZYOWdlHJVhn7ERSQz7jfK1khowpqbe18X3tdmI5rY2J15BPH3E+lmRiKOkU0HV9HqhzJpzMDN/IFDURaohWjvcdQy5RbjNcGMX7S0jqVCx/0nsCZaoodxx7Go9sBeZe690mnZ6M73AsH3HsUZM6FTKERJ+BTw3HGgdziHNP47KR2jTcnuFYJuhJM8NF487pwLLHDW2MDMdqCTh9n5GpySWQ6RmO9SjQ+EqYQjx77dXU5NcCR7dr9yUTM+7DsUySzfDvaGDnj4aaft/EdziWjzgGvyXAa5yB7+SPgCodAKefx+TsA2Zf4Vs3NN7DsTzieCypAO9A7wx81XsCPU1SoDnebYxcK+kz8CVXBk771iTXSsY2Jg7rZd98bXZCXa/3gWpdYQ5x3GckwCsd1XonUvNbgVZ3wOkYmLKzSBS72/07sORh7/1eH8Zx5hoTfQkd2QLMlVklCk8kZVijmaLc8eppPJ6rFQn1DPm8AGhvOOmNt3jO5Cgn/3otnPSGhVmH8R6OZYL1sv0H4N9nfGvhmKInLc7DbKQQ8ZxrDAHep4A6Z8E04rXP6Nl1Obu9AV6Z1cc04ngsSQbvrl+022l1gFMmx384lhnaGJm0ZZleYNelZTHEfThWoHUT6wDvLt8Ab4eRQIOLAaefx+gBXmmDRc3eQBczDMcywbG0chyw43vtdmp1rUM2HjMJBxTH9bLnT2CJofSAtDFxrekXbJ+J8XqRawEVfCmctKXN/UCjywGnH0vS5s69wRDgPUmbZdllggBvnDEwZWtlzJjK2atdGHlOWh4zUeaLiFOD4h98qX8h0NYwpMQU4pSeuvghYP887Xb5JlrPiCmGSsR5vchMc9KbJuRCUYIvZhgq4RGnIY5Zm3yLnXceG9/ZsQKKQwq8PguUXuy83vlAu6EwlzgdS0sf1eq0ifQGWoaHGYZKxHu4sE8GrwR4JwPl6sA84rS/ZG/3PY/pOMpcAd54ZUypAO/VhgDv2do5nqnEaZ+Rmeb0GXOlLqaqG2qSAK8SpzbGJ7vOBfT6GCjfEHB62ytZ8CrAe9w7oULcZis30XmMCr4M9JZokFm5Oz8Lc4nTPiPXA3qJBhXg/dyRM/AFYqYrRjJTxpTeoBzdod2vfYbWm2Ym8cqYUsGXv0wcfIlTQb8tXxhmmkvRetJSqwFOXy+Z64F5hiEAXSYANU4CnL5eZIYW6UmTdGa9EHGb+2A68ZhmedFQYN9c7bZkdpimFk6c95lt3xqKhCYBp0iAtybMJQ4TLATK4I33hApm2F/U8OmrvMOn6/YHOgyH6cQjm0GGT++Z6S1EbIa6oUXE4RzPf/i0BKXiPaGCGYrCF8muGwHU6w84fX9REyBdY7hW6qsFv80mHucxK5711uCV2Swl+GKqAK9/xlSM1o10rPkEeD8yV4A3zkx2pkumiZBLuu7On7w9RqY/aXHHLvPFP/giBYlNJ8Y9jTI9rhTI13V7wSSFiOO8XvTsOn0WqEZXmKQQsQl6phcPBQ4s1G5XaA6c9K5J05hj3NO47Rtg9XPmDvDGo/1Vtetu8N6X+mw1e8F0Yt1rX5APl2QE+WTwPgDziUMbs3Sk7/BpuQAwW4DXZ4KFWAVfpvkNn55swgBvHIbZSPBljl99TAk0mE6M2xh9ZlhPdt1ZJsyui9OwLJl9evcM7/Dpkz8x4bVSHM5jZGjj0scMw6c/AdLrA07/vpbvaclU9cmuOyf672shJvyGpsgL82DbOwdYovcqurSglKmGBMSp10hmVDNOwd3teZMGX2LcOy1DAmS2o/xM7X6Ta7WZoMwo1r328sV88B/tdsVW5plpLt7rRYYdeQK8qUDvL80xm2W8exqlqLfPDC0Tgeo9YEqx7GmUXmkZ8pl3SLvf8DKg9T0wp9geS+U3vwDX/rnmzuCNRxsj9TGlx169d5IJh08bxTBjSop6GwO8MrTGdMOn45ABo2afvhE4tle7X+88oJ2hvqqTszxWTQR2/2rIrjN78CVGbcy+v/yy6z4157VSrM9jcg9p1wSe4dMjTTh8WhfDY0namL9u9cuuM1N9THMw4dkLRYq7NA1RXmZhg2KI5pq2QYlhbQZZh/NuAHIPaPcbXgq0uB3W4I5+PQZ92FGFZkCP18wZfIl1r/2uX7XMQyHpyzIkILki4PT1IrXrfIY2jgeqdoZ5xainUQ2fHuTNfGkwAGj5fzCvGPY0rhoP7Pldu53eyLwB3lhP5b5vLipsnFj4vonaBaMpM3hFDNeLDA9Wtev0oY1Pm2/4dDwypuQ4nX8LkLPLO7RRihGbVSwzYNa8bBglUAc46T1zBnhj3fYeWOQ77OjkD82ZXRfr/UVdK11ruFZ6FKh9OswrhhlTC+7w1pWSIeWybswqlhlTG94Btv1Pu51STcvgNWWAN77M2upSvBqif+4DjmzUbksvmkS6zSxWs9mset4725FMZ3+iSabHjXfvtGTXyUxQngujj00cfInhejl2QKvR5hkS8DRQrQvg9PWieoxu9g4JkF5ps0+PG6uextUveQvuyqyEJ75lnTYmmu3vgb+BJY/6XhiZZgruQGJ0LOUdhmvu9XDBUPPFjEMb49HGzL8dyN7q7ZU25dDGOGRMrZ+kDRUWqTUKh0+b+TIgRhkwh5YDiwwT2EhQyqzBl1i2vfnZ2sQB+oxq7R4y6dDGOGRM/X0PkLXeO6OaGYc2xuM8ZuPHwOZPtNvJlbWZ3E0dfInRsXR4DbDwbu996VwzW+06kzDzNxKVWZgNkZywrH9bu51UQSu4a5bp7OOZMXVwie80sLJeZBYFU4tB77TUTTKm60pxfDP3SsdqvagLo9uAo9u9Ewe0HQJTi1WWx7o3DDOR1AR6vmPu4EusehoPLtUmVdCd9L6Jhx3pYtDTmH9EKyzrztfuy9AasxX1jtextPBuuAo7kdwy21F7PavBrGK0XjZ+CGz5XLudXEU7lkwdfIlRxtTh1cDf93rv93xbC4CbWSwyYI7nFAZfjmn3ZYiw6Yp6+4tRlseiB4DDq7TbVbsCHQs7Ic0qVhlTMtHPhne910pqZliLXCtFc71kbQQWGrK8T3wDKN8IphaLjCkJ7Ep23fFs7X7zW4GGl0TnvWzA5N/WFJkDLoSDTWatkbGvxuLVMizL7KI9m43MHCYNSkGudl96XuucCdOLxcXR337Zde0NwTuzisVMjps+BrZ+qd2WYTVmrfniIwbr5fBa4B/DsBHprS9XG+YX5YtGKZAvM6rpbYwMral7NkwvFjX+Fj0EZK7RblfrbpF6DDE4lrZ+BWx8X90sSKwA90kW6kSK5nqR2QkXGiaX6PmmRWY7ivJFo6oDeb33wkjKEDS4COYXg31G6kAeWqbdrtzBhNPZBxKDtnfHj8Da17TbieW04tWmn84+BvuL1IGUjkdd95eBis0Bp5/HqFIEN3gn+mk6EGh8JcwvBsfS8qe8E/1IrdluhZPbUEBmv1qiWGRM6QXZ9KKP9S8Cmt0Ia4hyY7v8SSDjX+12lROATk/BGqI8bEKKV8t4aZFUsTBd1+wXRiLKPWpy0vK3IV1XhnymN4DpRbunUfZBGcJ3/Kh2X2on1T8flhDt4LfUaNMvjKp0Ak4onC3LUm1MFNbN7t+Ata9qtxPTtWHCpr8wisGxJMWrF/zXc/dwq2eACk1hej5D+aLRxsh5zC3eSTia3gA0uhyW4BlmE6U2ZtUE4MAC7Xal1kDXCbCEaHew7Z2rFfbWZ0BVwZc0wOnHUm6Gb0d11+e0/cbp+4s+TFhq2AlpXyQAYwXRbmPWvALs/VO7Xb4p0P0lWEK0jyWp0eaZATVJO49JKh/597ERBqZsLcRhbpLhsf1bw/Aak9c2KW1WWLgO/OM7q48M4UtMhSVEMz1VTlrmG09aJlrjwija60VeTy4Y9ZOWxlcDjf4Da4jyCZ3xpEUyMbuMhWV4htnE4KRFsuus2MZEep/JywLmGWYnlCyGSq1gDVE+liTwLRnO8ur1L0ZOHbYxipQh2DVduy2dAZL1bRn6uolCJ1LGSmDpiMK3SdDqJyWlA06/aJQhfH/d5O246/QEUKUjrCHKx9KiId5SBHX6AS0Gwxqi3Cmw+VPvtVJaLaD7q7xWEpnrgcWGGSxPegdIrgQ4/ViSbHiZ6VMvRSDD7c06k7uJMDBlZ64QDjY5wZUifsYMD2lwLSNKBf1UgzLIO+NGh0eBqp1gHVEs6CdFQrO3abfrnA00N1xAOjmTbPNn3sKycgx1exGWEc3CxP4nLVLbxFI9RlGaYCHQSYupZyf0F8V9RmaB8gwT7m3+AvmxOpa2fq1dHImUqnBb6sIoiuvlyFbtYtp4HpNSGZYRrWyGguNaG2McJmz6OpAxGmaz7HFv/aRqPYA2Jq8DGatjaec0Q63ZihbtqI7Cejm6G1h4l/e+tL2mrwMZg2sllQ1/i3eYsGTDm3p2whgeS5LYcGiJdluC3jLLPZWIgSkbc4fSEMksAbkHtNuNrgQaDoClRKsXQLIYPMNrTgDaWaB+Uiwyg3ZOB9a/5S36aKWTlmhmeaiTFkNtkx6vWeykJUrrxeonLdHMmLL6SUu0jqU9fwBrXvLWNpFApulrtBlFab3ITJ8Lbvfel4ygcnUAp+8vanjNYG9tk2aDgHrnwlqilDG1+jlg/1/e2iZmL14dq4ypffOBleO8Q/gkw8MSpQh0UTqW5BiS72tdl3HmL14di4wp2fekqLfnWukKoNFlsJRoXSutfR3YM1O7Xb4x0HkMrCVKx5JMaCOlYNRbJGo1Va1QisAErHS2R2EroSHa9i2wZbJ2O6Ua0N1CGR7R7AWQWfik7os+vMaSDUoUMqZkeE2Rk5bGsJYo9Y4svMP3pKXhpbCUaPUaySx8npOWJhY8aYlSxpQEvS1/0hKFfSb/qO8QvhOeBiq1hKVE61iSGdVydmu3610ANLkO1hKl9bLxA2DnT9ptmWVOhpZbTTQypmR6cinsrb2BFnxJKgdriULGlGSqGofwdRgBVOkAS4lWG7NoKJC91TubsGWG8EU5Y0oms5EJJ0RqDa3gueVE4VrpyGbf2YSlEym5AuD0Y0kmmzBmw7cbClTrFpnXdgAGpuzMc7JTELhOkKGAKro9b7EhfFHqBZB1JTNueIbXDAOqdYHlRCNjSlLfs7dot2v3td5JS7R67bd/D2ydYvGTliisFykE7zOEb5L1TlqikTHl38ZY9aQlGseSdAhkrdNu1zgZaGWYSMAyorBeds0ANn2o3U6uDJz4urUyVaO1v0gheOMQvh5vaDOhWk6EM6ZUvcP/0+ooidb3aDPnWk00MqZWjfdOaFO1K9DOcGHt5GNp7xxg3evabRlqrzJVLdbGRGNCDrlWkpEluu6vAGk1YTkRv1aSNuZOIP+Idl+uB6wwY3kRUTiW1rwMHPxHu125nRb8ppAxMGVrxTREcsF4dId2u+45Fux91UV4xqx1b3lT3yu1sd7wmmj1NEoW2erntdsJqVoND0sNr9FFuEctP9t3CF/X56150hKNaZb/ud8wvOZGi560ROGiUep37JvrHV7TQc9qcPg+I0WaVxYWxU9I1gKZCYmwnEj32ktwwdiJJBMHpNeH9UShjVk8FDi231uKoMGFsKYIB7+lDtnuGdptyWo+wSqzCUf5PCZrgyFTNaGwjUkGnH4sFeT5DhOW2acrNIHl+ATSItTGLH0UyNml3a5/oXVm+oz2DOZST3XH995M1c4WmtAmmseS1N81ZqqeOMk6E9qYhBWvLKmsDdH+BdoQG71nxIq9r0WyGQoiUyfImOHR43XrNiiR7GlUGR63+xaCr9gClhTpqdzlJFfSmUXtM4Em18CSIt0zLQVUpRi8SK1u4ZOWCA+zkckm5GJa1+NVa0xPHu1jSZ/RUi6QRNuHgMptYU0RbmNWjAUy12q3a/QCmhuGUzu57d3zJ7DhHe22zADV7TlYlmfdRGC9yKyw/9znvS8ZvJaabMIogpnfqo25w5tF1uoea2bDR+NYWv2it6Zq1S5AK0Nnm6VEeKTA/oXajMIiMR3o/pKFr5Ui2MZIWY+/7/LtkLXSZBPRPJZkyH1+ljeLrGavsr+mwzAwZWeBGiKZpUX1vhY+JsUwLVcnKEoXjYseAPIOabeb3gDU7gPrimB6qsoim6fdrtQaaPsgrCuC6+XQv8DK8d4CqhJksOpJSyTXi9QJkmEkus7jLFYI3l8EU+BlRku5cBRNrrVwFlmELwI2fgjs+V27XaGZhTNVIzyM+vBabSIO9bqJWmeJJTNVI9zGSJ0gYxbZCc9ovfZWFckOtiXDtQC4aHAJUP8CWFYkLxpluL2nFll9oNMoWFcE25gjW4BlI72vK22MpQrBR2l/kWslGXLvuVZ63NrXSpE8j1FlPQpn5q7b38JZZBH+vt7+g6GsR02g8+iyvZ5DWfUMh8JiONhkRrUDf2u3K7cHWhui3k4eZrPrV2DTR9ptqVEhhb2tLFIF/eyURRbJ9SJ/K6nvnjpBw4BKrWBZkSwAKbPNZa3Xbtfsrc2SZddafeHY/ZtWqFkkVwG6TICl+VwEFJRttjljnSCp4WG5Is1GkWpjZCaoO4CCY9r9NvcBVTvBsiLZxshsc3qdoGrdgRaGYUiWFKFshn1/abNk6bPmysyNlhahYTYypPzve7z3ZaKf5IqA09teIetFrxPU8r9AjRNhXREclrX2VW+dIJk1t829sLRInccYy3pItrd8X1u2Q1ZE6FgqUtZjokXrHcYfA1N25t8Q5ewFljzi/b1keFhyfH2EazNI76tMBauTYUeWrBMUhd5pmXHDk0U2EKh9OqwtQutFMjz2ztJuV2gBtDcE76woUsVUJcNDAlPqNZOsPUw4kj2NqobHHd77nZ8FytWGtUWop3HJMODYPu+MlvXOgaVF6lja8gWwa7p2O72R1mNvaRFaLyrDY5T3HOfEN6xZiyzSGVP+2fCdJBu+ISwtUhkwS0d6a6rKjJaSSWZpEWp7ZeKWbV9rt9PqaJmHVhap/eXoLi3zUKeyyGxyrVSW9aIPudfLerSXsh7NYWmRypiSzOYjm7yTQ0lGPJUKA1M25vZviCTzxTOM5Hqg1mmwPM8XUUHZZlA4vNpQw+MmWF4keqel99Unw8PiWWSRWi95mX5ZZBauE+QRoWwGyXwpyNVut31Am5HE6iLR07jmVeDwSu129Z5Ai1theZHotT+4WBsqLJIqAl0tXCcokseSDIeVYZ/GDA/L1gmKcMbUooeA40e12y3vBKp1hfVFIGNK6m0dXKTdrnIC0Mrq2fARyoDJWKWd44nEctauExTJtlc6ZGWCEp8MD4vWCYp0xpQEpfIztdtS06/mybC8SJzHbPrEO3GLKuvxAKwvAsdS1kZDWY9koLuVy3rEHwNTtmZoiCTIYCwUKjP72EIZM6akFsPyJ7yvJYVCLVvDI4K907LPGFPfpfc1rRasLwK99tIzos/SIj2vdc+G5UUiy2PndGD7d9rtcvWsXScokj2NMqW91GTQqQsjm7UxpWl/5W+kUKi+XmV2wvR6sLxIHEtykpu9xVvDo/5FsL4I9ExLwfMtk7XbqTUsXicoghlTMqW9McND2hir1gmKdAaMBF88Q+6HWnO2uWgcS2te8k6qIEPuG18Fy4vE/iKlTja8q91Ormz9LLJI7TMy3NM4cUvXF6xd1iOSGVPSWaIPuW99L1C5TWSWzaEsdXb8ww8/oGfPnihXrhyqVq2KAQMG+Px+y5YtOP/885Geno5atWrhwQcfRH5+4ReSExlPdow9I52eBMrVgS2UNWNKpvXMy9BuS6aULXpfI9A7LT0j+//SbkvWS0ur1/CI0HqR6aZXTfQWPO9a2EtieWVcLwX5wD/3+g5VS64AWyhrT+OyEd7hsFJvq3oP2EJZe+2lSKin4HlzoPXdsIWytjFSVNYzHDZRyyKzQ+9rWfcX1Vlyr++U9ilVYA9lzJiS2WGP7fUOh63VG/ZQxgyY7VOBnT9qt9MbWnzilgi2Mf4dslKLzA5tTFn3F9VZco+h4PlIG5T1iFDQbsUY4Oh27Xa984F6/WEPZfxe2v07sPVL7bZ03sus5VQmlulSmTJlCm699VY888wzOOOMM1TAafny5Z7fHz9+XAWl6tSpgzlz5mDnzp0YOHAgkpOT1d84U2EjnXsA2DdHu12pjVbg0DbKkDElRfzWT/IOI+n0NOyjDL32qmfEMFRNLowsP75eV8Zshn8e8A5Va3O/NoOYHZQ1y0MK7mas8A5Vs9X4+jJkTMkU3Ove8BYjtk3vqyhDT6NM2W4cqibDSOzQ+6qU8ViStvd4tna75R1A5bawhzL2TG94z1CMuJM2xMZ2nYju0tX1W/OidluGlNsmG76M30tS12/R/b61Q5PSYQ9lbGOWPKoVhBfNbwaqdYEtlPU8ZvNkYO9s71A1aX9tw6/9DScOeWQzsHKct3aofF/bRVkypqSun3FkiZzfyYgksn9gSoJQ99xzD8aNG4ebb77Z83i7dt76JdOmTcOKFSvwyy+/oHbt2ujcuTOefPJJDB06FI8//jhSUlLgOIGGi3QZb6Mgg/Ezuks3jETvVZEot+WLEUeo58inZ+QCoG4/2PNLqCD8mRu3/c9bKLS9YSIByyvDepFZ1TzTTaOw99VSybjRGWbj38bI0EYrT2lf7EVAmOtGsg71QqF1zgLqXwj7KMOxtHcusOlj7XZqdaCT1QueR2h/kYto48Qt0sZYveB5pGYXVnX98rTbkhFk6SntI5gZtOYVb+3QmqcAja+EfZShjZG6fnqHrFxES+ahbZRhf5FZ1WSyH10X6SxJsXH7G0b7uWio1pkkJLPZyjNQR/JYkvI4h5Zot6t2BZpafAZqk7DE1cM///yD7du3IyEhAV26dEHdunVx7rnn+mRMzZ07Fx07dlRBKV3//v1x+PBh/Ptv4bTCTicXAPXOg72U8qJRZiLZM9MwjMQQ9XZy2q7MeKT3jEgAs6vFp7Qv9sTFHV7PiM9QtdHWnm46kmneMkOWZGWKJtcBNXrCXkoZ/N7+LbD7V+12+abWn246UsfS0Z1anTZ9v7PLULWyHkuyDo1tTMcnbDbddCn3F09dv93a7YaX2mB22GDDhcNcL7uMdf3qazWUbKWUGTD+df26Ps82JlhdPzt1yJYlY0rV9duq3a57DlDfbtdKpWx/98zyresn+4ydlPZYUp0lhrp+3Z63WWdJ/FgiY2rDhg3qX8l8mjhxIpo0aYIJEybg9NNPx5o1a1CtWjXs2rXLJygl9Pvyu2COHTumfnQSyBIFBQXqx6pk2d2Ghkhm6HN3Hqc1SGWZEtNkXOo/+XxuuEPdXgX5cC1+2NtHKSnermRZabA6td3dsjYMfbASVAnxs7mWPAZXYc+Iu+VdcFdoYYv14uH2HhUFEswM9bNt/AAJMixLXqJqN7gbX2e69aJv+1K1WwXe9eJ2F4R+LGWuh2vda9oxmJgOd6dnTLdeItbGuMvaxqREZd2UabuXgau0bczSx+GS4cKyTpvfBneldvbaZ0rbxmz5Agn752svUbkD3M1uKfFv47Xty7pewmpjsrfBtfoF7RhMSIH7hDH22l98zmNCWy9quxcch8tQjLhAhpEklLPVutHXS9htzL9Pw1VYO9Td9Aa4JZvBTud3hlP4sI6lHT8gobCun5zbuVvcaYv14lFg6EYK5/s6Zw9cK8dpx6ArEe7O4023Xsra1hc5llwhvI7bDdeih7x/J50lSZVMt27KxO3dZ8JrY8bCVVjXz93wcrhrnGKr87tIC2f54xqYevjhhzFmzJhin7Ny5UrPBxo+fDguu+wydfvdd99FgwYN8MUXX+C2224r9TKMHj0ao0YVndll7969yMkpTF20IFln1Q07wtG6V+Nwbh1gzx7YSY0Ct9qJC47nY2+In63c9g9ROXONup1buScOJPeyzXqR7Z6RkYFKObnQJxc/sH8f8o+V/PmSslah+qYPtddJqoK9tW6F2ybrRZeWmQW9XG5WZgayQ/l8x3NQc7G3l+hgk0eQu3cfzLrt5UtMskvDkZB7APqci8eO5eBQiNu98r9DUa5wGMmRhrchKysZyLLXPlP9eAFk8LPbfRx7Qm1jdnyCyodXqdu5lXvgQMopUWtjyrLdy6Li0RxPG3PwwH7kHS/58yVmr0eNDW+r2wWJFbC3zv/Zro1JzciEnud0JPMwjoTy+QryUGPRI54T5INNHkbuvgOm3falIcFIveswN/cYDoa43SutHIb0ws6S7Po3ITO7ApBtr32mWv5xqEFDbndIbYy6WNn4KVyFw0jyKnbE/nJn2eY8RlchOxv6FBqHDh5ALkr+fAlHt6LmmlfVbXdCGvbWuwcFNlkv+vGefDwDNQofO5KViaxQPp/7OKr/PdTTxhxqMhTH9hdOymEX7gLo0zrl5R7DgRC3e8U1j6J8fpa6fbTedTh8rLrpjqWytvVV8/KhV3Hcs2cXkFiuxL9J3fsTqu6fq27np7fEvgoXmm69lFX5I9nQxz5kHDqIY0khtDHH9qDGqomFgcxk7GswBMdtdn4XaZmZmdYITA0ZMgSDBhU/JrNZs2aqkLl/TanU1FT1O5mJT0jR8/nztd5G3e7duz2/C2bYsGG4//77fTKmGjZsiJo1a6JSJesWMZOd+bjUwclZD3dSBaSdOA5p5fRLT/twJWq7cEKCS83EWKL8bLjmPOe5m9RjAmrVsE8qs2x3l8uFchneL51q1aoCVUpeN65Vt0penXan/TDUrG+nceSFcip7blaoUAEVQtlnVj2HhGNazS133XNQpbXvbKBm2/bSdoX9BZbjTYFPTUkO7Vg6uAgJu7WaW+7UGkjvNgLpNiz86ErSavLJGgqtjTkK11xvcdCk7hNQq2Ztc273MnBt08NSQNWqVYAaIbQxs++Ey31cu9P2AdRs4P1Ot40870xx5cuXR/lQ9pl1ryPhqJYZ7q7ZB1XaXBXS0KN4bftSKcySEynJIbYxGSvh2vWZuulOroRy3Z9AOam9ZTOuZK2WjXz/hrJeCvJygHkve+4ndhuHWrVtMtOygWuXd7h8lSqVpQEu+W/mDYXLXThBSeu7UaPhCbAL/XivWlDN81j58ulID+VYkqzvIyvVTXe1E1G5/Y32Gt4oDKlkyclJobUxWRvg2vGB9ueJ6Ujr/owpr5XK2ta7UryTi9SqWbPkiQAk63uhdyKFhK7PoladerCdvd42pnLlSqG1MQtHwVVwVLvT4jZUbxy9mZYLrPQdX4y0tDRrBKZkRctPSbp166YCUatXr8app56qHsvLy8OmTZvQuLFW6LFXr154+umnVW+T3hhNnz5dBZeMAS1/8rry4092ACvvBOJQqyeRsu8TuJpeB1d5GzYohvHBLncBXKFsr7UvAzlaoBMNBiCh1imwG2nEXDLNeKEEOfcoad3IOPId32u30xsgofVdJf+NFSV4m7wElcNbwmfMzQBW6DOpueDq/Gxo+1kct32p2q7CAK96DRn4G8rfG4oRu9o/CleqXaZuD9LGIMQ2Zt0r3skD6l+EhNq9zbvdy/SmYbYx+xcAW6dot9NqIaHtEPu3Ma4Q2hgJ2Cx/0nPX1WUMXImJ5t72ZVwvIR9Lyx711I90tXsYrnI2mbq9mDonCRIsKClgsPFtJORs1m7XOQsJtpm6vbj1EkIbI8PtC7O+pT6bq/3Dpv6+LvX5naGWTUjf18ePAcu9NbdcXZ4Nq42xotDbmJGeyQNcbe439bVSmdr6cI+ljR8Bh7VAJmr0QkLDS+wXyBSGYymk9ZK5zjCbewW4Oj4W9TbGZZXv+GKEs+yWqDElwaXbb78dI0eOVNlMEoySGfrE5Zdfrv7t16+fCkBdf/31GDt2rKor9eijj+KOO+4IGHhygvwKbeFu9obtvph9eBpKd2izh614tvDvEmw2dXsZpkCV3xtqVaDjKCCp5DRfawqzOKYUgvcU9r4WqGqf3ldfYU6Zu2sGsGuadrt8E6Dl7bCtcKZyzz0I/DvaeW0MwmxjOowAkvVBOg4/lla/AOTs8hb2tt3kAaUsTCwzFMokJUJms7TbBCU+/NdNMReAeZlw/WuYSa1z4TmNLYV5LC2WzpLC57UbZrPJA4zCPJbWvgYc2ewt7F27L+xLq9YW0v4iMxRu/kS7LZmY7R6EbYXT/uYf9Z1pufMYewalSnMsLZHOknztdtsHVCcbRZYlAlNCAlFJSUkq8HT06FH07NkTv/76K6pW1b54EhMT8f333+O///2vyp6SFPobbrgBTzzxRLwXncwym82K0UBhQUw1rWfltrCvMKbmltnD9s3RbldqCzQdCNsKZ/ppmT1MprXXZyjsZOO2xGdmkoIQggwPe+/Lekm0c/DfUxqz5Kf++yyQV1i3o+kNQJX2sK1wjqWd04Ddv3lnQW1+K2wrnGPp2H5gxRhvBpqdA5nhTOUubcwSQxvT8fGSh57Y6Vjy2Yf8SG2TwpqR7kZXwFWtG2wrnDbGL+sbre6EbYWzXiTr2yeQWdhxYud1o4aLh/B9vXiY93b7RwEbliLwCmOfWfOymnRCqXcBUCv6Wd+WOJYO/O2doVACUm28ZYDIgYGp5ORkjB8/Xv0EI5lUU6dOjelyUbx55oso/mnZ24HVL2m3E9O0E10782lsiwnaSUMsPQA6NbOPZZqF6PaOLH8aOF44jrzl/wEVmsK+wuiZ3vY/4MBC7XaVTkDja2BroWZMSSBzzYva7YRULfPQ1kI8lmS9LTVMq9zpKSBRq6kDpx9LEpSSaadFs5uASq1hW+H02Esgc88f2u2KrbR1Y2shrhsJZMq09qrobhLcHZ8sLrfKWW2MYWi5vbO+RRjH0qrntP1GyHd11c6wtxC/r/f8Cez8SbtdvjHQ8r+wtVDbX/k+kk587Y+AznbuLAnzWFpiOI9p/xiQ7K1PRZFj4zFe5Ayu0C8ACo5pt1veAZRvCHsLsbGVmi8Zy7Xb1XsCDS6GvYW4XqS3aP1b2u2k8kB7wxeSk09aJJC5zBBwOeFpnzH69hTicOEVY9UMjkorh7UxxbW/27/XehqFXBQ1vgK2FuqxlLMHWPOKIZBpGDrh9CDDMkPH0QlP2byzxH/ofTGdbJLB65k97BqgYgvYmk/mWDH7jGRj7v1Tu12pjb2zvsMp1ZB7CFj9fOHfJAEneGvZ2X+fKeH72tjGSCDT1lnfYbS/0oEvJQlEk+uAKh1ha6EeSzK0fOfP3vIVLQZHf9kcioEpssmXUEHx2VLr3tRuJ6YD7R6C7YWSnuofZJAhWbYdRx5m2q4MySoonNmn1V1Amk2L7nqEuF6k5suhpdrtaj2AeufDOcOFC4rPllr3unZbpmFuZ6in5OQha/5BBrkAKG6YkpPaGMl8OZ6t3ZYaben1YWuhrhc5+d8/T7stF0UNL4P9hRCAkayX1VpGpjshBVmN74b9hRCwU22MIajbYaQDApkhHkurnveWr2g2CKjQDM7prC5mvUg25u5ftdsVW2r1Q+0ulH1GsqVWTSh8fiLQcQTsL8Sh98sN10odHrN51nd82fwMkewvhIwpY7aUZDI4olhdCL0jKlvqX+12jV5AnbNhfyGsF/9sqTZDYHuhZHn4BzJlOKzdA5mhZkz5Z0s5rY0J1v5KttTBf7TbVbsA9S+E/YVwLBmzpWRouRMCmaHsL/6BTAky2D2QGWrGlCFbCs1uRkGazQOZoWZMSYBh7yxvjcxG2oRIcHob458t1d4w1NHpGVM+bcxj9g9khtr++mdL2T0jM9SMKZ9sqaZA0+tjs2wO5YBvfHJ0xpR/tpTMouAEJfWOODXIEEqvUZFsqRqwvxDWizFbqvqJQL1z4Qgl1Wvzz5Zqa+OZfcLJmCqSLcU2JmC2VIvbtFnn7M5n2xcUky31lyFb6hI4QwkBGEO2FBJS4G7rhEBmCAG7IoHMEQ4YWh5iG1MkW8rONTLDyJja/bt3Ig7Jlmp8NRyhpO9r/2ypDobas7YWwrHkky31qDYZEkUNA1Nk74wpR2ZLhdCj5shsKVFC74gTs6VCyZhyaiBTKWHdODJbKoRjyZHZUiHsL47Mlgrh+9qp2VKh9Nobs6Wa3+KA+nUhHkuOzJYKYb04NVvK51hyhzYkyxHZUqKENsaJ2VKhnPsyWyrmHPKtT47MmHJqtlRJPWpODjKU1GvkyGypEHqNfLKlegJ1z4FjFHcsOTVbqsQ2xqHZUqFkMzgxWyqU72vHZkuJYr6X/LKl0O5hOEY4bYxTsqVCaWMcmy0liqkJ6dRsqZLOfR2bLSVKOJaYLRVzDEyRfXtgJZPBkdlSophegK3/M2RLneygbKkSeo2ydzgzW6qkXiN1AfCEM4MMSjHrRgUZnJgtVcJ62THVkC3V1UHZUiWsl5x9Ds6WKub7Wu4vf8KZ2VIlZUxJkMGR2VIlHEt7Zjo0W6qE9ZKb4ZctZfMZhcPJmFr+pEOzpUQxbYx8J+nZUpIR5JRsqZLOfff9xWypOHDQNz856ktILgD0IIPKZHBQtpQSpDaDfCGteNa3l9FJQYbi6pzIyZyeLdXyDgdlS4liannIF/OhJd6Z+Or2h6MEq3Ny7ACw7g1vkKGNw9qY4uq/GNuYjg5rY4o7lta87M2Wan6rs7KlhGc/8Fsve/8E9s3Vblfu4LBsKRHkeykvU9tnhPTUOylbqqTMIMlu9slkcEi2VEltjHwnebKlbgAqNIGzBMmY2r8A2D1Du12hhbOypYo7980/aghkJjgvkFncsSSlYHQyHJbZUjHBwBTZ80tIXQAc9fYyOiqToZjZbKQmw4GF3rovdfvBUYIVspaaDGsLh2QlpAJt7oOjFDf7kTHI0H6Yw4IMIsi6kV7G/CPa7WY3A+Vqw1mCrJe9s72ZDJXbOSxbqphjSfaVNS8VPifJgZ0lxu9rd/Agg2SROSlbqrjvJSlFkHfIW/fFUdlSIkg2w4F/gF3TvJkMja6AowRrYyR7d9Vz+pOAtg/BcYJ1VhuDDO0edFi2lAjSxmx8T6t7KBpe7qxsqeKOpYxVWgkLUa4es6ViyGHf/uSILyGfC4BEoK2DhmSVlLbr8+X8sAODDEFOdNe+BuRnemsylKsDZwmyv+ybB+z5XbtdqTXQ4GI4TqBhNvnZwJoXnd3GBEuBN7YxcmHktCBDsGNp3SQg94B2u8k1QPlGcJxA39cHlwI7f9Rul28MNL4SzhOg1/74Ma3ouf57J9WvK/E8ZqzDgwxB2t6NHwI5u7TbDS8DKrWC8wQYLnx4DbD1K+12Wh2g6UA4TqDv64J8rRyBznFDy4s5llaO895vcz+QmBrzJXMqp50xkhN6AYwXAJKuKye7ThOo0OGBv4Fd07XbFZprJy5OE2hogH8qsxMzGYKleTs+yCACHEvr3wGO7dNuN7rSYcVlizmWDi0Htn+n3U5v6LzhEsHa3uO53uKywomZDMEynI1tjNT1c+JwiUC99ps+Bo7u0G5Lh0DltnCcQG1M5npg6xfabcmEbzoIjhNovRQc9wvYOTHIEGSCBZ8gw73a0HvHCbDPbPkSyNqg3a7TD6jWBY4T6FiS2bk3fajdTq4CtBgcn2VzKCdeZZCdewEK8gy9jPLl7NQLgAA9jcaTFul9dVRNhmJ6Rza+b0hl/o/zUpmD9TRmrPRNZW5yLRzJP2Pq/9u7E+iqqnOB418CZGBICFMgBIKEsQgIAg68IgIiQxFURFGZlBQQQSlSlz4R27rU6lJatYr1KdWlUsSHtXV8HRAnEApaQZACAlFkEHgkzCg5b3379lzOvTmEvCbh5J79/60V7kjuyd5n73vOd/b+don2Md6rjPQx0bbk7WPMVcYUsY9P37ttgcjhryL3dWpj/U5ipfgRUwe3iBT+PnI/tZFI/o1ip7i2pCdI6wky+PYxOsLDPYFsf4tIzXSxj0+5fL1Y5OCmyP3s/iINe4id4o5jdOXcLc9H7tfKEGkzWawUf64Un2+WPuZkW9LpsHqc5y5qU6teIFtmKwJTCFe0e9vvRQ4XRh7nDI0sO22j+HI5sEnkq1cij9OyI0kxbRRfLmYos15Ns/3L2edKo7dcNOeWtUOZ40bAbHtZ5NC2yMNmg0WyuoqV4tuSlokGYFRKg0huPxvFj5giyHDqEVPrHz55v900kZq1xUrxbenr10SKN0QeN7lIpNH5YqX4cjmyS+TL+ZHHNeuKtJ0iVoovFxNk8KZpsLiPiT+O+cK7qM0UkZRMsVPcPrPjf2IXtcm+WKwU35bMoja/jTzWkXXtpwe2abYiMIVw5WZgKLP/VYCYq4y2DmX2KZev/tszlPkSkQbdxV6eK41mKPMLkce2D2WOX31uPScA/n3MIyLO95GH7W4WqVVXrBQ/wm776yJF6yKPG/+HSOPeYi3viCkdpfrlM5GHNetErkxbK/44xjuSwbKV+MrqYzb8WqTkWORh28kiKVlip7hy0dXmNFWDyuou0nSA2MtzHHO8KJI/1F3URkfY2Sp+xFT8aCnr8s264spl4xMi3x+MPGx9g30LZ1UDBKYQnk5lx9siRWsj9xtdGDkJsJTjvQqgJwA6XU3VrBc5oLNV/NURvWLvsjrIEHelUVe1jA5lvikyBN5ann3GXGVcE7nf8HyRJn3EWt62dPx/TwYZaqRHRr9YK27EVMzUcsv7GO+IKV0FVVcRU/kFIqkNxVretqQrWu5dEblfv6tIs0vFWt5y0ZPFTe7KubUiF9hsVeo4Jq6PsTbIEHccs/m/PIvajBNJbyb28uwzGsTc/W7kfr22IrkjxFretqTfR3rs6z5v46I21YBtS1kgzJ2Km8BaaQJrm7+cvQG7zb/1nABMFEmpL/bylMuej0T2rYzczzpHJLuf2C3p5KqW7lBmPQGwOsgQd6Uxpo+ZSR/j2vxMZL9xV7VMayTW8u4T+z4R2bs8cj+jg0jOELGaWzY66sUdyaDf4ZqQ2Gr0Mb68f7vmCdIAuMq7VqR2c7GXp1x0yufejyP367Syc1GbGG4f8/3J1bndnIc2izmO+XVsuViZb9blKRdNBXN0V+S+tqO6rQPbKpsRmEJ4OpVdS05+OTe/TKzm/RL69sN/PZcs0t7yIENMYGrZyft69dXmEwDl/v0HNp58ruU1IulNxW4++0ztlnZfZSyrLbWzPSeDp1zcoJTSXBVWrmrpUzZujjaVe7mdK+d6Jfm0Jc0F2XKU2O1U39cWT8mK31/coJQ7hdrqIIOnbI7uPPmc5oLMaC9282lLmqbhrDFiNb++V9nexwTI9qMkJDq/A30d4WH7l7Nf09ZgnY3L2p9uf9E55HnXBLE11YxP2XTgy9m/j9ETAMuv6/iVS7NBIpkdxGp+5WJOAMYGsTXVv2xsnpIV5VMubW+yeMGJMvYXnT5t47L2MXzKRfO0Wbuq5emOY+hjfNuS5g7V/cZqPuXSoEckHQwCQWAKCS7J58v5hqA2pvrwG/3DFYDS+4vS5YNtPwHw22c0R1uDc4Pammokrlxq1BZpY+mKczHoY8rfxxRwAuBXNpqo2eZk8Kfqe5NTRNpMCmprqhH6mHIf35013vI0Dacom4yOkYVtrBdXLkk1LF9w4jTnSrbPoAgQgSmE6yoAX87+5aJJVHXZadvFl4vmULJ1yelS4sqGEwD/fUaTqFq7GlQZ5aJTJZoNDGprqm+56GNOAPzLhhOAf4krl7zRIunZQW1M9d1fdMpn8+FBbU014jfy0PY0Da74PkanUNPHlGpLZgp1y6C2phqJK5e0pkyhDhiBKSS4pNJfQvApF04AjPgyIIeSf9mQQ8kjbp+xPodSWX0MhxSlyiX3CnIo+ZWN5lDKuzrIjam+30tcFDhF30uaBt/9hRxK/mWjF5Bsz6EUFbfPML3Rvy2ZKdQpQW0NCEwh4XlPhHTFo4x2QW5N9SyX1MYirUYHuTXVt8sjh5J/2ZBDyb8tkUPJv1zIoVT2qCCULhsdqcoU6n/xlAs5lPz3F3IoedDHlKts8plC7duWNEUDOZRKl4tOoW7LFOqgEZhCYtOOxMWX80nJaSfva66KGp7HNvOWAzmU/MuGHEqn3mdI1OxfLuRQ8i8X7V/IoVS6bEwOpclBb031QR9z+uMY0jT47y+aQ4kp1KXLhhxKZfcxzKAo3ce0ui6yGBICRWAKiU3zveiJdIuRJDj0aj4scsDS8HyRDjOC3prqI6ODSO5wkTqtRLrPDXprqpeOt0Wm13R/mBxKXvkTI1Mbzxon0ow+JipnqEhWN5GGvUQ6zgp6a6oP3Vc0R5DenvsoJwBeHWZGcnic8wA5lLxaT4h8J+nqsLp6LiI04NKgZ6SfOfs/g96a6iOtcWT0WO1ckR6P08d46fGu9jFdfkEOJS8d0Vw3P5JbihxKJ2X3jYweq99ZpPM9QW8NNKbsOI4T9EZUJ8XFxZKZmSlFRUWSkZEhiaqkpER2794tTZo0keTkkMcfnRJym9hY74hB3duJercXdW8n6t1O1Lu9qHs7lYSk3v8/sZXE/SsBF0EpAAAAAAASEmf0AAAAAAAACASBKQAAAAAAAASCwBQAAAAAAAACQWAKAAAAAAAAgSAwBQAAAAAAgEAQmAIAAAAAAEAgCEwBAAAAAAAgEASmAAAAAAAAEAgCUwAAAAAAAAgEgSkAAAAAAAAEgsAUAAAAAAAAAlEzmI+tvhzHMbfFxcWSyEpKSuTAgQOSlpYmycnEH21BvduLurcT9W4v6t5O1LudqHd7Ufd2KglJvbsxFTfGUhYCU3F0B1AtWrQIelMAAAAAAAASOsaSmZlZ5nuSnPKEryyLTn7zzTdSr149SUpKkkSOTmpw7auvvpKMjIygNwdnCPVuL+reTtS7vah7O1HvdqLe7UXd26k4JPWuoSYNSuXk5Jx25BcjpuJogeXm5kpY6I6cyDsz/j3Uu72oeztR7/ai7u1EvduJercXdW+njBDU++lGSrkSd8IiAAAAAAAAEhqBKQAAAAAAAASCwFRIpaamypw5c8wt7EG924u6txP1bi/q3k7Uu52od3tR93ZKtbDeSX4OAAAAAACAQDBiCgAAAAAAAIEgMAUAAAAAAIBAEJgCAAAAAABAIAhMhdRvfvMbadWqlaSlpcl5550nK1asCHqTUInuv/9+6dmzp9SrV0+aNGkiI0aMkA0bNsS8p2/fvpKUlBTzM3ny5MC2GRV3zz33lKrTDh06RF8/evSoTJ06VRo2bCh169aVK6+8Unbt2hXoNqNyaH8eX/f6o/WtaO/h8N5778mwYcMkJyfH1OEf/vCHmNc1Lejdd98tzZo1k/T0dBkwYIBs3Lgx5j379u2T6667TjIyMqR+/fpy4403ysGDB8/wX4LKqvfvvvtObr/9duncubPUqVPHvGfs2LHyzTffnLaPeOCBBwL4a1CZbX78+PGl6nXQoEEx76HNh6/e/b7v9eehhx6Kvoc2H87zt6PlOJYvLCyUoUOHSu3atc3vmTVrlnz//feS6AhMhdDChQvlJz/5icnkv3r1aunatatceumlsnv37qA3DZVk6dKlptNavny5/PnPfzYHrgMHDpRDhw7FvK+goEB27NgR/XnwwQcD22ZUjk6dOsXU6QcffBB9bcaMGfKnP/1JFi1aZPYRPXG54oorAt1eVI6VK1fG1Lu2e3XVVVdF30N7T3zah+t3tl5c8qN1+uijj8q8efPk448/NoEK/X7XA1mXnqB+/vnnZh95/fXXzQnQj3/84zP4V6Ay6/3w4cPmWG727NnmdvHixeZE5rLLLiv13p///OcxfcC0adPO0F+AqmrzSgNR3npdsGBBzOu0+fDVu7e+9efZZ581gScNUnjR5sN3/jbjNMfyJ06cMEGp48ePy0cffSTPPfec/O53vzMXrRKersqHcOnVq5czderU6OMTJ044OTk5zv333x/odqHq7N69W1fXdJYuXRp97qKLLnJuueWWQLcLlWvOnDlO165dfV/bv3+/U6tWLWfRokXR59avX2/2i2XLlp3BrcSZoG07Pz/fKSkpMY9p7+GjbffVV1+NPta6btq0qfPQQw/FtPvU1FRnwYIF5vG6devM/1u5cmX0PW+99ZaTlJTkbN++/Qz/BaiMevezYsUK875t27ZFn8vLy3Pmzp17BrYQZ7Lux40b5wwfPvyU/4c2b0eb132gX79+Mc/R5sN3/ra/HMfyb775ppOcnOzs3Lkz+p4nn3zSycjIcI4dO+YkMkZMhYxGT1etWmWG97uSk5PN42XLlgW6bag6RUVF5rZBgwYxz7/44ovSqFEjOfvss+WOO+4wV16R2HTajg79bt26tblKqsN5lbZ7vfLibfs6za9ly5a0/RD28y+88ILccMMN5gqqi/Yeblu2bJGdO3fGtPHMzEwzXd9t43qrU3l69OgRfY++X48DdIQVwvOdr21f69pLp/Ho9I9u3bqZKT9hmNoBkXfffddM12nfvr1MmTJF9u7dG32NNh9+Oo3rjTfeMFM049Hmw3X+tqocx/J6q1O7s7Ozo+/RkdPFxcVm5GQiqxn0BqBy7dmzxwzx8+6sSh9/8cUXgW0Xqk5JSYnceuut0rt3b3NC6rr22mslLy/PBDE+++wzk6NCh//rNAAkJj0B1eG6enCqQ7Z/9rOfyQ9/+ENZu3atOWFNSUkpdaKibV9fQ3hoLor9+/eb3CMu2nv4ue3Y7/vdfU1v9QTWq2bNmuagl34gHHTaprbv0aNHm5xCrunTp0v37t1NXev0Dg1O6/fEI488Euj2omJ0Gp9O4znrrLNk8+bNcuedd8rgwYPNyWmNGjVo8xbQqVqakyg+NQNtPnznbzvLcSyvt37HAe5riYzAFJDgdK6yBia8uYaUN7+ARtY1WW7//v3NgU1+fn4AW4qK0oNRV5cuXUygSoMRL7/8skmEDDs888wzZl/QIJSL9g6En15JHzVqlEmC/+STT8a8prlFvd8PenIzadIkk2w3NTU1gK1FZbjmmmti+natW+3TdRSV9vEIP80vpSPkdUErL9p8OM/fbMZUvpDRaRx6BSU+e78+btq0aWDbhapx8803m0SXS5Yskdzc3DLfq0EMtWnTpjO0dahqekWlXbt2pk61fesULx1J40XbD5dt27bJX/7yF5k4cWKZ76O9h4/bjsv6ftfb+IVOdGqHrtpFPxCOoJT2AZo01zta6lR9gNb91q1bz9g2ourpNH491nf7dtp8uL3//vtm9PPpvvMVbT7xz9+aluNYXm/9jgPc1xIZgamQ0Wj5ueeeK3/9619jhgrq4wsuuCDQbUPl0aul2qm9+uqr8re//c0M8T6dTz/91NzqSAqEgy4HrSNitE613deqVSum7evBjOagou2Hx/z58820DV2RpSy09/DRfl4POr1tXHNKaB4Zt43rrR7Qap4Kl35H6HGAG6xE4galNMegBqY1p8zpaB+geYbip3khsX399dcmx5Tbt9Pmwz9CWo/vdAW/06HNJ/7527nlOJbX2zVr1sQEpN2LFT/4wQ8kkTGVL4R0aOe4ceNMIsRevXrJr371K7MM5YQJE4LeNFTi8M+XXnpJXnvtNTPv3J1TrIlwdUqXBiv09SFDhpgDWM05o8uP9unTxwz3RWK67bbbZNiwYWb6ni4fO2fOHDNCUnONaN1rYkxt/5pvQL+gdNlg/QI7//zzg950VAI90dDAlPbvmkPERXsPV7DZO8pNE57ryYa2aU1+qvko7r33Xmnbtq05oJ09e7aZ0jlixAjz/o4dO5qcNAUFBTJv3jwT0NCDYJ0O5J36icSpdw1AjBw5UlavXm2usGseUfc7X1/XC5Kab0gDlBdffLE5JtDH2gdcf/31kpWVFeBfhorUvf5oLskrr7zSBKW1r//pT38qbdq0McmOFW0+nH29e+Fh0aJF8vDDD5f6/7T5cJ6/ZZbjWH7gwIEmADVmzBh58MEHze+46667zO9O+CmcQS8LiKrx2GOPOS1btnRSUlKcXr16OcuXLw96k1CJtOn6/cyfP9+8XlhY6PTp08dp0KCBWUq8TZs2zqxZs5yioqKgNx0VcPXVVzvNmjUz7bp58+bm8aZNm6KvHzlyxLnpppucrKwsp3bt2s7ll1/u7NixI9BtRuV55513TDvfsGFDzPO09/BYsmSJb9+uS8arkpISZ/bs2U52drap6/79+5faH/bu3euMHj3aqVu3rlk+esKECc6BAwcC+otQ0XrfsmXLKb/z9f+pVatWOeedd56TmZnppKWlOR07dnTuu+8+5+jRo0H/aahA3R8+fNgZOHCg07hxY7OEfF5enlNQUBCzTLyizYevr1dPPfWUk56e7uzfv7/U/6fNh/P8rbzH8lu3bnUGDx5s9o9GjRo5M2fOdL777jsn0SXpP0EHxwAAAAAAAGAfckwBAAAAAAAgEASmAAAAAAAAEAgCUwAAAAAAAAgEgSkAAAAAAAAEgsAUAAAAAAAAAkFgCgAAAAAAAIEgMAUAAAAAAIBAEJgCAAAAAABAIAhMAQAAVJLx48fLiBEjAvv8MWPGyH333Vdlv3/dunWSm5srhw4dqrLPAAAAdklyHMcJeiMAAACqu6SkpDJfnzNnjsyYMUP00Kp+/fpypv3jH/+Qfv36ybZt26Ru3bpV9jkjR46Url27yuzZs6vsMwAAgD0ITAEAAJTDzp07o/cXLlwod999t2zYsCH6nAaDqjIgdDoTJ06UmjVryrx586r0c9544w0pKCiQwsJC83kAAAAVwVQ+AACAcmjatGn0JzMz04yg8j6nQan4qXx9+/aVadOmya233ipZWVmSnZ0tTz/9tJkKN2HCBKlXr560adNG3nrrrZjPWrt2rQwePNj8Tv0/OkVvz549p9y2EydOyCuvvCLDhg2Leb5Vq1Zy7733ytixY83vysvLkz/+8Y/y7bffyvDhw81zXbp0kb///e/R/6MjrvT36PbWqVNHOnXqJG+++Wb09UsuuUT27dsnS5curaSSBQAANiMwBQAAUIWee+45adSokaxYscIEqaZMmSJXXXWVXHjhhbJ69WoZOHCgCTwdPnzYvH///v1mSl63bt1MwOjtt9+WXbt2yahRo075GZ999pkUFRVJjx49Sr02d+5c6d27t3zyyScydOhQ81kaqLr++uvN5+fn55vH7iD6qVOnyrFjx+S9996TNWvWyC9/+cuYkWApKSlyzjnnyPvvv18l5QUAAOxCYAoAAKAKaT6mu+66S9q2bSt33HGHpKWlmUCVTofT53RK4N69e01wST3++OMmKKVJzDt06GDuP/vss7JkyRL55z//6fsZOsqpRo0a0qRJk1KvDRkyRCZNmhT9rOLiYunZs6cJjrVr105uv/12Wb9+vQl+KZ2ip4Gszp07S+vWreVHP/qR9OnTJ+Z35uTkmM8EAACoKAJTAAAAVUinyrk0eNSwYUMT9HHpVD21e/fuaBJzDUK5Oav0RwNUavPmzb6fceTIEUlNTfVN0O79fPezyvr86dOnm+l/GpzShO5uwMwrPT09OsILAACgIghMAQAAVKFatWrFPNbgkfc5N5hUUlJibg8ePGhyPH366acxPxs3biw1csmlI7A0UHT8+PEyP9/9rLI+X5Oof/nll2bKn07l0+mBjz32WMzv1BxTjRs3/jdKAwAAIBaBKQAAgGqke/fu8vnnn5vE5ZoY3fujycj9aM4ntW7dukrZhhYtWsjkyZNl8eLFMnPmTJOwPT45u04xBAAAqCgCUwAAANWIJh/XEUmjR4+WlStXmul777zzjlnFT1ff86OjlzSg9cEHH1T483UFQf28LVu2mOToOq2wY8eO0de3bt0q27dvlwEDBlT4swAAAAhMAQAAVCOaWPzDDz80QShdsU/zQWmwqH79+pKcfOpDN52C9+KLL1b48/VzNTimwahBgwaZBOlPPPFE9PUFCxaY7crLy6vwZwEAACQ57trAAAAASFiaAL19+/aycOFCueCCC6rkMzSHla7u99JLL5nk6AAAABXFiCkAAIAQ0JXynn/+edmzZ0+VfUZhYaHceeedBKUAAEClYcQUAAAAAAAAAsGIKQAAAAAAAASCwBQAAAAAAAACQWAKAAAAAAAAgSAwBQAAAAAAgEAQmAIAAAAAAEAgCEwBAAAAAAAgEASmAAAAAAAAEAgCUwAAAAAAAAgEgSkAAAAAAAAEgsAUAAAAAAAAJAj/B4FaGZUw/5tgAAAAAElFTkSuQmCC",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Hard reset: 14 spikes, 70.00 Hz\n",
- "Soft reset: 17 spikes, 85.00 Hz\n",
- "\n",
- "Soft reset fires 21.4% more frequently\n"
- ]
- }
- ],
- "source": [
- "# Plot comparison\n",
- "times_plot = times.to_decimal(u.ms)\n",
- "\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Hard reset\n",
- "axes[0].plot(times_plot, voltages_hard.to_decimal(u.mV), linewidth=2, label='Hard Reset')\n",
- "axes[0].axhline(y=-50, color='r', linestyle='--', alpha=0.5, label='Threshold')\n",
- "axes[0].set_ylabel('Voltage (mV)')\n",
- "axes[0].set_title('Hard Reset: V ← V_reset (discards extra charge)')\n",
- "axes[0].legend()\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Soft reset\n",
- "axes[1].plot(times_plot, voltages_soft.to_decimal(u.mV), linewidth=2, label='Soft Reset', color='orange')\n",
- "axes[1].axhline(y=-50, color='r', linestyle='--', alpha=0.5, label='Threshold')\n",
- "axes[1].set_ylabel('Voltage (mV)')\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_title('Soft Reset: V ← V - V_th (preserves extra charge)')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Compare firing rates\n",
- "n_spikes_hard = int(u.math.sum(spikes_hard > 0))\n",
- "n_spikes_soft = int(u.math.sum(spikes_soft > 0))\n",
- "rate_hard = n_spikes_hard / (duration.to_decimal(u.second))\n",
- "rate_soft = n_spikes_soft / (duration.to_decimal(u.second))\n",
- "\n",
- "print(f\"Hard reset: {n_spikes_hard} spikes, {rate_hard:.2f} Hz\")\n",
- "print(f\"Soft reset: {n_spikes_soft} spikes, {rate_soft:.2f} Hz\")\n",
- "print(f\"\\nSoft reset fires {(rate_soft/rate_hard - 1)*100:.1f}% more frequently\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Population of LIF Neurons\n",
- "\n",
- "Now let's create a population of neurons with heterogeneous properties."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "d:\\soft\\Anaconda3\\envs\\Ecosystem-py\\Lib\\site-packages\\braintools\\surrogate.py:72: UserWarning: Explicitly requested dtype float64 requested in asarray is not available, and will be truncated to dtype float32. To enable more dtypes, set the jax_enable_x64 configuration option or the JAX_ENABLE_X64 shell environment variable. See https://github.com/jax-ml/jax#current-gotchas for more.\n",
- " z = jnp.asarray(x >= 0, dtype=x.dtype)\n"
- ]
- }
- ],
- "source": [
- "# Create population with varied initial conditions\n",
- "pop_size = 50\n",
- "neuron_pop = brainpy.state.LIF(\n",
- " pop_size,\n",
- " V_rest=-65. * u.mV,\n",
- " V_th=-50. * u.mV,\n",
- " V_reset=-65. * u.mV,\n",
- " tau=10. * u.ms,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV), # Random initial V\n",
- " spk_reset='hard'\n",
- ")\n",
- "\n",
- "# Initialize\n",
- "brainstate.nn.init_all_states(neuron_pop)\n",
- "\n",
- "# Simulate with step current\n",
- "duration = 300. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "spike_history = []\n",
- "for t in times:\n",
- " # Step current: 0 → 2.5 nA at t=50ms\n",
- " I = 20. * u.mA if t > 50. *u.ms else 0 * u.mA\n",
- " neuron_pop(I)\n",
- " spike_history.append(neuron_pop.get_spike())\n",
- "\n",
- "spike_history = u.math.asarray(spike_history)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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XBFOrdPBnGK+B/q8evrfPvvsEyYg1smQ9f/v/xg6IKHbRWG+qpU5dW8oejqcHoWl2+WXvvSl8EJY17O+6fdCt2EdwNMrDer3Tydt1jnKCnQb06/Tj+v3SwcB9AW+/szoC20dGB3udqfrTI/U+M53vhN69et1HemLdP0+6REterSWhfluiv150NMwdbvUo/50u9HtVY8M08dY0RxO+jV6CpbO5aWPW5jQWun3WR9X9xV6ZJsO7Ol2rYPi+rU6oFUYsC3QQVQdfNJ9m05MX7hKpO7T9PH0Vo+qKXbwZ6grvCmdC21lJ/0fKV0mPeW0MEA3mB45dPrpp4eJ0fXCE3pff4b1+6CDsnrEq56WWriAgk4YrhcHuP/++8O2qetX51fTbV339zfffPOo/H4ZLt0GdX+ovxf095BuS/oHED0yS1sGH1mrP+NK94MAgFEQAQAq0iuvvKKHYEQzZswY1tcvWrQouvDCC6MtttgimjBhQrTqqqtGu+22W3Trrbcu87VXX311eGy9veWWW6KPfexj0SqrrBKtvvrq0cEHHxzNnTt3yOe47LLLog033DAaN25cNG3atOiMM86Ienp6wmPpc/U3a9as8HHt6O+mm26Ktt1222jixInRlClTogMOOCB66aWXlvv1f/jDH/qWTz/f/1fj8v4fddVVV4X/T59H3/R9/dhgDzzwQHiMM888c7nrQJ9nRZ577rnwdeuuu260ZMmSFX7tqaeeGr42m832fayzszM6/fTTo0022SSsu5qammjrrbfu+/4W6HrR75d+39LpdN86/LAO9cgjj/R9/04++eQhv2Z5jzF//vzosMMOi9ZYY41ozJgxy32ee++9N3xuxx13jIpV2CZnz5693K+ZOXNm+Jorr7wy3Nfv9U9+8pNo8803j6qqqqLGxsaoubk5yuVyYXvsv610dHREZ511VvTxj388dIwfPz5ac801o7333ju64447lnmuFW136r333ovOP//8aLvttosmTZoUvk7X/3777Rdde+214eexYPCyDFdhfRxxxBHD+vo4fh7U448/HpZZ9yGF9qEec7DW1tbwteedd96Aj+v2fdRRR4XnzGQy0dixY8Nj77DDDuF7qN/L5dF1s+uuu4bv8eTJk8Ny3XPPPVExCt//Fb0V+tZee+3wM7gy6+HDlmOo/evixYujTTfddMhtrUC7P/vZz4bv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AAAARh2DUgAAAAAAABh1FTcoNWHCBDnzzDPDLeAN2ze8YxuHZ2zf8IztG96xjcOzCSXcvivu6nsAAAAAAAAov4o7UgoAAAAAAADlx6AUAAAAAAAARh2DUgAAAAAAABh1FTUoddlll8k666wjVVVV0tTUJE888US5FwkYkbPOOktSqdSAt0022aTv8x988IEcddRRsvrqq8vkyZNl5syZ0t7eXtZlBpbn4Ycfls9+9rOy5pprhm35lltuGfB5nfrwjDPOkDXWWENWWWUVmT59urzwwgsDvubdd9+Vr3zlK1JdXS21tbXS3NwsCxYsGOUSoPjt++CDD15mf7733nsP+Bq2b1g1e/Zs+djHPiarrrqq1NfXy3777SfPP//8gK8Zzr9JXn/9dfn0pz8tEydODI9z4oknyuLFi0e5Bih++959992X2YcfeeSRA76G7RtW/fjHP5Ytt9wy/PtC33baaSe54447Rn3/XTGDUr/5zW/khBNOCDPG//Wvf5WtttpKZsyYIblcrtyLBozI5ptvLnPnzu17e+SRR/o+d/zxx8ttt90mN954ozz00EPy1ltvyf7771/W5QWWp7u7O+yT9Q8HQzn//PPlhz/8ofzkJz+R1tZWmTRpUth/6y/KAn3B/uyzz8o999wjt99+exgIOPzww0exAhjZ9q10EKr//vy6664b8Hm2b1il/8bQFyyPP/542D4XLVoke+21V9juh/tvkt7e3vCCpqenRx599FH5xS9+Iddcc034YwRgfftWhx122IB9uP67pYDtG5attdZacu6558pTTz0lTz75pOyxxx6y7777hn9zjOr+O6oQO+ywQ3TUUUf13e/t7Y3WXHPNaPbs2WVdLmAkzjzzzGirrbYa8nP5fD4aN25cdOONN/Z97N///rdeZTN67LHHRnEpgeLpdnrzzTf33V+yZEnU2NgYXXDBBQO28QkTJkTXXXdduP+vf/0r/H9/+ctf+r7mjjvuiFKpVPTmm2+OcgEw/O1bzZo1K9p3332X+/+wfSNJcrlc2F4feuihYf+b5I9//GOUTqejtra2vq/58Y9/HFVXV0cLFy4sQwUwvO1b7bbbbtGxxx673P+H7RtJU1dXF/385z8f1f13RRwppSN3Ovqnp3wUpNPpcP+xxx4r67IBI6WnL+npIOutt174K7oeOql0W9e/5PTf3vXUvmnTprG9I3FeeeUVaWtrG7A919TUhFOwC9uz3uopTdtvv33f1+jX635ej6wCrHvwwQfDIe8bb7yxfOMb35B33nmn73Ns30iSzs7OcLvaaqsN+98kervFFltIQ0ND39fo0bBdXV19f60HLG7fBb/61a9kypQp8tGPflROPvlkee+99/o+x/aNpOjt7ZXrr78+HAmop/GN5v57rFSAt99+O3yT+3+zlN5/7rnnyrZcwEjpC3I9NFJfwOhhwmeffbbsuuuu8swzz4QX8OPHjw8vYgZv7/o5IEkK2+xQ++/C5/RWX9D3N3bs2PCPRrZ5WKen7umh8Ouuu6689NJLcsopp8g+++wT/qE3ZswYtm8kxpIlS+S4446TnXfeObw4V8P5N4neDrWPL3wOsLp9qy9/+cuy9tprhz8U/+Mf/5CTTjopzDv1u9/9Lnye7RvW/fOf/wyDUDoths4bdfPNN8tmm20mTz/99KjtvytiUArwRl+wFOjkdDpIpb8Qb7jhhjARNAAgGQ466KC+9/WvjbpPX3/99cPRU3vuuWdZlw0ohs69o38c6z/HJeB9++4/v5/uw/WiLLrv1j8y6L4csG7jjTcOA1B6JOBNN90ks2bNCvNHjaaKOH1PD6fUvzYOnile7zc2NpZtuYC46Aj2RhttJC+++GLYpvWU1Xw+P+Br2N6RRIVtdkX7b70dfNEKveqHXrGMbR5Jo6dk679bdH+u2L6RBEcffXSYhP+BBx4IE+cWDOffJHo71D6+8DnA6vY9FP1Dseq/D2f7hmXjx4+XDTbYQLbbbrtwxUm9OMsll1wyqvvvdKV8o/WbfN999w04BFPv66FqQNLppcH1LzL61xnd1seNGzdge9fDiHXOKbZ3JI2e0qS/1Ppvz3qeus6lU9ie9VZ/Yeq57wX3339/2M8X/nEIJMUbb7wR5pTS/bli+4ZlOn+/vmDX0z10u9R9dn/D+TeJ3urpI/0HX/VKZ3p5cj2FBLC6fQ9FjzhR/ffhbN9IkiVLlsjChQtHd/8d82TtZl1//fXhak3XXHNNuJLN4YcfHtXW1g6YKR5Iiv/5n/+JHnzwweiVV16J/vznP0fTp0+PpkyZEq4Koo488sho2rRp0f333x89+eST0U477RTeAIvmz58f/e1vfwtv+mvpoosuCu+/9tpr4fPnnntu2F/feuut0T/+8Y9wpbJ11103ev/99/seY++994622WabqLW1NXrkkUeiDTfcMPrSl75Uxirgw7dv/dy3v/3tcBUb3Z/fe++90bbbbhu23w8++KDvMdi+YdU3vvGNqKamJvybZO7cuX1v7733Xt/XfNi/SRYvXhx99KMfjfbaa6/o6aefju68884ok8lEJ598cpmqgOFt3y+++GL0ve99L2zXug/Xf6est9560cc//vG+x2D7hmXf/e53w9UkdfvVf2Prfb2679133z2q+++KGZRSP/rRj8I3dfz48dEOO+wQPf744+VeJGBEDjzwwGiNNdYI2/JHPvKRcF9/MRboi/VvfvOb4ZKeEydOjD7/+c+HX6KARQ888EB4sT74bdasWeHzS5YsiU4//fSooaEh/HFhzz33jJ5//vkBj/HOO++EF+mTJ08Ol6E95JBDwgt+wPL2rS9s9B9y+g84vezy2muvHR122GHL/MGM7RtWDbVt69vVV19d1L9JXn311WifffaJVllllfBHNv3j26JFi8pQBAx/+3799dfDANRqq60W/n2ywQYbRCeeeGLU2dk54HHYvmHVoYceGv7toa8p9d8i+m/swoDUaO6/U/qfeA/4AgAAAAAAAFasIuaUAgAAAAAAgC0MSgEAAAAAAGDUMSgFAAAAAACAUcegFAAAAAAAAEYdg1IAAAAAAAAYdQxKAQAAAAAAYNQxKAUAAAAAAIBRx6AUAAAAAAAARh2DUgAAAP0cfPDBss4664g1N9xwg6y22mqyYMGCUXvORYsWydSpU+Xyyy8ftecEAACVg0EpAADgXiqVGtbbgw8+KBb19vbKmWeeKd/61rdk8uTJo/a848aNkxNOOEGy2ax88MEHo/a8AACgMqSiKIrKvRAAAACl9Mtf/nLA/WuvvVbuuece+b//+78BH//kJz8ZjkZasmSJTJgwQay45ZZbZP/995c5c+bIRz7ykVF97nw+Lw0NDfLjH/9YDj300FF9bgAA4BuDUgAAoOIcffTRctlll0lS/hm07777yrvvvit/+tOfyvL8n/3sZ6Wzs1Mefvjhsjw/AADwidP3AAAAVjCn1KuvvhpO7bvwwgvDQNZ6660nEydOlL322iscuaQDW9///vdlrbXWklVWWaVvAGmwO+64Q3bddVeZNGmSrLrqqvLpT39ann322Q9dHj1t7s4775Tp06cv8zldLh1gu/HGG2WzzTYLz7/TTjvJP//5z/D5K664QjbYYAOpqqqS3XffPbT098ILL8jMmTOlsbExfI02HHTQQWEAavARZI888siQXQAAACM1dsT/JwAAQAX51a9+JT09PWFeJx2cOf/88+WAAw6QPfbYI8xFddJJJ8mLL74oP/rRj+Tb3/62XHXVVX3/r54mOGvWLJkxY4acd9558t5774XT4XbZZRf529/+tsKJ1Z966qnwvNtuu+2Qn9ejp37/+9/LUUcdFe7Pnj1bPvOZz8h3vvOdMEH5N7/5Teno6AjLq6ff3X///eHr9DF1eRYuXBiadGDqzTfflNtvvz2csldTU9P3HNttt10YfHv00UfDYwMAAMSBQSkAAIBh0AEbPbKoMFijk4/rAND7778vTz75pIwdu/SfVfPmzQsDWDropPNS6dXyjjnmGPn6178uP/3pT/seTwepNt54YznnnHMGfHyw5557Ltyuu+66Q37++eefD19TGNiqq6uTI444QlpaWuQ///lPOCqr//Lq0VL6tf/617/klVdeCUdZfeELX+h7vDPOOGOZ59Cjw5T+PwxKAQCAuHD6HgAAwDB88YtfHHD0UFNTU7j96le/2jcgVfi4HoWkg1hKJ1TXI4++9KUvydtvv933NmbMmPC1DzzwwAqf95133ukbbBrKnnvuOeBIq8Jy6Wl5hQGp/h9/+eWXw22h5a677gpHbq1I4bl1uQEAAOLCkVIAAADDMG3atAH3C4M6U6dOHfLjesqc0qOrlJ7mN5Tq6uphPf/yJmUf6XLpkVcnnHCCXHTRReHILp3v6nOf+1wYZOs/+Nb/uXUOKwAAgLgwKAUAADAMemRTMR8vDOQsWbKkb14pnbdpsP5HWQ1l9dVX7xtM0onI41ou9b//+79hYvdbb71V7r777nCaoZ7i9/jjjw94rsJA1pQpU1a4rAAAAMVgUAoAAKCE1l9//XBbX18/5BX0Pswmm2wSbnX+py222CL25dPH1LfTTjstTGS+8847y09+8pMwJ1WBPrfadNNNY39+AABQuZhTCgAAoIT0Cnd6ip5OaL5o0aJlPq8To6+IXvlu/PjxYTL1OHV1dcnixYsHfEwHp9LpdLgi3+ArAOqpezvttFOsywAAACobR0oBAACUkA5I6ZX4vva1r8m2224rBx10kGQyGXn99dflD3/4Qzgy6dJLL13u/19VVSV77bWX3HvvvfK9730vtuW6//775eijjw4TuG+00UZhgEpPMdTT/nSS9P50snZdzsKphAAAAHFgUAoAAKDEvvzlL8uaa64p5557rlxwwQXhSKSPfOQjYXLxQw455EP//0MPPTQMFM2ZM2eZCcxHaquttgpHcd12223hSoETJ04MH7vjjjtkxx137Pu6zs7OMN/U5ZdfHsvzAgAAFKSi5V3KBQAAACb09vbKZpttJgcccIB8//vfH9Xnvvjii+X888+Xl156SVZZZZVRfW4AAOAbc0oBAAAYp6fU6al7l112mSxYsGDUnlfnwLrooovCJOgMSAEAgLhxpBQAAAAAAABGHUdKAQAAAAAAYNQxKAUAAAAAAIBRx6AUAAAAAAAARh2DUgAAAAAAABh1DEoBAAAAAABg1DEoBQAAAAAAgFHHoBQAAAAAAABGHYNSAAAAAAAAGHUMSgEAAAAAAGDUMSgFAAAAAACAUcegFAAAAAAAAGS0/X86gSLIAZWQrAAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAs9RJREFUeJztnQd4W9X5/19ry3s7duI4JIwQwh6BQtk/KNCWVSijJYyyoWUVCmVDmzJKGWUUWmbZ/7IplA1lrzKSkJDp2Ikdx/Eesub/eY905SuPRJKvpHPu/X6eR4ksy9KV7jn3nPOe7/t98yKRSIQAAAAAAAAAAAAAAMgitmy+GQAAAAAAAAAAAAAADIJSAAAAAAAAAAAAACDrICgFAAAAAAAAAAAAALIOglIAAAAAAAAAAAAAIOsgKAUAAAAAAAAAAAAAsg6CUgAAAAAAAAAAAAAg6yAoBQAAAAAAAAAAAACyDoJSAAAAAAAAAAAAACDrICgFAAAAAAAAAAAAALIOglIAAAAAUJITTzyR8vLyaOXKlUq/RybYe++9xXGnAn9G/hv+zAAAAAAA2QBBKQAAAMCiaEEI/c3lclF9fT0dd9xx9M0335DZefDBB8Xn5v9VQAuSjXc777zzyExowTXtZrPZqLS0lHbffXf629/+RuFweMLvMW3aNHEDAAAAQPZx5OA9AQAAACARM2bMoF/84hfifl9fH3388cf0+OOP0zPPPENvvvmmCABYlXnz5tHvfvc7mjx5MsnEKaecQlOmTBn1+K677ir+f/jhh2lgYCCl1+TP+N1331FJSQnJxoUXXkiFhYUUCoWosbFRtM0zzjiDvvzySxGcAgAAAICaICgFAAAAWJxNN92Urr766oTHLr/8cvrDH/5Av//97+mdd94hq1JbWytusvGrX/0qHoAai6lTp6b8mk6nk2bOnEkyctFFF9GkSZPiP1955ZW03Xbb0X333UeXXHIJTZ8+PafHBwAAAID0QPoeAAAAAEZx7rnniv8/++yz+GPBYJBuueUW2nbbbcnr9QpFzT777EMvvvjiBtPinn/+edpll10oPz+fqqqq6OSTT6a1a9em5GfEv+NUro3h9/vpjjvuoAMPPFCkIbrdbqqurqYjjjiC/ve//yU8l9/rpJNOEvf5f32aWDKeUg888ADNmTNHKHj4xvfHSgPkoB6/Bgf+Pv/8c/q///s/KioqEt/f4YcfnhG/qrE8pfTnhM8ZK+D4OLTUtfHOgfZagUBAfAZ+Pn+vm2++Od11111jvn97ezuddtpp4rvn877zzjvTs88+a1i6JAdS99prL4pEIkItpeeLL76gc845h2bPni2+Y26rW2+9Nf3pT38Sn0FD+7ysvOKb/vyPDNK+99579JOf/IQqKyvFZ99ss81E4DZVNRoAAAAAEoFSCgAAAADjogU2ePH/s5/9TASYOBhx9tlnU39/Pz355JP005/+VASrzj///FF//69//Yv+85//iL/df//9RWogB3P++9//0qeffkplZWWGHm9HR4fwVfrhD39IBx98sHj95cuX0wsvvECvvPKKCC5wgIQ57LDDqKurS3ymQw89VChvkuXXv/61CH5xyhun0mmflYNbHPy67bbbRv0NB/huvPFGEcg7/fTTxfOee+45+vbbb2n+/Pnk8XgoGzz99NP02muv0Y9//GM666yzqKenJ6m/O/bYY8U5O+igg8hut9NTTz0l2gErrE499dT48zgFlANGCxcupB/84Ae05557UnNzMx1zzDEiWGg0DkfidJbVUxx04/flNsCBIw4MXnrppeIc8Hli2JvqqquuoltvvVX8rPfj0gdA7777bvE5+fkcmOJAGwcXWUn49ttvixt7sQEAAAAgDSIAAAAAsCQrVqyI8FTgwAMPHPW7K6+8Uvxun332ET8/9NBD4ue99torMjQ0FH9eY2NjpLKyMuJwOCLLli2LP/7AAw+I5/Pt1VdfTXjt3/3ud+Lxc845Z9SxzJ07d8xj1d5bDz+XH+e/1fD5fJHm5uZRfz9//vxIYWFhZP/99094XDtO/n8sxnqPd999Vzy25ZZbRrq6uuKPd3R0RDbffHPxu/feey/++Ntvvx3/Lp544omE1//lL38pHn/88cfHfP/xjueUU06JXHXVVQm3efPmxZ/H39XIaZ72WW02W+T1118f9drjnQPttebMmRPp7u6OP75o0SJx3rfYYouE519++eXi+aeddlrC42+88Ub8exjv+x6J9t4tLS0Jjy9ZsiRSUFAQcTqdkdWrVyf8jttkMBhMeCwcDkdOPvlk8Vrvv/9+wu8aGhrEbSwWLFggPuO2224baW9vT/gdf9/8ejfffHNSnwUAAAAAo0H6HgAAAGBxli5dKtKV+Pbb3/5WKEyuvfZaodxhNQjz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m266iU4//XTaY4896Je//KUwIecADgequCNyFTyj4cp7ixfzHsIw33//PTU0NMRNzzkw9eabb8aDUBxg4ip8Z5555riv63a7xW0kfCGRbRIIwETh/ilb22YPFfa90PxkZDq2XJbzZpPqHRrKSVaau3wJx53L8yZju84l03QeEuxPJvP3wkbMvMBh6ssLyG7nCbU1marr/82dPtp5mk3atq3v/1a/bstGQ0Vh/H5zp7z9Pxp8yhNjneZLaOX+rx//m7vkPW+Mds6065bMx5oLcnndbtCN/02Sj/+sJtMUd1PK8snpsG7/V4FMtqW0XvnBBx+ko48+Wvg7/ehHPxKPccU9NhznABB3xLfeesvoY6Xzzz+fPv74YxEUW7p0KT322GN077330tlnny1+z+973nnn0fXXXy9M0b/99ls64YQTqK6ujg477DDDjwcApeAU2wULyMGBXcnytXlBinKwo00eV0leFhom5/LCkzsN2U2zOSCt7bhPldz7ItPoTZ5lP2+J5tRyG+lajcllXuFRqEI74kIMvDHFWN3kWD//kf28wZxaXriwCauOVGhH7X1+Ye7PYB5pbdIKSjU3N9O+++4r7msKI5/PF5d1/eIXv6BHHnmEjGbnnXemZ599lh5//HGaPXs2XXfddXTrrbfS8ccfH3/OxRdfTOeeey6ddtpp4vl9fX306quvkscjn8kjAFklGKS8//f/yPPii+K+rCaHVq28o+KkNKEcNCalUuFx2mlScXTca1IpuKFTClgRfT+Svf/rg+ZYTMiF026julLvqPFVRljJoWH5TSnd59ePrzKivz5Z/bzJBqe/aRtTfJ5YjSQr2NwEE0rfq6ioEMEeprCwkIqLi0VlPD2dncOmZUby4x//WNzGg9VS1157rbgBANRAv2i2+qCk//xchU9mMJmQP8DR2uOj9f1+6hsKUqFbruIGGljcDFOvkMItMZho7fMmI3xOOHWvxxek7oEAlUhaNEM/zll9U4oVbpzRyDEE2TcT9EEzq583GeGxdEV7v1Ah8RygslDOCryrOnSb0hhHLE1aSimuevfZZ5/Ff95nn32EYumDDz6g//73v3T77bfTtttua+RxAgBMDBQ3wxR5nFReEDUSlH1Sqk0mXHZbXJUD5EEfKJQ5FRSLm2G8LjtVF7mVUEpox8e78rUl6P9yb3D0q7EpZfHx3+2wU11J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rg8JgJS4+uqrKS8vL+E2c+bM+O99Ph+dffbZVFFRQYWFhXTkkUfS2rVrc3rMAIzFe++9Rz/5yU+orq5OtOPnnnsu4fdsiXjllVdSbW0teb1e2n///WnJkiUJz+no6KDjjz+eiouLqbS0lE455RTq6+vL8icBILW2feKJJ466jv/oRz9KeA7aNpCNefPm0c4770xFRUVUXV1Nhx12GC1evDjhOcnMQVatWkWHHHII5efni9f57W9/S8FgMMufBoDU2vbee+896rp9xhlnJDwHbRvIxt13303bbLONmEvwbbfddqNXXnkl69dsBKV0PPnkk3TBBRcIV/kvv/yStt12WzrwwAOpra0t14cGQEpstdVW1NLSEr+9//778d+df/759OKLL9LTTz9N7777Lq1Zs4aOOOKInB4vAGPR398vrsO8WTAWN954I91+++10zz330CeffEIFBQXims0DqAYv2hcsWECvv/46vfTSSyIYcNppp2XxUwCQettmOAilv44//vjjCb9H2waywXMKXrx8/PHHol0GAgE64IADRHtPdg4SCoXE4sbv99OHH35IDz30ED344INiAwIAmds2c+qppyZct3meooG2DWRkypQp9Kc//Ym++OIL+vzzz2nfffelQw89VMwvsnrN5up7IMouu+wSOfvss+M/h0KhSF1dXWTevHk5PS4AUuGqq66KbLvttmP+rqurK+J0OiNPP/10/LHvvvuOK3BGPvrooyweJQCpwW302Wefjf8cDocjkyZNitx0000J7dvtdkcef/xx8fPChQvF33322Wfx57zyyiuRvLy8yOrVq7P8CQBIrm0zc+fOjRx66KHj/g3aNlCBtrY20U7ffffdpOcg//73vyM2my3S2toaf87dd98dKS4ujgwNDeXgUwCw8bbN7LXXXpHf/OY34/4N2jZQhbKyssjf//73rF6zoZSKwdE9jhBy+oeGzWYTP3/00Uc5PTYAUoVTmDgtZPr06WI3nWWVDLdx3t3Rt3NO7Zs6dSraOVCKFStWUGtra0JbLikpEWnXWlvm/zmtaaeddoo/h5/P13ZWVgEgM++8846QwW+xxRZ05pln0vr16+O/Q9sGKtDd3S3+Ly8vT3oOwv9vvfXWVFNTE38OK2B7enriO/cAyNa2NR599FGqrKyk2bNn06WXXkoDAwPx36FtA9kJhUL0xBNPCAUgp/Fl85rtMPizKEt7e7s4EfovlOGfFy1alLPjAiBVeFHOskleyLB0+JprrqEf/vCHNH/+fLGId7lcYjEzsp3z7wBQBa29jnXN1n7H//OiXo/D4RCTSLR3IDOcusfy+E022YSWLVtGl112GR100EFi8me329G2gfSEw2E677zzaPfddxcLdCaZOQj/P9Z1XfsdADK2bea4446jhoYGsSn8zTff0CWXXCJ8p5555hnxe7RtICvffvutCEKx/QX7Rj377LM0a9Ys+uqrr7J2zUZQCgCTwQsXDTau4yAVD5JPPfWUMIMGAAAgN8ccc0z8Pu9A8rV8xowZQj2133775fTYAEgG9t/hzTC9pyUAZm7bek8/vm5zERa+XvPGAl+/AZCVLbbYQgSgWAH4//7f/6O5c+cK/6hsgvS9GCy15N3HkW7y/POkSZNydlwATBSObm+++ea0dOlS0ZY5VbWrqyvhOWjnQDW09rqhazb/P7JQBVcD4aplaO9AJTgVm+cpfB1n0LaBzJxzzjnCfP/tt98WJroaycxB+P+xruva7wCQsW2PBW8KM/rrNto2kBGXy0Wbbrop7bjjjqLSJBdiue2227J6zUZQSncy+ES8+eabCfJM/pnlbACoCpcI510a3rHhNu50OhPaOUuL2XMK7RyoBKc18WCnb8ucv85+Olpb5v95IOWceI233npLXNu1ySIAKtDc3Cw8pfg6zqBtAxlh335etHPqB7dHvk7rSWYOwv9zKok+6MrVzrhUOaeTACBj2x4LVp4w+us22jZQgXA4TENDQ9m9Zhts1q40TzzxhKjc9OCDD4rKNqeddlqktLQ0wU0eANm58MILI++8805kxYoVkQ8++CCy//77RyorK0WlEOaMM86ITJ06NfLWW29FPv/888huu+0mbgDIRm9vb+R///ufuPFwdcstt4j7jY2N4vd/+tOfxDX6+eefj3zzzTeiWtkmm2wSGRwcjL/Gj370o8j2228f+eSTTyLvv/9+ZLPNNosce+yxOfxUAGy4bfPvLrroIlHZhq/jb7zxRmSHHXYQbdfn88VfA20byMaZZ54ZKSkpEXOQlpaW+G1gYCD+nI3NQYLBYGT27NmRAw44IPLVV19FXn311UhVVVXk0ksvzdGnAmDjbXvp0qWRa6+9VrRpvm7zvGT69OmRPffcM/4aaNtARn73u9+JKpLcbnku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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Raster plot\n",
- "t_indices, n_indices = u.math.where(spike_history > 0)\n",
- "spike_times = times[t_indices].to_decimal(u.ms)\n",
- "\n",
- "time_max = float(duration.to_decimal(u.ms))\n",
- "xticks = np.arange(0, time_max + 1, 50)\n",
- "\n",
- "plt.figure(figsize=(12, 6))\n",
- "plt.scatter(spike_times, n_indices, s=2, c='black', alpha=0.6)\n",
- "plt.axvline(x=50, color='r', linestyle='--', alpha=0.5, label='Input onset')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Neuron Index', fontsize=12)\n",
- "plt.title('Population Activity Raster Plot (50 LIF Neurons)', fontsize=14)\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.xlim(0, time_max)\n",
- "plt.xticks(xticks)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Population firing rate over time\n",
- "bin_size = 10 * u.ms\n",
- "bins = u.math.arange(0*u.ms, duration, bin_size)\n",
- "pop_rate, _ = u.math.histogram(times[t_indices], bins=bins.to_decimal(u.ms))\n",
- "pop_rate = pop_rate / (pop_size * bin_size.to_decimal(u.second)) # Convert to Hz\n",
- "\n",
- "plt.figure(figsize=(12, 4))\n",
- "bin_centers = bins[:-1] + bin_size/2\n",
- "plt.plot(bin_centers.to_decimal(u.ms), pop_rate, linewidth=2)\n",
- "plt.axvline(x=50, color='r', linestyle='--', alpha=0.5, label='Input onset')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Population Rate (Hz)', fontsize=12)\n",
- "plt.title('Population Firing Rate', fontsize=14)\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.xlim(0, time_max)\n",
- "plt.xticks(xticks)\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Effects of Different Parameters\n",
- "\n",
- "Let's explore how changing parameters affects neuron behavior."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Observation: Larger τ → slower integration, lower firing rate\n"
- ]
- }
- ],
- "source": [
- "# Different time constants\n",
- "taus = [5*u.ms, 10*u.ms, 20*u.ms]\n",
- "neurons = [brainpy.state.LIF(1, V_rest=-65.*u.mV, V_th=-50.*u.mV,\n",
- " V_reset=-65.*u.mV, tau=tau, spk_reset='hard') \n",
- " for tau in taus]\n",
- "\n",
- "# Initialize all\n",
- "for n in neurons:\n",
- " brainstate.nn.init_all_states(n)\n",
- "\n",
- "# Simulate\n",
- "duration = 150. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "I_input = 20.0 * u.mA\n",
- "\n",
- "results = {}\n",
- "for tau, neuron in zip(taus, neurons):\n",
- " voltages = []\n",
- " for t in times:\n",
- " neuron(I_input)\n",
- " voltages.append(neuron.V.value)\n",
- " results[tau] = u.math.asarray(voltages)\n",
- "\n",
- "# Plot\n",
- "plt.figure(figsize=(12, 5))\n",
- "for tau, voltages in results.items():\n",
- " plt.plot(times.to_decimal(u.ms), voltages.to_decimal(u.mV), \n",
- " linewidth=2, label=f'τ = {tau}')\n",
- "\n",
- "plt.axhline(y=-50, color='r', linestyle='--', alpha=0.5, label='Threshold')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Membrane Potential (mV)', fontsize=12)\n",
- "plt.title('Effect of Time Constant on LIF Dynamics', fontsize=14)\n",
- "plt.legend(fontsize=10)\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Observation: Larger τ → slower integration, lower firing rate\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ How to create and configure LIF neurons with physical units\n",
- "\n",
- "✅ How to simulate and visualize neuron dynamics\n",
- "\n",
- "✅ How to compute F-I curves (frequency-current relationships)\n",
- "\n",
- "✅ The difference between hard and soft reset modes\n",
- "\n",
- "✅ How to work with populations of neurons\n",
- "\n",
- "✅ How parameters affect neuron behavior\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "- **Tutorial 2**: Learn about [synapse models](02-synapse-models.ipynb)\n",
- "- **Tutorial 3**: Build [connected networks](03-network-connection.ipynb)\n",
- "- **Advanced**: Explore [other neuron models](01-other-neurons.ipynb) (LIFRef, ALIF)\n",
- "\n",
- "## Exercises\n",
- "\n",
- "Try these on your own:\n",
- "\n",
- "1. Create a neuron with refractory period using `brainpy.state.LIFRef`\n",
- "2. Implement adaptive neuron using `brainpy.state.ALIF` and observe spike-frequency adaptation\n",
- "3. Generate an F-I curve for different values of τ\n",
- "4. Create a population with heterogeneous time constants (use different τ for each neuron)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/basic/02-synapse-models.ipynb b/docs_state/tutorials/basic/02-synapse-models.ipynb
deleted file mode 100644
index cd93d4207..000000000
--- a/docs_state/tutorials/basic/02-synapse-models.ipynb
+++ /dev/null
@@ -1,786 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 2: Synapse Models\n",
- "\n",
- "In this tutorial, you'll learn:\n",
- "\n",
- "- What synapses do in neural networks\n",
- "- Different synapse models (Expon, Alpha, AMPA, GABAa)\n",
- "- How to compare synapse dynamics\n",
- "- When to use each synapse type\n",
- "- How to create custom synapses"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import matplotlib.pyplot as plt\n",
- "import jax.numpy as jnp\n",
- "import numpy as np"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: Understanding Synapses\n",
- "\n",
- "Synapses perform **temporal filtering** of spike trains:\n",
- "\n",
- "```\n",
- "Discrete Spikes → [Synapse] → Continuous Signal\n",
- "```\n",
- "\n",
- "They model:\n",
- "- Postsynaptic potentials (PSPs)\n",
- "- Rise and decay kinetics\n",
- "- Neurotransmitter dynamics"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Exponential Synapse (Expon)\n",
- "\n",
- "The simplest model: single exponential decay.\n",
- "\n",
- "$$\\tau \\frac{dg}{dt} = -g$$\n",
- "\n",
- "When spike arrives: $g \\leftarrow g + 1$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Created Expon synapse with tau=5.0 * msecond\n"
- ]
- }
- ],
- "source": [
- "# Set time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create exponential synapse\n",
- "expon_syn = brainpy.state.Expon(\n",
- " in_size=1,\n",
- " tau=5. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")\n",
- "\n",
- "# Initialize\n",
- "brainstate.nn.init_all_states(expon_syn)\n",
- "\n",
- "print(f\"Created Expon synapse with tau={expon_syn.tau}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Simulate response to single spike\n",
- "brainstate.nn.init_all_states(expon_syn)\n",
- "\n",
- "duration = 50. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "responses = []\n",
- "for i, t in enumerate(times):\n",
- " # Spike at t=0\n",
- " # spike = 1.0 if i == 0 else 0.0\n",
- " # expon_syn(jnp.array([spike]))\n",
- " spike = 1.0 * u.mS if i == 0 else 0.0 * u.mS\n",
- " expon_syn(u.math.asarray([spike]))\n",
- " responses.append(expon_syn.g.value[0])\n",
- "\n",
- "responses = u.math.asarray(responses)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAenpJREFUeJzt3Qd8U1X7wPGne1EoUMree8iQjSAqU4biRF8VRNRXXLgV/wpuHIiKMhTF9aLiRFyobFkie+9RVmnLamnpTP6f55TEdAApNOS2+X0/n0tvbm7uPUlOQp57nnOOn91utwsAAAAAAChy/kV/SAAAAAAAoAi6AQAAAADwEIJuAAAAAAA8hKAbAAAAAAAPIegGAAAAAMBDCLoBAAAAAPAQgm4AAAAAADyEoBsAAAAAAA8h6AYAAAAAwEMIugEARe6yyy4zy7nw8/OT5557rsjLBJQ05/M5c9fu3bvNZ/KTTz4RK8v7vaHrui0xMdGr5QIARdANAKehPzL1R9vplqVLl4ov27hxo/lhqz/KvSEhIUGGDx8ujRo1krCwMImJiZF27drJk08+KSdOnPBKmYpLXQ4MDJSqVavK7bffLvv37/d28YqlAwcOmPq/evXqIj+2fqaGDBkidevWldDQUKlUqZJceumlMmrUKCkJ9POpz6VZs2YSEREh5cuXl5YtW5rPs76uAFDSBHq7AABgdS+88ILUrl073/Z69eqJrwfdzz//vGlpq1WrVq77/vjjD4+e+8iRI9KmTRtJSkqSO+64wwTehw8flrVr18rEiRNl2LBhUqpUKY+WoTjX5bS0NHPRSIPxhQsXyvr1601wB/dpcKj1X+u+BoxFZfv27dK2bVtzIUnrth7/4MGDsnLlSnnttdfMOS/U58wTMjMzzQWEzZs3y+DBg+WBBx4wQfiGDRvkiy++kGuuuUaqVKlS6OOePHnSXEwCACvi2wkAzuLKK680AR7cFxwc7NHjf/TRRxIbGyuLFi2STp065bpPA3FPn78k1OU777xToqOjTSA3Y8YMufHGG71dPIjIW2+9ZYJQbUGvWbNmrvvi4+Nz3S6O9Xz69OmyatUqmTp1qvznP//JdZ9eDMrIyDin43LRCICVkV4OAOdJ0yT9/f1l9uzZubbffffd5kfxmjVrzO158+aZ1N5p06bJ008/bVJGNbXyqquukr179+Y77jfffCOtW7c2LV4aHN166635UoE1PVhbdHX7gAEDzHqFChXksccek+zs7Fz72mw2efvtt6Vp06bmB2rFihXlv//9rxw9ejTXftqy1q9fP9MCqunaum+dOnXks88+c+6jLaQ33HCDWb/88sudacv6HAvqa6o/pEeOHGmeT5kyZczz7tKli8ydO/ecXvMdO3ZIQECAdOjQId99pUuXdv4A1/cmKCjIpKLnpe9PVFSU+aHv7vN2tLLr63vRRReZ11vPp8Gs4312KMz7vW3bNrnuuuvMPnreatWqyU033STHjx/Ptd///vc/Z50oV66c2aeguuMufQ8cr6crbYW8/vrrzTm0PBqoa2Cet8VSW13r169v9tEU4c6dO8uff/6Zr37u3LlTevXqZZ6/tmJqi7vdbs91vJSUFHn00UelevXqEhISIg0bNpQxY8bk209f0/vvv98Eb5qerPtqnZ45c2au/ZKTk+Whhx4y76vuo90PevToYVqMXf3999/Su3dvUy/Dw8Ola9eu5mLOmeh7q63RStPAHfXftd+zO5/fguh7oe9/3oBb6XNwlfdz5qhzX3/9tbz88svmOPredOvWzbSg5zV+/HhTx7WMWuf/+usvt/uJu1NHTvf81CWXXJLvPj2Ofp7Opf64MxbEnj17TIaS1ptDhw6ZbceOHTP1xFHv9H69EKXflwBQVAi6AeAsNPDRwXhcF01ldnjmmWdMeunQoUPND331+++/y+TJk02g2aJFi1zH0x/Dv/zyi+l7/OCDD5ogpXv37iY90kF/vGvLowaWo0ePlrvuuku+//57E9Toj0RXGlzrD1INejRI0aDhzTfflA8++CDXfhpgP/744+bH7jvvvGOCBW1t0sdqAOVKf6DrD2oNUvRYZcuWNT+ANQVUaXqoll1pQPn555+bpXHjxgW+htr6/OGHH5of8/qDVn8cayCs5z6XPrEakOjz1nOeyW233SZZWVkm8HWlFwG+/fZbE+i6tpCd7XkrDQA04NMAfezYseY1XbdunXndC+qPerb3W8uir4Ome2uqrQZCekFAz+P6XutxBg0aZIJcPa8GCnqhR9+LvHXCXY7++Po8HfS56sWMTZs2yVNPPWVeBw129KLODz/84NxP30MNuvWiy3vvvSf/93//JzVq1MgX1Or7pEGtXuR5/fXXTSCqF0Nc+ydrAKUXI7SVV/fV56dBt762jzzySL5y64WRe++911x00GPqhRN9L10/l/fcc4/paqDbJ0yYYC6UaHCpz8thzpw55vXT+qnleeWVV8xrecUVV8iyZctO+7ppPdfAT+l75aj/eqzCfn4Lqtt6IUXLdq5effVV817pcx4xYoSpW7fcckuuffS10YsXGpjra6gXYPQ93rdv31mP724dOd3zU3oxK2/gXBB36o87NNjX9ycyMtJcnNDjpaamms+tXszSz9a4cePM96O+ZgXVOwA4Z3YAQIE+/vhj/UVY4BISEpJr33Xr1tmDg4Ptd955p/3o0aP2qlWr2tu0aWPPzMx07jN37lzzWL0vKSnJuf3rr78229955x1zOyMjwx4TE2Nv1qyZ/eTJk879fv75Z7PfyJEjndsGDx5str3wwgu5ytOqVSt769atnbf/+usvs9/UqVNz7Tdz5sx822vWrGm2LViwwLktPj7ePOdHH33Uue2bb74x++nzyqtr165mccjKyrKnp6fn2kdfp4oVK9rvuOOOXNv1mKNGjbKfSVxcnL1ChQpm30aNGtnvuece+xdffGE/duxYvn07duxob9++fa5t33//fb6yu/u809LS7NnZ2bmOt2vXLrOf6/vg7vu9atUqc1tfz9PZvXu3PSAgwP7yyy/nq3eBgYH5tp+uLs+aNcuekJBg37t3r/3bb781r6GWW287dOvWzX7RRReZ5+lgs9nsnTp1stevX9+5rUWLFva+ffue8byO+vnAAw/kOpY+Tj8vWhY1ffp0s99LL72U6/HXX3+93c/Pz759+3bnNt1PH+u6bc2aNWb7u+++69xWpkwZ+3333Xfasmk59Pn06tXLrDukpqbaa9eube/Ro8cZn9s///xjzqmvravCfH4Lsn79entYWJjZt2XLlvbhw4eb1yclJeWsnzNHnWvcuHGuz5vWNd2u9UXpfeXLl7e3bds213fUJ598YvZzPabW7bzP0906UhB9fRs2bGiOqZ+522+/3f7RRx/ZDx06dM71p6DvDV3XbbrPpk2b7FWqVDHP98iRI859XnzxRXtERIR969atuc771FNPmc9bbGzsGZ8LALiLlm4AOAttedTWSdflt99+y7WPpitqq5+25mqrpbaGf/rppwUO7KMtKtra4qAtq5UrV5Zff/3V3F6+fLnpu6ktea6tsH379jUDhmmraV7aqudKW620pdQ11VXTZ7UF17XF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kxoc6v06ANDNN99s9tMBlbRl5+GHHy70c9DjaGqltmzqIE09e/Y059FWWA0Y9dj6o7Qw9PlpIKhl1QBH+wZry17euYSVpndrK7emkGrQsWvXLhOUaL/3ggKes9H+rhog6PE0eNJBo/R9mDJliukzrtOYudLnqtNL6Y91LbO+pudKn4v2Z9b3R+uAdiXQsuTtd+ru+62DUunAUDrvubbm6Q99fX5aTk2NVRocaou3TmWkLZGaGq6tdvo6avq09vXVdN9zoen+em6tszownfb71vJq4K9l1Oel5dbgRKeTcsxHru+dBl/6+utz1MG59IKC66BXSt8P7TerAU/79u3N50n78ut75OjWoJ8bbXHVacf0+enYCJoSrqnrmjniOmiaO/Qih6bla53WY+kFAW1J10wHTeVXelFDU+I1oNesB31/qlatai6e6MB02gL+008/nfYcWiYdrE3rsb4XGoTr89NshPP5/OpjV6xYYS60OFqcdYA+vXijr7O+HudLPy+akaADl+lnVoNPfd21DujzOlsWi7t1pCA6poBmuOgUcTrtmGMebv3s6kWKvHNtu1N/zkbfa+3iop8bfa56AUOft9Z9DcL1M63f31qX9WKefqa1LutrUlD2CgAUmtvjnAOAjznTlGGOKXR0KiydhqZatWr5pqtyTNMzbdq0XNP5fPnll/YRI0aYaYV0aiCd/mbPnj35zq+P06m/dEqncuXK2W+55Rb7vn378k2po1Pe5OWYLievDz74wEwlpueNjIw00/488cQT9gMHDjj30Wl8CpoKKu/0RGry5Mn2OnXqmOl1XKfgyruvTvPzyiuvmGPr89HnpVMoafl1W2GnDFu7dq398ccft1988cXmtdFpsypXrmy/4YYb7CtXrizwMcuWLTPH7tmzZ4H3u/u8dZoknUJMz6ev4yWXXGJfsmTJaadvOtv7vXPnTjNtWt26de2hoaHm+Vx++eVmeq+8vvvuO3vnzp3Ne66LTpem02Jt2bLFrbqs01zlpdOf6bl10fqsduzYYR80aJC9UqVK9qCgIDPtWb9+/cw0Yw46vVe7du3sUVFR5nlpWXTqMp0yK2/91OPp6x4eHm6midP3N++0a8nJyfaHH37YTO2k59Spp954441c03kpfR4FTQWm75+ezzElltYPndZM67mWQdcnTJiQ73E6Zdu1115rptDSuqnHufHG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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Observation: Instantaneous rise, exponential decay\n"
- ]
- }
- ],
- "source": [
- "# Plot response\n",
- "plt.figure(figsize=(10, 4))\n",
- "plt.plot(times.to_decimal(u.ms), responses.to_decimal(u.mS), linewidth=2, label='Expon')\n",
- "plt.axvline(x=0, color='r', linestyle='--', alpha=0.5, label='Spike time')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Synaptic Variable g (mS)')\n",
- "plt.title('Exponential Synapse Response to Single Spike')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Observation: Instantaneous rise, exponential decay\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Alpha Synapse\n",
- "\n",
- "More realistic: gradual rise and decay.\n",
- "\n",
- "$$\\tau \\frac{dh}{dt} = -h$$\n",
- "$$\\tau \\frac{dg}{dt} = -g + h$$\n",
- "\n",
- "Response: $g(t) = \\frac{t}{\\tau} e^{-t/\\tau}$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create alpha synapse\n",
- "alpha_syn = brainpy.state.Alpha(\n",
- " in_size=1,\n",
- " tau=5. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states(alpha_syn)\n",
- "\n",
- "# Simulate\n",
- "alpha_responses = []\n",
- "for i, t in enumerate(times):\n",
- " spike = 1.0 * u.mS if i == 0 else 0.0 * u.mS\n",
- " alpha_syn(u.math.asarray([spike]))\n",
- " alpha_responses.append(alpha_syn.g.value[0])\n",
- "\n",
- "alpha_responses = u.math.asarray(alpha_responses)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAps1JREFUeJzs3Qd8E+UbB/BfugdQRtl7741sRPbeKioCDvTvRhEHCCIooIAIKEMRFQeCExEQRZANskSQvTeU2UIHXfl/nvd6TVJS2kLauyS/r58zd5fL5U3yJvS5932f12K1Wq0gIiIiIiIiIpfzcf0piYiIiIiIiEgw6CYiIiIiIiLKJgy6iYiIiIiIiLIJg24iIiIiIiKibMKgm4iIiIiIiCibMOgmIiIiIiIiyiYMuomIiIiIiIiyCYNuIiIiIiIiomzCoJuIiIiIiIgomzDoJiIil7NYLHjrrbeMLgblgC+++EJ93seOHcvyYx955BGUKVMG7kTqtbzeO3nsxYsXXV4uIiIyLwbdRETZ4PDhw/jf//6HcuXKISgoCHny5EGzZs0wdepUxMbGGl08ckKCofSWp556Ct5u3LhxWLhwITxZUlISihUrpj7z3377De5s3bp16NSpE4oXL65+g0qVKoVu3bph3rx5RheNiMjr+BldACIiT7NkyRLcd999CAwMxIABA1CjRg3Ex8erP4JfeeUV7N69G5988gk8mVxY8PNzv39i2rVrpz6ztCpVqgRvJ0H3vffei549ezrs79+/Px544AFV393dypUrcfbsWdX6/s0336ig1R19//336Nu3L+rUqYPBgwcjX758OHr0KNasWYPZs2fjoYceMrqIRERexf3+IiIiMjH5w1YCkNKlS6s/4IsWLZp637PPPotDhw6poNwTJScnq4sL0qomizuS4Prhhx82uhhuxdfXVy2e4Ouvv0a9evUwcOBADB8+HNHR0QgNDYW7kW7s1apVw6ZNmxAQEOBwX0REhGHlIiLyVuxeTkTkQhMmTMD169cxZ84ch4BbV6FCBdXypEtMTMTbb7+N8uXLq5ZCaWGTP/Zv3Ljh8DjZ37VrV6xatQoNGjRAcHAwatasqbbFTz/9pLYl2K1fvz7++eefm8bO5sqVC0eOHEGHDh1UICHdaMeMGQOr1epw7KRJk9C0aVMUKFBAPY+c74cffrjptUgX3Oeee061CFavXl2Vf9myZU7HdF+7dg0vvviieh1yXKFChVSr8vbt229qoZPnk+cNDw9XAfDp06edvhbZL62usl6wYEEMHTpUdQ+2J62W+/btQ0JCAlxh7969qmxpW8OlF4MEnq+99tpNn9kff/yhWhzls5FASD6rtORzkd4R+fPnR0hICBo3bnzTxRn5rOV9/e677zB27FiUKFFCnbNNmzbqYk5af//9Nzp27IiwsDB1zpYtW2L9+vVOxxjL4+V9zZs3rzr+0UcfRUxMTOpxcowEoHPnzk3tci/Hpzem+5dffkGXLl1UHZPPW+q31PO0n09myHsowzScadKkifo+6JYvX47mzZur1yH1onLlyur7lNneGT///LO6aHb//ferbXkdmWH/XZDn1L+H0rLszNWrV2/5fovPP/8crVu3Vt8VeQ+l7sycOTPTw1vuuuuumwJuIecT8r2XOtqjR4+bjomLi1PlkiEyWa17a9euVXVZurNLuUuWLImXXnrppmE1WflNmj9/vno/c+fOrYbqyG+dDNVJ+57Kb4w8nzyv/Na+99576mIgEZHhrERE5DLFixe3litXLtPHDxw4UP66tN57773W6dOnWwcMGKC2e/bs6XBc6dKlrZUrV7YWLVrU+tZbb1k/+OAD9Vy5cuWyfv3119ZSpUpZ3333XbWEhYVZK1SoYE1KSnJ4nqCgIGvFihWt/fv3t3700UfWrl27qucaOXKkw3OVKFHC+swzz6hjJk+ebG3YsKE6bvHixQ7Hyb6qVataCxYsaB09erQq/z///JN636hRo1KPfeihh6wBAQHWIUOGWD/99FPre++9Z+3WrZsqu+7zzz9Xj7vrrrvU63v99detwcHB1jJlylivXLly02upXr269bHHHrPOnDnT2qdPH/XYGTNmOH1/jx49muFnIcc9/vjj1gsXLty03LhxI/W4iRMnqmN/+eUXtX39+nVr+fLlrdWqVbPGxcU5fGaVKlWy5s2bV70WeS9r1qxp9fHxsf7xxx+px507d85auHBha+7cua1vvPGGOq527drquJ9++in1uL/++ks9b926da3169dX75HUhZCQEPUZ2VuxYoV6v5s0aWJ9//331bG1atVS+/7+++/U4+Qz0s/Zu3dv9f4NGjRI7Xv11VdTj/vqq6+sgYGB1hYtWqh1WTZs2ODwudm/x1J/77//fvVeyedz3333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HbrE62WW46Q1V85x4sQJbNmyBe3atUN4eLgqY8uWLbF9+3aHcx88eBB33323Orc8dvny5Rl2v9+xY4fap3eBly7xDz74IIoXL46QkBDUrFkT3377LbJC77L/6aefomzZsqo8zrqXz5gxI/W9KFy4MO69997U++RCw/jx49Xjg4ODUbt2bfzwww8OzyPvx+XLl7F69eoslc/bMOh2AwEBQKNG2rp8F0+dMrpEREREROSNvvvuO1SpUgWVK1fGww8/jM8++wxWmXkngxZn6eb95ZdfYv369SrglKDangTQEpgvXrxYLRLEvfvuu6n3y7jhIUOGYOvWrVixYgV8fHzQq1evW7ZAr127FvXr13fYd/ToURVY9uzZE//++y/+97//4Y033nBa5vfee08Frbt371bjwuUiwMCBA7Fu3Tps2rRJBaudO3dOvTggZenduzcCAgLw999/Y9asWXjttdeQVXFxcarcS5YswX///Ycnn3wS/fv3x+bNm7N0nkOHDuHHH39UXcolsE9L3ssXXngBY8aMwf79+9WFDblgoJOAWz4zeR3yHrz00kvqM7cPsOW1SnAv7zWlz+8W95HJupjr9Vtau9P8ThERERGRO1vWAIg9l/PPG1wE6LAl04dLd20JvETHjh0RGRmpgjBpQU1PQkICPvroIzRKaUWSluWqVauqILJhw4apAau0MOtdnyXIlOBagnXRp08fh3NKsF+wYEGVzKtGjRpOn/f48eMoVqyYw76PP/5YXTCYOHGi2pZ1CWz157Evs7QCS+uurnXr1g7HfPLJJ6pFXF6/tLz/+eef2LdvH37//ffU5x03bhw6deqErJAW7qFDh6ZuS1d+Oadc8NDfr8x2KZegWd4nZ6T1PjQ0VJVd3vfSpUujbt266r4bN26osstratKkidpXrlw5dcFB3kNp5dfJa5X3mtLHoNuMfHxgrV0bCZGRal20aGG7Wy4kMegmIiIi8iAScMeehplJa6gEyj///LPa9vPzQ9++fVUgfqugW4676667UrelpVyC1b1796YGkdKt3H6scdGiRREREeHQbfvNN99ULcgXL15MbeGWwDG9oDs2Nja1W7X9a7Avi3AWyEoLbq1atRz2nT9/HiNGjFBdxKVsMtZbWsSlDEJeT8mSJR0CfT1gzQo5rwS8EmSfPn1aBc8SBEtX86yQIDq9gFvvGi7HSDAtF1Bkkd4D8jzSSi6vTY6xJ2XRA3OddD2XYyl9DLrNyM8P6NkTN+SHRtYBNG0K+PrKl1DGghhdQCIiIiJyeYuzyZ9XgmtJmGUfVErXchnzLC3ZMs75dvn7+ztsyxhn+67j3bp1UwHi7Nmz1fPLfRJs6wnCnJGx11euXLmt8kggKWWwJ13LZbz11KlTVVnkdUtQfasypCXd4oV9l3xpVbcnrfDyHFOmTFHjuaU1WsZhZ+V5hDzuVuQih4xJl4sIf/zxh7qoIWPBZey6jN0X0sVdWt7tyeu2J2O6y5cvn6WyeRsG3W5CLvw1aAD8/bfMiQdIPF6okNGlIiIiIiKX6LjVuOfOYEy2kGBbuiq///77aN++vcN9Mj5aEn099dRT6T5Wxg/rLcrS2izjuqWLeWZIoCuPkYC7RUr3T+nmnBFpkf36668d9kl3ckmwZk+CzMyQ8ejS5VzGcQtJBiet7jp5PbLv7NmzqqVeyNhve3rLsxyTL18+tZ52vLU8j0xzpnfjlwsMBw4cUInZXE16IbRt21Yto0aNUj0QVq5cqVq49QRy9l3JnZHu+fYJ2OhmTKRmRvLDJ1eyZLH7EbTvtcMEgURERESUUyS5mbQay/Rb0sJsv8h4a2kFv1UrtoxLlq7h27ZtwyOPPKIyimd2fLIEp5KxXMZQS7dnCQolqVpGJEu6JACzb+2WxGky7loSnEkgK1249QzsaVu205LEaZJhXbqRy2vp16+fahHXSeBaqVIl1SIuSdokuVjaJG0VKlRQXdClRVm6zEtLslzISPs8kvV8w4YN6rmkzNK1PTs+02nTpqmgX8Zky0UVCfDlwoS0gsu4ckmeJmPwJdGdtIp/+OGHalsnGdelC7y8dkofg24zSkiAZfx45Jo2Ta3r7C8yMegmIiIiopwiQbUEVs66kEvQLS3ZO3fudPpYGSMsQe5DDz2EZs2aIVeuXGrasax0yZ4/f74K2CXIl0BQT4R2K9I1u169eiqw1sn0VzLtlWT0ljHbMse0Hhin7Tbt7D2QAF7OKYneJPO3ZDW3L6eMd5ex5HJBYdCgQTclaJMLENIrQAJ/eX7JkP7OO+84HCPjxuU55KKBjJUvUqSI6k3gatKqLe+DJIiTVnrJUi5lq169urr/7bffxsiRI1UWc7lfxnzLRQJ5D3VyvPR8kO72lD6LNaMc/x4mKipK/VhIpsU8efLAlOLjYR07Vk2NEPLOO/BJSQARFSUT2mvjuuW78N9/RheUvJFcAZXkIfKPjD4uicgsWD/JrFg3Ke2UUDJ1lf38yUaScEC6gEtX44xae7NKWpFlPLL9vNQ5SYLEV155RXWBTu+7J4GxBJzO5g6n9MkYc2mVnzdvnrqY4m510xXf18zGlhzT7Ubkc5SpBmWKvt27Oa6biIiIiOhWunTporpxSxdo6dYtZFy2ZDCXLusyflpazZ977jmji+p2ZLz38OHDsy3g9iQMut2MjOuWoFusWQMwZwERERERUfqkpd2eBOHSpVuybpcqVQovv/wyhg0bZlj53JWMT5eFMsb+TW6G47qJiIiIyF1I0jSjupan54MPPsCZM2dUt2FJpibjlqX7MlF2YdDtZpo3lyQN2jrn6yYiIiIiIjI3Bt1uOq5bSCK1CxeMLhERERERERGlh0G3Gfn4wFq1KhIrVbI1a6fTxVzGdRMREREREZE5Meg2IxlTcv/9iOveXVt3kkxNx3HdRERERERE5sWg2w1xXDcREREREZF7YNDthsLCgHr1tPVdu4CLF40uERERERERETnDoNuM4uNhGT0auSZNUuvOcFw3EREREbmbY8eOwWKxYMeOHWp71apVaju7pxXLqechcoZBt5viuG4iIiIiykkXLlzA008/jVKlSiEwMBBFihRBhw4dsH79+kyfo2TJkjh79ixq1KiRbeW855578OKLLzrsa9q0qXreMOkySpTDOAu8m4/rTk7muG4iIiIiyn59+vRBfHw85s6di3LlyuH8+fNYsWIFLl26lOlz+Pr6qmA9pwUEBBjyvESCLd1uKm9eoE4dbX3nTiALv3VERERERFki3bLXrl2L9957D61atULp0qXRsGFDDBs2DN1lxp0U0oV75syZ6NSpE4KDg1Vw/sMPP6TbvTytmJgY9dhmzZqldgX/9NNPUbVqVQQFBaFKlSqYMWNGuuV85JFHsHr1akydOlU9jyzynGm7l3/xxRfImzcvFi9ejMqVKyMkJAT33nuven65qFCmTBnky5cPL7zwApKSklLPf+PGDQwdOhTFixdHaGgoGjVqpM5NdCsMuj2kiznHdRMRERG5Ocnlk96SmJj5YxMSMndsFuTKlUstCxcuVIHnrYwcOVK1iv/777/o168fHnjgAezduzfD55CAuF27dkhOTsby5ctVUPzNN9/g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KqWtL1vG1m4iIiIiInJPtx3RlS9fHu+88w6OHTuGb7/9Fps2bcJ9993n2tKR1woIAEaOtG3brxMREREREbmLO2pGlRZvafmWRebvfuKJJ1xXMm+WlATs2AG///7T1r3UwIGAPgvdihXA6tVGl4iIiIiIiCibg+5Tp06pFm4Zz926dWvV0j1jxgycPXsWs2bNyurpyJmkJFh++QVB0q/ai4Nuf39g1CjH1m7O201ERERERB4ZdH/33Xfo2LEjypYti5kzZ+L+++9X47pXr16tspkHBwdnb0nJK/XrB1SurK2vXQv8+afRJSIiIiIiIsqGoPvhhx9WgfXPP/+MkydPqqzl0tpNlN2ZzN96y7bN1m4iIiIiInInflnpVl6oUKHsLQ1ROvN2jx0LyBD3v/8Gli4FunQxulREREREREQubOlmwE1GkVnTRo+2bb/5Jlu7iYiIiIjIPXjnJNDkdnr1AurW1da3bwcWLjS6RERERERERBlj0E1uwWIBxoyxbY8YASQmGlkiIiIiIiKijDHoNiM/P1jvvRdx3bqpddLIOO7GjbX1PXuAuXONLhEREREREZGLg+4tW7bgb8lmlYbs27p1a1ZPR+kNYq5eHYkyV5asU2pr94QJjmO7Y2KMLBEREREREdGtZTmie/bZZ9WUYWmdPn1a3UeUnVq0ALp319bPnAGmTjW6RERERERERC4Muvfs2YN69erdtL9u3brqPnKB5GRg92747d+vrZOD8eNtHQDefRe4eNHoEhEREREREbko6A4MDMT58+dv2n/27Fn4cfyxayQmwvLDDwj69VdmC3OiWjXgsce09ago4J13jC4RERERERGRi4Lu9u3bY9iwYYiMjEzdd/XqVQwfPhzt2rXL6umIbovM2x0crK3PmAEcOWJ0iYiIiIiIiFwQdE+aNEmN6S5dujRatWqllrJly+LcuXN4//33s3o6ottSrBjw0kvaekKCNoUYERERERGR2wfdxYsXx86dOzFhwgRUq1YN9evXx9SpU7Fr1y6ULFnytgoxffp0lClTBkFBQWjUqBE2b96cqcfNnz8fFosFPXv2vK3nJff26qtAgQLa+rffAtu2GV0iIiIiIiIiR7c1CDs0NBRPPvkkXGHBggUYMmQIZs2apQLuKVOmoEOHDti/fz8KFSqU7uOOHTuGoUOHooWksyavFBYGjBwJvPiitj10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UUAAMHw4oiMiECrrRERERERE5JbY0k1ERERERESUTRh0ExEREREREWUTBt1mlJgIfPMNgn78UVsnIiIiIiIit8Qx3WaUnAzLoUPwi45W60REREREROSe2NJNRERERERElE0YdBMRERERERFlEwbdRERERERERNmEQTcRERERERFRNmHQTURERERERJRNvC57udVqVbdRUVEwrfh4WG/cQPSNG0iMioJPfLzRJSJKlZycjGvXriEoKAg+PrxuR+bC+klmxbpJZsb6SWaVbPK6qceUeoyZHos1oyM8zKlTp1CyZEmji0FEREREREQe4OTJkyhRokS693td0C1XS86cOYPcuXPDYrHArOSqiVwckA8wT548RheHKBXrJpkZ6yeZFesmmRnrJ5lVlMnrpoTS0hJfrFixW7bEe133cnkzbnUVwmykcpmxghGxbpKZsX6SWbFukpmxfpJZ5TFx3QwLC8vwGPN1jCciIiIiIiLyEAy6iYiIiIiIiLIJg26TCgwMxKhRo9QtkZmwbpKZsX6SWbFukpmxfpJZBXpI3fS6RGpEREREREREOYUt3URERERERETZhEE3ERERERERUTZh0E1ERERERESUTRh0m9T06dNRpkwZBAUFoVGjRti8ebPRRSIvs2bNGnTr1g3FihWDxWLBwoULHe6XdBBvvvkmihYtiuDgYLRt2xYHDx40rLzkPcaPH4+77roLuXPnRqFChdCzZ0/s37/f4Zi4uDg8++yzKFCgAHLlyoU+ffrg/PnzhpWZvMPMmTNRq1at1PlkmzRpgt9++y31ftZLMot3331X/dv+4osvpu5j/SSjvPXWW6o+2i9VqlTxqLrJoNuEFixYgCFDhqhMfdu3b0ft2rXRoUMHREREGF008iLR0dGq7skFIGcmTJiAadOmYdasWfj7778RGhqq6qn8MBJlp9WrV6t/fDdt2oTly5cjISEB7du3V3VW99JLL+HXX3/F999/r44/c+YMevfubWi5yfOVKFFCBTPbtm3D1q1b0bp1a/To0QO7d+9W97Nekhls2bIFH3/8sbpAZI/1k4xUvXp1nD17NnVZt26dZ9VNyV5O5tKwYUPrs88+m7qdlJRkLVasmHX8+PGGlou8l/xU/Pzzz6nbycnJ1iJFilgnTpyYuu/q1avWwMBA67fffmtQKclbRUREqDq6evXq1Lro7+9v/f77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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Key difference: Alpha has realistic rise time, peak at t=τ\n"
- ]
- }
- ],
- "source": [
- "# Compare Expon vs Alpha\n",
- "plt.figure(figsize=(10, 5))\n",
- "plt.plot(times.to_decimal(u.ms), responses.to_decimal(u.mS), \n",
- " linewidth=2, label='Expon (instantaneous rise)', color='blue')\n",
- "plt.plot(times.to_decimal(u.ms), alpha_responses.to_decimal(u.mS), \n",
- " linewidth=2, label='Alpha (gradual rise)', color='orange')\n",
- "plt.axvline(x=0, color='r', linestyle='--', alpha=0.5, label='Spike time')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Synaptic Variable g (mS)')\n",
- "plt.title('Comparison: Exponential vs Alpha Synapse')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Key difference: Alpha has realistic rise time, peak at t=τ\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: AMPA and GABAa Synapses\n",
- "\n",
- "Biologically parameterized models:\n",
- "\n",
- "- **AMPA**: Fast excitatory (τ ≈ 2 ms)\n",
- "- **GABAa**: Slower inhibitory (τ ≈ 10 ms)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "AMPA tau: 2.0 * msecond (fast)\n",
- "GABAa tau: 1.0 * mmolar (slow)\n"
- ]
- }
- ],
- "source": [
- "# Create AMPA synapse (fast excitatory)\n",
- "ampa_syn = brainpy.state.AMPA(\n",
- " in_size=1,\n",
- " T=2. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")\n",
- "\n",
- "# Create GABAa synapse (slower inhibitory)\n",
- "gaba_syn = brainpy.state.GABAa(\n",
- " in_size=1,\n",
- " T_dur=10. * u.ms,\n",
- " g_initializer=braintools.init.Constant(0. * u.mS)\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states(ampa_syn)\n",
- "brainstate.nn.init_all_states(gaba_syn)\n",
- "\n",
- "print(f\"AMPA tau: {ampa_syn.T} (fast)\")\n",
- "print(f\"GABAa tau: {gaba_syn.T} (slow)\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Simulate both\n",
- "ampa_responses = []\n",
- "gaba_responses = []\n",
- "\n",
- "for i, t in enumerate(times):\n",
- " spike = 1.0 if i == 0 else 0.0\n",
- " ampa_syn(jnp.array([spike]))\n",
- " gaba_syn(jnp.array([spike]))\n",
- " ampa_responses.append(ampa_syn.g.value[0])\n",
- " gaba_responses.append(gaba_syn.g.value[0])\n",
- "\n",
- "ampa_responses = u.math.asarray(ampa_responses)\n",
- "gaba_responses = u.math.asarray(gaba_responses)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Plot all four synapse types\n",
- "plt.figure(figsize=(12, 6))\n",
- "\n",
- "plt.plot(times.to_decimal(u.ms), responses.to_decimal(u.mS), \n",
- " linewidth=2, label='Expon (τ=5ms)', alpha=0.7)\n",
- "plt.plot(times.to_decimal(u.ms), alpha_responses.to_decimal(u.mS), \n",
- " linewidth=2, label='Alpha (τ=5ms)', alpha=0.7)\n",
- "plt.plot(times.to_decimal(u.ms), ampa_responses.to_decimal(u.mS), \n",
- " linewidth=2, label='AMPA (τ=2ms, fast excitatory)', linestyle='--')\n",
- "plt.plot(times.to_decimal(u.ms), gaba_responses.to_decimal(u.mS), \n",
- " linewidth=2, label='GABAa (τ=10ms, slow inhibitory)', linestyle='--')\n",
- "\n",
- "plt.axvline(x=0, color='r', linestyle=':', alpha=0.5, label='Spike time')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Synaptic Variable g (mS)', fontsize=12)\n",
- "plt.title('Comparison of All Synapse Models', fontsize=14)\n",
- "plt.legend(loc='upper right')\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"\\nObservations:\")\n",
- "print(\"- AMPA: Fastest decay (excitatory transmission)\")\n",
- "print(\"- GABAa: Slowest decay (prolonged inhibition)\")\n",
- "print(\"- Alpha models have realistic rise time\")\n",
- "print(\"- Expon models are computationally faster\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Response to Spike Trains\n",
- "\n",
- "How do synapses integrate multiple spikes?"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create spike train: 5 spikes at 50 Hz (20ms intervals)\n",
- "brainstate.nn.init_all_states(expon_syn)\n",
- "brainstate.nn.init_all_states(alpha_syn)\n",
- "\n",
- "duration = 150. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "spike_times = [0, 20, 40, 60, 80] # ms\n",
- "\n",
- "expon_train_resp = []\n",
- "alpha_train_resp = []\n",
- "\n",
- "for i, t in enumerate(times):\n",
- " t_ms = t.to_decimal(u.ms)\n",
- " spike = 1.0 *u.mS if any(abs(t_ms - st) < 0.1 for st in spike_times) else 0.0 *u.mS\n",
- " \n",
- " expon_syn(u.math.asarray([spike]))\n",
- " alpha_syn(u.math.asarray([spike]))\n",
- " \n",
- " expon_train_resp.append(expon_syn.g.value[0])\n",
- " alpha_train_resp.append(alpha_syn.g.value[0])\n",
- "\n",
- "expon_train_resp = u.math.asarray(expon_train_resp)\n",
- "alpha_train_resp = u.math.asarray(alpha_train_resp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYU2X2x/GTGYbey9BFVBQQqVawYMUudt11Lai7rmVtq/t319W1r4uuusXe3bWvFSui2MCCiL2BCChVpLeByf0/v3u9k0xmEjIzSW5u8v08z4U7mUzyJjlzJ/fkvOeNOI7jGAAAAAAAAJBDJbm8MwAAAAAAAEBISgEAAAAAACDnSEoBAAAAAAAg50hKAQAAAAAAIOdISgEAAAAAACDnSEoBAAAAAAAg50hKAQAAAAAAIOdISgEAAAAAACDnSEoBAAAAAAAg50hKAQAQgJEjR7pbfUQiEfvLX/6S8TEBxWrixInu75X+9+n3c8CAAVZojysTVq5caeXl5fbf//7XCsHixYutRYsW9vzzzwc9FAAoOiSlAAD1du+997onPMm2d955x4rZ559/7iaPvvvuu0Duf9GiRXb22Wdb3759rVmzZu5J5Pbbb29/+MMf3JNKJI/lRo0aWffu3e3EE0+0H374IejhhdLcuXPd+J82bVrGb1u/UyeddJJtvvnm1rRpU+vSpYvtuuuudumll1oYKK5SHTv9TdfLRzfddJO1atXKjjnmmLT+HsyfP7/GbTzzzDM2dOhQ9/XbZJNN3Nduw4YNaSfaHn/88Vq/r+esZcuWdXo8HTp0sFNOOcX+/Oc/1+nnAAAN1ygDtwEAKHKXX3659e7du8blW2yxhRV7Uuqyyy5zKy423XTTat97+eWXs3rfP/30k2277ba2fPlyGzNmjJuYUjXAxx9/bLfccov99re/rfOJWzHF8tq1a92kqk6033rrLfv000/dk2fULSml+FfsDx48OGO3O336dNtuu+3cRKtiW7c/b948mzp1ql177bXufdaVElpr1qyxxo0bWy785je/sb322qvq65kzZ9oll1xiv/71r22XXXapulxJt4bIxuNav369m5Q699xzrbS0NK2/B23btq329QsvvGCjR492j43//Oc/7ZNPPrErr7zSFi5c6B6fgnDaaafZP/7xD3v11Vdtjz32CGQMAFCMSEoBABpsv/32cxMgSF+2T37vuusumz17tr399ts2fPjwat9ToipXJ99hjmVVTnTs2NFNdKiq46ijjgp6eDCzG264wa30UwVWr169qn1PSY36KCkpyWnScaeddnI335QpU9yklC477rjjkv7cqlWr3GlmQT6ucePGuVWYyX4f0vl78Pvf/94GDhzoJudVlSitW7e2q6++uqq6M9f69evnTtdUIpqkFADkDtP3AABZp2kZOjmaMGFCtctVFaDkyEcffVRtWsYjjzxif/zjH90pOToBO/jgg23OnDk1bvexxx6zYcOGuRUTSh7oZC5xqpU/lUOX65N57Xfq1Mk9KaqsrKx23Wg0ajfeeKNtvfXW7olc586d3YqGJUuWVLueKjMOPPBAt4JG0+F03c0228zuv//+quvoxObII49093ffffeqaSx+b5fEnlIVFRXuSakeT5s2bdzHrYqJ1157rV7P+YwZM9wqhh133LHG93Ty55+o6rUpKytzTzIT6fVRhYOqhtJ93H6Vlp7fbbbZxn2+dX86UfVfZ19dXu9vvvnGDj/8cPc6ut8ePXq4U4eWLVtW7Xr/+c9/qmKiffv27nVqi510+VUrej7jffnll3bEEUe496Hx6CRciavEihJV7fTp08e9jqYI7bzzzjZ+/Pga8fntt9/aqFGj3MffrVs3t9rEcZwaCYnzzz/fevbsaU2aNLGtttrKrrvuuhrX03N65pln2lNPPeWeZOu6iukXX3yx2vVWrFhh55xzjvu66jqa3rn33nu7FUfx3n33Xdt3333duGzevLnttttubrIzFb22qmYSTbPz41+/F3X5/a2NXgu9/okJKdFjiOfHrJIfqtbS69C/f3974okn6tV7Sbej5+DYY4+tmmqWTizUhz8d7vXXX7fTTz/dfWx63DJr1iz3MsWAnj/Flo43iVOFU/XKUiWnjk16PJqq+re//S2tcSmu9LymquJSbCUeX326X206vvgJKdHjUSwnm5ZXX5pCmu70SMX/s88+W+N3CgCQPSSlAAANpsTAjz/+WG3TVDHfxRdf7J4Qnnzyye7Jirz00kt2xx13uImYQYMGVbu9q666yp577jm399Hvfvc79yReU100DSX+hE2f1Cvxcs0119ipp57qnmjqpH/p0qXVbk8nRzrh14mbTuJ1Un399dfb7bffXu16SkBdcMEFNmLECHd6ik6m1chXP6sEQ+IUIp2I6iRGt9WuXTv3BOezzz6rmjajsYsSLg888IC76dP42qh66c4773RPGFWZoxMpJYp03/XpyaMTdj1u3Wcqv/rVr9yTayWG4ilJppNDJYLiKy029rhFCRaduCoZ8Pe//919TjU9R8+7pnQl2tjrrbHoedB0urPOOsv+/e9/uye0up/411q3c/zxx7tJIN2vEi5KhOq1SIyJdPkn+XqcPj1WJfu++OIL+7//+z/3eVAySUnPJ598sup6eg2VlNKJ/7/+9S/705/+5PbOSUz66HVS0kdJUCUGlKhRsjC+P5JOkpWsU5WQrqvHp4SEntvzzjuvxriVONRJvpJyuk0lFvVaxv9earqSpkrp8ptvvtlNJCrBocfl01QmPX+KT41HlSx6LlVJ8t577yV93hTnSqyJXis//nVbdf39rS22lWjU2NKhhObRRx/tJkZ1X0qEKIETnxxMt0JIr4F+VslP3U66sdAQeh2VxNGxUvch77//vk2aNMl9fTXlTK+lYl3Hj9WrV2/0NpVoVxzp2KsxqzJJv3+aVrcxul/1gkpG8a5EtJJder70/Mf78MMP3f8Tq6mUjFXSzf/+xuhvSeLfHW3r1q2rdr3DDjusKv78TceG2pKY+t1T/MUfzwAAWeYAAFBP99xzjz5OrnVr0qRJtet+8sknTuPGjZ1TTjnFWbJkidO9e3dn2223ddavX191nddee839WX1v+fLlVZc/+uij7uU33XST+3VFRYVTXl7uDBgwwFmzZk3V9caNG+de75JLLqm67IQTTnAvu/zyy6uNZ8iQIc6wYcOqvn7zzTfd6/33v/+tdr0XX3yxxuW9evVyL3vjjTeqLlu4cKH7mM8///yqyx577DH3enpciXbbbTd3823YsMFZt25dtevoeercubMzZsyYapfrNi+99FInlfnz5zudOnVyr9u3b1/ntNNOcx588EFn6dKlNa670047OTvssEO1y5544okaY0/3ca9du9aprKysdnszZ850rxf/OqT7en/44Yfu13o+k/nuu++c0tJS56qrrqoRd40aNapxebJYfuWVV5xFixY5c+bMcR5//HH3OdS49bVvzz33dLbZZhv3cfqi0agzfPhwp0+fPlWXDRo0yDnggANS3q8fn2eddVa129LP6fdFY5GnnnrKvd6VV15Z7eePOOIIJxKJONOnT6+6TNfTz8Zf9tFHH7mX//Of/6y6rE2bNs4ZZ5yRdGwahx7PqFGj3H3f6tWrnd69ezt77713ysf2/vvvu/ep5zZeXX5/a/Ppp586zZo1c687ePBg5+yzz3afn1WrVtW4rh+z//vf/6ouW7ZsmdO1a1f3GJAYi/Hxrt/Prbfe2t3Xz5eVlTmnnnpqtdhONxY2prbnyo/JnXfe2T0+xNNrkGjy5Mnu9e+///6NPq7E6+nY06VLF+fwww9POU4drxVv8b/vvkceecQ58cQTnfvuu8958sknnYsvvthp3ry507FjR2f27NlV1xs7dqx7//GX+bbbbjtnxx13TDkG/zGl2lq0aJH05/U7tckmm7iv28qVK6t9b9KkSe7P67EAAHKDSikAQIOpckVVB/Fb4ifumi6iqhFVA6nqRZ9o33fffdWmb/hU7aKVnXyqzOnatWvVct3qv6LeMaogiK/iOeCAA9xP/FV1k0iVBInTslRpEz+VSNOTVAEU/6m7PjnX9KrEaXSaAhTfkFhTAlW5En+bdaGKEb/Pk6YRagqcKphUTZBYWZMOVd1oupwet6oibr31VvvFL37hVgZcccUV1aan6PnWFK34KWqqENM0MVU31fVxayqYpmv6VUCqztFzqOvV9lg29nrrdfGr65JVgajKRs+bqm/iXz9N91PlVLrTIFWhpcekx65xqOpFU7H8aVN6XVSho/uJr9TQY1RcqyrEn4KmqY+quEisFKmNptslTr9Thdgrr7ziXqbnQjHiV9/5NJ1Pr2Xi75seR/z0KvXvUfVK/Ouk8el1r616TVShp7ErbvT4/MeqaYR77rmnvfHGG+5zXlf1+f2Np6mIGpum+6mSTVWNqkxSzKv6MpEqcA499NCqr/U8KOZUkVPbqnCJHnroIbfSSpWUt912W1Vs1yUWGkJVZIkNxVXR5lMVp+5TC0voNU3neKHfx/jeVTr2aEruxo5fesyKt/jKQZ+eh3vuucd9bvV66Dij31mNTVWMPr8CUseJRIqH+IrYVFQ5lvh3R9s+++yT9Gd0PNLUS71eqmRL7M/lPy69jgCA3KDROQCgwXQyk06jc001evjhh91pP5oGpARHbZREiKeTdJ1w+VOp1E9FlORIpJNaTV1KPNFRoiHx5CO+V5ROIDUNMXE6R7IGypqGlSjxNutKSTpNpVGPmvjpgrWtbJgOJXY0PUtTs/T4dIKoqYE6mdP31MhbdMKt6SxKROl7eh40VUmra+m5r+vjVqJCiQLdr1YVi+8toymUdX299fg1RU1T1jRGJcU0LUgn1X7CSo9PJ8uJt+VT36x0E6xbbrml+xzcfffdbuIl/uRZ0xd1P1o6Ptny8YoV9ejR9LVDDjnEvT0lZTVdStMllSCKpySHenPF089IfMwruRKfvBN/Oqj/O1GX10nT+k444QQ3Aafk6/777+8mFPyx+Mk0XScZPU+1JShSqevvb230/GgalmJLU9sUr3o8miqoeIlf2U6xlBjH8c+vEpfJKH4VZ5qyp1Xi4tUlFhqitt9/JW40FVFJICW+4pPMiX3WaqMka+JzotdRq3OmI92eS5qOucMOO1QlV+MTaonT7ETTTOMTbqmoZ1386+zT1MpkNJVciUQlPmvrieU/rsTnBgCQPSSlAAA5o0/h/RNd9RjKldqWLU+kRIoSUkp61CYxqZXsNuvbIFcnUurNpAoDJe80Fr/fTmKT7brSCZZOwrWpGkWJGz1OPymlk1H1f/KTUuolpRPG2lYBS+dxK+Gok/QxY8a41RJqAK3EixJf9amsESXr9Pw8/fTTbrNpVQzpuVGfKZ1g63b1OFUxVNsYVRlS1wSrXgudVKtS6KuvvnJvwx+/+i+pGqY2SoKI+ifptfPHrCpB9YRS1Zr/3GdLOq+TKluU4FPFiMY3duxYN2mpqjP1X/Ifqy5XT7japPu8ZvNxKjmhTSvXqZ+R4ri2ZEV9KHnrV+2pwis++V6XWGiI2pI06q2mhJR+p/S4lZxV/KvHVDq/Y/U9ful3WfdTl+S7kp76/fHp+ZR58+a534uny/Q7mA3qc6f41jFJCeLa+I9LjfcBALlBUgoAkBM6UVJSQVNndCKlxIWmR6kJbaLE6U46UVJVgl9h4q+6pROdxKW7dVltq3JtjD4116f5anKe7if1G1OXT9uVCFKFihIC8T8X3+w6E3QfSkLp5C+eKmRU1aMGyjqpHzJkiDtNqj70WJQcuOuuu6pdrgbCtZ3sbez19vnJB1U7qNmyXisleK688kr39dPPqarEr4JpKD8p6DcqV5Npv4pIlVfpJD50Eq+G+dpWrlzpJqrUAD0+KaXfDSVs48f99ddfu/9rlTNRTCs+Ne0ovlpKVXX+9+tDCQJNo9Omqh41sNZUKyWl/EoS/c7WJ8mTLP6z8fsrfsIoMbb9iqb48SQ+v8moylJVWBqnEhlaCc//vahrLGSSfsdUwaZkbXyVUX0b+qdL060VF6ogS5diOz6p7yc4leSLT0BpGun333/vVrtlml5vPV9KNGvhiWT8x5VsQQoAQObRUwoAkBOaeqVEgla80yfVw4cPt9/+9re19u64//77q1bp80/AdKKpE2X/5FOVREpIxE8BUZWMVsFSNVBdqWpEU4E0tkTq7VSfkz2/X0k6P+tXLsRXKqjfz+TJk+t8v/7PqvdPIk2dVI+XxKlTem6VMFIlgU68a6uSSpceS2LFhXp2Jeuvs7HXWyu/6TWIp+SUqq/811/JTd2v+pYl3re+jl91ri60mplOnG+88Ub3pF9xp8vUWygx+SFaMdGXeJ+qKlLlTG3TlpT0ih+vvlayQ72bRFPrFJ/x1xNVXinZ4j9X6dJtJU7z0mPTFEF/fJrSpwSEVqxUQi3VY61L/Df09/fNN9+ssRqm+D3IEmNbyY74lfAUT4o5JUdSTd3zqQpJU181ZvWc8ysX6xILmVbb75imF8ZPlc0WVWYpoZTO49Vr8sEHH1SrTFJST9M09bcgfryaaqxY1ocVmaTYVU8xTaPUFOlUHxZorHq965uQBwDUHZVSAIAG08mkX7ERT4knVRPoRFPTuVQpddBBB1UtCa+TQlVoPProozWqSzRtStUlCxYscBMCOplXw1/RybqSJ/q+GnGrca2upz5GqnxQL6S60u2okbEqY9REWc1ydT+q4lFCRbdd15MlPT6dPGqsSgCoN5EqLmrrW6Xpc6qS0smTTsr1ib1O2tV3q7aEwMao344qnnR7Si6okbFeB/VJUvVHYrWAHqum/ijpoTHrOa0vPRb1U9LroxjQVE2NJbFvUrqvt3rAqPG3+vqomkgJKj0+jfPwww93r6PkiSqmLrroIrdPkCoiVFGk51EJCVVfaJpVfWg6pe5bMavG8eo7pfEqMaYx6nFp3EogqtJDDeZFr52SFnr+9Rh1Iq+EW3xTc9Hr8eKLL7qVHOq/o98n9bzRa+RXmOj3RhVbf/rTn9zHN2jQIHfKnaYGqvKwtv44qSgJqGmPimndlhJmqsRSpZxffaOkn6YcKuGlk3S9PjqxV3JRjeNVQfXss88mvQ+NSY23Fcd6LZSk0uNTNVtDfn/1s0oeKBHpV9OpubcSTXqe9XzEU8ycfPLJ7mNTM3T9Duj+NP0tXUrYqom2XndVRanvlZ6LdGMh0/Q7pt8BJVAUZ7o/vX619WzLNFVU6r5VfRRf3affdVVYKumocek10XOtKXqJxxtNCVVfOB1nddz59NNP3WOPKggzXaWkRLX6jqnCUr8viTGqJJtPr7F+1+gpBQA5lKNV/gAABchfsjzZpu9rKXMt892jRw9n6dKl1X7+pptuqrb8tr/U90MPPeRcdNFF7rLxWvr9gAMOcGbNmlXj/vVzWta9SZMmTvv27Z1f/vKXzvfff1/tOieccEKty4Nfeuml7n0luv32251hw4a599uqVSt32fALL7zQmTt3brVl5jWmRFpqXVu8O+64w9lss82c0tLSakuzJ15Xy8hfffXV7m3r8ehxjRs3zh2/Loun29H4U/n444+dCy64wBk6dKj73DRq1Mjp2rWrc+SRRzpTp06t9Wfee+8997b32WefWr+f7uNeu3atu2S87k/P44gRI9zl6hOvl+7r/e233zpjxoxxNt98c6dp06bu49l9992dV155pcZY/ve//zk777yz+5pr69u3r3PGGWc4X331VVqx/P7779f4XmVlpXvf2hTPMmPGDOf44493unTp4pSVlTndu3d3DjzwQOfxxx+v+rkrr7zS2X777Z22bdu6j0tjueqqq5yKiooa8anb0/PevHlzp3Pnzu7rq/uNt2LFCufcc891unXr5t5nnz59nLFjx7qxE0+PQ4+5ttdP9yfr1q1z42PQoEFunGsM2r/55ptr/NyHH37oHHbYYU6HDh3c2NTtHHXUUc6ECROcjXn66aed/v37u/HnHxPq8vtbm7ffftt9fAMGDHDatGnjPhebbLKJc+KJJ7rPY+JjVjy99NJLzsCBA9370uvw2GOPVbueH4v+76coVrfeeutq15s+fbob1/369XMWLVqUdixsjOIu8flJFZNLlixxTjrpJKdjx45Oy5YtnVGjRjlffvlltde4Lo9LajvW1Eaxo/u94oorql3+pz/9yRk8eHC11+S3v/2tM3/+/Fpv58knn3Svr9dEfx8uvvjiar8byfiPKfE1THbM19fJ/kbFP1dffPGFe1ltxxUAQPZE9E8uk2AAACQzceJEtxpElUmZnsKBjVNVh6q7VHGiVeKyjdfb3OpBVU/VpxoOG6fKK618qL5QyBxNc1almSpJ01lIIgxUYafVNlWFR6UUAOQOPaUAAIDrjjvu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6GCDBw+2s88+2+bOnRv08PLKxIkT3dfc30pLS628vNyOOOII++KLL4IeXiitXr3aTdzquc20RYsWuXHct29fa9asmftabb/99vaHP/zBjft8p+clPt6SbSNHjrR89NBDD9mcOXOqJdcTf4fit3feeafGbUyaNMl23nlna968uXXp0sV+97vfpfXa+Ym26667LuVz++OPP6b9eMrKyuy8885zk2xr165N++cAAOHRKOgBAACQrv/+97+26aab2nvvvWfTp0+3LbbYwsL4yf+uu+5qX375pZ1wwgl21llnuSd8n332mT344IN26KGHWrdu3YIeZt7RifF2223nPn8ff/yx3Xrrre7J9qeffuqeOKNuSanLLrvM3c9kcuWnn36ybbfd1pYvX25jxoxxE1OLFy92X69bbrnFfvvb39a5wqlXr162Zs0aNzmRC4cddli144p+NzVu/V7qe77OnTs36H6y9bjGjh1rxxxzjLVp0ybp71C8xGPotGnTbM8997R+/frZ3//+d/v+++/dJNM333xjL7zwggXhpJNOsv/7v/9zj4+KKwBAYSEpBQAIhZkzZ7qf4D/xxBP2m9/8xk1QqdoobJ566in78MMP3fH/4he/qPY9VQJUVFQENrZ8tssuu7jVUb6tttrKTRbcf//9duGFFwY6Nnjuuusumz17tr399ts2fPjwat9Toqpx48Z1vk1V1jRt2tRyZeDAge7mU1WP4kyXHXfccUl/Tr+7enwlJSWBPS4dVz766CO7/vrr0/odqs0f//hHa9eunZvwbd26tXuZPgg49dRT7eWXX7Z99tnHcq1t27bu/WqqI0kpACg8TN8DAISCkjg6WTrggAPcEyt9nQ5/yogqk4466ij3REvT5TTFKNl0ECWONLWuSZMmtvXWW9uLL75Y7fuzZs2y008/3U2MaIqSbu/II490p69szIwZM9z/R4wYUeN7Okn1TwTvueced9w60Ux09dVXu9PYfvjhh6pqF433888/t913392ddtO9e3f729/+Vu3nlPC65JJLbNiwYW4lhaYO6kT1tddeSzoN54YbbnCrOvQ4d9ttN7cyKd78+fPdSoYePXq4z1fXrl3tkEMOqfFcqMpC96X7bNWqlfs6qjqsvnRb8c+nT8+JTlxVyeK/fnfffXeNn//nP//pfk/PleJKFT6qxKhP3GzYsMGuuOIK23zzzd371Em8Tu7XrVtX7Xq6/MADD7S33nrLndKm13uzzTZzE2vxVA2mSqY+ffq419H9ajrV+PHjq11PY9PvQvv27d3r6TE888wzKZ83vS6dOnVy93Uf/jSu+D5sr776atVrpYSAXs90pkrqtVBc7rjjjjW+p+cvPgnjx+wHH3zgJrAUX71793Yr4OrTe0kVPnpcul1/qlm6sVBX/nS4hx9+2C6++GL3d01xpMSbqsV+//vf2zbbbONWhelx77fffm6yKN1eWRr36NGj3X09Jt1eZWXlRsel45YSY6rETGbFihVuvNZG41eMKfnmH4fk+OOPd8fy6KOPWibpsac7PXLvvfd2f2/0/AIACgtJKQBAKCgJpekzOuk69thj3ekk77//fto/r8SCkgnXXHON7b///vaPf/zDfv3rX9e4nk58lHDSFBgldfQzhx9+uDsNyaf7VdWWrqPbOe2002zChAnuiZSmRqWiBI8oEeE4TtLrKdmgE/Xakm+6TPelk2HfkiVLbN9997VBgwa5lRKaOqU+PvFTbnTSeeedd7o/e+2117qJCPUAGjVqlHtSn0hj1OM744wz7KKLLnITUnvssYctWLCg6jp6bp588kk3MaWeX5oipBNfVcz4HnjgATcJpRNb3e+f//xnN4GmREs6ibza+D+nhJJP41JC5JVXXnF76tx0003u9KSTTz7Zbrzxxqrr3XHHHe44+/fv716u5Ix6er377rv1iptTTjnFTfYNHTrUTeIpeafrKz4SadqpXludZOt10viVjIhP0Ol10ZiUYPzXv/5lf/rTn2yTTTaxqVOnVl1H19djVbJIU5t0W0oiKZmh1yMZJTk0lU40JU2vjTZ/apqeO8XDwoUL3XGon49iXUnUjb1Wim0lT3R76VDM6jlVklS/a0psqiqprokj/T4qLocMGeLGu+Is3VhoCCUin3vuOTdppESxjk3ffvutmxxS8lHT3y644AL75JNP3JhIp1+cnj89/0pEKimsn9Nre/vtt2/0Z/U6KdGXbEqgfkf95KBia8qUKdW+r3EqYaXkZjw9Lv1+1JYgr42OgaowS9wSj41Knvnx529XXnml+z31IounGNHxUo8RAFBgHAAA8tyUKVOUvXHGjx/vfh2NRp0ePXo4Z599do3r6nqXXnpp1dfa12UHH3xwteudfvrp7uUfffRRtZ9t3LixM3369KrL9H1d/s9//rPqstWrV9e438mTJ7vXu//++1M+Fv3sVltt5V63V69ezoknnujcddddzoIFC2pc99hjj3W6devmVFZWVl02depU92fvueeeqst22223Gve9bt06p0uXLs7hhx9eddmGDRvcy+MtWbLE6dy5szNmzJiqy2bOnOneXrNmzZzvv/++6vJ3333Xvfzcc8+t+ll9PXbs2KSPd8WKFU7btm2dU089tdrl8+fPd9q0aVPj8kSvvfaaex933323s2jRImfu3LnOiy++6GyxxRZOJBJx3nvvvarrnnzyyU7Xrl2dH3/8sdptHHPMMe59+a/bIYcc4my99dYp7zfduJk2bZr79SmnnFLter///e/dy1999dWqy/R667I33nij6rKFCxc6TZo0cc4///yqywYNGuQccMABKce35557Ottss42zdu3aqsv0ezF8+HCnT58+KX9Wz2Pi74lv8ODBTnl5ubN48eKqy/RYS0pKnOOPPz7l7eo17dSpk3vbffv2dU477TTnwQcfdJYuXVrjun7MXn/99VWXKTb9+6+oqKgWi/HxfsIJJzgtWrRw99966y2ndevW7vMV/1ykGwsbU9tz5cfkZpttVuN2NIb431f/Meg1vvzyy6tdVtvj0mXx15MhQ4Y4w4YN2+hYdUyM/333vf322+7lOs48/fTTzjXXXON06NDBadq0qXs88T322GM14tN35JFHuseTVPzHtLFNz2lt1qxZ4z5OHfPmzZtX7Xv6vdfPXnvttRt9HgAA4UKlFAAg76kySFNw9Om+aHrH0Ucf7U6fSWdai6jaJ54ajMvzzz9f7fK99trLnYblUy8ZVReoAsKnCqb4qVaqolIVhqY6xVez1EY/q4ocVVD4U1hUvaFpbxpT/JQvTZtRdUX89Do9F7oNVSjFU3VIfM8bVTdoilj8uDW1yu/ro6XjNRXGr4yobdyquomvxtLtaeVD/znTOHR7ms6kqpfaaDrQ0qVL3eq2+KoJjUW3lTh1MBlNw1KVj5rAqyJs2bJlbmWF37hZOcX//e9/dtBBB7n78felyhNd33+Mep3UwDmdSruNxY3/vyqK4p1//vnu/6qkiafqLH/qoegxaRpo/Ouk8akSStWAtdHrpil2quJSVZr/OBWHeqz6OX9qZ13MmzfPrZhT5ZamBMb/DqiyK/F3JZF+RzVNTZWDigdNxVPfNFW9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vjZbNdPsjdFme79lVppeY1UAQJF7/vnk39NiajvsEPv6pZeSJ5Y6dDAbPjz29SuvmFVU1LzeQQfVuYn4vffea6eeeqrdeuutNnToUNttt93cpNPAgQOrrnfkkUe6PbfliiuucBNM//znP1NWOGnG2dFHH219+vRxZ6Q1btzYvfzSSy91Z6Yddthh7te9e/e2zz//3G677TY74YQTLBtoFgEAAID88smlZmvne/td9jYbMjaWkPK17G2252tmLXp7X//0gdmUs3I/VgAAsuTwww+3uXPn2jPPPGP77ruvW6ij5FR8Ac9OO+1U7Wf09cYqpVQhtcUWW9gjjzxSlZBatWqVzZgxw04++eSqKi1tV155pXt5toSu0TkAAAAK2LIvzKbf7u03amm2031mJaW1X7d5N7NdnzJ7eUezyjVmM+406zHarHsRL4YDAEjP/vsn/17iByGjRqV/u3vtZZnUtGlTN4mkTVPpVBWliqYTTzyx3repReP+97//uVVQ22yzTVXPb7njjjvcHt6JDdOzhUopAAAA5FeVlPPzFIn+/2fWrGvq67cbaLbtP2Nfv/drs4okjdEBAPAp0ZJsS1xhNtV1ExM26VynAfr37+9WNfneeeedat/X12pUnspf//pXdzrennvu6SampHPnztatWzf79ttv3Sqq+E3T+LKFSqkwa9XKnHo0TEORID6QCvGBZIgNBBkfWkVvzv+8/aadzfqem97PbTbGbPZjZvNeMlsz1+yzq7wpfwAAhNTixYvdflFjxoxxe0i1atXKXSzub3/7mx1yyCFV13vsscds2223tZ133tltVP7ee+/ZXXfdtdHbv+6666yystL22GMPd1qgVtq77LLL7He/+521adPGnS6oBuu6zyVLlrgL02UDSamwUqZ15EirWLgwo1lXFAjiA6kQH0iG2EDQ8fH1v2PNzfucbtaoeXo/p2kW299mNq6vWeVas6/+YbbFaWatNs/OOAEAyLKWLVu60+huuOEGt6fT+vXrrWfPnm7j8z/+8Y9V11Mi6eGHH7bTTz/dunbtag899JBbTZUO3XZ8YkpTA5s3b25jx461Cy64wFq0aOFO7zvnnHOy9jgjTqrl7wrQ8uXL3azfsmXLrHXrn5cSDikt3bhw4UIrLy+3ksTyQhQ94gOpEB9IhthAYPGhZNKT3cwqlpiVNDY7ZLZZs851u42P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B7udn32TjrFBdWF8RCZvzsWbg6mNzf17t4gwe/bsQVZWltHTICIiIiIiIiKKaLt370arVq1q/b7lklKShd23bx+SkpJgs9lg9syjJNjkj5ycnGz0dCjMMD6oLowPqg1jg+rC+KC6MD6oNowNqgvjIzJJqkkq4Fq0aFFnBZzllu/J/4y6snRmJP9w+Y+XasP4oLowPqg2jA2qC+OD6sL4oNowNqgujI/Ik5KS8ru34YJNIiIiIiIiIiIKOSaliIiIiIiIiIgo5JiUMrHY2FhMmDBB+0p0NMYH1YXxQbVhbFBdGB9UF8YH1YaxQXVhfFib5RqdExERERERERGR8VgpRUREREREREREIcekFBERERERERERhRyTUkREREREREREFHJMSpnY66+/jrZt2yIuLg6DBw/G4sWLjZ4ShdjEiRNx0kknISkpCRkZGRg7diw2btzod5uysjL85S9/QdOmTZGYmIg//vGPOHjwoGFzJmP84x//gM1mw1133VV9HWPD2vbu3YurrrpK+/vHx8ejV69eWLp0afX3peXkY489hubNm2vfHzlyJDZv3mzonCk0nE4nHn30UbRr107723fo0AFPPvmkFhNejA/rmDt3LsaMGYMWLVporyNfffWV3/frEwuHDx/GlVdeieTkZKSmpuKGG25AUVFRiH8TCnV8VFZW4v7779deXxo1aqTd5pprrsG+ffv8fgbjw5rPHb5uueUW7TYvv/yy3/WMDWtgUsqkpk6divHjx2u7FCxfvhx9+vTB6NGjkZ2dbfTUKIR+/vlnLanwyy+/YObMmdqL/6hRo1BcXFx9m7vvvhvffvstPvvsM+328kbgoosuMnTeFFpLlizB//3f/6F3795+1zM2rOvIkSMYNmwYoqOj8f3332PdunV48cUX0bhx4+rbPPfcc/jnP/+JyZMn49dff9VOKOR1RpKZFNmeffZZvPnmm3jttdewfv167Vji4dVXX62+DePDOuQ9hbzPlA9Da1KfWJCTyrVr12rvVf73v/9pJ6s333xzCH8LMiI+SkpKtPMUSXLL1y+++EL78PSCCy7wux3jw5rPHV5ffvmldi4jyaujMTYsQnbfI/MZNGiQ+y9/+Uv1sdPpdLdo0cI9ceJEQ+dFxsrOzpaPsd0///yzdpyXl+eOjo52f/bZZ9W3Wb9+vXabRYsWGThTCpXCwkJ3p06d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ERERUSBw+R4RERFRLTIzM6svKSkpWuWU73WSkDp6+d5pp52Gv/71r7jrrrvQuHFjNGvWDFOmTNGWv1133XVISkpCx44d8f333/s91po1a3DOOedoP1PuI8vycnNza52b0+nE559/jjFjxvhd37ZtWzz11FO45pprtJ/Vpk0bfPPNN8jJycGFF16oXde7d28sXbq0+j5SaSU/R+bbqFEj9OjRA999913198866ywcPnwYP//8c4D+zxIRERExKUVEREQUcO+//z7S0tKwePFiLUF166234pJLLsHQoUOxfPlyjBo1Sks6lZSUaLfPy8vTluH169dPSxZNnz4dBw8exKWXXlrrY6xatQr5+fkYOHDgMd976aWXMGzYMKxYsQLnnXee9liSpLrqqqu0x+/QoYN27C2Y/8tf/oLy8nLMnTsXq1evxrPPPutXARYTE4O+ffti3rx5Qfn/RURERNbEpBQRERFRgEn/pUceeQSdOnXCgw8+iLi4OC1JJUvg5DpZBnjo0CEtsSRee+01LSElDcu7du2qjd99913Mnj0bmzZtqvExpLrJ4XAgIyPjmO+de+65+POf/1z9WAUFBTjppJO0xFjnzp1x//33Y/369VriS8iyPEli9erVC+3bt8f555+PU0891e9ntmjRQntMIiIiokBhUoqIiIgowGR5nJckjpo2baolfLxkeZ7Izs6ublguCShvjyq5SHJKbN26tcbHKC0tRWxsbI3N2H0f3/tYdT3+HXfcoS35k8SUNG/3Jst8xcfHV1d2EREREQUCk1JEREREARYdHe13LIkj3+u8iSSXy6V9LSoq0no6rVy50u+yefPmYyqWvKTySpJEFRUVdT6+97HqenxpmL5t2zZtmZ8s35Mlga+++qrfz5SeUunp6Sfwf4OIiIioZkxKERERERmsf//+WLt2rdakXJqg+16k8XhNpMeTWLduXUDmkJWVhVtuuQVffPEF7rnnHq05+9GN2GVZIREREVGgMClFREREZDBpNC6VSOPGjcOSJUu0JXszZszQduuTXfZqIlVLksyaP39+gx9fdgqUx9u+fbvWCF2WEnbr1q36+zt27MDevXsxcuTIBj8WERERkReTUkREREQGkybiCxYs0BJQsjOf9H+SRFFqairs9trfrsmyuw8//LDBjy+PK4kxSUSdffbZWjP0N954o/r7H3/8sTavNm3aNPixiIiIiLxsbu9ewERERERkKtLsvEuXLpg6dSqGDBkSlMeQnlWyi99HH32kNUInIiIiChRWShERERGZlOyI98EHHyA3Nzdoj7Fr1y489NBDTEgRERFRwLFSioiIiIiIiIiIQo6VUkREREREREREFHJMShERERERERERUcgxKUVERERERERERCHHpBQREREREREREYUck1JERERERERERBRyTEoREREREREREVHIMSlFREREREREREQhx6QUERERERERERGFHJNSREREREREREQUckxKERERERERERERQu3/AeQhdXhLdtD5AAAAAElFTkSuQmCC",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Temporal summation: synaptic responses accumulate over time\n"
- ]
- }
- ],
- "source": [
- "# Plot spike train responses\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Expon response\n",
- "axes[0].plot(times.to_decimal(u.ms), expon_train_resp.to_decimal(u.mS), \n",
- " linewidth=2, color='blue')\n",
- "for st in spike_times:\n",
- " axes[0].axvline(x=st, color='r', linestyle='--', alpha=0.3)\n",
- "axes[0].set_ylabel('g (mS)')\n",
- "axes[0].set_title('Exponential Synapse Response to Spike Train (50 Hz)')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Alpha response\n",
- "axes[1].plot(times.to_decimal(u.ms), alpha_train_resp.to_decimal(u.mS), \n",
- " linewidth=2, color='orange')\n",
- "for st in spike_times:\n",
- " axes[1].axvline(x=st, color='r', linestyle='--', alpha=0.3, label='Spike' if st == 0 else '')\n",
- "axes[1].set_ylabel('g (mS)')\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_title('Alpha Synapse Response to Spike Train (50 Hz)')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Temporal summation: synaptic responses accumulate over time\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Effect of Time Constant\n",
- "\n",
- "How does τ affect synapse dynamics?"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Compare different time constants\n",
- "taus = [2*u.ms, 5*u.ms, 10*u.ms, 20*u.ms]\n",
- "synapses = [brainpy.state.Expon(1, tau=tau) for tau in taus]\n",
- "\n",
- "for syn in synapses:\n",
- " brainstate.nn.init_all_states(syn)\n",
- "\n",
- "# Simulate\n",
- "duration = 100. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "responses_by_tau = {}\n",
- "for tau, syn in zip(taus, synapses):\n",
- " resp = []\n",
- " for i, t in enumerate(times):\n",
- " spike = 1.0 * u.mS if i == 0 else 0.0 * u.mS\n",
- " syn(u.math.asarray([spike]))\n",
- " resp.append(syn.g.value[0])\n",
- " responses_by_tau[tau] = u.math.asarray(resp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA+IBJREFUeJzs3Qd4U9X7B/DvTdO9W2jLLnvvJYjIUkTFgSgqynBvcY+/Cu6t4Pq5xb0niqKAKAKC7L336N67Te7/eU+aNC0daZs0Sfv9PE/k3pube0+S29r3vue8R9N1XQcREREREREROZ3B+YckIiIiIiIiIsGgm4iIiIiIiMhFGHQTERERERERuQiDbiIiIiIiIiIXYdBNRERERERE5CIMuomIiIiIiIhchEE3ERERERERkYsw6CYiIiIiIiJyEQbdRERERERERC7CoJuIqAaff/45BgwYgNDQUGiahlmzZjn0nLfLysrC7bffjvbt28PX11e9v40bNzrt+DNmzFDHPHjwoNOOSURERORpGHQTUZMhwZ0EedU94uPjy71m1apVmDp1qgpAb7zxRsyePRtnnXVWjc+5yrJly1Q758yZA1e799578corr6BXr164//771fuLi4urdF/53Gr6bO0f3hpo7969G7feeit69uyJsLAw+Pv7o02bNpg8eTK+/fZbmM1meOp1Lzc53GH+/Pnq/PKvt9B1HZ988gnGjBmD6Oho+Pn5ITY2Fv3798dNN92Ev/76y91NbHS/i4OCgtCyZUuMHTsWjzzyCPbt2+fuZhIROY3ReYciIvIOHTt2xBVXXFHpcxEREeXWf/nlF/UH+EcffYThw4c7/Fxj8PPPP6NLly5YsGBBjftKhj8jI6PcNgmyDh06pLLlFT9XWX/66adVMN+qVSt4gxdffBH33XefCqxHjBiBM844QwUKR44cweLFi1XQfdVVV+G9995zd1OpnuR7lOs3MjIS5557rrpG8/PzsWnTJvX9yo22008/3d3NbFS/iwsLC5GUlIQ1a9bg8ccfx1NPPaVu/D355JMqKCci8mYMuomoyenUqZPDmeLjx4+rfyUDU5vnGgN5fyNHjnRo38q61UtWXoJuea5iDwJr4N2iRQt4g7fffht33323eh8SXMuQAnslJSX48MMPsXz5cre1kZxDvkMJuPv166cy2tKjwZ7cXNq+fbvb2tcU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GqUZM2bgggsucGsbGHR7A5mXbtQoFMl0YZyjm4iIiIio0Tp48CCuvvpqtG/fXhXy6tixI2bPno2ioiKHXitBJnkWRnDeQMYRhIZCDwmxLBMRERERUaO0c+dONT/1W2+9hW3btuHll1/Gm2++iQcffLDK13z66afYt29fucrfr7/+OtLT0xuo1VQdBt1ERERERESVmD9/viqkVdnDVRnls846Cx988AHOPPNMdOjQAeeddx7uvvtufPfdd1W+RrLi06dPV8H50aNH1TGOHTsGf3//artcP/XUU4iNjUVERAQee+wxNUXXPffcg6ioKLRu3Vq1w0oy7bfccouarzogIADt2rXD008/bXtepoS75ppr0Lx5c4SFhWHMmDHYtGlTufMuWLAAgwcPVq9v1qwZLrzwQttzcoNg2rRpiIyMVBXDzz77bOzZs6fcdyHtXLRoEbp3746QkBD1Pk+cOFFuaro777xT7SdT0917773qBoS7Mej2BmYzsGsXfPbutSwTEREREZHLTZkyRQV18rj22msxbNgw2/q8efOqfF3Pnj1VUFjVY8KECbVqR2ZmpgqEqzJ8+HD8+eefWLVqFZYtW4ZZs2apgLq6KdqWLl2K48eP4++//8ZLL72kurCfe+65KuhdvXo1brjhBlx//fUqiBevvPIKfvrpJ3z11VfYtWuXyq7Hx8fbjnfxxRer+ax//fVXrFu3DgMGDMDYsWORlpamnv/ll19UkC3B9IYNG7BkyRIMGTKk3I2AtWvXqnPI+5Bg+fzzzy83VVdeXh5eeOEFfPzxx6rdhw8fVjckrF588UUVnL///vv4559/1Lm///57uJvR3Q0gB8jdmd27YczMBIYOdXdriIiIiIic4qbB9yE9IaPBzxsZF4E3/nu2xv1kTLU8hASwfn5+iIuLq/F1CxcurHZeZ+sxHbF37168+uqrKtisigTJkqGW4NvX1xdz585Vgat0SZescmUkiJdA2mAwoGvXrnjuuedUUGvtxv7AAw/gmWeeUcHrpZdeqgLczp07Y8SIESrTL5luK9lnzZo1Kui2ZtelvT/88AO++eYbXHfddXjyySfVcR599FHb6/r27av+lYy2BNsrVqxQ70F88sknaNu2rTrGJZdcorbJZyrZfBnnLiTzLhl6K3nf0u5JkyapddlXMuPu5lFBt9yteP7559WdEbl7JHclaqo0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q94ViWSeZ8l0f/zxxzh8+DAmT56M7du34/7770d8fDzGjRuHX375pb6nadqk635iIgzJyZblejD6GlXgbS2k1lBOs+9ivtX7Ktu3DorG1PYj1HKxbsLcnbymG5pm7AQt+hvAd6BdZfNboee8yeEtREREROSxnFIG+J9//sENN9yATp064euvv7Zlul988UUkJyfjvPPOwyOPPOKMUzVNZjOwZg18N2ywLNeTtYu5zNNdVFiMBh/X7WVTh1nN6DAKzf3D1PLy5J1YnrTT3U1qcjRDFLSoD4GAC2zb9JyXoGfeB13nWHsiIiIiakRBt2SzH3zwQbRv3x6nn346fvzxR1VUbf369di8eTPuvvtu3H777di0aROuvvpqvP76685tOdVZ8zZlc3WnNNC47o4toxEXFaqW1+05hryCInibIKM/bu16lm39he0/Ib/E+95H46hs/iy0kDvLNhb8AD1tKgusEREREVHjCLr79euH3r17Y+7cuTjllFPw888/q7HdktmW5yoaPXo00tPTndFecoIYuwrmCQeTG+ScMo78tF4d1HJxiQmrth+CNxrfoi8GR3dUyycKMvDuvqXublKTJNeTFnIDtIhXAC3QsrF4M/TUSdCL1ru7eURERERE9Qu6IyIi8PbbbyMhIQGff/65mrdbxnZX5fzzz8eBA97Zpbgxio2PsS0nHkxqsPOO6msJVsXSTXvhrcHevT3OL1dUbW82s6vuogWcBS3qC8DQyrLBnAI97UroeV+6u2lERERERHUPupctW6a6jIeFWca31iQoKAjt2rWry6nIBeLalwXdCQcaLuge1KU1QgL91fLyLQdUxtsbtQtuhhkdR6llk27G09t+gFmv/1h7qhvNtzu0Zt8CfqeUbimGnvUwzJlzoOvs/k9EREREjaCQ2s6dO/H444/jpptuwiuvvIKsrCxnHJYaIuhuwEy3r9EHp/W2FFTLyS/Ef7uPwFtN73A62gZZuulvyTiMn46uc3eTmjRVYC3yPSBoetnG/M+gp82Abmq4Kv1ERERERHUOul977TV06dIFKSnl/4BdsGCBGsc9e/ZsvPnmm5g1axYGDBhw0n7kOeLim7sl0y3G9O1kW/5zo3d2MRd+BiPu73m+bf213b8hrTDHrW1q6jTNF4aw/4MW9ox8Q5aNxWst47yLN7u7eURERETURDkcdP/000/o2LEj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8JiI72ltTQ2iosWavoeIEvks9jc5qL09JHgPngn2+g65NqT/eOh1DV8d0tO97tr6vbSDDxLq/VkLfbhQrywNSyK+xpF/weqX46B3bfS3t2EZ6p/U4HZ74BRLb8q/540/8Gjqr36T/g2NZTbyuiO+U6B8/r83hzzfpPI3Viea++Hesf58m1ez/Jua8HP+TeXQNMQpTlPPqh8t7+cWC7rT09Nht9uRm5tbL18ct2nTptHXiPyjuV6M7xNbQ+IHadYfZoAcJ2mBctLREXUeFl0/3GpLjFDkYN0kM2K9JLNi3SQz10ubieOfppbLVKV3uVwYPHgwZs2aVe+bLY5HjhzZ6GtEfuj1wsyZMw95PREREREREVFrMVXQLYiu32+88QbeeecdbNiwATfddJOcnXzSpEny/NVXX11vorU77rgD3377LZ599lk57vvhhx/G8uXLceuttyJs+HxibTQ4ly3T00RERERERGQJpupeHlgCTExq9uCDD8rJ0MTSXyKoDkyWtmvXrnrN+KNGjZJrc99///2499570b17dzlzedit0V1YCFtpqdGlICIiIiIiIisH3YJopT5US/XcuXMPyps4caLciIiIiIiIiMzEdN3LiYiIiIiIiMIFg24iIiIiIiKiFsKgm4iIiIiIiKiFMOgmIiIiIiIiaiEMuq3CbodmtxtdCiIiIiIiIrL67OXUgAi2zzoL7rw8PU1ERERERESWwJZuIiIiIiIiohbCoJuIiIiIiIiohTDotgJVBZYsgXPlSj1NRERERERElsAx3VagaUBeHmylpXqaiIiIiIiILIEt3UREREREREQthEE3ERERERERUQth0E1ERERERETUQhh0ExEREREREbUQBt1ERERERERELSTiZy/X/LOBl5WVwbR8PqhVVSirroZSVgab02l0iYgkVVVRXl6O6Oho2Gx8hkfmwbpJZsR6SWbFuklmpFqgXgZiyEBMeSiKdqQrwtyePXuQnZ1tdDGIiIiIiIjIgnbv3o0OHToc8nzEB93iCcq+ffuQkJAARVFgVuIping4IH6giYmJRheHSGK9JLNi3SQzYr0ks2LdJDMqs0C9FKG0aI1v167dYVvjI757ufjmHO6phNmICmfWSkeRi/WSzIp1k8yI9ZLMinWTzCjR5PUyKSnpiNeYs3M8ERERERERURhg0E1ERERERETUQhh0W0RUVBQeeughuScyC9ZLMivWTTIj1ksyK9ZNMqOoMKqXET+RGhEREREREVFLYUs3ERERERERUQth0E1ERERERETUQhh0ExEREREREbUQBt0W8NJLLyEnJwfR0dEYPnw4li5danSRKMI88cQTGDp0KBISEpCZmYnzzz8fmzZtqndNTU0NbrnlFqSlpSE+Ph4XXXQRcnNzDSszRZ4nn3wSiqLgzjvvDOaxXpIR9u7diyuvvFLWu5iYGPTv3x/Lly8PnhfT6Tz44INo27atPD9u3Dhs2bLF0DJT+PP5fHjggQfQuXNnWe+6du2KRx99VNbHANZNag0//vgjJkyYgHbt2sm/29OmTat3vin1sKioCFdccYVcvzs5ORnXX389KioqYFYMuk3uk08+weTJk+XMfStXrsSAAQMwfvx45OXlGV00iiDz5s2TgcvixYsxc+ZMeDwenH766aisrAxe86c//QnTp0/H1KlT5fX79u3DhRdeaGi5KXIsW7YMr732Go477rh6+ayX1NqKi4sxevRoOJ1OzJgxA+vXr8ezzz6LlJSU4DVPP/00XnjhBbz66qtYsmQJ4uLi5N928ZCIqKU89dRTeOWVV/Diiy9iw4YN8ljUxSlTpgSvYd2k1lBZWSljGtGw2Jim1EMRcK9bt05+Lv3qq69kIP+HP/wBpiVmLyfzGjZsmHbLLbcEj30+n9auXTvtiSeeMLRcFNny8vLEY3Ft3rx58rikpERzOp3a1KlTg9ds2LBBXrNo0SIDS0qRoLy8XOvevbs2c+ZM7aSTTtLuuOMOmc96SUa46667tDFjxhzyvKqqWps2bbRnnnkmmCfqalRUlPbRRx+1UikpEp199tnaddddVy/vwgsv1K644gqZZt0kIwDQPv/88+BxU+rh+vXr5euWLVsWvGbGjBmaoija3r17NTNiS7eJud1urFixQnapCLDZbPJ40aJFhpaNIltpaancp6amyr2op6L1O7Su9urVCx07dmRdpRYnemGcffbZ9eqfwHpJRvjyyy8xZMgQTJw4UQ7HGTRoEN54443g+e3bt+PAgQP16mVSUpIcPsZ6SS1p1KhRmDVrFjZv3iyP16xZgwULFuDMM8+Ux6ybZAbbm1APxV50KRf32gBxvYiTRMu4GTmMLgAdWkFBgRx/k5WVVS9fHG/cuNGwclFkU1VVjpkV3Sf79esn88TN0eVyyRtgw7oqzhG1lI8//lgOvRHdyxtivSQj/Prrr7ILrxgadu+998q6efvtt8u6eM011wTrXmN/21kvqSXdfffdKCsrkw8f7Xa7/Iz5+OOPy266AusmmcGBJtRDsRcPNUM5HA7ZGGTWusqgm4iOulVx7dq18uk4kZF2796NO+64Q47nEhNNEpnlwaRoffnHP/4hj0VLt7hnirGJIugmMsqnn36KDz74AB9++CH69u2L1atXy4foYjIr1k2ilsXu5SaWnp4un0Q2nGlXHLdp08awclHkuvXWW+VkFXPmzEGHDh2C+aI+iuEQJSUl9a5nXaWWJLqPi0kljz/+ePmEW2xisjQx+YpIi6firJfU2sRsu3369KmX17t3b+zatUumA3WPf9uptf31r3+Vrd2XXnqpnFH/qquukpNNihVKBNZNMoM2TaiHYt9wUmmv1ytnNDdrXWXQbWKiK9rgwYPl+JvQJ+jieOTIkYaWjSKLmOdCBNyff/45Zs+eLZcbCSXqqZipN7SuiiXFxIdM1lVqKWPHjsUvv/wiW2sCm2hhFF0lA2nWS2ptYuhNwyUVxRjaTp06ybS4f4oPhaH1UnT5FeMQWS+pJVVVVckxr6FE4474bCmwbpIZdG5CPRR78UBdPHwPEJ9PRV0WY7/NiN3LTU6MCRNdfsSHx2HDhuH555+X0+xPmjTJ6KJRhHUpF93RvvjiC7lWd2C8jJjYQqyfKPZifURRX8V4GrFm4m233SZviiNGjDC6+BSmRF0MzCsQIJYVEWsjB/JZL6m1iZZDMWGV6F5+ySWXYOnSpXj99dflJgTWkn/sscfQvXt3+QFTrJ0suvief/75RhefwphYF1mM4RaTSYru5atWrcJzzz2H6667Tp5n3aTWUlFRga1bt9abPE08LBd/q0X9PFI9FL2HzjjjDNxwww1y6I6YNFU0DoleHOI6UzJ6+nQ6silTpmgdO3bUXC6XXEJs8eLFRheJIoy4VTS2vfXWW8FrqqurtZtvvllLSUnRYmNjtQsuuEDbv3+/oeWmyBO6ZJjAeklGmD59utavXz+5xE2vXr20119/vd55sSTOAw88oGVlZclrxo4dq23atMmw8lJkKCsrk/dH8ZkyOjpa69Kli3bfffdptbW1wWtYN6k1zJkzp9HPlddcc02T62FhYaF22WWXafHx8VpiYqI2adIkuYSoWSnif0YH/kREREREREThiGO6iYiIiIiIiFoIg24iIiIiIiKiFsKgm4iIiIiIiKiFMOgmIiIiIiIiaiEMuomIiIiIiIhaCINuIiIiIiIiohbCoJuIiIiIiIiohTDoJiIiIiIiImohDLqJiIgs4Nprr0VOTg7M5tNPP0VqaioqKipa7Wt6PB5kZ2fj5ZdfbrWvSUREdKwYdBMRERlEUZQmbXPnzoUZ+Xw+PPTQQ7jtttsQHx/fal/X6XRi8uTJePzxx1FTU9NqX5eIiOhYKJqmacf0SiIiIvpN3n///XrH7777LmbOnIn33nuvXv5pp50mW5NVVUVUVBTMYtq0abjwwguxe/dutG/fvlW/dklJCbKysvDKK6/guuuua9WvTUREdDQYdBMREZnErbfeipdeeglW+dN83nnnoaioCPPnzzfk60+YMAGlpaX48ccfDfn6RERETcHu5URERBYc071jxw7Z9fyf//ynDNS7dOmC2NhYnH766bLlWQTujz76KDp06ICYmJhggNzQjBkzcMIJJyAuLg4JCQk4++yzsW7duiOWR3Tr/vbbbzFu3LiDzolyiQcIU6dORZ8+feTXHzlyJH755Rd5/rXXXkO3bt0QHR2Nk08+Wf5bQm3ZsgUXXXQR2rRpI68R/4ZLL71UBtgNewAsWLCg0X8XERGRWTiMLgAREREduw8++ABut1uOqxbB59NPP41LLrkEp556qhwLftddd2Hr1q2YMmUK/vKXv+DNN98MvlZ0Y7/mmmswfvx4PPXUU6iqqpLdtceMGYNVq1YdduK2FStWyK97/PHHN3petH5/+eWXuOWWW+TxE088gXPOOQd/+9vf5ARoN998M4qLi2V5Rffw2bNny+vEe4ry1NbWyn+TCLz37t2Lr776SnYpT0pKCn6NwYMHy4cLCxculO9NRERkRgy6iYiILEwEpKJlOBCMisnNRIBbXV2N5cuXw+HQ/9Tn5+fLAF0E1WJcuJht/Pbbb8fvf/97vP7668H3E0F4z5498Y9//KNefkMbN26U+86dOzd6ftOmTfKaQOCekpKCP/7xj3jsscewefNm2aoeWl7R2i2uXb9+PbZv3y5byS+++OLg+z344IMHfQ3Rui+I1zDoJiIis2L3ciIiIgubOHFivdbf4cOHy/2VV14ZDLgD+aIVWQTpgpiwTbQcX3bZZSgoKAhudrtdXjtnzpzDft3CwsJgMN2YsWPH1mspD5RLdBsPBNyh+b/++qvcB/4t3333nWx5P5zA1xblJiIiMiu2dBMREVlYx44d6x0HglaxjnVj+aJLtyBaxwXRDb0xiYmJTfr6h5r07VjLJVrOxXJgzz33nGyZF+PNzz33XPkQIfThQujXFmPIiYiIzIpBNxERkYWJlumjyQ8EqmL5scC4bjFuuqHQVvLGpKWlBYNlMdFZc5VLePbZZ+XEcV988QW+//572Q1edEFfvHhxva8VCNTT09MPW1YiIiIjMegmIiKKQF27dpX7zMzMRmcgP5JevXrJvRh/3b9//2Yvn3hPsd1///1yorTRo0fj1VdflWPCA8TXFnr37t3sX5+IiKi5cEw3ERFRBBIzhIsu5GLCNI/Hc9B5MfHa4YiZw10ul5ysrTmVlZXB6/XWyxPBt81mkzOaN5xBXXQtF8uRERERmRVbuomIiCKQCLjFTOZXXXWVXPZLrIOdkZGBXbt24euvv5Ytyy+++OIhXy/WzxZrgv/www/4+9//3mzlEkuHiTW+xQRxPXr0kAG46AIvuqWLSdhCicngRDkDXd2JiIjMiEE3ERFRhLr88svRrl07PPnkk3jmmWdkS3L79u3l5GWTJk064uvF+toiEN69e/dBE6QdqwEDBshW+OnTp8uZ1mNjY2XejBkzMGLEiOB1paWlcry3WPObiIjIzBTtUNOOEhERER2GWGO7T58+uOSSS/Doo4+26td+/vnn8fTTT2Pbtm2IiYlp1a9NRER0NDimm4iIiI6J6PItupa/9NJLqKioaLWvK8agiyXFxCRrDLiJiMjs2NJNRERERERE1ELY0k1ERERERETUQhh0ExEREREREbUQBt1ERERERERELYRBNxEREREREVELYdBNRERERERE1EIYdBMRERERERG1EAbdRERERERERC2EQTcRERERERFRC2HQTURERERERNRCGHQTERERERERtRAG3URERERERERoGf8P6jcEpK5sPSwAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Effect of τ:\n",
- "- Smaller τ → faster decay, less temporal summation\n",
- "- Larger τ → slower decay, more temporal summation\n",
- "- Choose τ based on biological constraints and computational needs\n"
- ]
- }
- ],
- "source": [
- "# Plot effect of tau\n",
- "plt.figure(figsize=(10, 6))\n",
- "\n",
- "colors = plt.cm.viridis(np.linspace(0, 1, len(taus)))\n",
- "for (tau, resp), color in zip(responses_by_tau.items(), colors):\n",
- " plt.plot(times.to_decimal(u.ms), resp.to_decimal(u.mS), \n",
- " linewidth=2, label=f'τ = {tau}', color=color)\n",
- "\n",
- "plt.axvline(x=0, color='r', linestyle='--', alpha=0.3, label='Spike')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Synaptic Variable g (mS)', fontsize=12)\n",
- "plt.title('Effect of Time Constant on Synapse Decay', fontsize=14)\n",
- "plt.legend(fontsize=10)\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"\\nEffect of τ:\")\n",
- "print(\"- Smaller τ → faster decay, less temporal summation\")\n",
- "print(\"- Larger τ → slower decay, more temporal summation\")\n",
- "print(\"- Choose τ based on biological constraints and computational needs\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Synapses in Networks (Preview)\n",
- "\n",
- "Synapses are used within projections. Here's a preview:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Synapse integrated into projection!\n",
- "Synapse type: Expon\n",
- "Synapse tau: 5.0 * msecond\n",
- "\n",
- "See Tutorial 3 for complete network building!\n"
- ]
- }
- ],
- "source": [
- "# Create neurons\n",
- "pre_neurons = brainpy.state.LIF(10, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "post_neurons = brainpy.state.LIF(5, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "\n",
- "# Create projection with exponential synapse\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(\n",
- " 10, 5, 0.5, 0.5*u.mS\n",
- " ),\n",
- " syn=brainpy.state.Expon.desc(5, tau=5.*u.ms), # Synapse descriptor\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=post_neurons\n",
- ")\n",
- "\n",
- "print(\"Synapse integrated into projection!\")\n",
- "print(f\"Synapse type: {type(projection.syn).__name__}\")\n",
- "print(f\"Synapse tau: {projection.syn.tau}\")\n",
- "print(\"\\nSee Tutorial 3 for complete network building!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 8: When to Use Each Synapse Type\n",
- "\n",
- "### Decision Guide\n",
- "\n",
- "**Use Expon when:**\n",
- "- Speed is critical\n",
- "- Training SNNs\n",
- "- Large-scale simulations\n",
- "- Precise kinetics not needed\n",
- "\n",
- "**Use Alpha when:**\n",
- "- Biological realism matters\n",
- "- Detailed cortical models\n",
- "- Comparing to experimental data\n",
- "- Rise time is important\n",
- "\n",
- "**Use AMPA when:**\n",
- "- Excitatory synapses\n",
- "- Fast glutamatergic transmission\n",
- "- Cortical excitatory neurons\n",
- "\n",
- "**Use GABAa when:**\n",
- "- Inhibitory synapses\n",
- "- GABAergic interneurons\n",
- "- Slower inhibition needed"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 9: Creating Custom Synapses\n",
- "\n",
- "You can create custom synapse models:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Custom synapse created!\n",
- "Rise time: 1.0 * msecond\n",
- "Decay time: 10.0 * msecond\n"
- ]
- }
- ],
- "source": [
- "from brainpy.state import Synapse\n",
- "\n",
- "class DoubleExpSynapse(Synapse):\n",
- " \"\"\"Synapse with different rise and decay time constants.\"\"\"\n",
- " \n",
- " def __init__(self, size, tau_rise, tau_decay, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- " \n",
- " self.tau_rise = tau_rise\n",
- " self.tau_decay = tau_decay\n",
- " \n",
- " # Two state variables\n",
- " self.h = brainstate.ShortTermState(\n",
- " braintools.init.Constant(0., unit=u.mS)(size)\n",
- " )\n",
- " self.g = brainstate.ShortTermState(\n",
- " braintools.init.Constant(0., unit=u.mS)(size)\n",
- " )\n",
- " \n",
- " def update(self, spike_input):\n",
- " dt = brainstate.environ.get_dt()\n",
- " \n",
- " # Rise dynamics\n",
- " dh = -self.h.value / self.tau_rise\n",
- " self.h.value = self.h.value + dh * dt + spike_input * u.mS\n",
- " \n",
- " # Decay dynamics\n",
- " dg = -self.g.value / self.tau_decay + self.h.value / self.tau_rise\n",
- " self.g.value = self.g.value + dg * dt\n",
- " \n",
- " return self.g.value\n",
- " \n",
- " @classmethod\n",
- " def desc(cls, size, tau_rise, tau_decay, **kwargs):\n",
- " def create():\n",
- " return cls(size, tau_rise, tau_decay, **kwargs)\n",
- " return create\n",
- "\n",
- "# Test custom synapse\n",
- "custom_syn = DoubleExpSynapse(\n",
- " size=1, \n",
- " tau_rise=1.*u.ms, \n",
- " tau_decay=10.*u.ms\n",
- ")\n",
- "brainstate.nn.init_all_states(custom_syn)\n",
- "\n",
- "print(\"Custom synapse created!\")\n",
- "print(f\"Rise time: {custom_syn.tau_rise}\")\n",
- "print(f\"Decay time: {custom_syn.tau_decay}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlZhJREFUeJzt3Qd4FNXawPE3PaQDSQi9994FVFBR7GLFiqJixcan94oFxMa1YUWxce2KvYt6UcSCIiBK770lAdLLJtn9nvcsu2zCBhJIsrO7/9/zDMzMtrM7Zyf7zjnnPSEOh8MhAAAAAACgxoXW/FMCAAAAAABF0A0AAAAAQC0h6AYAAAAAoJYQdAMAAAAAUEsIugEAAAAAqCUE3QAAAAAA1BKCbgAAAAAAaglBNwAAAAAAtYSgGwAAAACAWkLQDQA1bOPGjRISEiKPP/74Ie973333mfvCOsfttddeq/Zj9TH6WH0O1Cy73S7dunWThx56yG/qA+oex8vali9fLuHh4bJ06VJfFwXwCYJuIACsW7dOrr32WmnTpo1ER0dLQkKCDBkyRJ5++mkpLCysldd855135KmnnhKrcQWxriUmJkZatGghZ5xxhvz3v/+V4uJiCXTDhg0r9xl4Lp06dZJg5+u6+8svv8gpp5wiTZs2Nd9XV/3UcuFA7777rmzZskXGjRvn66JYwqpVq+S2226TwYMHm/rDxZ7goxegzjzzTGnUqJE5/vp3rzLbtm2TCy64QJKSksxvg7POOkvWr18vda1Lly5y2mmnycSJE+v8tQErCPd1AQAcma+++krOP/98iYqKktGjR5sWIZvNZn7Y33HHHbJs2TJ56aWXavx1NUDQK9a33nqrWNELL7wgcXFxJsjWHx3ffvutXHnllSbY+vLLL6V58+YSyJo1ayZTpkw5YH9iYqIEu8rqbsuWLc1FqoiIiFp77Q8++EBGjRolvXr1kltuuUXq168vGzZskLlz58rLL78sF198ca29tr967LHH5MILL6zzulsX9eFwzJs3T5555hkTxHTu3FkWL17s6yKhjt1zzz2SlpYmvXv3Nn/bKpOXlyfHHXecZGdny1133WXq8pNPPilDhw419aZhw4Z1Wu7rrrtOTj31VNNQ0LZt2zp9bcDXCLoBP6Y/1vXHqP44/OGHH6Rx48bu22688UZZu3atCcqD0XnnnSfJycnubb26/vbbb5sLE3qR4vfff5dApgHKpZde6uti+BVtMdKWw9qkLVIaLGn9i4yMLHdbenp6rb62P/rrr7/k77//lieeeKLOXrO0tNR0adfjU9v14XBoC2dWVpbEx8ebISwE3cH5t79Vq1aSmZkpKSkpld7v+eeflzVr1sj8+fOlf//+Zp/2stGL8/qdevjhh+uw1CLDhw83Fxpff/11uf/+++v0tQFfo3s54MceffRRcyX71VdfLRdwu7Rr1860ph1qvFvF7mm5ubmmFVD/qGsLempqqpx44omyaNEid/dlDeY3bdrk7ras9/UMHq666irT9U1/tPbs2dP8ka1s3PO0adNM13jtCn7SSSeZrqQOh0MeeOAB02Jbr1490yVuz549R/R5XXLJJXL11VfLH3/8Id9///0BLZB9+/Y1r6XBugas2kLuSd+3LhVdccUV5d6/J21V0Isi+rzaulDV8WxvvfWWuzwNGjQwF1f0c6kp2oKnXc118RyCoJ+x1iXtulpWVuZ+f9prQLskjhgxQmJjY6VJkybmR5MeJ0/5+fnyf//3f6Yngdadjh07mmNc8X567LW78Keffmp+AOp9u3btKrNmzTqgrHoctJeC1ifX/WbMmFHuPnPmzDHP+f7775uul1pvtO6dcMIJ5uKTy8HqrrfvyD///GPev2vohrYuaVl27959WJ+7tvDoj9+KAbfS75nSz0rLpHW+oqKiInNBRYeTVOd9q59//tlccNLu7Po56jHSbsoVh6BU53i/9957pp5qAKhdV7t3726GtXjSAFHPJ646oeelRx55xAS2h6L1Qz+rY4891r3P9Z4PtlS1u7XneUh7wWjrm5ZRx596qw87d+6UMWPGmM9Z76ffFT1OFV/vm2++kWOOOcZ8dvrZaLda7XVUE/R8oM9Znfd2uOfYBQsWmDqg50S9T+vWrU39r66aPGauOqX1VL8L2m368ssvN/u8WblypbkIq5+bfjf69esnn3/+udfn1O+D6++efi56kVYDW6U9yPTirdZ3fV09tnqMf/zxR/dzVOe7eyQq+3tT0YcffmjON66AW+k5X88Pes5w8TyPTJ482Qx90Tqmn5u2kmuPMf0O6zlKzw36Hag4VEv/ph599NHmeOh99NyvreuetKVdz8GfffbZEX8GgL+hpRvwY1988YX5IaUBUk13AdM/1hoUaaucBhjaXX3FihXSp08fufvuu80f4q1bt5qgUukfWaU/4PWPqv7g18frjzQNaPUHkv6ocV0EcNHWZ/0xc9NNN5kffHohQcefHX/88eaHwL///W/zXM8++6zcfvvtBwRb1XXZZZeZ7vbfffeduZCg9Ee1/ojQHybaJXvXrl0mcPj1119NS5v+iDgcb7zxhrmAob0O9AeXPqe+ryVLlpgAsjIaPN17773mc9CLBBkZGeb9a+BR1fJowOz6sehJfzjrj0X9Xy+E6Nh/PZ5Tp041t2tZ9djqZxIWFlbu+U4++WQ56qijzDHS4HjSpEmmVdDVYqE/OLUVTn+E6kUX7UKtXR91mIMGzq664qJ16uOPP5YbbrjB/MDTLrPnnnuubN682d3tUY+FvqYrSNdWHQ1o9PlzcnIO6CL+n//8R0JDQ01d0fehZdWLLXqhRR2s7nqjPyQ1+NT6oQG3a7iG/q+t1dVNgqcXYGbPnm1eX3/Ue6PPqRd9tOz6ndBgwfM7r++7Yi+GQ71vpd/DgoICuf76683nq61fWq+0LHqbp6ocb/1sLrroIvMDXoNopecI/d64vuf6enqxSY+/Bhsa8P/2228yYcIE2bFjxyHH1ut99aKMZxdv7VL95ptvurc1UNLPUi/2uBys9c8bzfeg39FrrrnGBFz6mXu7KKD1U4+9nq808NELjPo5aJ11BUJaNg0CNVjVz0U/Ax3uogGJfn9d99OgRc8PVeHZa6e6Dvccq+9NA3T9LO+8805z3tHAWL+z1VWTx0zPMxrU6vlD/1bpc3/yySfmM69Ij5We4zSI1Peg5z4NLEeOHCkfffSRnH322eZ+evFaA2itv3pRQf/O6flTg3P9fujnr9+7V155xdT5sWPHmmOnF7z1OOt3Sc931f3uejtHe6PnR62X1aH1Vy8aertIMmDAAPM3UN+D5wUc/funfxv0s3LVCf3u6bll79695uK8nvf074P+bXeNz9bP+fTTT5cePXqY84OWVR+v54KK9KKFBt36WeiFOiBoOAD4pezsbG1ycpx11llVuv+GDRvM/f/73/8ecJvunzRpkns7MTHRceONNx70+U477TRHy5YtD9j/1FNPmed766233PtsNptj0KBBjri4OEdOTk658qSkpDiysrLc950wYYLZ37NnT0dJSYl7/0UXXeSIjIx0FBUVHbRc+j708RkZGV5v37t3r7n97LPPdpctNTXV0a1bN0dhYaH7fl9++aW538SJE937hg4dapaKLr/88nKfheu91atXz7F161b3/j/++MPsv+222w4or8vGjRsdYWFhjoceeqjcayxZssQRHh5+wH5vtIz6nN6Wa6+9ttx99fMODQ11zJ071/HBBx+Y++gxrPj+dP9NN93k3me3200d0GPi+qw//fRTc78HH3yw3OPPO+88R0hIiGPt2rXufXo/faznvr///tvsf/bZZ937rrrqKkfjxo0dmZmZ5Z7zwgsvNPW0oKDAbP/444/msZ07d3YUFxe77/f000+b/fr5HaruevuOuJ7f07vvvmvup5+Ziz5G9+lzHMyrr77qfu/HHXec495773X8/PPPjrKysnL3W7VqlbnfCy+8UG7/mWee6WjVqpX5/Kv7vr29lylTpphjs2nTpmof71tuucWRkJDgKC0trfT9PvDAA47Y2FjH6tWry+2/8847TT3fvHnzQT+vZs2aOc4999yD3kePpZbtcLiOub6P9PT0g9YH17njscceq/T5cnNzHUlJSY6xY8eW279z505TXz33u+pMVZbKaFkqq3dHeo795JNPzP3+/PNPR007kmPmOs88+uij7n1aB4855pgDvr8nnHCCo3v37uX+bmhdHjx4sKN9+/bufXqe18d+/PHHB7ye67umr+H5HXPViUaNGjmuvPLKan93VVWPv7e/20q/ixX/fle87f777z/gtmnTppnbVq5cWe48on8H9W+iZ53Q88Mpp5xS7vH699zzHPrkk08e9O+up3feecfcV/8eAsGE7uWAn9KrxKoq3QyrS1s0tIVs+/bt1X7s119/bVoEtTXARa+U33zzzaY14aeffip3f+3u6pkgaeDAgeZ/bQ3Q6UU892trTcUu39XlatV0tTBp90lt0dHWVs/xm9odVLvhHcmYeG1N0RYWz9YFfR/6GVVGW5G0hUJborQVxLXoZ9q+fftyXRkPRlvTtAWu4lKxZVhbLrS7trYS6WegrZJ6rLzxzB7tannWY/K///3P7NP3pa3jFR+vrVn6+1JbqCuO7/NMpqOtJNry4cqsq4/R1ijN7K3rnp+Hti5pi65ryIOLtkh7dt3W1it1uNl6tdXHRVtC9bW19VdVfO2q0FYnbTXW3iDaUqfde7WMemy1VdelQ4cOpq5oK6WLtpzpZ6gt2BVb2Kvyvj3fiw4D0Pei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qQfcduqpp8q1117rfq2cnBzp37+/Cfw7dOgg//73v2XFihUmsFfabVyD9O7du0ubNm3k9NNPl2OPPbbcczZp0sS8JgAA/oygGwCAAKDdt100MG7YsKEJaF20+7hKT093J0TTANs1RlwXDb7VunXrvL5GYWGhREVFeU325vn6rtc62OvffPPNpku6Bt6aHM51McBTvXr13C3zAAD4K4JuAAACQERERLltDYw997kCZbvdbv7Py8szY6oXL15cblmzZs0BLc4u2nKuQbDNZjvo67te62CvrwnZ1q9fb7qha/dy7bL+7LPPlntOHdOdkpJyGJ8GAADWQdANAEAQ6tOnjyxbtswkQdMka56LJjbzRsdYu+bRrgnNmzeX6667Tj7++GP5v//7P5P8rWKiN+32DgCAPyPoBgAgCGkiM21Jvuiii+TPP/80Xcq//fZbk+1cs5R7o63OGqz/8ssvR/z6mmldX2/Dhg0m0Zp2de/cubP79o0bN8q2bdtk+PDhR/xaAAD4EkE3AABBSJOU/frrrybA1szmOv5aA+GkpCQJDa3854F2C3/77beP+PX1dTXw10D75JNPNsnWnn/+efft7777rimXTj8GAIA/C3G45u4AAAA4BE2m1rFjR5k5c6YMGjSoVl5Dx4xrFvR33nnHJFoDAMCf0dINAACqTDOKv/HGG5KZmVlrr6HTid11110E3ACAgEBLNwAAAAAAtYSWbgAAAAAAaglBNwAAAAAAtYSgGwAAAACAWkLQDQAAAABALSHoBgAAAACglhB0AwAAAABQSwi6AQAAAACoJQTdAAAAAADUEoJuAAAAAACkdvw/vLOrModyDVUAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Custom synapse shows fast rise (1ms) and slow decay (10ms)\n"
- ]
- }
- ],
- "source": [
- "# Test custom synapse\n",
- "custom_resp = []\n",
- "duration = 50. * u.ms\n",
- "times = u.math.arange(0. * u.ms, duration, dt)\n",
- "\n",
- "for i, t in enumerate(times):\n",
- " spike = 1.0 if i == 0 else 0.0\n",
- " custom_syn(jnp.array([spike]))\n",
- " custom_resp.append(custom_syn.g.value[0])\n",
- "\n",
- "custom_resp = u.math.asarray(custom_resp)\n",
- "\n",
- "plt.figure(figsize=(10, 5))\n",
- "plt.plot(times.to_decimal(u.ms), custom_resp.to_decimal(u.mS), linewidth=2)\n",
- "plt.axvline(x=0, color='r', linestyle='--', alpha=0.5, label='Spike')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('g (mS)')\n",
- "plt.title('Custom Double-Exponential Synapse (τ_rise=1ms, τ_decay=10ms)')\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Custom synapse shows fast rise (1ms) and slow decay (10ms)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ How synapses perform temporal filtering\n",
- "\n",
- "✅ Four synapse models: Expon, Alpha, AMPA, GABAa\n",
- "\n",
- "✅ Differences in rise time and decay kinetics\n",
- "\n",
- "✅ Response to single spikes and spike trains\n",
- "\n",
- "✅ Effect of time constant τ\n",
- "\n",
- "✅ When to use each synapse type\n",
- "\n",
- "✅ How to create custom synapses\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "- **Tutorial 3**: Learn to [build connected networks](03-network-connections.ipynb)\n",
- "- **Core Concepts**: Read detailed [synapse documentation](../../core-concepts/synapses.rst)\n",
- "- **Examples**: See synapses in action in the [examples gallery](../../examples/gallery.rst)\n",
- "\n",
- "## Exercises\n",
- "\n",
- "Try these on your own:\n",
- "\n",
- "1. Compare AMPA vs GABAa responses to a 100 Hz spike train\n",
- "2. Find the τ value where peak response to a 50 Hz train is maximized\n",
- "3. Implement an NMDA synapse (voltage-dependent)\n",
- "4. Create a synapse with adaptation (decrease response over time)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/basic/03-network-connections.ipynb b/docs_state/tutorials/basic/03-network-connections.ipynb
deleted file mode 100644
index b55b4b3f8..000000000
--- a/docs_state/tutorials/basic/03-network-connections.ipynb
+++ /dev/null
@@ -1,812 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 3: Network Connections\n",
- "\n",
- "In this tutorial, you'll learn:\n",
- "\n",
- "- The projection architecture (Comm-Syn-Out)\n",
- "- Connectivity patterns\n",
- "- CUBA vs COBA output mechanisms\n",
- "- Building excitatory-inhibitory networks\n",
- "- Network simulation and analysis"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import matplotlib.pyplot as plt\n",
- "import jax.numpy as jnp"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: Understanding Projections\n",
- "\n",
- "BrainPy 3.0 uses a **three-stage projection architecture**:\n",
- "\n",
- "```\n",
- "Presynaptic [Communication] [Synapse] [Output] Postsynaptic\n",
- "Spikes → Connectivity → Dynamics → Injection → Neurons\n",
- " & Weights Filtering Mechanism\n",
- "```\n",
- "\n",
- "### Why This Design?\n",
- "\n",
- "1. **Modularity**: Each stage is independent and swappable\n",
- "2. **Clarity**: Clear separation of concerns\n",
- "3. **Reusability**: Mix and match components\n",
- "4. **Flexibility**: Easy to customize any stage"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Simple Projection Example"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Created projection: 20 → 10 neurons\n",
- "Connectivity: 30% probability\n",
- "Expected connections: ~60 synapses\n",
- "Synapse type: Exponential (τ=5ms)\n",
- "Output mechanism: CUBA (current-based)\n"
- ]
- }
- ],
- "source": [
- "# Set time step\n",
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create pre and post neurons\n",
- "pre_neurons = brainpy.state.LIF(20, V_rest=-65.*u.mV, V_th=-50.*u.mV, V_reset=-65.*u.mV, tau=10.*u.ms)\n",
- "post_neurons = brainpy.state.LIF(10, V_rest=-65.*u.mV, V_th=-50.*u.mV, V_reset=-65.*u.mV, tau=10.*u.ms)\n",
- "\n",
- "# Create projection with all three stages\n",
- "projection = brainpy.state.AlignPostProj(\n",
- " # Stage 1: Communication (connectivity + weights)\n",
- " comm=brainstate.nn.EventFixedProb(\n",
- " 20, \n",
- " 10, \n",
- " 0.3, # 30% connection probability\n",
- " 0.5*u.mS # Synaptic weight\n",
- " ),\n",
- " \n",
- " # Stage 2: Synapse (temporal dynamics)\n",
- " syn=brainpy.state.Expon.desc(10, tau=5.*u.ms),\n",
- " \n",
- " # Stage 3: Output (how to affect post neurons)\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " \n",
- " # Target neurons\n",
- " post=post_neurons\n",
- ")\n",
- "\n",
- "print(f\"Created projection: {20} → {10} neurons\")\n",
- "print(f\"Connectivity: {0.3*100:.0f}% probability\")\n",
- "print(f\"Expected connections: ~{20*10*0.3:.0f} synapses\")\n",
- "print(f\"Synapse type: Exponential (τ=5ms)\")\n",
- "print(f\"Output mechanism: CUBA (current-based)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Testing the Projection"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Pre spikes: 20 neurons fired\n",
- "Synaptic conductance (g): ArrayImpl([0., 0., 0., 0., 0.], dtype=float32) * msiemens\n",
- "Post spikes: 10 neurons fired\n"
- ]
- }
- ],
- "source": [
- "# Initialize all states\n",
- "brainstate.nn.init_all_states(pre_neurons)\n",
- "brainstate.nn.init_all_states(post_neurons)\n",
- "\n",
- "# Simulate one step\n",
- "# 1. Activate pre neurons with strong input\n",
- "pre_neurons(5.0 * u.nA)\n",
- "\n",
- "# 2. Get spikes from pre neurons\n",
- "pre_spikes = pre_neurons.get_spike()\n",
- "print(f\"Pre spikes: {u.math.sum(pre_spikes != 0)} neurons fired\")\n",
- "\n",
- "# 3. Propagate through projection\n",
- "projection(pre_spikes)\n",
- "\n",
- "# 4. Check synaptic variable\n",
- "print(f\"Synaptic conductance (g): {projection.syn.g.value[:5]}\")\n",
- "\n",
- "# 5. Update post neurons (they receive synaptic input)\n",
- "post_neurons(0. * u.nA)\n",
- "post_spikes = post_neurons.get_spike()\n",
- "print(f\"Post spikes: {u.math.sum(post_spikes != 0)} neurons fired\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: CUBA vs COBA Output\n",
- "\n",
- "Two ways synapses can affect postsynaptic neurons:\n",
- "\n",
- "### CUBA (Current-Based)\n",
- "$$I_{syn} = g$$\n",
- "\n",
- "- Simple: synaptic conductance directly becomes current\n",
- "- Faster computation\n",
- "- Less biologically realistic\n",
- "\n",
- "### COBA (Conductance-Based)\n",
- "$$I_{syn} = g \\cdot (V - E_{rev})$$\n",
- "\n",
- "- Realistic: current depends on driving force\n",
- "- Voltage-dependent\n",
- "- More biologically accurate"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CUBA: I_syn = g\n",
- "COBA: I_syn = g * (V - E_rev)\n",
- "\n",
- "With V=-65mV and E=0mV:\n",
- "COBA current will be ~65mV larger (more driving force)\n"
- ]
- }
- ],
- "source": [
- "# Create neurons\n",
- "neurons_cuba = brainpy.state.LIF(5, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "neurons_coba = brainpy.state.LIF(5, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "pre = brainpy.state.LIF(10, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "\n",
- "# CUBA projection\n",
- "proj_cuba = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(10, 5, 0.5, 1.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(5, tau=5.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(), # Current-based\n",
- " post=neurons_cuba\n",
- ")\n",
- "\n",
- "# COBA projection (excitatory reversal potential at 0 mV)\n",
- "proj_coba = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(10, 5, 0.5, 1.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(5, tau=5.*u.ms),\n",
- " out=brainpy.state.COBA.desc(E=0.*u.mV), # Conductance-based\n",
- " post=neurons_coba\n",
- ")\n",
- "\n",
- "print(\"CUBA: I_syn = g\")\n",
- "print(\"COBA: I_syn = g * (V - E_rev)\")\n",
- "print(\"\\nWith V=-65mV and E=0mV:\")\n",
- "print(\"COBA current will be ~65mV larger (more driving force)\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Compare CUBA vs COBA\n",
- "brainstate.nn.init_all_states(pre)\n",
- "brainstate.nn.init_all_states(neurons_cuba)\n",
- "brainstate.nn.init_all_states(neurons_coba)\n",
- "\n",
- "duration = 100. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0.*u.ms, duration, dt)\n",
- "\n",
- "V_cuba_hist = []\n",
- "V_coba_hist = []\n",
- "\n",
- "for t in times:\n",
- " # Strong input to pre neurons\n",
- " pre(3.0 * u.nA)\n",
- " spikes = pre.get_spike()\n",
- " \n",
- " # Propagate through both projections\n",
- " proj_cuba(spikes)\n",
- " proj_coba(spikes)\n",
- " \n",
- " # Update post neurons\n",
- " neurons_cuba(0. * u.nA)\n",
- " neurons_coba(0. * u.nA)\n",
- " \n",
- " # Record voltages\n",
- " V_cuba_hist.append(neurons_cuba.V.value[0])\n",
- " V_coba_hist.append(neurons_coba.V.value[0])\n",
- "\n",
- "V_cuba_hist = u.math.asarray(V_cuba_hist)\n",
- "V_coba_hist = u.math.asarray(V_coba_hist)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnQeYJFXVhr9Ok3POs7M554XdJSwZRJCMkoOiIgpKUAR/kgmUoCIgioIgiEo0kMMSlmWXzTnPzsxOzjl0+p9zq6u7uqdnpnNXdZ/3eXr3Tnd19e3qU7fqnnvOd3R2u90OhmEYhmEYhmEYhmEYhokg+kh+GMMwDMMwDMMwDMMwDMMQ7JRiGIZhGIZhGIZhGIZhIg47pRiGYRiGYRiGYRiGYZiIw04phmEYhmEYhmEYhmEYJuKwU4phGIZhGIZhGIZhGIaJOOyUYhiGYRiGYRiGYRiGYSIOO6UYhmEYhmEYhmEYhmGYiMNOKYZhGIZhGIZhGIZhGCbisFOKYRiGYRiGYRiGYRiGiTjslGIYhmEYhmHighNOOAE6nS7a3WAYhmEYxgE7pRiGYZiYZePGjfj617+OadOmITU1FcnJyZgyZQquuOIKvPvuu27bXn311WKyunr16jH3522bw4cPi+c8H/R58+fPx7333ou+vr5x+/nxxx873/evf/0LWuL999/HpZdeikmTJonjS9971qxZ+Na3voV169Z5fU93dzd++tOfYtmyZcjKykJSUhKqqqpw1VVXYdOmTV7fQ8fc23FOT0/HUUcdhUceeQRms3ncvj777LPO933xxRcIFd5sICEhAeXl5eLYbNu2DeFGPj733HMP4hn6/hOdx+HAm30mJiaK8+Kaa67B/v37I9ofhmEYhtEKxmh3gGEYhmFCjc1mw6233iocFUajESeddBK+8pWvwGQy4dChQ/jf//6Hv/3tb7jvvvvwf//3fyH5THJ2XX755aJtt9vR2tqKN998U0yS33rrLXz66acwGAxe3/vnP/9Z/E8T2b/85S+46KKLoHYGBwdx7bXX4sUXX0RKSgpOOeUUTJ8+Xby2b98+PP/88/jjH/8oHEHkBJQhZxD9Fk1NTZg7dy6uvPJK8f7du3eLfT333HO4++67xcMbS5YswVlnnSXaVqtV7Oc///kPbr75Znz22WfjOvXoONMxpt+HjjM5xUKJ0gbIEfn555/j73//O1555RXhvDvmmGNC+nmM/5A9DgwMhG3/Svsk5+uaNWvwzDPPCBtYv349ZsyYEbbPZhiGYRgtwk4phmEYJub4yU9+IhxSCxcuxEsvvSScBZ4Old///vdob28P2WdOnTp1VJTK8PAwVqxYIZwTH330kXCOedLT0yP6SFFVhYWFeOedd1BXVyeibNQMRaCRE+nUU08VjiTqu5Kuri788pe/FP/L1NbW4owzzhDPPfHEE/j2t7/t9p69e/fiy1/+sjiO+fn5+M53vjPqc5cuXTrqOHd2dmLevHniOJLTcfLkyaPeR5EqFJFGDrE9e/YIZ9HDDz8sorvCaQNkiz//+c9x5513Rjx6hxlNRUVFWPfvzT7Jzp988kn84he/wF//+tewfj7DMAzDaA1O32MYhmFiigMHDuBXv/oVcnNzRYSSp0OKIEfEbbfdJlLrwgml75x44omi3dbW5nUbco5Q5AZFDNGDorwossJXPvnkExH9Q1FL3mhpaRERYsooncbGRtx0000irZGOBaXQUcodTZ4pumMiPvzwQ9Fviox67bXXRjmkCNrnAw88gG9+85vO5+644w50dHTgxz/+8SiHFEFRJK+//rroL23jS1+I7OxsHH300eMeZ4qMIugYU+QW7ZucWOHme9/7nvhfmS5osViEQ2zBggXi+GdmZgo7oYgvT8gennrqKZGimJOTI7YvKyvD2Wef7XRykRNEtjOyaWUKGaUWEvR977rrLsyePRtpaWnIyMgQTjRKmaypqXE60Og9//znP8c8hvQ6ORtl6G/SaWpubhb7ysvLE31cvny5VyccpdR+97vfFVFy9L1pW3Io3n///V7TLyn9jR7kyKSU0KKiIpHuuWjRImGDSqgf8jlNx0M+BvR+XzSlyPZOO+00MXbQZ9D7yFZ27NiBYB248nf3pLe3V0QFzpkzx3kunn766SKy0hNfz1s5zZgctDQW0vZyiixFh46V5vr000+L84jsgx7U9jYWKVNFN2zYIBzTlEZLv+d5553ntDkllJZ74YUXCqcgjYvkdKZIRXLYehuzfvCDHwj7pG3Jpi644IKgfweGYRhGpdgZhmEYJoa488477XR5u+OOO/x631VXXSXe9+GHH/q1TXV1tXju9NNPH7X98PCwffHixXadTmffu3ev130uW7bMbjAY7I2Njfb+/n57Wlqavaqqym6z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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Observation: COBA produces stronger depolarization due to larger driving force\n"
- ]
- }
- ],
- "source": [
- "# Plot comparison\n",
- "plt.figure(figsize=(12, 5))\n",
- "plt.plot(times.to_decimal(u.ms), V_cuba_hist.to_decimal(u.mV), \n",
- " linewidth=2, label='CUBA (current-based)', alpha=0.8)\n",
- "plt.plot(times.to_decimal(u.ms), V_coba_hist.to_decimal(u.mV), \n",
- " linewidth=2, label='COBA (conductance-based)', alpha=0.8)\n",
- "plt.axhline(y=-50, color='r', linestyle='--', alpha=0.5, label='Threshold')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Membrane Potential (mV)', fontsize=12)\n",
- "plt.title('CUBA vs COBA: Postsynaptic Response', fontsize=14)\n",
- "plt.legend()\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Observation: COBA produces stronger depolarization due to larger driving force\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Building an Excitatory-Inhibitory Network\n",
- "\n",
- "Let's build a classic E-I balanced network with:\n",
- "- 80% excitatory neurons\n",
- "- 20% inhibitory neurons\n",
- "- All-to-all connectivity patterns"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Created E-I network:\n",
- " - 80 excitatory neurons\n",
- " - 20 inhibitory neurons\n",
- " - 100 total neurons\n",
- " - 10% connectivity\n",
- " - 4 projection types (E2E, E2I, I2E, I2I)\n"
- ]
- }
- ],
- "source": [
- "class EINetwork(brainstate.nn.Module):\n",
- " def __init__(self, n_exc=80, n_inh=20, prob=0.1):\n",
- " super().__init__()\n",
- " self.n_exc = n_exc\n",
- " self.n_inh = n_inh\n",
- " \n",
- " # Create neuron populations\n",
- " self.E = brainpy.state.LIF(\n",
- " n_exc, \n",
- " V_rest=-65.*u.mV, \n",
- " V_th=-50.*u.mV, \n",
- " V_reset=-65.*u.mV,\n",
- " tau=10.*u.ms,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV)\n",
- " )\n",
- " \n",
- " self.I = brainpy.state.LIF(\n",
- " n_inh,\n",
- " V_rest=-65.*u.mV,\n",
- " V_th=-50.*u.mV,\n",
- " V_reset=-65.*u.mV,\n",
- " tau=10.*u.ms,\n",
- " V_initializer=braintools.init.Normal(-65., 5., unit=u.mV)\n",
- " )\n",
- " \n",
- " # Excitatory projections (fast, AMPA-like)\n",
- " self.E2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_exc, prob, 0.3*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=2.*u.ms), # Fast excitation\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.E2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_exc, n_inh, prob, 0.3*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=2.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " # Inhibitory projections (slower, GABAa-like)\n",
- " self.I2E = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_exc, prob, -2.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_exc, tau=10.*u.ms), # Slower inhibition\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.E\n",
- " )\n",
- " \n",
- " self.I2I = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(n_inh, n_inh, prob, -2.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(n_inh, tau=10.*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.I\n",
- " )\n",
- " \n",
- " def update(self, inp_e, inp_i):\n",
- " \"\"\"Update network for one time step.\n",
- " \n",
- " Key: Get spikes BEFORE updating neurons!\n",
- " \"\"\"\n",
- " # Get spikes from previous timestep\n",
- " spk_e = self.E.get_spike()\n",
- " spk_i = self.I.get_spike()\n",
- " \n",
- " # Update projections (uses previous spikes)\n",
- " self.E2E(spk_e)\n",
- " self.E2I(spk_e)\n",
- " self.I2E(spk_i)\n",
- " self.I2I(spk_i)\n",
- " \n",
- " # Update neurons (receives synaptic input)\n",
- " self.E(inp_e)\n",
- " self.I(inp_i)\n",
- " \n",
- " return spk_e, spk_i\n",
- "\n",
- "# Create network\n",
- "net = EINetwork(n_exc=80, n_inh=20, prob=0.1)\n",
- "print(f\"Created E-I network:\")\n",
- "print(f\" - {net.n_exc} excitatory neurons\")\n",
- "print(f\" - {net.n_inh} inhibitory neurons\")\n",
- "print(f\" - {net.n_exc + net.n_inh} total neurons\")\n",
- "print(f\" - 10% connectivity\")\n",
- "print(f\" - 4 projection types (E2E, E2I, I2E, I2I)\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Simulate the Network"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Running simulation...\n",
- "Duration: 500.0 * msecond\n",
- "Time step: 0.1 * msecond\n",
- "Steps: 5000\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "bfd46438f02a4a389559c7f6749219bd",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/5000 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Simulation complete!\n"
- ]
- }
- ],
- "source": [
- "# Initialize all states\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "# Simulation parameters\n",
- "duration = 500. * u.ms\n",
- "dt = brainstate.environ.get_dt()\n",
- "times = u.math.arange(0.*u.ms, duration, dt)\n",
- "\n",
- "# External input currents\n",
- "I_ext_e = 20 * u.mA # To excitatory neurons\n",
- "I_ext_i = 16 * u.mA # To inhibitory neurons\n",
- "\n",
- "# Define simulation step\n",
- "def sim_step(t):\n",
- " return net.update(I_ext_e, I_ext_i)\n",
- "\n",
- "print(\"Running simulation...\")\n",
- "print(f\"Duration: {duration}\")\n",
- "print(f\"Time step: {dt}\")\n",
- "print(f\"Steps: {len(times)}\")\n",
- "\n",
- "# Run simulation with progress bar\n",
- "spikes = brainstate.transform.for_loop(\n",
- " sim_step, \n",
- " times,\n",
- " pbar=brainstate.transform.ProgressBar(10)\n",
- ")\n",
- "\n",
- "spk_e, spk_i = spikes\n",
- "print(\"\\nSimulation complete!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Analyze Network Activity"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Network Statistics:\n",
- "==================================================\n",
- "Total spikes: 2863\n",
- " - Excitatory: 2606 (91.0%)\n",
- " - Inhibitory: 257 (9.0%)\n",
- "\n",
- "Firing Rates:\n",
- " - Excitatory population: 65.15 Hz\n",
- " - Inhibitory population: 25.70 Hz\n",
- " - Overall network: 57.26 Hz\n"
- ]
- }
- ],
- "source": [
- "# Calculate statistics\n",
- "n_spikes_e = int(u.math.sum(spk_e != 0))\n",
- "n_spikes_i = int(u.math.sum(spk_i != 0))\n",
- "n_spikes_total = n_spikes_e + n_spikes_i\n",
- "\n",
- "# Firing rates\n",
- "duration_s = duration.to_decimal(u.second)\n",
- "rate_e = n_spikes_e / (net.n_exc * duration_s)\n",
- "rate_i = n_spikes_i / (net.n_inh * duration_s)\n",
- "rate_total = n_spikes_total / ((net.n_exc + net.n_inh) * duration_s)\n",
- "\n",
- "print(\"Network Statistics:\")\n",
- "print(\"=\"*50)\n",
- "print(f\"Total spikes: {n_spikes_total}\")\n",
- "print(f\" - Excitatory: {n_spikes_e} ({n_spikes_e/n_spikes_total*100:.1f}%)\")\n",
- "print(f\" - Inhibitory: {n_spikes_i} ({n_spikes_i/n_spikes_total*100:.1f}%)\")\n",
- "print(f\"\\nFiring Rates:\")\n",
- "print(f\" - Excitatory population: {rate_e:.2f} Hz\")\n",
- "print(f\" - Inhibitory population: {rate_i:.2f} Hz\")\n",
- "print(f\" - Overall network: {rate_total:.2f} Hz\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 8: Visualize Network Activity"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABW4AAAMWCAYAAABhlR+IAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnQeUVMUShgsRREVBkaSiIiCIEZUgIEbMOTxzzjmgPiMqBswZAwbMGcGMGBAVEcMTA0YUjCCYwIwC73y3vevsMLvM7M7eqjtT3zlzlrC7U9O3Q3V19V/15s6dO1ccx3Ecx3Ecx3Ecx3Ecx3EcMyygbYDjOI7jOI7jOI7jOI7jOI5TGQ/cOo7jOI7jOI7jOI7jOI7jGMMDt47jOI7jOI7jOI7jOI7jOMbwwK3jOI7jOI7jOI7jOI7jOI4xPHDrOI7jOI7jOI7jOI7jOI5jDA/cOo7jOI7jOI7jOI7jOI7jGMMDt47jOI7jOI7jOI7jOI7jOMbwwK3jOI7jOI7jOI7jOI7jOI4xPHDrOI7jOI7jOI7jOI7jOI5jDA/cOo7jOI7jOHXG5MmTpV69ehWvF154QUqJ2267rdLnqy2Zv4vf7ZQX++23X8Xz32CDDbTNcRzHcRxHGQ/cOo7jOI5jDoJ7mQGsql4EOQqhJj+bHXjk9cQTT8zzfUsttVSN7cqnDbDDqcyff/4pzZo1q9RO66yzjtmgbNqCutmfP34tuOCCUbv36NFDzjvvPJkxY4ZocPbZZ1fYtMIKK4jVAGzmq379+lHb9enTR6655hqZNWtWndpR6gcnjuM4jlPqLKhtgOM4juM4Tto444wzZMsttzQRzCtnHn30Ufnhhx8q/dubb74p7733nqy66qqJ2NC1a1e55JJLivb7Mn8Xv9sis2fPjtp93Lhx0evuu++W1157TRZbbDFt08wzZ86cqO1eeuml6HXHHXfIs88+K02aNNE2zXEcx3Ecg3jg1nEcx3Ec8+y66645MymTCs5lM378eHnggQciu5zckEk4d+7cOn2PqrJO+fdLL71UkmCVVVaJXsXixBNPFKscdthh0q5dO/n+++/lvvvuq8gC//DDD2XIkCFyzDHHSDkwc+ZMWXzxxWsUkP/pp5+itvv000+jv7/xxhtR5vAVV1xRJ7Y6juM4jpNuXCrBcRzHcRzzbL755lFAK/vFv2vRv39/+fvvv/P+/m+//VZOO+00WXPNNaPMxEaNGkn79u3lyCOPlC+++KLS95LJu+GGG1b6t7Zt21aSYvjxxx+ja9fxv7344osV3zt48OCKf99xxx0rZUry3vH/3X///fNkq+6zzz7Re2Ff48aNo+B4v3795KuvvprnM6HBmWkTma7bb799dBV8oYUWkg8++KDaNnnooYeia/fx7zjwwAOjjMR8mDJlijz99NMVf19ppZUq/nzXXXdV+2xef/112X///aP2X2SRRaLPyc/zbwTU4uvl/D2TzCvnBNuqklPgMyy//PLzfG8m//3vfyv+P9P2XHIIcTtngm2ZMgHYndkfRo4cOc97ksEb///hhx8uhcJBBeNu4MCB8tRTT1X6v/fff7/S3ydNmiTHHXecrLfeetKmTRtZdNFFoz6xzDLLyDbbbCOPPfZYzvfgM/N5kR5p0KCBLLHEEtKxY8fova+77rpKMiLnnHNOxc99/vnn1UpJ8H7bbbedtG7dWho2bBj93o022ijKFs4+YMglL3DLLbfIWmutJQsvvHAkc1Ao8ZyFtARZypmB36FDh+b9e77++ms56aSTZLXVVov6LeOU57/XXntFWc+Z8O+M5UyYV1xD13Ecx3HSgwduHcdxHMdxCqBVq1bR148//jhvndGxY8dGAVACXm+//bb88ssvkT4rwTaCUauvvnp0bboQCDytscYaFX9/+eWXK/6c+bsy//2tt96K3jsmMzh85ZVXSrdu3eTOO++MAlfY9+uvv8qECRPk8ssvj+yvTh/znXfeiTRPH3nkkXnkC3LB9+2xxx5RMBmOOOIIufnmm2WBBfJzT7Ez/lmCV7feemulIHl2YDFmwIAB0r179+jZ0f6///579Dk/+eST6N/effddqS18hn333bfi7/fee2+l/ydQSNZlTHaAuCaQCbvFFltU/J22zA6kkt0Zc8ABB9Tq/QjAZkKgNRP6zVVXXRX1P4L+v/32W5SF/c0338jjjz8u2267bfQsMiHATVuMHj06yuol+E6GKmONDPfs788HgugcRvB+SGtMnTpV/vrrr+j3jho1Kgp4EhSO+1JVhzQHHXRQNH7++OMPqS0cbGQG67EpHzicIWBLNjmHJPRbxilBawLQ6667bjRWHcdxHMcpHVwqwXEcx3Ec84wYMUK+++67ef6dgAvZfElChuxll10WBX4IJO29995RJmF1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uf766+X222+XVVZZRd544w3Zf//9I12IYzhNFArtXSxXX3119D0EeAn0brbZZvL+++9LI4ouOOmBjEQqlXfrJmXDppuGE7W4eFI5sNdeQXurSxcpC/isJ54YnMpyqZRMlW2u3660Uih+U+pssUWQY1huufIqJpf5udMs61HI3IXkRrnMXfGVx5NPFnnvPZFNNtG2Jhl23jmM41VWKR99PqqoH3dcmK87dpSyYYcdgpQTc1g56J8fcohI584i664rZQHFNLkR8uGHIpttJmXBiiuKHH98SAbp1UvKgl12CfIQK68c1qxygDhIz54iffpI2bDttmFMd+gQ9hilDpI8+F8Eqstl/nLSW5xs6623lpYtW8ott9xS8W877bRTlFl71113Rdm2Sy+9tPTr109OJDAi1D+aEf3MbbfdJrvttlte7+PFyRzHSRofw46TbnwMO0768XHsOOnGx7DjpJtyGsMzS7U4Wc+ePeW5556Tj/+5lvj222/Lyy+/LFuQ5SPc2pskU6dOjeQRYmiI7t27y9ixY9XsdorEmDFBB7UcrnRNmSJy5ZUiTz4pZcPIkSJXXBGu+pQynJU98EDQo0I2oRzgMw8dKnL11eWhl4h28aWXBs3qcoDiEOjJPfhgeVxLRMuXtYisrXLgrbdCf377bSkLuA3BXDV8eHn0Z+Qf0HS9/vrCi2amESSK8DWefVbKhngMv/OOlAU8W55xuchR4UsOGiRy//3lIeeCBBX1T+68szyKRiJzwZ7w8celLOCZ8mx5xuUgN4bsFLUS0OwtB9gbldN6VK5SCaecckoUle7UqZPUr18/0rw9//zzZc8994z+n6AtkGGbCX+P/y8Xf/75Z/SK4T3gmmuuma+8QqtWrWT33Xev9G/33ntvte8X06NHD1k343oSNlx33XWSD7vuumuUXRzz4YcfygMPPCCLLrpotScTDRs2lCOPPLLSv40cOVImTJgw3/ds3769bLPNNpX+bfDgwfJrHpMqwfTVVlut4u/fffed3MmknAcHHXSQLEZ12cGDo8H+5uTJ8uIKK8z355ZccknZd999K/3b0KFD5Ys8dGG6dOkiG2ywQaV/uwInMA922GEHWSHDvsmTJ8swCnDlwfFcZ4JnnokWrRcWXVTewuGeTz9cbrnlouzzTJAL+SGPyrl9+vSRtddeu+LvP//8s9x888152bv33nvL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UTsWIrtRGxYiu8mXNtywjEhbR26bRgghhBBCCCGEEEIIIUQWIuFWCCGEEEIIIYQQQgghQoaE2xyhZs2aNnDgQO9/IUT2oTYsRHajNixE9qN2LER2ozYsRHajNhwfFScTQgghhBBCCCGEEEKIkKGIWyGEEEIIIYQQQgghhAgZEm6FEEIIIYQQQgghhBAiZEi4FUIIIYQQQgghhBBCiJAh4VYIIYQQQgghhBBCCCFChoTbHOChhx6y9u3bW61atWyXXXaxL774ItOHJIRYz/jx4+3www+31q1bWyQSsZEjRxb5PfUhr7/+emvVqpXVrl3bDjjgAPv111+LPGf+/Pl20kknWYMGDaxRo0Z2xhln2NKlS9P8SYTIPwYPHmw777yz1a9f35o3b25HHXWUTZ48uchzVq5caRdccIE1bdrU6tWrZ7169bLZs2cXec706dOtZ8+eVqdOHe91Lr/8clu7dm2aP40Q+ckjjzxi2223nTeGctttt91s1KhRhb9XGxYie7jtttu8+fQll1xS+JjasBDh5oYbbvDabfDWuXPnwt+rDZeNhNss58UXX7QBAwbYwIED7euvv7YuXbrYQQcdZHPmzMn0oQkhzGzZsmVeu2SDJR533HGH3X///fboo4/a559/bnXr1vXaMAOYA9H2xx9/tPfee8/eeOMNTww+++yz0/gphMhPPvjgA28i+dlnn3ntb82aNdajRw+vXTv69+9vr7/+ug0fPtx7/t9//23HHHNM4e/XrVvnTTRXr15tn3zyiT399NM2dOhQb8NGCJF62rRp44k9X331lU2YMMH2228/O/LII71xFdSGhcgOvvzyS3vssce8jZggasNChJ+tt97aZs6cWXj76KOPCn+nNpwAUZHVdOvWLXrBBRcU3l+3bl20devW0cGDB2f0uIQQG0KXO2LEiML7BQUF0ZYtW0bvvPPOwscWLlwYrVmzZvSFF17w7v/000/e33355ZeFzxk1alQ0EolE//rrrzR/AiHymzlz5njt8YMPPihsr9WrV48OHz688Dk///yz95xPP/3Uu//WW29Fq1SpEp01a1bhcx555JFogwYNoqtWrcrApxBCNG7cOPrEE0+oDQuRJSxZsiTaqVOn6HvvvRft3r179OKLL/YeVxsWIvwMHDgw2qVLl7i/UxtODEXcZjHsOBA9QGq1o0qVKt79Tz/9NKPHJoQom6lTp9qsWbOKtOGGDRt6lieuDfM/9gg77bRT4XN4Pm2dCF0hRPpYtGiR93+TJk28/xmDicINtmFSvzbZZJMibXjbbbe1Fi1aFD6HqPrFixcXRvwJIdIDUTvDhg3zouaxTFAbFiI7IPuFiLtgWwW1YSGyA6wAsQ7s2LGjl02K9QGoDSdGtQSfJ0LIvHnzvAlo8AIG7k+aNCljxyWESAxEW4jXht3v+B8fnyDVqlXzhCP3HCFE6ikoKPA89fbYYw/bZpttvMdogzVq1PA2V0prw/HauPudECL1fP/9955Qiw0R/nkjRoywrbbayiZOnKg2LETIYbMFS0CsEoqjcViI8ENQEtYGW2yxhWeTMGjQINtrr73shx9+UBtOEAm3QgghhBAJRPswwQx6cgkhsgMWi4i0RM2//PLL1qdPH89HTwgRbmbMmGEXX3yx5zNPIW4hRPZxyCGHFP6MRzVCbrt27eyll17yinOLspFVQhaz0UYbWdWqVTeouMf9li1bZuy4hBCJ4dppaW2Y/4sXG6SC5vz589XOhUgT/fr18woDjh071it05KANYlu0cOHCUttwvDbufieESD1E82y22WbWtWtXGzx4sFc09L777lMbFiLkkEbNPHjHHXf0Ms64selCYV9+JupObViI7ILo2s0339ymTJmicThBJNxm+SSUCej7779fJJWT+6SDCSHCTYcOHbzBJtiG8erBu9a1Yf5nIGPi6hgzZozX1tmtFEKkDmoKItqSVk27o80GYQyuXr16kTY8efJkz7cr2IZJ0w5uwBA51KBBAy9VWwiRfhhDV61apTYsRMjZf//9vfZHxLy7UfcBj0z3s9qwENnF0qVL7bfffrNWrVppHE6UBIuYiZAybNgwrwL90KFDverzZ599drRRo0ZFKu4JITJbBfebb77xbnS5Q4YM8X7+448/vN/fdtttXpt99dVXo9999130yCOPjHbo0CG6YsWKwtc4+OCDozvssEP0888/j3700UdeVd0TTjghg59KiPzgvPPOizZs2DA6bty46MyZMwtvy5cvL3zOueeeG91kk02iY8aMiU6YMCG62267eTfH2rVro9tss020R48e0YkTJ0bffvvtaLNmzaJXX311hj6VEPnFVVddFf3ggw+iU6dO9cZZ7kcikei7777r/V5tWIjsonv37tGLL7648L7asBDh5tJLL/Xm0ozDH3/8cfSAAw6IbrTRRtE5c+Z4v1cbLhsJtznAAw884F3oNWrUiHbr1i362WefZfqQhBDrGTt2rCfYFr/16dPH+31BQUH0uuuui7Zo0cLbhNl///2jkydPLvIa//zzjyfU1qtXL9qgQYNo3759PUFYCJFa4rVdbk899VThc9hkOf/886ONGzeO1qlTJ3r00Ud74m6QadOmRQ855JBo7dq1vYkqE9g1a9Zk4BMJkX+cfvrp0Xbt2nnzZBZ6jLNOtAW1YSGyW7hVGxYi3Bx//PHRVq1aeePwxhtv7N2fMmVK4e/Vhssmwj8Jh+cKIYQQQgghhBBCCCGESDnyuBVCCCGEEEIIIYQQQoiQIeFWCCGEEEIIIYQQQgghQoaEWyGEEEIIIYQQQgghhAgZEm6FEEIIIYQQQgghhBAiZEi4FUIIIYQQQgghhBBCiJAh4VYIIYQQQgghhBBCCCFChoRbIYQQQgghhBBCCCGECBkSboUQQgghhBBCCCGEECJkSLgVQgghhBBCCCGEEEKIkCHhVgghhBBCCCGEEEIIIUKGhFshhBBCCCGEEEIIIYQIGRJuhRBCCCGEEEIIIYQQImRIuBVCCCGEEEIIIYQQQoiQIeFWCCGEEEIIIYQQQgghQoaEWyGEEEIIIYQQQgghhAgZEm6FEEIIIYQQQgghhBAiZEi4FUIIIYQQQgghhBBCiJAh4VYIIYQQQqSVffbZx7slkxtuuMEikYhl++cdN26c9zn4XwghhBBC5DcSboUQQgghcoihQ4d6wp+71apVyzbffHPr16+fzZ4927KZ5cuXewJt2ETN4PkO3lq2bGnZfO1Uq1bNNt54YzvttNPsr7/+yqnvTAghhBAiG6iW6QMQQgghhBDJ58Ybb7QOHTrYypUr7aOPPrJHHnnE3nrrLfvhhx+sTp06lo0gAg4aNMj7uXgE67XXXmtXXXVVho7M7MADD7RTTz21yGO1a9f2/n/33XcTfp29997bVqxYYTVq1LAwXDufffaZJ+hyDXHtsBGQrO9MCCGEEEKUjoRbIYQQQogc5JBDDrGddtrJ+/nMM8+0pk2b2pAhQ+zVV1+1E044wXINokO5ZQqimk8++eS4v0tEhEUk5XlVqlQptzia6mtno402sttvv91ee+01O+644zJ6bEIIIYQQ+YSsEoQQQggh8oD99tvP+3/q1Kne/2vXrrWbbrrJNt10U6tZs6a1b9/errnmGlu1alWRv+Pxww47zIsa3X777T1RcauttrJXXnklIY9Zl34/bdq0Eo9t9erVdv3111vXrl2tYcOGVrduXdtrr71s7Nixhc/h75s1a+b9TASnS+fnfUt6//J+RqJKu3Xr5n3Gjh072jPPPGOp8Lh1PrbDhg3zIoWxIyAKevHixXE9bvnbbbbZxn766Sfbd999vefyN3fccccG7/XHH3/YEUcc4Z3D5s2bW//+/e2dd96plG8u3wX89ttvSf3OYNKkSfZ///d/1qRJE++8IxgjEAdZs2aN9/edOnXynsMmxJ577mnvvfdehT6PEEIIIUS2IOFWCCGEECIPcKIbopeLpER423HHHe2ee+6x7t272+DBg613794b/O2vv/5qxx9/vBeJyXOIbD322GOTJpwhWD7xxBOeQElkJ8Le3Llz7aCDDrKJEyd6z0EAxO4Bjj76aPvvf//r3Y455pgSX7c8n3HKlCmegIjlwd13322NGzf2vF1//PHHhD4DEbPz5s0rcisuEBcHUfnNN9+0yy67zG699dZSI3MXLFhgBx98sHXp0sU7vs6dO9uVV15po0aNKnzOsmXLPIF+9OjRdtFFF9m//vUv++STT7znVQYnunNOkvmdcW533XVX+/nnnz2bCz4XAvBRRx1lI0aMKHwvXhvhFtH6wQcf9D7XJptsYl9//XWlPpcQQgghROiJCiGEEEKInOGpp56KMsUbPXp0dO7cudEZM2ZEhw0bFm3atGm0du3a0T///DM6ceJE7zlnnnlmkb+97LLLvMfHjBlT+Fi7du28x/73v/8VPrZo0aJoq1atojvssEPhYwMHDvSeV9LxTJ06tfCx7t27ezfH2rVro6tWrSrydwsWLIi2aNEievrppxc+xufhtXiv4hR//4p8xvHjxxc+NmfOnGjNmjWjl156abQs+Nt4Nz57vM87duxY7/cdO3aMLl++vMhrud/xf/B88dgzzzxT+Bjnq2XLltFevXoVPnb33Xd7zxs5cmThYytWrIh27tx5g9dM9Np5+eWXo82aNfPOBfeT+Z3tv//+0W233Ta6cuXKwscKCgqiu+++e7RTp06Fj3Xp0iXas2fPUo9dCCGEECIXUcStEEIIIUQOcsABB3gRj23btvUiTOvVq+dFMZJiT5EyGDBgQJG/ufTSS73/iQIN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y+3222+3f//73zZx4kTbaaedrGPHjvbf//638Dk8/7nnnrPTTz89peezWqpeGDWcL4EvYN68eZ66vdFGG9mWW27pncCK+FOI3BFu4dxzzX780eyff8wmTjRjc+Xww9N2iEIIIYQQQgghhBChoX9/IkLT/76NG/sF5MsDEbJEowa55pprvNvNN99s7733np199tn2ww8/WJ8+feyII47wnjN69Gj74osv7Oeff7bNN9/cewxRtCTbhHr16lm1atW8iN4giMOO9u3be+957rnn2sMPP+xF/DZs2NDTIoN/R2Qtgi16JdokIL4SsTty5Eg79thjC0VZXme77baztWvXeu9/xhln2FNPPWWXX36595zXX3/dVq5caccdd5xljXA7Z84c74M988wz9scff3iqNSeL8GN+JhR69erV3onbZJNNvC/uvPPO8xR3kX/Cbf36NDSz667z7xPtjp7ftm16jlEIIYQQQgghhBAiLCDaEtyWDey77772yCOPFHmsSZMm3v9ogQiiCJ/t2rWzewKqMBGsbdq0KRRtK8ro0aNt8ODBNmnSJFu8eLEnsCKkEi2LBUI8EIsRYXfZZZfCx5o2bWpbbLGF9zsHx8+xByFS99prr7XPPvvMdt11V89SAdEWq4asEG6vvPJKe+ihh7ww5P/7v/+zAw880Lp27WqtW7cu8ry///7bvvrqK3v33Xe9kOO77rrLLrzwQu9ki9xh2jT/f7xt27Ur+XkItUTZvv662erVeJSY3XmnWbWUxYILIYQQQgghhBBChA8iX7PlfREsN9tssxJ//8knn3j/z58/37s5gZMo2soybdo0O+yww7xg0FtuucUTjPGhJSqWgNGShNtE4RgJOiUI1YFH7+GHH+5F3Xbo0MFGjRrleemmmqTJY+PHj/e8KY488kjvw5UEQi43PixeFK+++qpnUixyh3XrzP74w/+5VSuzWrVKf36fPmbffGP2559mU6aYvfii2UknpeVQhRBCCFECzFPXrjWrXj3TRyKEEEIIkR+U164grPz222/Wv39/L2DzxRdf9DLuiZDFl5ZI1j///NN++eWXhKJua9SoYesQmgIQEIpX7t133+29Jrz00ktl/h32rUTmfv7554VWCf/8849NnjzZttpqqzKP5cwzz7QTTjjBixjedNNNbY899rBUk7TiZBj6HnXUUaWKtsXhufyNU+FF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d6WxatUq7xa0fICCggLvlk1wvAjnqTpuqolHo34p8XbteB/LPG+/bZGHHzarUcOid91l1r59po9IiKxs30KIzKH2nSImTrTIwIGecBu9/HKzvfbK9BGJPETtW4jcRe1biNymIEVtvDyvl7K60AOZJCeZQw45pPDn7bbbzhNy27VrZy+99JLVrl27wq9L1C4icHHmzp3rFTzLJvjysY3gwipv8bdE+PbbWrZ6te+P0KjRMpszZ41llGjUGgwbZlUIA1692tY89pgt698/s8ckRJa2byFE5lD7Tg31hg61aus356P332+L27SxaN26mT4skWeofQuRu6h9C5HbFKSojS9ZsiTzwq2DwmBff/2190GLK8rYJlx33XUVfm2iazfffHObMmWKHXjggbZ69Wqv8Fkw6nb27NlxPXGDXH311TZgwIAiEbdt27a1Zs2aWYMGDSyb4BxzXjn2VAwc8+cT2OpH3O64Yw1r1swyy48/WsQ/KO9uzR9/tLoLFphtsUWGD0yI7GvfQojMofadAn77zSK//144R7BVq6zmqFFm55+f6SMTeYbatxC5i9q3ELlNQYraOPavGRdu58+fbz179rQvvvjCU6b5oPwP7ufKCrdLly613377zU455RTPM7d69er2/vvvexYNMHnyZJs+fXqhfUNJ1KxZ07sVhy8lGztfzmuqjn3aNF7fjGCV5s0j3s8ZZfRo/4ACRJ5/3uymmzJ2SEJka/sWQmQWte8k8/rrG84R3nnHbP/9zbbcMmOHJfITtW8hche1byFym0gK2nh5XitlPcvll19u3333nT3//PP2+++/e0LtO++8Y7/88oude+65tv3229vfVLoqB5dddpl98MEHNm3aNPvkk0/s6KOPtqpVq3pF0Bo2bGhnnHGGFzk7duxYr1hZ3759PdFWhcmSA5Hc//wTK0yWcdF22TKzjz7yf0ZJbtHC/3niRLPvv8/ooQkhhBAig8ybZzZ+vP9z/fpmffrEfvfgg2Zr12bs0IQQQgghhMi4cPvWW2/ZOeecY8cff7zVZ8K8XlHebLPN7KGHHrL27dvbJZdcUq7X/PPPPz2RluJkxx13nDVt2tQ+++wzL2QZ7rnnHjvssMO8iNu9997bs0h45ZVXUvL58pGpU2M/I9xmnA8+8HxtPfbd1+ykk2K/++9//QrSQgghhMg/3nzTbN06/+dDDzU7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g7fOnTuHtn1LuM0RXnzxRRswYIBX7e7rr7+2Ll262EEHHWRz5szJ9KEJIUph2bJlXntl4yUed9xxh91///326KOP2ueff25169b12jaDiQPR9scff7T33nvP3njjDU8MPvvss9P4KYQQ8fjggw+8Sd9nn33mtc81a9ZYjx49vHbv6N+/v73++us2fPhw7/l///23HXPMMYW/X7dunTcpXL16tX3yySf29NNP29ChQ70NHSFE5mjTpo0n5nz11Vc2YcIE22+//ezII4/0xmNQ2xYiN/jyyy/tscce8zZqgqiNC5HdbL311jZz5szC20cffRTe9h0VOUG3bt2iF1xwQeH9devWRVu3bh0dPHhwRo9LCJE4dMkjRowovF9QUBBt2bJl9M477yx8bOHChdGaNWtGX3jhBe/+Tz/95P3dl19+WficUaNGRSORSPSvv/5K8ycQQpTGnDlzvPb6wQcfFLbn6tWrR4cPH174nJ9//tl7zqeffurdf+utt6JVqlSJzpo1q/A5jzzySLRBgwbRVatWZeBTCCFKonHjxtEnnnhCbVuIHGHJkiXRTp06Rd97771o9+7doxdffLH3uNq4ENnNwIEDo126dIn7uzC2b0Xc5gCo/Oz2k0LtqFKlinf/008/zeixCSEqztSpU23WrFlF2nbDhg09KxTXtvkfe4Sddtqp8Dk8nz6ACF0hRHhYtGiR93+TJk28/xm7icINtnHStDbZZJMibXzbbbe1Fi1aFD6HqPvFixcXRvYJITILkTfDhg3zoumxTFDbFiI3IGuGqLpgWwa1cSGyn19//dWzK+zYsaOXwYr1QVjbd7Wkv6JIO/PmzfMmjMGLBrg/adKkjB2XEKJyINpCvLbtfsf/eOoEqVatmicMuecIITJPQUGB5423xx572DbbbOM9RhutUaOGt/lSWhuP1we43wkhMsf333/vCbXYF+GBN2LECNtqq61s4sSJattCZDlsxmBBiFVCcTR+C5Hd7LLLLp61wRZbbOHZJAwaNMj22msv++GHH0LZviXcCiGEEEKkIWqHyWDQP0sIkd2w4EOkJZr+5Zdftj59+nheeEKI7GbGjBl28cUXe/70FP4WQuQWhxxySOHP+Fcj5LZr185eeuklryB42JBVQg6w0UYbWdWqVTeocsf9li1bZuy4hBCVw7Xf0to2/xcvQkg1y/nz56v9CxES+vXr5xUOHDt2rFfQyEEbxe5o4cKFpbbxeH2A+50QInMQkbPZZptZ165dbfDgwV6x0fvuu09tW4gsh1Rp5tc77rijl8nGjU0ZCgbzM5F1auNC5A6NGjWyzTff3KZMmRLKMVzCbY5MGpkwvv/++0VSMrlP+pYQIjvp0KGD1/EH2za+OXjXurbN/wwqTDAdY8aM8foAdg6FEJmDmoOItqRP0y5p00EYu6tXr16kjU+ePNnz2Aq2cdKxgxs0RAA1aNDAS8kWQoQHxt5Vq1apbQuR5ey///5e+ySi3t2oJ4EPpvtZbVyI3GHp0qX222+/WatWrcI5hie93JnICMOGDfMqzQ8dOtSrMn/22WdHGzVqVKTKnRAinNVqv/nmG+9GlzxkyBDv5z/++MP7/W233ea15VdffTX63XffRY888shohw4doitWrCh8jYMPPji6ww47RD///PPoRx995FW/PeGEEzL4qYQQcN5550UbNmwYHTduXHTmzJmFt+XLlxc+59xzz41usskm0TFjxkQnTJgQ3W233bybY+3atdFtttkm2qNHj+jEiROjb7/9drRZs2bRq6++OkOfSggBV111VfSDDz6ITp061RufuR+JRKLvvvuu93u1bSFyi+7du0cvvvjiwvtq40JkL5deeqk3P2cM//jjj6MHHHBAdKONNorOmTMnlO1bwm0O8cADD3gXV40aNaLdunWLfvbZZ5k+JCFEGYwdO9YTbIvf+vTp4/2+oKAget1110VbtGjhbc7sv//+0cmTJxd5jX/++ccTauvVqxdt0KBBtG/fvp4gLITILPHaNrennnqq8Dlswpx//vnRxo0bR+vUqRM9+uijPXE3yLRp06KHHHJItHbt2t6kksnmmjVrMvCJhBCO008/PdquXTtv3s1ijfHZibagti1Ebgu3auNCZC/HH398tFWrVt4YvvHGG3v3p0yZEtr2HeGf5MfxCiGEEEIIIYQQQgghhKgo8rgVQgghhBBCCCGEEEKIkCHhVgghhBBCCCGEEEIIIUKGhFshhBBCCCGEEEIIIYQIGRJuhRBCCCGEEEIIIYQQImRIuBVCCCGEEEIIIYQQQoiQIeFWCCGEEEIIIYQQQgghQoaEWyGEEEIIIYQQQgghhAgZEm6FEEIIIYQQQgghhBAiZEi4FUIIIYQQOcFpp51m7du3t7Dx0ksvWZMmTWzp0qVpe881a9ZY27Zt7eGHH07bewohhBBCiOQi4VYIIYQQQoSWSCSS0G3cuHEWRtatW2cDBw60Cy+80OrVq5e2961evboNGDDAbrnlFlu5cmXa3lcIIYQQQiSPSDQajSbx9YQQQgghhEgazz77bJH7zzzzjL333nv23//+t8jjBx54oBfVWlBQYDVr1rSwMHLkSDvmmGNsxowZtvHGG6f1vRcuXGgtWrSwRx55xE4//fS0vrcQQgghhKg8Em6FEEIIIUTW0K9fP3vooYcsW6awRx55pM2fP98+/PDDjLz/4YcfbosWLbLx48dn5P2FEEIIIUTFkVWCEEIIIYTISY/badOmeTYKd911lyf2duzY0erUqWM9evTwImARf2+66SZr06aN1a5du1BkLc6oUaNsr732srp161r9+vWtZ8+e9uOPP5Z5PFgUvP3223bAAQds8DuOCxF6+PDhttVWW3nvv9tuu9n333/v/f6xxx6zzTbbzGrVqmX77LOP91mC/Prrr9arVy9r2bKl9xw+Q+/evT2Rtngk8kcffRT3cwkhhBBCiHBTLdMHIIQQQgghRCp57rnnbPXq1Z7PLALmHXfcYccdd5ztt99+njfulVdeaVOmTLEHHnjALrvsMnvyyScL/xZLhj59+thBBx1kt99+uy1fvtyzHthzzz3tm2++KbUY2ldffeW974477hj390Thvvbaa3bBBRd49wcPHmyHHXaYXXHFFV5RsfPPP98WLFjgHS9WB2PGjPGex2tyPKtWrfI+E+LtX3/9ZW+88YZnj9CwYcPC9+jatasnUH/yySfeawshhBBCiOxBwq0QQgghhMhpEDWJUHWCJgXDEElXrFhhEyZMsGrV/Cnx3LlzPZEXYRaf3KVLl9pFF11kZ555pj3++OOFr4eQu8UWW9itt95a5PHiTJo0yfu/Q4cOcX8/efJk7zlO/G3cuLGdc845dvPNN9svv/ziRfcGj5eoW577008/2dSpU71o3f/7v/8rfL3rr79+g/cgyhj4Gwm3QgghhBDZhawShBBCCCFETnPssccWiULdZZddvP9PPvnkQtHWPU40K0IvUASNCNYTTjjB5s2bV3irWrWq99yxY8eW+r7//PNPoSAbj/33379IxK47LiwQnGgbfPz333/3/nef5Z133vEigEvDvTfHLYQQQgghsgtF3AohhBBCiJxmk002KXLfCZ9t27aN+zj2BECULmCpEI8GDRok9P4lFVKr6HERwTtgwAAbMmSIFyGM/+4RRxzhCdFBgTr43njqCiGEEEKI7ELCrRBCCCGEyGmIkC3P407sLCgoKPS5xUe2OMFo3Xg0bdq0UHCleFiyjgvuvvturxjbq6++au+++65n6YCdwmeffVbkvZzYu9FGG5V6rEIIIYQQInxIuBVCCCGEECIOm266qfd/8+bN7YADDij333fu3Nn7Hz/abbfdNunHx2tyu/baa73iY3vssYc9+uijnkeug/eGLbfcMunvL4QQQgghUos8boUQQgghhIjDQQcd5NkhUIRszZo1G/yeYmal0bVrV6tRo4ZXAC2ZLF682NauXVvkMQTcKlWq2KpVq4o8/tVXX3k2CbvttltSj0EIIYQQQqQeRdwKIYQQQggRB0TbRx55xE455RTbcccdrXfv3tasWTObPn26vfnmm16E64MPPlji39eqVct69Ohho0ePthtvvDFpxzVmzBjr16+fV3Rt880390Rc7BywWKCwWRAKrHGczrZBCCGEEEJkDxJuhRBCCCGEKIETTzzRWrdubbfddpvdeeedXkTrxhtv7BUE69u3b5l/f/rpp3ti6owZMzYoOlZRunTp4kUDv/766/bXX39ZnTp1vMdGjRplu+66a+HzFi1a5PnfPvzww0l5XyGEEEIIkV4i0ZLK3AohhBBCCCEqxbp162yrrbay4447zm666aa0vve9995rd9xxh/32229Wu3bttL63EEIIIYSoPPK4FUIIIYQQIkVgX4BNwkMPPWRLly5N2/viyTtkyBCvcJlEWyGEEEKI7EQRt0IIIYQQQgghhBBCCBEyFHErhBBCCCGEEEIIIYQQIUPCrRBCCCGEEEIIIYQQQoQMCbdCCCGEEEIIIYQQQggRMiTcCiGEEEIIIYQQQgghRMiQcCuEEEIIIYQQQgghhBAhQ8KtEEIIIYQQQgghhBBChAwJt0IIIYQQQgghhBBCCBEyJNwKIYQQQgghhBBCCCFEyJBwK4QQQgghhBBCCCGEECFDwq0QQgghhBBCCCGEEEKEDAm3QgghhBBCCCGEEEIIYeHi/wHhT3mJB+EOAQAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Combine E and I spikes\n",
- "all_spikes = u.math.concatenate([spk_e, spk_i], axis=1)\n",
- "\n",
- "# Find spike times and neuron indices\n",
- "t_idx, n_idx = u.math.where(all_spikes != 0)\n",
- "spike_times = times[t_idx].to_decimal(u.ms)\n",
- "\n",
- "# Create raster plot\n",
- "fig, axes = plt.subplots(2, 1, figsize=(14, 8), \n",
- " gridspec_kw={'height_ratios': [3, 1]})\n",
- "\n",
- "# Raster plot\n",
- "colors = ['blue' if i < net.n_exc else 'red' for i in n_idx]\n",
- "axes[0].scatter(spike_times, n_idx, s=1, c=colors, alpha=0.6)\n",
- "axes[0].axhline(y=net.n_exc, color='black', linestyle='--', \n",
- " alpha=0.5, linewidth=2, label='E/I boundary')\n",
- "axes[0].set_ylabel('Neuron Index', fontsize=12)\n",
- "axes[0].set_title('E-I Network Activity Raster Plot', fontsize=14, fontweight='bold')\n",
- "axes[0].text(10, net.n_exc/2, 'Excitatory', fontsize=10, \n",
- " bbox=dict(boxstyle='round', facecolor='lightblue', alpha=0.7))\n",
- "axes[0].text(10, net.n_exc + net.n_inh/2, 'Inhibitory', fontsize=10,\n",
- " bbox=dict(boxstyle='round', facecolor='lightcoral', alpha=0.7))\n",
- "axes[0].legend(loc='upper right')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Population firing rate over time\n",
- "bin_size = 10 * u.ms\n",
- "bins = u.math.arange(0.*u.ms, duration, bin_size)\n",
- "bins_decimal = bins.to_decimal(u.ms)\n",
- "\n",
- "# Calculate rates for E and I\n",
- "t_idx_e, _ = u.math.where(spk_e != 0)\n",
- "t_idx_i, _ = u.math.where(spk_i != 0)\n",
- "\n",
- "hist_e, _ = u.math.histogram(times[t_idx_e].to_decimal(u.ms), bins=bins_decimal)\n",
- "hist_i, _ = u.math.histogram(times[t_idx_i].to_decimal(u.ms), bins=bins_decimal)\n",
- "\n",
- "rate_e = hist_e / (net.n_exc * bin_size.to_decimal(u.second))\n",
- "rate_i = hist_i / (net.n_inh * bin_size.to_decimal(u.second))\n",
- "\n",
- "bin_centers = bins[:-1] + bin_size/2\n",
- "axes[1].plot(bin_centers.to_decimal(u.ms), rate_e, linewidth=2, \n",
- " label='Excitatory', color='blue', alpha=0.7)\n",
- "axes[1].plot(bin_centers.to_decimal(u.ms), rate_i, linewidth=2, \n",
- " label='Inhibitory', color='red', alpha=0.7)\n",
- "axes[1].set_xlabel('Time (ms)', fontsize=12)\n",
- "axes[1].set_ylabel('Firing Rate (Hz)', fontsize=12)\n",
- "axes[1].set_title('Population Firing Rates', fontsize=12)\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 9: Connectivity Patterns\n",
- "\n",
- "Different connectivity strategies:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Connectivity patterns:\n",
- "1. FixedProb: Random connections with fixed probability\n",
- "2. All2All: Every neuron connects to every other\n",
- "3. One2One: Neuron i connects only to neuron i\n",
- "\n",
- "You can also create custom connectivity!\n"
- ]
- }
- ],
- "source": [
- "# Example: Different connectivity patterns\n",
- "\n",
- "# 1. Fixed probability (what we used)\n",
- "conn_fixed_prob = brainstate.nn.EventFixedProb(\n",
- " 20, 10, 0.3, 0.5*u.mS\n",
- ")\n",
- "\n",
- "# 2. All-to-all (full connectivity)\n",
- "# conn_all2all = brainstate.nn.EventFixedProb(\n",
- "# 20, 10, prob=1.0, weight=0.5*u.mS\n",
- "# )\n",
- "\n",
- "# 3. One-to-one (for same-sized populations)\n",
- "# conn_one2one = brainstate.nn.EventOne2One(\n",
- "# 10, 10, weight=0.5*u.mS\n",
- "# )\n",
- "\n",
- "print(\"Connectivity patterns:\")\n",
- "print(\"1. FixedProb: Random connections with fixed probability\")\n",
- "print(\"2. All2All: Every neuron connects to every other\")\n",
- "print(\"3. One2One: Neuron i connects only to neuron i\")\n",
- "print(\"\\nYou can also create custom connectivity!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 10: Network Variations\n",
- "\n",
- "Experiment with different parameters:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Experiments to try:\n",
- "\n",
- "1. Change E/I balance:\n",
- " - Increase inhibitory weight → more synchrony\n",
- " - Decrease inhibitory weight → more irregular\n",
- "\n",
- "2. Change connectivity:\n",
- " - Higher prob → more correlated activity\n",
- " - Lower prob → more independent neurons\n",
- "\n",
- "3. Change time constants:\n",
- " - Faster inhibition → sharper oscillations\n",
- " - Slower inhibition → smoother dynamics\n",
- "\n",
- "4. Change external input:\n",
- " - Stronger input → higher firing rates\n",
- " - Unbalanced input → population bias\n"
- ]
- }
- ],
- "source": [
- "# Try these experiments:\n",
- "\n",
- "print(\"Experiments to try:\")\n",
- "print(\"\\n1. Change E/I balance:\")\n",
- "print(\" - Increase inhibitory weight → more synchrony\")\n",
- "print(\" - Decrease inhibitory weight → more irregular\")\n",
- "\n",
- "print(\"\\n2. Change connectivity:\")\n",
- "print(\" - Higher prob → more correlated activity\")\n",
- "print(\" - Lower prob → more independent neurons\")\n",
- "\n",
- "print(\"\\n3. Change time constants:\")\n",
- "print(\" - Faster inhibition → sharper oscillations\")\n",
- "print(\" - Slower inhibition → smoother dynamics\")\n",
- "\n",
- "print(\"\\n4. Change external input:\")\n",
- "print(\" - Stronger input → higher firing rates\")\n",
- "print(\" - Unbalanced input → population bias\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ **Projection Architecture**: Comm-Syn-Out three-stage design\n",
- "\n",
- "✅ **Connectivity Patterns**: Fixed probability, all-to-all, one-to-one\n",
- "\n",
- "✅ **Output Mechanisms**: CUBA (current-based) vs COBA (conductance-based)\n",
- "\n",
- "✅ **E-I Networks**: Building balanced excitatory-inhibitory networks\n",
- "\n",
- "✅ **Network Simulation**: Running and analyzing network dynamics\n",
- "\n",
- "✅ **Visualization**: Raster plots and population firing rates\n",
- "\n",
- "## Key Concepts\n",
- "\n",
- "1. **Update Order**: Always get spikes BEFORE updating projections\n",
- "2. **Modular Design**: Each projection component is independent\n",
- "3. **E-I Balance**: Inhibition counteracts excitation for stable dynamics\n",
- "4. **Time Constants**: Excitation fast (2ms), inhibition slow (10ms)\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "- **Tutorial 4**: Learn about [Input and Output](04-input-output.ipynb)\n",
- "- **Examples**: See [E-I networks in action](../../examples/gallery.rst)\n",
- "- **Advanced**: Explore [oscillation mechanisms](../../examples/gallery.rst#oscillations-and-rhythms)\n",
- "\n",
- "## Exercises\n",
- "\n",
- "Try these on your own:\n",
- "\n",
- "1. Create a network with 3 populations (E1, E2, I)\n",
- "2. Implement distance-dependent connectivity\n",
- "3. Add COBA synapses with different reversal potentials\n",
- "4. Implement a feedforward network (no recurrence)\n",
- "5. Analyze inter-spike intervals (ISI) distribution"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/basic/04-input-output.ipynb b/docs_state/tutorials/basic/04-input-output.ipynb
deleted file mode 100644
index 320071285..000000000
--- a/docs_state/tutorials/basic/04-input-output.ipynb
+++ /dev/null
@@ -1,768 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Tutorial 4: Input and Output\n",
- "\n",
- "In this tutorial, you'll learn:\n",
- "\n",
- "- Generating input patterns (Poisson, periodic, custom)\n",
- "- Input encoding strategies\n",
- "- Using readout layers\n",
- "- Population coding and decoding\n",
- "- Recording and analyzing network outputs"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import braintools\n",
- "import matplotlib.pyplot as plt\n",
- "import jax.numpy as jnp\n",
- "import numpy as np"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 1: Understanding Inputs and Outputs\n",
- "\n",
- "Neural networks need:\n",
- "\n",
- "**Inputs** → Convert external signals to neural activity\n",
- "- Current injection\n",
- "- Spike trains (Poisson, regular)\n",
- "- Temporal patterns\n",
- "\n",
- "**Outputs** → Extract information from network\n",
- "- Spike counts\n",
- "- Population vectors\n",
- "- Readout layers"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 2: Constant Current Input\n",
- "\n",
- "The simplest input: constant current."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "brainstate.environ.set(dt=0.1 * u.ms)\n",
- "\n",
- "# Create neuron\n",
- "neuron = brainpy.state.LIF(10, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Simulate with constant input\n",
- "duration = 200. * u.ms\n",
- "times = u.math.arange(0.*u.ms, duration, brainstate.environ.get_dt())\n",
- "\n",
- "I_constant = 2.0 * u.nA\n",
- "spikes = brainstate.transform.for_loop(\n",
- " lambda t: neuron(I_constant),\n",
- " times\n",
- ")\n",
- "\n",
- "# Plot\n",
- "t_idx, n_idx = u.math.where(spikes != 0)\n",
- "plt.figure(figsize=(10, 4))\n",
- "plt.scatter(times[t_idx].to_decimal(u.ms), n_idx, s=5, c='black')\n",
- "plt.xlabel('Time (ms)')\n",
- "plt.ylabel('Neuron Index')\n",
- "plt.title('Response to Constant Current Input')\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.show()\n",
- "\n",
- "print(f\"Total spikes: {len(t_idx)}\")\n",
- "print(f\"Average rate: {len(t_idx) / (10 * duration.to_decimal(u.second)):.2f} Hz\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 3: Poisson Spike Trains\n",
- "\n",
- "Realistic input: random Poisson spike trains."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def poisson_input(size, rate, dt):\n",
- " \"\"\"Generate Poisson spike train.\n",
- " \n",
- " Args:\n",
- " size: Number of neurons\n",
- " rate: Firing rate (Hz)\n",
- " dt: Time step\n",
- " \n",
- " Returns:\n",
- " Binary spike array\n",
- " \"\"\"\n",
- " prob = rate * dt.to_decimal(u.second)\n",
- " return (brainstate.random.rand(size) < prob).astype(float)\n",
- "\n",
- "# Test Poisson input\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "rate = 50 * u.Hz\n",
- "dt = brainstate.environ.get_dt()\n",
- "\n",
- "input_spikes_hist = []\n",
- "output_spikes_hist = []\n",
- "\n",
- "for t in times:\n",
- " # Generate Poisson input\n",
- " input_spikes = poisson_input(10, rate, dt)\n",
- " input_spikes_hist.append(input_spikes)\n",
- " \n",
- " # Convert spikes to current (simple model)\n",
- " I_poisson = input_spikes * 5.0 * u.nA\n",
- " neuron(I_poisson)\n",
- " output_spikes_hist.append(neuron.get_spike())\n",
- "\n",
- "input_spikes_hist = jnp.array(input_spikes_hist)\n",
- "output_spikes_hist = u.math.asarray(output_spikes_hist)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(dt)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Visualize input and output\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Input spikes\n",
- "t_in, n_in = jnp.where(input_spikes_hist > 0)\n",
- "axes[0].scatter(times[t_in].to_decimal(u.ms), n_in, s=2, c='blue', alpha=0.5)\n",
- "axes[0].set_ylabel('Neuron Index')\n",
- "axes[0].set_title(f'Input: Poisson Spike Train ({rate.to_decimal(u.Hz):.0f} Hz)', fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Output spikes\n",
- "t_out, n_out = u.math.where(output_spikes_hist != 0)\n",
- "axes[1].scatter(times[t_out].to_decimal(u.ms), n_out, s=2, c='red', alpha=0.5)\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_ylabel('Neuron Index')\n",
- "axes[1].set_title('Output: Neuron Response', fontweight='bold')\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(f\"Input spikes: {len(t_in)}\")\n",
- "print(f\"Output spikes: {len(t_out)}\")\n",
- "print(f\"Gain: {len(t_out) / len(t_in):.2f}x\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 4: Periodic Input Patterns\n",
- "\n",
- "Regular, rhythmic inputs."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def periodic_input(t, frequency, amplitude, phase=0):\n",
- " \"\"\"Generate sinusoidal input current.\n",
- " \n",
- " Args:\n",
- " t: Time\n",
- " frequency: Oscillation frequency\n",
- " amplitude: Current amplitude\n",
- " phase: Phase offset\n",
- " \"\"\"\n",
- " omega = 2 * jnp.pi * frequency.to_decimal(u.Hz)\n",
- " t_sec = t.to_decimal(u.second)\n",
- " return amplitude * (0.5 + 0.5 * jnp.sin(omega * t_sec + phase))\n",
- "\n",
- "# Test periodic input\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "freq = 10 * u.Hz\n",
- "amp = 3.0 * u.nA\n",
- "\n",
- "currents_hist = []\n",
- "spikes_hist = []\n",
- "\n",
- "for t in times:\n",
- " I_periodic = periodic_input(t, freq, amp)\n",
- " currents_hist.append(I_periodic)\n",
- " neuron(I_periodic)\n",
- " spikes_hist.append(neuron.get_spike())\n",
- "\n",
- "currents_hist = u.math.asarray(currents_hist)\n",
- "spikes_hist = u.math.asarray(spikes_hist)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Plot periodic input and response\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Input current\n",
- "axes[0].plot(times.to_decimal(u.ms), currents_hist.to_decimal(u.nA), \n",
- " linewidth=2, color='blue')\n",
- "axes[0].set_ylabel('Current (nA)')\n",
- "axes[0].set_title(f'Input: Periodic Current ({freq})', fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Output spikes\n",
- "t_idx, n_idx = u.math.where(spikes_hist != 0)\n",
- "axes[1].scatter(times[t_idx].to_decimal(u.ms), n_idx, s=5, c='red', alpha=0.7)\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_ylabel('Neuron Index')\n",
- "axes[1].set_title('Output: Phase-Locked Spiking', fontweight='bold')\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Observation: Neurons fire preferentially during high-current phases\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 5: Rate Coding\n",
- "\n",
- "Encode information in firing rates."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def rate_encode(values, max_rate, dt):\n",
- " \"\"\"Encode values as Poisson spike trains.\n",
- " \n",
- " Args:\n",
- " values: Array of values to encode (0 to 1)\n",
- " max_rate: Maximum firing rate\n",
- " dt: Time step\n",
- " \n",
- " Returns:\n",
- " Binary spike array\n",
- " \"\"\"\n",
- " rates = values * max_rate.to_decimal(u.Hz)\n",
- " probs = rates * dt.to_decimal(u.second)\n",
- " return (brainstate.random.rand(len(values)) < probs).astype(float)\n",
- "\n",
- "# Example: encode a sine wave\n",
- "n_neurons = 10\n",
- "max_rate = 100 * u.Hz\n",
- "duration = 500. * u.ms\n",
- "times = u.math.arange(0.*u.ms, duration, brainstate.environ.get_dt())\n",
- "\n",
- "encoded_spikes = []\n",
- "signal_values = []\n",
- "\n",
- "for i, t in enumerate(times):\n",
- " # Signal to encode (sine wave)\n",
- " signal = 0.5 + 0.5 * jnp.sin(2 * jnp.pi * 5 * t.to_decimal(u.second))\n",
- " signal_values.append(signal)\n",
- " \n",
- " # Encode as spikes for each neuron\n",
- " values = jnp.ones(n_neurons) * signal # Same value for all neurons\n",
- " spikes = rate_encode(values, max_rate, brainstate.environ.get_dt())\n",
- " encoded_spikes.append(spikes)\n",
- "\n",
- "encoded_spikes = jnp.array(encoded_spikes)\n",
- "signal_values = jnp.array(signal_values)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Visualize rate coding\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Original signal\n",
- "axes[0].plot(times.to_decimal(u.ms), signal_values, linewidth=2, color='blue')\n",
- "axes[0].set_ylabel('Signal Value')\n",
- "axes[0].set_title('Original Signal (to be encoded)', fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Encoded spikes\n",
- "t_idx, n_idx = jnp.where(encoded_spikes > 0)\n",
- "axes[1].scatter(times[t_idx].to_decimal(u.ms), n_idx, s=1, c='red', alpha=0.5)\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_ylabel('Neuron Index')\n",
- "axes[1].set_title('Rate-Coded Spike Train', fontweight='bold')\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Higher signal → higher spike density\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 6: Population Coding\n",
- "\n",
- "Multiple neurons encode a single value."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def population_encode(value, n_neurons, pref_values, sigma, max_rate, dt):\n",
- " \"\"\"Encode value using population code with tuning curves.\n",
- " \n",
- " Args:\n",
- " value: Value to encode (0 to 1)\n",
- " n_neurons: Number of neurons\n",
- " pref_values: Preferred values for each neuron\n",
- " sigma: Tuning width\n",
- " max_rate: Maximum firing rate\n",
- " dt: Time step\n",
- " \"\"\"\n",
- " # Tuning curves: Gaussian around preferred value\n",
- " responses = jnp.exp(-0.5 * ((value - pref_values) / sigma)**2)\n",
- " rates = responses * max_rate.to_decimal(u.Hz)\n",
- " probs = rates * dt.to_decimal(u.second)\n",
- " return (brainstate.random.rand(n_neurons) < probs).astype(float)\n",
- "\n",
- "# Setup population\n",
- "n_pop = 20\n",
- "pref_values = jnp.linspace(0, 1, n_pop) # Evenly spaced preferences\n",
- "sigma = 0.2\n",
- "max_rate = 100 * u.Hz\n",
- "\n",
- "# Encode a slowly changing value\n",
- "duration = 500. * u.ms\n",
- "times = u.math.arange(0.*u.ms, duration, brainstate.environ.get_dt())\n",
- "\n",
- "pop_spikes = []\n",
- "true_values = []\n",
- "\n",
- "for i, t in enumerate(times):\n",
- " # Value changes over time\n",
- " value = 0.5 + 0.3 * jnp.sin(2 * jnp.pi * 2 * t.to_decimal(u.second))\n",
- " true_values.append(value)\n",
- " \n",
- " # Population encoding\n",
- " spikes = population_encode(value, n_pop, pref_values, sigma, max_rate, \n",
- " brainstate.environ.get_dt())\n",
- " pop_spikes.append(spikes)\n",
- "\n",
- "pop_spikes = jnp.array(pop_spikes)\n",
- "true_values = jnp.array(true_values)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Visualize population coding\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# True value\n",
- "axes[0].plot(times.to_decimal(u.ms), true_values, linewidth=2, color='blue')\n",
- "axes[0].set_ylabel('Encoded Value')\n",
- "axes[0].set_title('True Value (to be encoded)', fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Population spikes\n",
- "t_idx, n_idx = jnp.where(pop_spikes > 0)\n",
- "axes[1].scatter(times[t_idx].to_decimal(u.ms), n_idx, s=2, c='red', alpha=0.5)\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_ylabel('Neuron Index (Preference)')\n",
- "axes[1].set_title('Population Code: Activity Follows Value', fontweight='bold')\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Peak activity shifts with encoded value\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 7: Population Decoding\n",
- "\n",
- "Extract the encoded value from population activity."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def population_decode(spike_counts, pref_values):\n",
- " \"\"\"Decode value from population activity.\n",
- " \n",
- " Args:\n",
- " spike_counts: Number of spikes per neuron\n",
- " pref_values: Preferred values of neurons\n",
- " \n",
- " Returns:\n",
- " Decoded value (population vector)\n",
- " \"\"\"\n",
- " # Population vector: weighted average\n",
- " total_activity = jnp.sum(spike_counts)\n",
- " if total_activity > 0:\n",
- " decoded = jnp.sum(spike_counts * pref_values) / total_activity\n",
- " return decoded\n",
- " else:\n",
- " return 0.5 # Default\n",
- "\n",
- "# Decode the population activity\n",
- "window_size = 50 # ms\n",
- "window_steps = int(window_size / brainstate.environ.get_dt().to_decimal(u.ms))\n",
- "\n",
- "decoded_values = []\n",
- "decode_times = []\n",
- "\n",
- "for i in range(0, len(times) - window_steps, window_steps // 2):\n",
- " # Count spikes in window\n",
- " window_spikes = pop_spikes[i:i+window_steps]\n",
- " spike_counts = jnp.sum(window_spikes, axis=0)\n",
- " \n",
- " # Decode\n",
- " decoded = population_decode(spike_counts, pref_values)\n",
- " decoded_values.append(decoded)\n",
- " decode_times.append(times[i + window_steps//2])\n",
- "\n",
- "decoded_values = jnp.array(decoded_values)\n",
- "decode_times = u.math.asarray(decode_times)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Compare true and decoded values\n",
- "plt.figure(figsize=(12, 5))\n",
- "plt.plot(times.to_decimal(u.ms), true_values, linewidth=2, \n",
- " label='True Value', color='blue', alpha=0.7)\n",
- "plt.plot(decode_times.to_decimal(u.ms), decoded_values, linewidth=2, \n",
- " label='Decoded Value', color='red', linestyle='--', alpha=0.7)\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Value', fontsize=12)\n",
- "plt.title('Population Decoding: True vs Decoded Values', fontsize=14, fontweight='bold')\n",
- "plt.legend(fontsize=11)\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "# Calculate decoding error\n",
- "# Interpolate true values at decode times\n",
- "true_at_decode = jnp.interp(\n",
- " decode_times.to_decimal(u.ms),\n",
- " times.to_decimal(u.ms),\n",
- " true_values\n",
- ")\n",
- "error = jnp.abs(decoded_values - true_at_decode)\n",
- "print(f\"Mean decoding error: {jnp.mean(error):.4f}\")\n",
- "print(f\"Max decoding error: {jnp.max(error):.4f}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 8: Readout Layers\n",
- "\n",
- "Use a readout layer to extract output."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create network with readout\n",
- "class NetworkWithReadout(brainstate.nn.Module):\n",
- " def __init__(self, n_input, n_hidden, n_output):\n",
- " super().__init__()\n",
- " \n",
- " # Hidden layer (recurrent LIF neurons)\n",
- " self.hidden = brainpy.state.LIF(n_hidden, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- " \n",
- " # Readout layer\n",
- " self.readout = brainpy.state.Readout(\n",
- " n_hidden, n_output,\n",
- " weight_initializer=braintools.init.KaimingNormal()\n",
- " )\n",
- "\n",
- " \n",
- " def update(self, spike_input):\n",
- " # Convert input spikes to current\n",
- " I_input = spike_input * 5.0 * u.nA\n",
- " \n",
- " # Update hidden neurons\n",
- " self.hidden(I_input)\n",
- " spikes = self.hidden.get_spike()\n",
- " \n",
- " # Readout\n",
- " output = self.readout(spikes)\n",
- " \n",
- " return output, spikes\n",
- "\n",
- "# Create network\n",
- "net = NetworkWithReadout(n_input=10, n_hidden=50, n_output=2)\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "print(\"Network with readout layer created\")\n",
- "print(f\"Hidden neurons: {50}\")\n",
- "print(f\"Output dimensions: {2}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Test readout\n",
- "duration = 200. * u.ms\n",
- "times = u.math.arange(0.*u.ms, duration, brainstate.environ.get_dt())\n",
- "\n",
- "outputs_hist = []\n",
- "spikes_hist = []\n",
- "\n",
- "for t in times:\n",
- " # Generate Poisson input\n",
- " input_spikes = poisson_input(10, 50*u.Hz, brainstate.environ.get_dt())\n",
- " \n",
- " # Network update\n",
- " output, spikes = net.update(input_spikes)\n",
- " outputs_hist.append(output)\n",
- " spikes_hist.append(spikes)\n",
- "\n",
- "outputs_hist = jnp.array(outputs_hist)\n",
- "spikes_hist = u.math.asarray(spikes_hist)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Visualize readout\n",
- "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)\n",
- "\n",
- "# Hidden layer activity\n",
- "t_idx, n_idx = u.math.where(spikes_hist != 0)\n",
- "axes[0].scatter(times[t_idx].to_decimal(u.ms), n_idx, s=1, c='blue', alpha=0.5)\n",
- "axes[0].set_ylabel('Neuron Index')\n",
- "axes[0].set_title('Hidden Layer Spikes', fontweight='bold')\n",
- "axes[0].grid(True, alpha=0.3)\n",
- "\n",
- "# Readout outputs\n",
- "axes[1].plot(times.to_decimal(u.ms), outputs_hist[:, 0], \n",
- " linewidth=2, label='Output 1', alpha=0.7)\n",
- "axes[1].plot(times.to_decimal(u.ms), outputs_hist[:, 1], \n",
- " linewidth=2, label='Output 2', alpha=0.7)\n",
- "axes[1].set_xlabel('Time (ms)')\n",
- "axes[1].set_ylabel('Readout Value')\n",
- "axes[1].set_title('Readout Layer Outputs', fontweight='bold')\n",
- "axes[1].legend()\n",
- "axes[1].grid(True, alpha=0.3)\n",
- "\n",
- "plt.tight_layout()\n",
- "plt.show()\n",
- "\n",
- "print(\"Readout layer converts spikes to continuous values\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Part 9: Recording Network States\n",
- "\n",
- "Record variables during simulation."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Manual recording example\n",
- "neuron = brainpy.state.LIF(5, V_rest=-65.*u.mV, V_th=-50.*u.mV, tau=10.*u.ms)\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "duration = 100. * u.ms\n",
- "times = u.math.arange(0.*u.ms, duration, brainstate.environ.get_dt())\n",
- "\n",
- "# Preallocate recording arrays\n",
- "n_steps = len(times)\n",
- "V_hist = []\n",
- "spike_hist = []\n",
- "\n",
- "for t in times:\n",
- " neuron(2.0 * u.nA)\n",
- " \n",
- " # Record states\n",
- " V_hist.append(neuron.V.value.copy())\n",
- " spike_hist.append(neuron.get_spike().copy())\n",
- "\n",
- "V_hist = u.math.asarray(V_hist) # Shape: (time, neurons)\n",
- "spike_hist = u.math.asarray(spike_hist)\n",
- "\n",
- "print(f\"Recorded {n_steps} time steps\")\n",
- "print(f\"Voltage history shape: {V_hist.shape}\")\n",
- "print(f\"Spike history shape: {spike_hist.shape}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Plot recorded states\n",
- "plt.figure(figsize=(12, 6))\n",
- "\n",
- "# Plot voltage traces\n",
- "for i in range(5):\n",
- " V_trace = V_hist[:, i]\n",
- " # Mark spikes\n",
- " spike_times = times[spike_hist[:, i] > 0]\n",
- " V_with_spikes = V_trace.copy()\n",
- " V_with_spikes = V_with_spikes.to_decimal(u.mV)\n",
- " \n",
- " plt.plot(times.to_decimal(u.ms), V_with_spikes, \n",
- " linewidth=1.5, alpha=0.7, label=f'Neuron {i}')\n",
- "\n",
- "plt.axhline(y=-50, color='r', linestyle='--', alpha=0.5, label='Threshold')\n",
- "plt.xlabel('Time (ms)', fontsize=12)\n",
- "plt.ylabel('Membrane Potential (mV)', fontsize=12)\n",
- "plt.title('Recorded Voltage Traces', fontsize=14, fontweight='bold')\n",
- "plt.legend(loc='upper right', fontsize=9)\n",
- "plt.grid(True, alpha=0.3)\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "In this tutorial, you learned:\n",
- "\n",
- "✅ **Input Generation**: Constant, Poisson, periodic patterns\n",
- "\n",
- "✅ **Rate Coding**: Encoding values as firing rates\n",
- "\n",
- "✅ **Population Coding**: Multiple neurons encode single values\n",
- "\n",
- "✅ **Population Decoding**: Extract values from spike trains\n",
- "\n",
- "✅ **Readout Layers**: Convert spikes to continuous outputs\n",
- "\n",
- "✅ **Recording States**: Track network variables over time\n",
- "\n",
- "## Key Concepts\n",
- "\n",
- "1. **Input Encoding**: Convert signals → spike patterns\n",
- "2. **Population Codes**: Distributed representation across neurons\n",
- "3. **Decoding**: Extract information from population activity\n",
- "4. **Readout**: Linear combination of spike counts\n",
- "\n",
- "## Next Steps\n",
- "\n",
- "- **Tutorial 5**: Learn [SNN training](../advanced/05-snn-training.ipynb)\n",
- "- **Examples**: See [trained networks](../../examples/gallery.rst#snn-training)\n",
- "- **Advanced**: Explore [reservoir computing](../../examples/gallery.rst)\n",
- "\n",
- "## Exercises\n",
- "\n",
- "1. Implement temporal coding (first-spike latency)\n",
- "2. Create a 2D population code (e.g., for position)\n",
- "3. Build a classifier using readout layer\n",
- "4. Compare different decoding methods (vector, maximum likelihood)\n",
- "5. Implement sparse coding with inhibition"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/how-to-guides/custom-components.ipynb b/docs_state/tutorials/how-to-guides/custom-components.ipynb
deleted file mode 100644
index 68872d055..000000000
--- a/docs_state/tutorials/how-to-guides/custom-components.ipynb
+++ /dev/null
@@ -1,633 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to Create Custom Components\n",
- "\n",
- "This guide shows you how to create custom neurons, synapses, and other components in BrainPy."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Quick Start\n",
- "\n",
- "**Custom neuron template:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import jax.numpy as jnp\n",
- "\n",
- "class CustomNeuron(brainpy.state.Neuron):\n",
- " def __init__(self, size, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- "\n",
- " # Parameters\n",
- " self.tau = 10.0 * u.ms\n",
- " self.V_th = -50.0 * u.mV\n",
- "\n",
- " # States\n",
- " self.V = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.spike = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.size if batch_size is None else (batch_size, self.size)\n",
- " self.V.value = jnp.zeros(shape)\n",
- " self.spike.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, x):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Dynamics\n",
- " dV = -self.V.value / self.tau.to_decimal(u.ms) + x.to_decimal(u.nA)\n",
- " self.V.value += dV * dt.to_decimal(u.ms)\n",
- "\n",
- " # Spike generation\n",
- " self.spike.value = (self.V.value >= self.V_th.to_decimal(u.mV)).astype(float)\n",
- "\n",
- " # Reset\n",
- " self.V.value = jnp.where(\n",
- " self.spike.value > 0,\n",
- " 0.0, # Reset voltage\n",
- " self.V.value\n",
- " )\n",
- "\n",
- " return self.V.value\n",
- "\n",
- " def get_spike(self):\n",
- " return self.spike.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Custom Neurons\n",
- "\n",
- "### Example 1: Adaptive LIF\n",
- "\n",
- "**LIF with spike-frequency adaptation:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "class AdaptiveLIF(brainpy.state.Neuron):\n",
- " \"\"\"LIF neuron with adaptation current.\"\"\"\n",
- "\n",
- " def __init__(self, size, tau=10*u.ms, tau_w=100*u.ms,\n",
- " V_th=-50*u.mV, V_reset=-65*u.mV, a=0.1*u.nA,\n",
- " b=0.5*u.nA, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- "\n",
- " self.tau = tau\n",
- " self.tau_w = tau_w\n",
- " self.V_th = V_th\n",
- " self.V_reset = V_reset\n",
- " self.a = a # Adaptation coupling\n",
- " self.b = b # Spike-triggered adaptation\n",
- "\n",
- " # States\n",
- " self.V = brainstate.ShortTermState(jnp.ones(size) * V_reset.to_decimal(u.mV))\n",
- " self.w = brainstate.ShortTermState(jnp.zeros(size)) # Adaptation current\n",
- " self.spike = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.size if batch_size is None else (batch_size, self.size)\n",
- " self.V.value = jnp.ones(shape) * self.V_reset.to_decimal(u.mV)\n",
- " self.w.value = jnp.zeros(shape)\n",
- " self.spike.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, I_ext):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Membrane potential dynamics\n",
- " dV = (-self.V.value + self.V_reset.to_decimal(u.mV) + I_ext.to_decimal(u.nA) - self.w.value) / self.tau.to_decimal(u.ms)\n",
- " self.V.value += dV * dt.to_decimal(u.ms)\n",
- "\n",
- " # Adaptation dynamics\n",
- " dw = (self.a.to_decimal(u.nA) * (self.V.value - self.V_reset.to_decimal(u.mV)) - self.w.value) / self.tau_w.to_decimal(u.ms)\n",
- " self.w.value += dw * dt.to_decimal(u.ms)\n",
- "\n",
- " # Spike generation\n",
- " self.spike.value = (self.V.value >= self.V_th.to_decimal(u.mV)).astype(float)\n",
- "\n",
- " # Reset and adaptation jump\n",
- " self.V.value = jnp.where(\n",
- " self.spike.value > 0,\n",
- " self.V_reset.to_decimal(u.mV),\n",
- " self.V.value\n",
- " )\n",
- " self.w.value += self.spike.value * self.b.to_decimal(u.nA)\n",
- "\n",
- " return self.V.value\n",
- "\n",
- " def get_spike(self):\n",
- " return self.spike.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 2: Izhikevich Neuron"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "class Izhikevich(brainpy.state.Neuron):\n",
- " \"\"\"Izhikevich neuron model.\"\"\"\n",
- "\n",
- " def __init__(self, size, a=0.02, b=0.2, c=-65*u.mV, d=8*u.mV, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- "\n",
- " self.a = a\n",
- " self.b = b\n",
- " self.c = c\n",
- " self.d = d\n",
- "\n",
- " # States\n",
- " self.V = brainstate.ShortTermState(jnp.ones(size) * c.to_decimal(u.mV))\n",
- " self.u = brainstate.ShortTermState(jnp.zeros(size))\n",
- " self.spike = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.size if batch_size is None else (batch_size, self.size)\n",
- " self.V.value = jnp.ones(shape) * self.c.to_decimal(u.mV)\n",
- " self.u.value = jnp.zeros(shape)\n",
- " self.spike.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, I):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Izhikevich dynamics\n",
- " dV = (0.04 * self.V.value**2 + 5 * self.V.value + 140 - self.u.value + I.to_decimal(u.nA))\n",
- " du = self.a * (self.b * self.V.value - self.u.value)\n",
- "\n",
- " self.V.value += dV * dt.to_decimal(u.ms)\n",
- " self.u.value += du * dt.to_decimal(u.ms)\n",
- "\n",
- " # Spike and reset\n",
- " self.spike.value = (self.V.value >= 30).astype(float)\n",
- " self.V.value = jnp.where(self.spike.value > 0, self.c.to_decimal(u.mV), self.V.value)\n",
- " self.u.value = jnp.where(self.spike.value > 0, self.u.value + self.d.to_decimal(u.mV), self.u.value)\n",
- "\n",
- " return self.V.value\n",
- "\n",
- " def get_spike(self):\n",
- " return self.spike.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Custom Synapses\n",
- "\n",
- "### Example: Biexponential Synapse"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "class BiexponentialSynapse(brainpy.state.Synapse):\n",
- " \"\"\"Synapse with separate rise and decay.\"\"\"\n",
- "\n",
- " def __init__(self, size, tau_rise=1*u.ms, tau_decay=5*u.ms, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- "\n",
- " self.tau_rise = tau_rise\n",
- " self.tau_decay = tau_decay\n",
- "\n",
- " # States\n",
- " self.h = brainstate.ShortTermState(jnp.zeros(size)) # Rising phase\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size)) # Decaying phase\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.size if batch_size is None else (batch_size, self.size)\n",
- " self.h.value = jnp.zeros(shape)\n",
- " self.g.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, x):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Two-stage dynamics\n",
- " dh = -self.h.value / self.tau_rise.to_decimal(u.ms) + x\n",
- " dg = -self.g.value / self.tau_decay.to_decimal(u.ms) + self.h.value\n",
- "\n",
- " self.h.value += dh * dt.to_decimal(u.ms)\n",
- " self.g.value += dg * dt.to_decimal(u.ms)\n",
- "\n",
- " return self.g.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example: NMDA Synapse"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "class NMDASynapse(brainpy.state.Synapse):\n",
- " \"\"\"NMDA receptor with voltage dependence.\"\"\"\n",
- "\n",
- " def __init__(self, size, tau=100*u.ms, a=0.5/u.mM, Mg=1.0*u.mM, **kwargs):\n",
- " super().__init__(size, **kwargs)\n",
- "\n",
- " self.tau = tau\n",
- " self.a = a\n",
- " self.Mg = Mg\n",
- "\n",
- " self.g = brainstate.ShortTermState(jnp.zeros(size))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape = self.size if batch_size is None else (batch_size, self.size)\n",
- " self.g.value = jnp.zeros(shape)\n",
- "\n",
- " def update(self, x, V_post=None):\n",
- " \"\"\"Update with optional postsynaptic voltage.\"\"\"\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Conductance dynamics\n",
- " dg = -self.g.value / self.tau.to_decimal(u.ms) + x\n",
- " self.g.value += dg * dt.to_decimal(u.ms)\n",
- "\n",
- " # Voltage-dependent magnesium block\n",
- " if V_post is not None:\n",
- " mg_block = 1 / (1 + self.Mg.to_decimal(u.mM) * self.a.to_decimal(1/u.mM) * jnp.exp(-0.062 * V_post.to_decimal(u.mV)))\n",
- " return self.g.value * mg_block\n",
- " else:\n",
- " return self.g.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Custom Learning Rules\n",
- "\n",
- "### Example: Simplified STDP"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "class SimpleSTDP(brainstate.nn.Module):\n",
- " \"\"\"Simplified STDP learning rule.\"\"\"\n",
- "\n",
- " def __init__(self, n_pre, n_post, A_plus=0.01, A_minus=0.01,\n",
- " tau_plus=20*u.ms, tau_minus=20*u.ms):\n",
- " super().__init__()\n",
- "\n",
- " self.A_plus = A_plus\n",
- " self.A_minus = A_minus\n",
- " self.tau_plus = tau_plus\n",
- " self.tau_minus = tau_minus\n",
- "\n",
- " # Learnable weights\n",
- " self.W = brainstate.ParamState(jnp.ones((n_pre, n_post)) * 0.5)\n",
- "\n",
- " # Eligibility traces\n",
- " self.pre_trace = brainstate.ShortTermState(jnp.zeros(n_pre))\n",
- " self.post_trace = brainstate.ShortTermState(jnp.zeros(n_post))\n",
- "\n",
- " def reset_state(self, batch_size=None):\n",
- " shape_pre = self.W.value.shape[0] if batch_size is None else (batch_size, self.W.value.shape[0])\n",
- " shape_post = self.W.value.shape[1] if batch_size is None else (batch_size, self.W.value.shape[1])\n",
- " self.pre_trace.value = jnp.zeros(shape_pre)\n",
- " self.post_trace.value = jnp.zeros(shape_post)\n",
- "\n",
- " def update(self, pre_spike, post_spike):\n",
- " dt = brainstate.environ.get_dt()\n",
- "\n",
- " # Update traces\n",
- " self.pre_trace.value += -self.pre_trace.value / self.tau_plus.to_decimal(u.ms) * dt.to_decimal(u.ms) + pre_spike\n",
- " self.post_trace.value += -self.post_trace.value / self.tau_minus.to_decimal(u.ms) * dt.to_decimal(u.ms) + post_spike\n",
- "\n",
- " # Weight updates\n",
- " # LTP: pre spike finds existing post trace\n",
- " dw_ltp = self.A_plus * jnp.outer(pre_spike, self.post_trace.value)\n",
- "\n",
- " # LTD: post spike finds existing pre trace\n",
- " dw_ltd = -self.A_minus * jnp.outer(self.pre_trace.value, post_spike)\n",
- "\n",
- " # Update weights\n",
- " self.W.value = jnp.clip(self.W.value + dw_ltp + dw_ltd, 0, 1)\n",
- "\n",
- " return jnp.dot(pre_spike, self.W.value)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Custom Network Architectures\n",
- "\n",
- "### Example: Liquid State Machine"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "class LiquidStateMachine(brainstate.nn.Module):\n",
- " \"\"\"Reservoir computing with spiking neurons.\"\"\"\n",
- "\n",
- " def __init__(self, n_input=100, n_reservoir=1000, n_output=10):\n",
- " super().__init__()\n",
- "\n",
- " # Input projection (trainable)\n",
- " self.input_weights = brainstate.ParamState(\n",
- " brainstate.random.randn(n_input, n_reservoir) * 0.1\n",
- " )\n",
- "\n",
- " # Reservoir (fixed random recurrent network)\n",
- " self.reservoir = brainpy.state.LIF(n_reservoir, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "\n",
- " # Fixed random recurrent weights\n",
- " w_reservoir = brainstate.random.randn(n_reservoir, n_reservoir) * 0.01\n",
- " mask = (brainstate.random.rand(n_reservoir, n_reservoir) < 0.1).astype(float)\n",
- " self.reservoir_weights = w_reservoir * mask # Not a ParamState (fixed)\n",
- "\n",
- " # Readout (trainable)\n",
- " self.readout = brainpy.state.Readout(n_reservoir, n_output)\n",
- "\n",
- " def update(self, x):\n",
- " # Input to reservoir\n",
- " reservoir_input = jnp.dot(x, self.input_weights.value) * u.nA\n",
- "\n",
- " # Reservoir recurrence\n",
- " spk = self.reservoir.get_spike()\n",
- " recurrent_input = jnp.dot(spk, self.reservoir_weights) * u.nA\n",
- "\n",
- " # Update reservoir\n",
- " self.reservoir(reservoir_input + recurrent_input)\n",
- "\n",
- " # Readout from reservoir state\n",
- " output = self.readout(self.reservoir.get_spike())\n",
- "\n",
- " return output"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Custom Input Encoders\n",
- "\n",
- "### Example: Temporal Contrast Encoder"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "class TemporalContrastEncoder(brainstate.nn.Module):\n",
- " \"\"\"Encode images as spike timing based on contrast.\"\"\"\n",
- "\n",
- " def __init__(self, n_pixels, max_time=100, threshold=0.1):\n",
- " super().__init__()\n",
- " self.n_pixels = n_pixels\n",
- " self.max_time = max_time\n",
- " self.threshold = threshold\n",
- "\n",
- " def encode(self, image):\n",
- " \"\"\"Convert image to spike timing.\n",
- "\n",
- " Args:\n",
- " image: Array of pixel values [0, 1]\n",
- "\n",
- " Returns:\n",
- " spike_times: When each pixel spikes (or max_time if no spike)\n",
- " \"\"\"\n",
- " # Higher intensity → earlier spike\n",
- " spike_times = jnp.where(\n",
- " image > self.threshold,\n",
- " self.max_time * (1 - image), # Invert: bright pixels spike early\n",
- " self.max_time # Below threshold: no spike\n",
- " )\n",
- "\n",
- " return spike_times\n",
- "\n",
- " def decode_to_spikes(self, spike_times, current_time):\n",
- " \"\"\"Get spikes at current simulation time.\"\"\"\n",
- " spikes = (spike_times == current_time).astype(float)\n",
- " return spikes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Best Practices\n",
- "\n",
- "✅ **Inherit from base classes**\n",
- " - `brainpy.state.Neuron` for neurons\n",
- " - `brainpy.state.Synapse` for synapses\n",
- " - `brainstate.nn.Module` for general components\n",
- "\n",
- "✅ **Use ShortTermState for dynamics**\n",
- " - Reset each trial\n",
- " - Temporary variables\n",
- "\n",
- "✅ **Use ParamState for learnable parameters**\n",
- " - Trained by optimizers\n",
- " - Saved in checkpoints\n",
- "\n",
- "✅ **Implement reset_state()**\n",
- " - Handle batch_size parameter\n",
- " - Initialize all ShortTermStates\n",
- "\n",
- "✅ **Use physical units**\n",
- " - All parameters with `brainunit`\n",
- " - Convert for computation with `.to_decimal()`\n",
- "\n",
- "✅ **Follow naming conventions**\n",
- " - `V` for voltage\n",
- " - `spike` for spike indicator\n",
- " - `g` for conductance\n",
- " - `w` for weights"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Testing Custom Components"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def test_custom_neuron():\n",
- " \"\"\"Test custom neuron implementation.\"\"\"\n",
- "\n",
- " neuron = CustomNeuron(size=10)\n",
- " brainstate.nn.init_all_states(neuron)\n",
- "\n",
- " # Test 1: Initialization\n",
- " assert neuron.V.value.shape == (10,)\n",
- " assert jnp.all(neuron.V.value == 0)\n",
- "\n",
- " # Test 2: Response to input\n",
- " strong_input = jnp.ones(10) * 10.0 * u.nA\n",
- " for _ in range(100):\n",
- " neuron(strong_input)\n",
- "\n",
- " spike_count = jnp.sum(neuron.spike.value)\n",
- " assert spike_count > 0, \"Neuron should spike with strong input\"\n",
- "\n",
- " # Test 3: Batch dimension\n",
- " brainstate.nn.init_all_states(neuron, batch_size=5)\n",
- " assert neuron.V.value.shape == (5, 10)\n",
- "\n",
- " print(\"✅ Custom neuron tests passed\")\n",
- "\n",
- "test_custom_neuron()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Complete Example\n",
- "\n",
- "**Putting it all together:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Custom components\n",
- "class MyNeuron(brainpy.state.Neuron):\n",
- " # ... (see examples above)\n",
- " pass\n",
- "\n",
- "class MySynapse(brainpy.state.Synapse):\n",
- " # ... (see examples above)\n",
- " pass\n",
- "\n",
- "# Use in network\n",
- "class CustomNetwork(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- "\n",
- " self.pre = MyNeuron(size=100)\n",
- " self.post = MyNeuron(size=50)\n",
- "\n",
- " self.projection = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(100, 50, prob=0.1, weight=0.5*u.mS),\n",
- " syn=MySynapse.desc(50), # Use custom synapse\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=self.post\n",
- " )\n",
- "\n",
- " def update(self, inp):\n",
- " spk_pre = self.pre.get_spike()\n",
- " self.projection(spk_pre)\n",
- " self.pre(inp)\n",
- " self.post(0*u.nA)\n",
- " return self.post.get_spike()\n",
- "\n",
- "# Use network\n",
- "net = CustomNetwork()\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "for _ in range(100):\n",
- " output = net(input_data)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "**Component creation checklist:**\n",
- "\n",
- "```python\n",
- "✅ Inherit from brainpy.state.Neuron, brainpy.state.Synapse, or brainstate.nn.Module\n",
- "✅ Define __init__ with parameters\n",
- "✅ Create states (ShortTermState or ParamState)\n",
- "✅ Implement reset_state(batch_size=None)\n",
- "✅ Implement update() method\n",
- "✅ Use physical units throughout\n",
- "✅ Test with different batch sizes\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## See Also\n",
- "\n",
- "- Core Concepts: State Management\n",
- "- Core Concepts: Neurons\n",
- "- Core Concepts: Synapses\n",
- "- Tutorials: Synaptic Plasticity"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/how-to-guides/debugging-networks.ipynb b/docs_state/tutorials/how-to-guides/debugging-networks.ipynb
deleted file mode 100644
index f53f025e9..000000000
--- a/docs_state/tutorials/how-to-guides/debugging-networks.ipynb
+++ /dev/null
@@ -1,1144 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to Debug Networks\n",
- "\n",
- "This guide shows you how to identify and fix common issues when developing neural networks with BrainPy."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Quick Diagnostic Checklist\n",
- "\n",
- "When your network isn't working, check these first:\n",
- "\n",
- "**☐ Is the network receiving input?** \n",
- " Print input values, check shapes\n",
- "\n",
- "**☐ Are neurons firing?** \n",
- " Count spikes, check spike rates\n",
- "\n",
- "**☐ Are projections working?** \n",
- " Verify connectivity, check weights\n",
- "\n",
- "**☐ Is update order correct?** \n",
- " Get spikes BEFORE updating neurons\n",
- "\n",
- "**☐ Are states initialized?** \n",
- " Call `brainstate.nn.init_all_states()`\n",
- "\n",
- "**☐ Are units correct?** \n",
- " All values need physical units (mV, nA, ms)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Common Issues and Solutions\n",
- "\n",
- "### Issue 1: No Spikes / Silent Network\n",
- "\n",
- "**Symptoms:**\n",
- "\n",
- "- Network produces no spikes\n",
- "- All neurons stay at rest potential\n",
- "\n",
- "**Diagnosis:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import jax.numpy as jnp\n",
- "\n",
- "neuron = brainpy.state.LIF(100, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "# Check 1: Is input being provided?\n",
- "inp = brainstate.random.rand(100) * 5.0 * u.nA\n",
- "print(\"Input range:\", inp.min(), \"to\", inp.max())\n",
- "\n",
- "# Check 2: Are neurons updating?\n",
- "V_before = neuron.V.value.copy()\n",
- "neuron(inp)\n",
- "V_after = neuron.V.value\n",
- "print(\"Voltage changed:\", not jnp.allclose(V_before, V_after))\n",
- "\n",
- "# Check 3: Are any neurons near threshold?\n",
- "print(\"Max voltage:\", V_after.max())\n",
- "print(\"Threshold:\", neuron.V_th.to_decimal(u.mV))\n",
- "print(\"Neurons above -55mV:\", jnp.sum(V_after > -55))\n",
- "\n",
- "# Check 4: Count spikes\n",
- "for i in range(100):\n",
- " neuron(inp)\n",
- "spike_count = jnp.sum(neuron.spike.value)\n",
- "print(f\"Spikes in 100 steps: {spike_count}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Common Causes:**\n",
- "\n",
- "1. **Input too weak:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Too weak\n",
- "inp = brainstate.random.rand(100) * 0.1 * u.nA # Not enough!\n",
- "\n",
- "# Better\n",
- "inp = brainstate.random.rand(100) * 5.0 * u.nA # Stronger"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. **Threshold too high:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Check threshold\n",
- "neuron = brainpy.state.LIF(100, V_th=-40*u.mV, ...) # Harder to spike\n",
- "neuron = brainpy.state.LIF(100, V_th=-50*u.mV, ...) # Easier to spike"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "3. **Time constant too large:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Slow integration\n",
- "neuron = brainpy.state.LIF(100, tau=100*u.ms, ...) # Very slow\n",
- "\n",
- "# Faster\n",
- "neuron = brainpy.state.LIF(100, tau=10*u.ms, ...) # Normal speed"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "4. **Missing initialization:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "neuron = brainpy.state.LIF(100, ...)\n",
- "# MUST initialize!\n",
- "brainstate.nn.init_all_states(neuron)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Issue 2: Runaway Activity / Explosion\n",
- "\n",
- "**Symptoms:**\n",
- "\n",
- "- All neurons fire constantly\n",
- "- Membrane potentials go to infinity\n",
- "- NaN values appear\n",
- "\n",
- "**Diagnosis:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "\n",
- "# Check for NaN\n",
- "if jnp.any(jnp.isnan(neuron.V.value)):\n",
- " print(\"❌ NaN detected in membrane potential!\")\n",
- "\n",
- "# Check for explosion\n",
- "if jnp.any(jnp.abs(neuron.V.value) > 1000):\n",
- " print(\"❌ Membrane potential exploded!\")\n",
- "\n",
- "# Check spike rate\n",
- "spike_rate = jnp.mean(neuron.spike.value)\n",
- "print(f\"Spike rate: {spike_rate*100:.1f}%\")\n",
- "if spike_rate > 0.5:\n",
- " print(\"⚠️ More than 50% of neurons firing every step!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Common Causes:**\n",
- "\n",
- "1. **Excitation-Inhibition imbalance:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Imbalanced (explosion!)\n",
- "w_exc = 5.0 * u.mS # Too strong\n",
- "w_inh = 1.0 * u.mS # Too weak\n",
- "\n",
- "# Balanced\n",
- "w_exc = 0.5 * u.mS\n",
- "w_inh = 5.0 * u.mS # Inhibition ~10× stronger"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. **Positive feedback loop:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Check recurrent excitation\n",
- "# E → E with no inhibition can explode\n",
- "\n",
- "# Add inhibition\n",
- "class BalancedNetwork(brainstate.nn.Module):\n",
- " def __init__(self):\n",
- " super().__init__()\n",
- " self.E = brainpy.state.LIF(800, ...)\n",
- " self.I = brainpy.state.LIF(200, ...)\n",
- "\n",
- " self.E2E = ... # Excitatory recurrence\n",
- " self.I2E = ... # MUST have inhibition!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "3. **Time step too large:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Unstable\n",
- "brainstate.environ.set(dt=1.0 * u.ms) # Too large\n",
- "\n",
- "# Stable\n",
- "brainstate.environ.set(dt=0.1 * u.ms) # Standard"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "4. **Wrong reversal potentials:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# WRONG: Inhibition with excitatory reversal\n",
- "out_inh = brainpy.state.COBA.desc(E=0*u.mV) # Should be negative!\n",
- "\n",
- "# CORRECT\n",
- "out_exc = brainpy.state.COBA.desc(E=0*u.mV) # Excitation\n",
- "out_inh = brainpy.state.COBA.desc(E=-80*u.mV) # Inhibition"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Issue 3: Spikes Not Propagating\n",
- "\n",
- "**Symptoms:**\n",
- "\n",
- "- Presynaptic neurons spike\n",
- "- Postsynaptic neurons don't respond\n",
- "- Projection seems inactive\n",
- "\n",
- "**Diagnosis:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create simple network\n",
- "pre = brainpy.state.LIF(10, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "post = brainpy.state.LIF(10, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "\n",
- "proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(10, 10, prob=0.5, weight=2.0*u.mS),\n",
- " syn=brainpy.state.Expon.desc(10, tau=5*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=post\n",
- ")\n",
- "\n",
- "brainstate.nn.init_all_states([pre, post, proj])\n",
- "\n",
- "# Diagnosis\n",
- "for i in range(10):\n",
- " # CRITICAL: Get spikes BEFORE update\n",
- " pre_spikes = pre.get_spike()\n",
- "\n",
- " # Strong input to pre\n",
- " pre(brainstate.random.rand(10) * 10.0 * u.nA)\n",
- "\n",
- " # Check: Did pre spike?\n",
- " if jnp.sum(pre_spikes) > 0:\n",
- " print(f\"Step {i}: {jnp.sum(pre_spikes)} presynaptic spikes\")\n",
- "\n",
- " # Update projection\n",
- " proj(pre_spikes)\n",
- "\n",
- " # Check: Did projection produce current?\n",
- " print(f\" Synaptic conductance: {proj.syn.g.value.max():.4f}\")\n",
- "\n",
- " # Update post\n",
- " post(0*u.nA) # Only synaptic input\n",
- "\n",
- " # Check: Did post spike?\n",
- " post_spikes = post.get_spike()\n",
- " print(f\" {jnp.sum(post_spikes)} postsynaptic spikes\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Common Causes:**\n",
- "\n",
- "1. **Wrong spike timing:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# WRONG: Spikes from current step\n",
- "pre(inp) # Update first\n",
- "spikes = pre.get_spike() # These are NEW spikes\n",
- "proj(spikes) # But projection needs OLD spikes!\n",
- "\n",
- "# CORRECT: Spikes from previous step\n",
- "spikes = pre.get_spike() # Get OLD spikes first\n",
- "proj(spikes) # Update projection\n",
- "pre(inp) # Then update neurons"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. **Weak connectivity:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Too sparse\n",
- "comm = brainstate.nn.EventFixedProb(..., prob=0.01, weight=0.1*u.mS)\n",
- "\n",
- "# Stronger\n",
- "comm = brainstate.nn.EventFixedProb(..., prob=0.1, weight=1.0*u.mS)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "3. **Missing projection update:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Forgot to call projection!\n",
- "spk = pre.get_spike()\n",
- "# proj(spk) <- MISSING!\n",
- "post(0*u.nA)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "4. **Wrong postsynaptic target:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Wrong target\n",
- "proj = brainpy.state.AlignPostProj(..., post=wrong_population)\n",
- "\n",
- "# Correct target\n",
- "proj = brainpy.state.AlignPostProj(..., post=correct_population)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Issue 4: Shape Mismatch Errors\n",
- "\n",
- "**Symptoms:**\n",
- "\n",
- "```\n",
- "ValueError: operands could not be broadcast together\n",
- "with shapes (100,) (64, 100)\n",
- "```\n",
- "\n",
- "**Common Causes:**\n",
- "\n",
- "1. **Batch dimension mismatch:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Network initialized with batch\n",
- "brainstate.nn.init_all_states(net, batch_size=64)\n",
- "# States shape: (64, 100)\n",
- "\n",
- "# But input has no batch\n",
- "inp = jnp.zeros(100) # Shape: (100,) - WRONG!\n",
- "\n",
- "# Fix: Add batch dimension\n",
- "inp = jnp.zeros((64, 100)) # Shape: (64, 100) - CORRECT"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. **Forgot batch in initialization:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Initialized without batch\n",
- "brainstate.nn.init_all_states(net) # Shape: (100,)\n",
- "\n",
- "# But providing batched input\n",
- "inp = jnp.zeros((64, 100)) # Shape: (64, 100)\n",
- "\n",
- "# Fix: Initialize with batch\n",
- "brainstate.nn.init_all_states(net, batch_size=64)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Debug shape mismatches:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(f\"Input shape: {inp.shape}\")\n",
- "print(f\"Network state shape: {net.neurons.V.value.shape}\")\n",
- "print(f\"Expected: Both should have same batch dimension\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Inspection Tools\n",
- "\n",
- "### Print State Values"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Inspect neuron states\n",
- "neuron = brainpy.state.LIF(10, ...)\n",
- "brainstate.nn.init_all_states(neuron)\n",
- "\n",
- "print(\"Membrane potentials:\", neuron.V.value)\n",
- "print(\"Spikes:\", neuron.spike.value)\n",
- "print(\"Shape:\", neuron.V.value.shape)\n",
- "\n",
- "# Statistics\n",
- "print(f\"V range: [{neuron.V.value.min():.2f}, {neuron.V.value.max():.2f}]\")\n",
- "print(f\"V mean: {neuron.V.value.mean():.2f}\")\n",
- "print(f\"Spike count: {jnp.sum(neuron.spike.value)}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Visualize Activity"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "\n",
- "# Record activity\n",
- "n_steps = 1000\n",
- "V_history = []\n",
- "spike_history = []\n",
- "\n",
- "for i in range(n_steps):\n",
- " neuron(inp)\n",
- " V_history.append(neuron.V.value.copy())\n",
- " spike_history.append(neuron.spike.value.copy())\n",
- "\n",
- "V_history = jnp.array(V_history)\n",
- "spike_history = jnp.array(spike_history)\n",
- "\n",
- "# Plot membrane potential\n",
- "plt.figure(figsize=(12, 4))\n",
- "plt.plot(V_history[:, 0]) # First neuron\n",
- "plt.xlabel('Time step')\n",
- "plt.ylabel('Membrane Potential (mV)')\n",
- "plt.title('Neuron 0 Membrane Potential')\n",
- "plt.show()\n",
- "\n",
- "# Plot raster\n",
- "plt.figure(figsize=(12, 6))\n",
- "times, neurons = jnp.where(spike_history > 0)\n",
- "plt.scatter(times, neurons, s=1, c='black')\n",
- "plt.xlabel('Time step')\n",
- "plt.ylabel('Neuron index')\n",
- "plt.title('Spike Raster')\n",
- "plt.show()\n",
- "\n",
- "# Firing rate over time\n",
- "plt.figure(figsize=(12, 4))\n",
- "firing_rate = jnp.mean(spike_history, axis=1) * 1000 / 0.1 # Hz\n",
- "plt.plot(firing_rate)\n",
- "plt.xlabel('Time step')\n",
- "plt.ylabel('Population Rate (Hz)')\n",
- "plt.title('Population Firing Rate')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Check Connectivity"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# For sparse projections\n",
- "proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(100, 50, prob=0.1, weight=0.5*u.mS),\n",
- " syn=brainpy.state.Expon.desc(50, tau=5*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=post_neurons\n",
- ")\n",
- "\n",
- "# Check connection count\n",
- "print(f\"Expected connections: {100 * 50 * 0.1:.0f}\")\n",
- "# Note: Actual connectivity may vary due to randomness\n",
- "\n",
- "# Check weights\n",
- "# (Accessing internal connectivity structure depends on implementation)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Monitor Training"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Track loss and metrics\n",
- "train_losses = []\n",
- "val_accuracies = []\n",
- "\n",
- "for epoch in range(num_epochs):\n",
- " epoch_losses = []\n",
- "\n",
- " for batch in train_loader:\n",
- " loss = train_step(net, batch)\n",
- " epoch_losses.append(float(loss))\n",
- "\n",
- " avg_loss = np.mean(epoch_losses)\n",
- " train_losses.append(avg_loss)\n",
- "\n",
- " # Validation\n",
- " val_acc = evaluate(net, val_loader)\n",
- " val_accuracies.append(val_acc)\n",
- "\n",
- " print(f\"Epoch {epoch}: Loss={avg_loss:.4f}, Val Acc={val_acc:.2%}\")\n",
- "\n",
- " # Check for issues\n",
- " if np.isnan(avg_loss):\n",
- " print(\"❌ NaN loss! Stopping training.\")\n",
- " break\n",
- "\n",
- " if avg_loss > 10 * train_losses[0]:\n",
- " print(\"⚠️ Loss exploding!\")\n",
- "\n",
- "# Plot training curves\n",
- "plt.figure(figsize=(12, 4))\n",
- "plt.subplot(1, 2, 1)\n",
- "plt.plot(train_losses)\n",
- "plt.xlabel('Epoch')\n",
- "plt.ylabel('Loss')\n",
- "plt.title('Training Loss')\n",
- "\n",
- "plt.subplot(1, 2, 2)\n",
- "plt.plot(val_accuracies)\n",
- "plt.xlabel('Epoch')\n",
- "plt.ylabel('Accuracy')\n",
- "plt.title('Validation Accuracy')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Advanced Debugging\n",
- "\n",
- "### Gradient Checking"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import braintools\n",
- "\n",
- "# Check if gradients are being computed\n",
- "params = net.states(brainstate.ParamState)\n",
- "\n",
- "grads = brainstate.transform.grad(\n",
- " loss_fn,\n",
- " params,\n",
- " return_value=True\n",
- ")(net, X, y)\n",
- "\n",
- "# Inspect gradients\n",
- "for name, grad in grads.items():\n",
- " grad_norm = jnp.linalg.norm(grad.value.flatten())\n",
- " print(f\"{name}: gradient norm = {grad_norm:.6f}\")\n",
- "\n",
- " if jnp.any(jnp.isnan(grad.value)):\n",
- " print(f\" ❌ NaN in gradient!\")\n",
- "\n",
- " if grad_norm == 0:\n",
- " print(f\" ⚠️ Zero gradient - parameter not learning\")\n",
- "\n",
- " if grad_norm > 1000:\n",
- " print(f\" ⚠️ Exploding gradient!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Trace Execution"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def debug_step(net, inp):\n",
- " \"\"\"Instrumented simulation step.\"\"\"\n",
- " print(f\"\\n--- Step Start ---\")\n",
- "\n",
- " # Before\n",
- " print(f\"Input range: [{inp.min():.2f}, {inp.max():.2f}]\")\n",
- " print(f\"V before: [{net.neurons.V.value.min():.2f}, {net.neurons.V.value.max():.2f}]\")\n",
- "\n",
- " # Execute\n",
- " output = net(inp)\n",
- "\n",
- " # After\n",
- " print(f\"V after: [{net.neurons.V.value.min():.2f}, {net.neurons.V.value.max():.2f}]\")\n",
- " print(f\"Spikes: {jnp.sum(net.neurons.spike.value)}\")\n",
- " print(f\"Output range: [{output.min():.2f}, {output.max():.2f}]\")\n",
- "\n",
- " # Checks\n",
- " if jnp.any(jnp.isnan(net.neurons.V.value)):\n",
- " print(\"❌ NaN detected!\")\n",
- " import pdb; pdb.set_trace() # Drop into debugger\n",
- "\n",
- " print(f\"--- Step End ---\\n\")\n",
- " return output\n",
- "\n",
- "# Use for debugging\n",
- "for i in range(10):\n",
- " output = debug_step(net, input_data)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Assertion Checks"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "class SafeNetwork(brainstate.nn.Module):\n",
- " \"\"\"Network with built-in checks.\"\"\"\n",
- "\n",
- " def __init__(self, n_neurons=100):\n",
- " super().__init__()\n",
- " self.neurons = brainpy.state.LIF(n_neurons, ...)\n",
- "\n",
- " def update(self, inp):\n",
- " # Pre-checks\n",
- " assert inp.shape[-1] == 100, f\"Wrong input size: {inp.shape}\"\n",
- " assert not jnp.any(jnp.isnan(inp)), \"NaN in input!\"\n",
- " assert not jnp.any(jnp.isinf(inp)), \"Inf in input!\"\n",
- "\n",
- " # Execute\n",
- " self.neurons(inp)\n",
- " output = self.neurons.get_spike()\n",
- "\n",
- " # Post-checks\n",
- " assert not jnp.any(jnp.isnan(self.neurons.V.value)), \"NaN in membrane potential!\"\n",
- " assert jnp.all(jnp.abs(self.neurons.V.value) < 1000), \"Voltage explosion!\"\n",
- "\n",
- " return output"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Unit Testing"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def test_neuron_spikes():\n",
- " \"\"\"Test that neuron spikes with strong input.\"\"\"\n",
- " neuron = brainpy.state.LIF(1, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- " brainstate.nn.init_all_states(neuron)\n",
- "\n",
- " # Strong constant input should cause spiking\n",
- " strong_input = jnp.array([20.0]) * u.nA\n",
- "\n",
- " spike_count = 0\n",
- " for _ in range(100):\n",
- " neuron(strong_input)\n",
- " spike_count += int(neuron.spike.value[0])\n",
- "\n",
- " assert spike_count > 0, \"Neuron didn't spike with strong input!\"\n",
- " assert spike_count < 100, \"Neuron spiked every step (check reset!)\"\n",
- "\n",
- " print(f\"✅ Neuron test passed ({spike_count} spikes)\")\n",
- "\n",
- "def test_projection():\n",
- " \"\"\"Test that projection propagates spikes.\"\"\"\n",
- " pre = brainpy.state.LIF(10, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- " post = brainpy.state.LIF(10, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "\n",
- " proj = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(10, 10, prob=1.0, weight=5.0*u.mS), # 100% connectivity\n",
- " syn=brainpy.state.Expon.desc(10, tau=5*u.ms),\n",
- " out=brainpy.state.CUBA.desc(),\n",
- " post=post\n",
- " )\n",
- "\n",
- " brainstate.nn.init_all_states([pre, post, proj])\n",
- "\n",
- " # Make pre spike\n",
- " pre(jnp.ones(10) * 20.0 * u.nA)\n",
- "\n",
- " # Projection should activate\n",
- " spk = pre.get_spike()\n",
- " assert jnp.sum(spk) > 0, \"Pre didn't spike!\"\n",
- "\n",
- " proj(spk)\n",
- "\n",
- " # Check synaptic conductance increased\n",
- " assert proj.syn.g.value.max() > 0, \"Synapse didn't activate!\"\n",
- "\n",
- " print(\"✅ Projection test passed\")\n",
- "\n",
- "# Run tests\n",
- "test_neuron_spikes()\n",
- "test_projection()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Debugging Checklist\n",
- "\n",
- "When your network doesn't work:\n",
- "\n",
- "**1. Check Initialization**\n",
- "\n",
- "```python\n",
- "☐ Called brainstate.nn.init_all_states()?\n",
- "☐ Correct batch_size parameter?\n",
- "☐ All submodules initialized?\n",
- "```\n",
- "\n",
- "**2. Check Input**\n",
- "\n",
- "```python\n",
- "☐ Input shape matches network?\n",
- "☐ Input has units (nA, mV, etc.)?\n",
- "☐ Input magnitude reasonable?\n",
- "☐ Input not all zeros?\n",
- "```\n",
- "\n",
- "**3. Check Neurons**\n",
- "\n",
- "```python\n",
- "☐ Threshold reasonable (e.g., -50 mV)?\n",
- "☐ Reset potential below threshold?\n",
- "☐ Time constant reasonable (5-20 ms)?\n",
- "☐ Neurons actually spiking?\n",
- "```\n",
- "\n",
- "**4. Check Projections**\n",
- "\n",
- "```python\n",
- "☐ Connectivity probability > 0?\n",
- "☐ Weights reasonable magnitude?\n",
- "☐ Correct update order (spikes before update)?\n",
- "☐ Projection actually called?\n",
- "```\n",
- "\n",
- "**5. Check Balance**\n",
- "\n",
- "```python\n",
- "☐ Inhibition stronger than excitation (~10×)?\n",
- "☐ Reversal potentials correct (E=0, I=-80)?\n",
- "☐ E/I ratio appropriate (4:1)?\n",
- "```\n",
- "\n",
- "**6. Check Training**\n",
- "\n",
- "```python\n",
- "☐ Loss decreasing?\n",
- "☐ Gradients non-zero?\n",
- "☐ No NaN in gradients?\n",
- "☐ Learning rate appropriate?\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Common Error Messages\n",
- "\n",
- "### \"operands could not be broadcast\"\n",
- "\n",
- "**Meaning:** Shape mismatch\n",
- "\n",
- "**Fix:** Check batch dimensions"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(f\"Shapes: {x.shape} vs {y.shape}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### \"RESOURCE_EXHAUSTED: Out of memory\"\n",
- "\n",
- "**Meaning:** GPU/CPU memory full\n",
- "\n",
- "**Fix:** Reduce batch size or network size"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Reduce batch\n",
- "brainstate.nn.init_all_states(net, batch_size=16) # Instead of 64"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### \"Concrete value required\"\n",
- "\n",
- "**Meaning:** JIT can't handle dynamic values\n",
- "\n",
- "**Fix:** Use static shapes"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Dynamic (bad for JIT)\n",
- "n = len(data) # Changes each call\n",
- "\n",
- "# Static (good for JIT)\n",
- "n = 100 # Fixed value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### \"Invalid device\"\n",
- "\n",
- "**Meaning:** Trying to use unavailable device\n",
- "\n",
- "**Fix:** Check available devices"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import jax\n",
- "print(jax.devices())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Best Practices\n",
- "\n",
- "✅ **Test small first** - Debug with 10 neurons before scaling to 10,000\n",
- "\n",
- "✅ **Visualize early** - Plot activity to see problems immediately\n",
- "\n",
- "✅ **Check incrementally** - Test each component before combining\n",
- "\n",
- "✅ **Use assertions** - Catch problems early with runtime checks\n",
- "\n",
- "✅ **Print liberally** - Add diagnostic prints during development\n",
- "\n",
- "✅ **Keep backups** - Save working versions before major changes\n",
- "\n",
- "✅ **Start simple** - Begin with minimal network, add complexity gradually\n",
- "\n",
- "✅ **Write tests** - Unit test individual components\n",
- "\n",
- "❌ **Don't debug by guessing** - Use systematic diagnosis\n",
- "\n",
- "❌ **Don't skip initialization** - Always call init_all_states\n",
- "\n",
- "❌ **Don't ignore warnings** - They often indicate real problems"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "**Debugging workflow:**\n",
- "\n",
- "1. **Identify symptom** (no spikes, explosion, etc.)\n",
- "2. **Isolate component** (neurons, projections, input)\n",
- "3. **Inspect state** (print values, plot activity)\n",
- "4. **Form hypothesis** (what might be wrong?)\n",
- "5. **Test fix** (make one change at a time)\n",
- "6. **Verify** (ensure problem solved)\n",
- "\n",
- "**Quick diagnostic code:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Comprehensive diagnostic\n",
- "def diagnose_network(net, inp):\n",
- " print(\"=== Network Diagnostic ===\")\n",
- "\n",
- " # Input\n",
- " print(f\"Input shape: {inp.shape}\")\n",
- " print(f\"Input range: [{inp.min():.2f}, {inp.max():.2f}]\")\n",
- "\n",
- " # States\n",
- " if hasattr(net, 'neurons'):\n",
- " V = net.neurons.V.value\n",
- " print(f\"Voltage shape: {V.shape}\")\n",
- " print(f\"Voltage range: [{V.min():.2f}, {V.max():.2f}]\")\n",
- "\n",
- " # Simulation\n",
- " output = net(inp)\n",
- "\n",
- " # Results\n",
- " if hasattr(net, 'neurons'):\n",
- " spk_count = jnp.sum(net.neurons.spike.value)\n",
- " print(f\"Spikes: {spk_count}\")\n",
- "\n",
- " print(f\"Output shape: {output.shape}\")\n",
- " print(f\"Output range: [{output.min():.2f}, {output.max():.2f}]\")\n",
- "\n",
- " # Checks\n",
- " if jnp.any(jnp.isnan(output)):\n",
- " print(\"❌ NaN in output!\")\n",
- " if jnp.all(output == 0):\n",
- " print(\"⚠️ Output all zeros!\")\n",
- "\n",
- " print(\"=========================\")\n",
- " return output"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## See Also\n",
- "\n",
- "- Core Concepts: State Management\n",
- "- Core Concepts: Projections\n",
- "- Performance Optimization"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Ecosystem-py",
- "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.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/how-to-guides/index.rst b/docs_state/tutorials/how-to-guides/index.rst
deleted file mode 100644
index cf314b927..000000000
--- a/docs_state/tutorials/how-to-guides/index.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-How-to Guides
-=============
-
-Practical guides for common tasks in BrainPy.
-
-.. grid:: 1 2 2 2
-
- .. grid-item-card:: :material-regular:`save;2em` Save and Load Models
- :link: save-load-models.html
-
- Learn how to checkpoint and restore your trained models
-
- .. grid-item-card:: :material-regular:`speed;2em` GPU/TPU Usage
- :link: gpu-tpu-usage.html
-
- Accelerate simulations with GPU and TPU
-
- .. grid-item-card:: :material-regular:`bug_report;2em` Debugging Networks
- :link: debugging-networks.html
-
- Troubleshoot common issues and debug effectively
-
- .. grid-item-card:: :material-regular:`tune;2em` Performance Optimization
- :link: performance-optimization.html
-
- Make your simulations run faster
-
- .. grid-item-card:: :material-regular:`extension;2em` Custom Components
- :link: custom-components.html
-
- Create custom neurons, synapses, and learning rules
-
-.. toctree::
- :hidden:
- :maxdepth: 1
-
- save-load-models.ipynb
- gpu-tpu-usage.ipynb
- debugging-networks.ipynb
- performance-optimization.ipynb
- custom-components.ipynb
diff --git a/docs_state/tutorials/how-to-guides/performance-optimization.ipynb b/docs_state/tutorials/how-to-guides/performance-optimization.ipynb
deleted file mode 100644
index eda7b7ed2..000000000
--- a/docs_state/tutorials/how-to-guides/performance-optimization.ipynb
+++ /dev/null
@@ -1,507 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to Optimize Performance\n",
- "\n",
- "This guide shows you how to make your BrainPy simulations run faster."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Quick Wins\n",
- "\n",
- "**Top 5 optimizations (80% of speedup):**\n",
- "\n",
- "1. ✅ **Use JIT compilation** - 10-100× speedup\n",
- "2. ✅ **Use sparse connectivity** - 10-100× memory reduction\n",
- "3. ✅ **Batch operations** - 2-10× speedup on GPU\n",
- "4. ✅ **Use GPU/TPU** - 10-100× speedup for large networks\n",
- "5. ✅ **Minimize Python loops** - Use JAX operations instead"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## JIT Compilation\n",
- "\n",
- "**Essential for performance!**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainstate\n",
- "\n",
- "# Slow (no JIT)\n",
- "def slow_step(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# Fast (with JIT)\n",
- "@brainstate.transform.jit\n",
- "def fast_step(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# Warmup (compilation)\n",
- "_ = fast_step(net, inp)\n",
- "\n",
- "# 10-100× faster than slow_step\n",
- "output = fast_step(net, inp)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Rules for JIT:**\n",
- "- Static shapes (no dynamic array sizes)\n",
- "- Pure functions (no side effects)\n",
- "- Avoid Python loops over data"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Sparse Connectivity\n",
- "\n",
- "**Biological networks are sparse (~1-10% connectivity)**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Dense: 10,000 × 10,000 = 100M connections (400MB)\n",
- "comm_dense = brainstate.nn.Linear(10000, 10000)\n",
- "\n",
- "# Sparse: 10,000 × 10,000 × 0.01 = 1M connections (4MB)\n",
- "comm_sparse = brainstate.nn.EventFixedProb(\n",
- " 10000, 10000,\n",
- " prob=0.01, # 1% connectivity\n",
- " weight=0.5*u.mS\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Memory savings:** 100× for 1% connectivity"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Batching\n",
- "\n",
- "**Process multiple trials in parallel:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Sequential: 10 trials one by one\n",
- "for trial in range(10):\n",
- " brainstate.nn.init_all_states(net)\n",
- " run_trial(net)\n",
- "\n",
- "# Parallel: 10 trials simultaneously\n",
- "brainstate.nn.init_all_states(net, batch_size=10)\n",
- "run_batched(net) # 5-10× faster on GPU"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Optimal batch sizes:**\n",
- "- CPU: 1-16\n",
- "- GPU: 32-256\n",
- "- TPU: 128-512"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## GPU Usage\n",
- "\n",
- "**Automatic when available:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import jax\n",
- "print(jax.devices()) # Check for GPU\n",
- "\n",
- "# BrainPy automatically uses GPU\n",
- "net = brainpy.state.LIF(10000, ...)\n",
- "# Runs on GPU if available"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**See:** GPU/TPU Usage guide for details"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Avoid Python Loops\n",
- "\n",
- "**Replace Python loops with JAX operations:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# SLOW: Python loop\n",
- "result = []\n",
- "for i in range(1000):\n",
- " result.append(net(inp))\n",
- "\n",
- "# FAST: JAX loop\n",
- "def body_fun(i):\n",
- " return net(inp)\n",
- "\n",
- "results = brainstate.transform.for_loop(body_fun, jnp.arange(1000))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Use Appropriate Precision\n",
- "\n",
- "**Float32 is usually sufficient:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Default (float32) - fast\n",
- "weights = jnp.ones((1000, 1000)) # 4 bytes/element\n",
- "\n",
- "# Float64 - 2× slower, 2× memory\n",
- "weights = jnp.ones((1000, 1000), dtype=jnp.float64) # 8 bytes/element"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Minimize State Storage\n",
- "\n",
- "**Don't accumulate history:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# BAD: Stores all history in Python list\n",
- "history = []\n",
- "for t in range(10000):\n",
- " output = net(inp)\n",
- " history.append(output) # Memory leak!\n",
- "\n",
- "# GOOD: Process on the fly\n",
- "for t in range(10000):\n",
- " output = net(inp)\n",
- " metrics = compute_metrics(output) # Don't store raw data"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Optimize Network Architecture\n",
- "\n",
- "**1. Use simpler neuron models when possible:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Complex (slow but realistic)\n",
- "neuron = brainpy.state.HH(1000, ...) # Hodgkin-Huxley\n",
- "\n",
- "# Simple (fast)\n",
- "neuron = brainpy.state.LIF(1000, ...) # Leaky Integrate-and-Fire"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**2. Use CUBA instead of COBA when possible:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Slower (conductance-based)\n",
- "out = brainpy.state.COBA.desc(E=0*u.mV)\n",
- "\n",
- "# Faster (current-based)\n",
- "out = brainpy.state.CUBA.desc()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**3. Reduce connectivity:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Dense\n",
- "prob = 0.1 # 10% connectivity\n",
- "\n",
- "# Sparse\n",
- "prob = 0.02 # 2% connectivity (5× fewer connections)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Profile Before Optimizing\n",
- "\n",
- "**Identify actual bottlenecks:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import time\n",
- "\n",
- "# Time different components\n",
- "start = time.time()\n",
- "for _ in range(100):\n",
- " net(inp)\n",
- "print(f\"Network update: {time.time() - start:.2f}s\")\n",
- "\n",
- "start = time.time()\n",
- "for _ in range(100):\n",
- " output = process_output(net.get_spike())\n",
- "print(f\"Output processing: {time.time() - start:.2f}s\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Don't optimize blindly - measure first!**"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Performance Checklist\n",
- "\n",
- "**For maximum performance:**\n",
- "\n",
- "```python\n",
- "✅ JIT compiled (@brainstate.transform.jit)\n",
- "✅ Sparse connectivity (EventFixedProb with prob < 0.1)\n",
- "✅ Batched (batch_size ≥ 32 on GPU)\n",
- "✅ GPU enabled (check jax.devices())\n",
- "✅ Static shapes (no dynamic array sizes)\n",
- "✅ Minimal history storage\n",
- "✅ Appropriate neuron models (LIF vs HH)\n",
- "✅ Float32 precision\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Common Bottlenecks\n",
- "\n",
- "**Issue 1: First run very slow** \n",
- " → JIT compilation happens on first call (warmup)\n",
- "\n",
- "**Issue 2: CPU-GPU transfers** \n",
- " → Keep data on GPU between operations\n",
- "\n",
- "**Issue 3: Small batch sizes** \n",
- " → Increase batch_size for better GPU utilization\n",
- "\n",
- "**Issue 4: Python loops** \n",
- " → Replace with JAX operations (for_loop, vmap)\n",
- "\n",
- "**Issue 5: Dense connectivity** \n",
- " → Use sparse (EventFixedProb) for large networks"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Complete Optimization Example"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy as bp\n",
- "import brainstate\n",
- "import brainunit as u\n",
- "import jax\n",
- "\n",
- "# Optimized network\n",
- "class OptimizedNetwork(brainstate.nn.Module):\n",
- " def __init__(self, n_neurons=10000):\n",
- " super().__init__()\n",
- "\n",
- " # Simple neuron model\n",
- " self.neurons = brainpy.state.LIF(n_neurons, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- "\n",
- " # Sparse connectivity\n",
- " self.recurrent = brainpy.state.AlignPostProj(\n",
- " comm=brainstate.nn.EventFixedProb(\n",
- " n_neurons, n_neurons,\n",
- " prob=0.01, # Sparse!\n",
- " weight=0.5*u.mS\n",
- " ),\n",
- " syn=brainpy.state.Expon.desc(n_neurons, tau=5*u.ms),\n",
- " out=brainpy.state.CUBA.desc(), # Simple output\n",
- " post=self.neurons\n",
- " )\n",
- "\n",
- " def update(self, inp):\n",
- " spk = self.neurons.get_spike()\n",
- " self.recurrent(spk)\n",
- " self.neurons(inp)\n",
- " return spk\n",
- "\n",
- "# Initialize\n",
- "net = OptimizedNetwork()\n",
- "brainstate.nn.init_all_states(net, batch_size=64) # Batched\n",
- "\n",
- "# JIT compile\n",
- "@brainstate.transform.jit\n",
- "def simulate_step(net, inp):\n",
- " return net(inp)\n",
- "\n",
- "# Warmup\n",
- "inp = brainstate.random.rand(64, 10000) * 2.0 * u.nA\n",
- "_ = simulate_step(net, inp)\n",
- "\n",
- "# Fast simulation\n",
- "import time\n",
- "start = time.time()\n",
- "for _ in range(1000):\n",
- " output = simulate_step(net, inp)\n",
- "elapsed = time.time() - start\n",
- "\n",
- "print(f\"Optimized: {1000/elapsed:.1f} steps/s\")\n",
- "print(f\"Throughput: {64*1000/elapsed:.1f} trials/s\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Benchmark Results\n",
- "\n",
- "**Typical speedups from optimization:**\n",
- "\n",
- "| Optimization | Speedup | Cumulative |\n",
- "|--------------|---------|------------|\n",
- "| Baseline (Python loops, dense) | 1× | 1× |\n",
- "| + JIT compilation | 10-50× | 10-50× |\n",
- "| + Sparse connectivity | 2-10× | 20-500× |\n",
- "| + GPU | 5-20× | 100-10,000× |\n",
- "| + Batching | 2-5× | 200-50,000× |\n",
- "\n",
- "**Real example:** 10,000 neuron network\n",
- "- Baseline (CPU, no JIT): 0.5 steps/s\n",
- "- Optimized (GPU, JIT, sparse, batched): 5,000 steps/s\n",
- "- **Total speedup: 10,000×**"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## See Also\n",
- "\n",
- "- Tutorials: Large-Scale Simulations\n",
- "- GPU/TPU Usage\n",
- "- Debugging Networks"
- ]
- }
- ],
- "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.8.0"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/how-to-guides/save-load-models.ipynb b/docs_state/tutorials/how-to-guides/save-load-models.ipynb
deleted file mode 100644
index ffd16f512..000000000
--- a/docs_state/tutorials/how-to-guides/save-load-models.ipynb
+++ /dev/null
@@ -1,621 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to Save and Load Models\n",
- "\n",
- "This guide shows you how to save and load BrainPy models for checkpointing, resuming training, and deployment."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Quick Start\n",
- "\n",
- "**Save a trained model:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import brainpy\n",
- "import brainstate\n",
- "import pickle\n",
- "\n",
- "# After training...\n",
- "state_dict = {\n",
- " 'params': net.states(brainstate.ParamState),\n",
- " 'epoch': current_epoch,\n",
- "}\n",
- "\n",
- "with open('model.pkl', 'wb') as f:\n",
- " pickle.dump(state_dict, f)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Load a model:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create model with same architecture\n",
- "net = MyNetwork()\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "# Load saved state\n",
- "with open('model.pkl', 'rb') as f:\n",
- " state_dict = pickle.load(f)\n",
- "\n",
- "# Restore parameters\n",
- "for name, state in state_dict['params'].items():\n",
- " net.states(brainstate.ParamState)[name].value = state.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Understanding What to Save\n",
- "\n",
- "### State Types\n",
- "\n",
- "BrainPy has three state types with different persistence requirements:\n",
- "\n",
- "**ParamState (Always save)**\n",
- " - Learnable weights and biases\n",
- " - Required to restore trained model\n",
- " - Examples: synaptic weights, neural biases\n",
- "\n",
- "**LongTermState (Usually save)**\n",
- " - Persistent statistics and counters\n",
- " - Not updated by gradients\n",
- " - Examples: running averages, spike counts\n",
- "\n",
- "**ShortTermState (Never save)**\n",
- " - Temporary dynamics that reset each trial\n",
- " - Will be re-initialized anyway\n",
- " - Examples: membrane potentials, synaptic conductances"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Recommended Approach"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def save_checkpoint(net, optimizer, epoch, filepath):\n",
- " \"\"\"Save model checkpoint.\"\"\"\n",
- " state_dict = {\n",
- " # Required: model parameters\n",
- " 'params': net.states(brainstate.ParamState),\n",
- "\n",
- " # Optional but recommended: long-term states\n",
- " 'long_term': net.states(brainstate.LongTermState),\n",
- "\n",
- " # Training metadata\n",
- " 'epoch': epoch,\n",
- " 'optimizer_state': optimizer.state_dict(), # If continuing training\n",
- "\n",
- " # Model configuration (helpful for loading)\n",
- " 'config': {\n",
- " 'n_input': net.n_input,\n",
- " 'n_hidden': net.n_hidden,\n",
- " 'n_output': net.n_output,\n",
- " # ... other hyperparameters\n",
- " }\n",
- " }\n",
- "\n",
- " with open(filepath, 'wb') as f:\n",
- " pickle.dump(state_dict, f)\n",
- "\n",
- " print(f\"✅ Saved checkpoint to {filepath}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Basic Save/Load\n",
- "\n",
- "### Using Pickle (Simple)\n",
- "\n",
- "**Advantages:**\n",
- "- Simple and straightforward\n",
- "- Works with any Python object\n",
- "- Good for quick prototyping\n",
- "\n",
- "**Disadvantages:**\n",
- "- Python-specific format\n",
- "- Version compatibility issues\n",
- "- Not human-readable"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pickle\n",
- "import brainpy\n",
- "import brainstate\n",
- "\n",
- "# Define your model\n",
- "class SimpleNet(brainstate.nn.Module):\n",
- " def __init__(self, n_neurons=100):\n",
- " super().__init__()\n",
- " self.lif = brainpy.state.LIF(n_neurons, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms)\n",
- " self.fc = brainstate.nn.Linear(n_neurons, 10)\n",
- "\n",
- " def update(self, x):\n",
- " self.lif(x)\n",
- " return self.fc(self.lif.get_spike())\n",
- "\n",
- "# Train model\n",
- "net = SimpleNet()\n",
- "brainstate.nn.init_all_states(net)\n",
- "# ... training code ...\n",
- "\n",
- "# Save\n",
- "params = net.states(brainstate.ParamState)\n",
- "with open('simple_net.pkl', 'wb') as f:\n",
- " pickle.dump(params, f)\n",
- "\n",
- "# Load\n",
- "net_new = SimpleNet()\n",
- "brainstate.nn.init_all_states(net_new)\n",
- "\n",
- "with open('simple_net.pkl', 'rb') as f:\n",
- " loaded_params = pickle.load(f)\n",
- "\n",
- "# Restore parameters\n",
- "for name, state in loaded_params.items():\n",
- " net_new.states(brainstate.ParamState)[name].value = state.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Using NumPy (Arrays Only)\n",
- "\n",
- "**Advantages:**\n",
- "- Language-agnostic\n",
- "- Efficient storage\n",
- "- Widely supported\n",
- "\n",
- "**Disadvantages:**\n",
- "- Only saves arrays (not structure)\n",
- "- Need to manually track parameter names"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import numpy as np\n",
- "\n",
- "# Save parameters as .npz\n",
- "params = net.states(brainstate.ParamState)\n",
- "param_dict = {name: np.array(state.value) for name, state in params.items()}\n",
- "np.savez('model_params.npz', **param_dict)\n",
- "\n",
- "# Load parameters\n",
- "loaded = np.load('model_params.npz')\n",
- "for name, array in loaded.items():\n",
- " net.states(brainstate.ParamState)[name].value = jnp.array(array)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Checkpointing During Training\n",
- "\n",
- "### Periodic Checkpoints\n",
- "\n",
- "Save at regular intervals during training."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import braintools\n",
- "\n",
- "# Training setup\n",
- "net = MyNetwork()\n",
- "optimizer = braintools.optim.Adam(lr=1e-3)\n",
- "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n",
- "\n",
- "save_interval = 5 # Save every 5 epochs\n",
- "checkpoint_dir = './checkpoints'\n",
- "import os\n",
- "os.makedirs(checkpoint_dir, exist_ok=True)\n",
- "\n",
- "# Training loop\n",
- "for epoch in range(num_epochs):\n",
- " # Training step\n",
- " for batch in train_loader:\n",
- " loss = train_step(net, optimizer, batch)\n",
- "\n",
- " # Periodic save\n",
- " if (epoch + 1) % save_interval == 0:\n",
- " checkpoint_path = f'{checkpoint_dir}/epoch_{epoch+1}.pkl'\n",
- " save_checkpoint(net, optimizer, epoch, checkpoint_path)\n",
- "\n",
- " print(f\"Epoch {epoch+1}: Loss={loss:.4f}, Checkpoint saved\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Best Model Checkpoint\n",
- "\n",
- "Save only when validation performance improves."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "best_val_loss = float('inf')\n",
- "best_model_path = 'best_model.pkl'\n",
- "\n",
- "for epoch in range(num_epochs):\n",
- " # Training\n",
- " train_loss = train_epoch(net, optimizer, train_loader)\n",
- "\n",
- " # Validation\n",
- " val_loss = validate(net, val_loader)\n",
- "\n",
- " # Save if best\n",
- " if val_loss < best_val_loss:\n",
- " best_val_loss = val_loss\n",
- " save_checkpoint(net, optimizer, epoch, best_model_path)\n",
- " print(f\"✅ New best model! Val loss: {val_loss:.4f}\")\n",
- "\n",
- " print(f\"Epoch {epoch+1}: Train={train_loss:.4f}, Val={val_loss:.4f}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Resuming Training\n",
- "\n",
- "Continue training from a checkpoint."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def load_checkpoint(filepath, net, optimizer=None):\n",
- " \"\"\"Load checkpoint and restore state.\"\"\"\n",
- " with open(filepath, 'rb') as f:\n",
- " state_dict = pickle.load(f)\n",
- "\n",
- " # Restore model parameters\n",
- " params = net.states(brainstate.ParamState)\n",
- " for name, state in state_dict['params'].items():\n",
- " if name in params:\n",
- " params[name].value = state.value\n",
- "\n",
- " # Restore long-term states\n",
- " if 'long_term' in state_dict:\n",
- " long_term = net.states(brainstate.LongTermState)\n",
- " for name, state in state_dict['long_term'].items():\n",
- " if name in long_term:\n",
- " long_term[name].value = state.value\n",
- "\n",
- " # Restore optimizer state\n",
- " if optimizer is not None and 'optimizer_state' in state_dict:\n",
- " optimizer.load_state_dict(state_dict['optimizer_state'])\n",
- "\n",
- " start_epoch = state_dict.get('epoch', 0) + 1\n",
- " return start_epoch\n",
- "\n",
- "# Resume training\n",
- "net = MyNetwork()\n",
- "brainstate.nn.init_all_states(net)\n",
- "optimizer = braintools.optim.Adam(lr=1e-3)\n",
- "optimizer.register_trainable_weights(net.states(brainstate.ParamState))\n",
- "\n",
- "# Load checkpoint\n",
- "start_epoch = load_checkpoint('checkpoint_epoch_50.pkl', net, optimizer)\n",
- "\n",
- "# Continue training from where we left off\n",
- "for epoch in range(start_epoch, num_epochs):\n",
- " train_step(net, optimizer, train_loader)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Advanced Saving Strategies\n",
- "\n",
- "### Versioned Checkpoints\n",
- "\n",
- "Keep multiple checkpoints without overwriting."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from datetime import datetime\n",
- "\n",
- "def save_versioned_checkpoint(net, epoch, base_dir='checkpoints'):\n",
- " \"\"\"Save checkpoint with timestamp.\"\"\"\n",
- " timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')\n",
- " filename = f'model_epoch{epoch}_{timestamp}.pkl'\n",
- " filepath = os.path.join(base_dir, filename)\n",
- "\n",
- " state_dict = {\n",
- " 'params': net.states(brainstate.ParamState),\n",
- " 'epoch': epoch,\n",
- " 'timestamp': timestamp,\n",
- " }\n",
- "\n",
- " with open(filepath, 'wb') as f:\n",
- " pickle.dump(state_dict, f)\n",
- "\n",
- " return filepath"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Keep Last N Checkpoints\n",
- "\n",
- "Automatically delete old checkpoints to save disk space."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import glob\n",
- "\n",
- "def save_with_cleanup(net, epoch, checkpoint_dir='checkpoints', keep_last=5):\n",
- " \"\"\"Save checkpoint and keep only last N.\"\"\"\n",
- "\n",
- " # Save new checkpoint\n",
- " filepath = f'{checkpoint_dir}/epoch_{epoch:04d}.pkl'\n",
- " save_checkpoint(net, None, epoch, filepath)\n",
- "\n",
- " # Get all checkpoints\n",
- " checkpoints = sorted(glob.glob(f'{checkpoint_dir}/epoch_*.pkl'))\n",
- "\n",
- " # Delete old ones\n",
- " if len(checkpoints) > keep_last:\n",
- " for old_checkpoint in checkpoints[:-keep_last]:\n",
- " os.remove(old_checkpoint)\n",
- " print(f\"Removed old checkpoint: {old_checkpoint}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Model Export for Deployment\n",
- "\n",
- "### Minimal Model File\n",
- "\n",
- "Save only what's needed for inference."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def export_for_inference(net, filepath, metadata=None):\n",
- " \"\"\"Export minimal model for inference.\"\"\"\n",
- "\n",
- " export_dict = {\n",
- " 'params': net.states(brainstate.ParamState),\n",
- " 'config': {\n",
- " # Only architecture info, no training state\n",
- " 'model_type': net.__class__.__name__,\n",
- " # ... architecture hyperparameters\n",
- " }\n",
- " }\n",
- "\n",
- " if metadata:\n",
- " export_dict['metadata'] = metadata\n",
- "\n",
- " with open(filepath, 'wb') as f:\n",
- " pickle.dump(export_dict, f)\n",
- "\n",
- " # Report size\n",
- " size_mb = os.path.getsize(filepath) / (1024 * 1024)\n",
- " print(f\"📦 Exported model: {size_mb:.2f} MB\")\n",
- "\n",
- "# Export trained model\n",
- "export_for_inference(\n",
- " net,\n",
- " 'deployed_model.pkl',\n",
- " metadata={\n",
- " 'description': 'LIF network for digit classification',\n",
- " 'accuracy': 0.95,\n",
- " 'date': datetime.now().isoformat()\n",
- " }\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Loading for Inference"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "def load_for_inference(filepath, model_class):\n",
- " \"\"\"Load model for inference only.\"\"\"\n",
- "\n",
- " with open(filepath, 'rb') as f:\n",
- " export_dict = pickle.load(f)\n",
- "\n",
- " # Create model from config\n",
- " config = export_dict['config']\n",
- " net = model_class(**config) # Must match saved config\n",
- " brainstate.nn.init_all_states(net)\n",
- "\n",
- " # Load parameters\n",
- " params = net.states(brainstate.ParamState)\n",
- " for name, state in export_dict['params'].items():\n",
- " params[name].value = state.value\n",
- "\n",
- " return net, export_dict.get('metadata')\n",
- "\n",
- "# Load and use\n",
- "net, metadata = load_for_inference('deployed_model.pkl', MyNetwork)\n",
- "print(f\"Loaded model: {metadata['description']}\")\n",
- "\n",
- "# Run inference\n",
- "brainstate.nn.init_all_states(net)\n",
- "output = net(input_data)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Best Practices\n",
- "\n",
- "✅ **Always save configuration** - Include hyperparameters for reproducibility\n",
- "\n",
- "✅ **Version your checkpoints** - Track model version for compatibility\n",
- "\n",
- "✅ **Save metadata** - Include training metrics, date, description\n",
- "\n",
- "✅ **Regular backups** - Save periodically during long training\n",
- "\n",
- "✅ **Keep best model** - Separate best and latest checkpoints\n",
- "\n",
- "✅ **Test loading** - Verify checkpoint can be loaded before continuing\n",
- "\n",
- "✅ **Use relative paths** - Make checkpoints portable\n",
- "\n",
- "✅ **Document format** - Comment what's in your checkpoint files\n",
- "\n",
- "❌ **Don't save ShortTermState** - It resets anyway\n",
- "\n",
- "❌ **Don't save everything** - Minimize checkpoint size\n",
- "\n",
- "❌ **Don't overwrite** - Keep multiple checkpoints for safety"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Summary\n",
- "\n",
- "**Quick reference:**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Save\n",
- "checkpoint = {\n",
- " 'params': net.states(brainstate.ParamState),\n",
- " 'epoch': epoch,\n",
- " 'config': net.get_config()\n",
- "}\n",
- "with open('checkpoint.pkl', 'wb') as f:\n",
- " pickle.dump(checkpoint, f)\n",
- "\n",
- "# Load\n",
- "with open('checkpoint.pkl', 'rb') as f:\n",
- " checkpoint = pickle.load(f)\n",
- "\n",
- "net = MyNetwork.from_config(checkpoint['config'])\n",
- "brainstate.nn.init_all_states(net)\n",
- "\n",
- "for name, state in checkpoint['params'].items():\n",
- " net.states(brainstate.ParamState)[name].value = state.value"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## See Also\n",
- "\n",
- "- Core Concepts: State Management\n",
- "- Tutorials: SNN Training\n",
- "- GPU/TPU Usage"
- ]
- }
- ],
- "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.8.0"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs_state/tutorials/index.rst b/docs_state/tutorials/index.rst
deleted file mode 100644
index 1c69360f6..000000000
--- a/docs_state/tutorials/index.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-Tutorials
-=========
-
-Welcome to the BrainPy tutorials! This collection of tutorials will guide you from basic concepts
-to advanced applications in brain dynamics programming.
-
-**Basic Tutorials** introduce fundamental concepts including neuron models, synapses, network
-connections, and input/output handling. These are essential for getting started with BrainPy.
-
-**Advanced Tutorials** cover more sophisticated topics such as spiking neural network training,
-synaptic plasticity mechanisms, and large-scale brain simulations.
-
-**Guides** provide practical solutions for common tasks like saving/loading models,
-debugging networks, optimizing performance, and creating custom components.
-
-Choose a tutorial based on your experience level and learning goals!
-
-.. toctree::
- :hidden:
- :maxdepth: 1
- :caption: Basic Tutorials
-
- basic/01-lif-neuron.ipynb
- basic/02-synapse-models.ipynb
- basic/03-network-connections.ipynb
- basic/04-input-output.ipynb
-
-
-.. toctree::
- :hidden:
- :maxdepth: 1
- :caption: Advanced Tutorials
-
- advanced/05-snn-training.ipynb
- advanced/06-synaptic-plasticity.ipynb
- advanced/07-large-scale-simulations.ipynb
-
-
-.. toctree::
- :hidden:
- :maxdepth: 1
- :caption: How to guides
-
- how-to-guides/save-load-models.ipynb
- how-to-guides/debugging-networks.ipynb
- how-to-guides/performance-optimization.ipynb
- how-to-guides/custom-components.ipynb
\ No newline at end of file
diff --git a/examples_classic/README.md b/examples/README.md
similarity index 100%
rename from examples_classic/README.md
rename to examples/README.md
diff --git a/examples_classic/dynamics_analysis/1d_qif.py b/examples/dynamics_analysis/1d_qif.py
similarity index 100%
rename from examples_classic/dynamics_analysis/1d_qif.py
rename to examples/dynamics_analysis/1d_qif.py
diff --git a/examples_classic/dynamics_analysis/2d_fitzhugh_nagumo_model.py b/examples/dynamics_analysis/2d_fitzhugh_nagumo_model.py
similarity index 100%
rename from examples_classic/dynamics_analysis/2d_fitzhugh_nagumo_model.py
rename to examples/dynamics_analysis/2d_fitzhugh_nagumo_model.py
diff --git a/examples_classic/dynamics_analysis/2d_mean_field_QIF.py b/examples/dynamics_analysis/2d_mean_field_QIF.py
similarity index 100%
rename from examples_classic/dynamics_analysis/2d_mean_field_QIF.py
rename to examples/dynamics_analysis/2d_mean_field_QIF.py
diff --git a/examples_classic/dynamics_analysis/3d_reduced_trn_model.py b/examples/dynamics_analysis/3d_reduced_trn_model.py
similarity index 100%
rename from examples_classic/dynamics_analysis/3d_reduced_trn_model.py
rename to examples/dynamics_analysis/3d_reduced_trn_model.py
diff --git a/examples_classic/dynamics_analysis/4d_HH_model.py b/examples/dynamics_analysis/4d_HH_model.py
similarity index 100%
rename from examples_classic/dynamics_analysis/4d_HH_model.py
rename to examples/dynamics_analysis/4d_HH_model.py
diff --git a/examples_classic/dynamics_analysis/highdim_RNN_Analysis.py b/examples/dynamics_analysis/highdim_RNN_Analysis.py
similarity index 100%
rename from examples_classic/dynamics_analysis/highdim_RNN_Analysis.py
rename to examples/dynamics_analysis/highdim_RNN_Analysis.py
diff --git a/examples_classic/dynamics_simulation/COBA.py b/examples/dynamics_simulation/COBA.py
similarity index 100%
rename from examples_classic/dynamics_simulation/COBA.py
rename to examples/dynamics_simulation/COBA.py
diff --git a/examples_classic/dynamics_simulation/decision_making_network.py b/examples/dynamics_simulation/decision_making_network.py
similarity index 100%
rename from examples_classic/dynamics_simulation/decision_making_network.py
rename to examples/dynamics_simulation/decision_making_network.py
diff --git a/examples_classic/dynamics_simulation/ei_nets.py b/examples/dynamics_simulation/ei_nets.py
similarity index 100%
rename from examples_classic/dynamics_simulation/ei_nets.py
rename to examples/dynamics_simulation/ei_nets.py
diff --git a/examples_classic/dynamics_simulation/hh_model.py b/examples/dynamics_simulation/hh_model.py
similarity index 100%
rename from examples_classic/dynamics_simulation/hh_model.py
rename to examples/dynamics_simulation/hh_model.py
diff --git a/examples_classic/dynamics_simulation/stdp.py b/examples/dynamics_simulation/stdp.py
similarity index 100%
rename from examples_classic/dynamics_simulation/stdp.py
rename to examples/dynamics_simulation/stdp.py
diff --git a/examples_classic/dynamics_simulation/whole_brain_simulation_with_fhn.py b/examples/dynamics_simulation/whole_brain_simulation_with_fhn.py
similarity index 100%
rename from examples_classic/dynamics_simulation/whole_brain_simulation_with_fhn.py
rename to examples/dynamics_simulation/whole_brain_simulation_with_fhn.py
diff --git a/examples_classic/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py b/examples/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py
similarity index 100%
rename from examples_classic/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py
rename to examples/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py
diff --git a/examples_classic/dynamics_training/Song_2016_EI_RNN.py b/examples/dynamics_training/Song_2016_EI_RNN.py
similarity index 100%
rename from examples_classic/dynamics_training/Song_2016_EI_RNN.py
rename to examples/dynamics_training/Song_2016_EI_RNN.py
diff --git a/examples_classic/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py b/examples/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py
similarity index 100%
rename from examples_classic/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py
rename to examples/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py
diff --git a/examples_classic/dynamics_training/echo_state_network.py b/examples/dynamics_training/echo_state_network.py
similarity index 100%
rename from examples_classic/dynamics_training/echo_state_network.py
rename to examples/dynamics_training/echo_state_network.py
diff --git a/examples_classic/dynamics_training/integrate_brainpy_into_flax-convlstm.py b/examples/dynamics_training/integrate_brainpy_into_flax-convlstm.py
similarity index 100%
rename from examples_classic/dynamics_training/integrate_brainpy_into_flax-convlstm.py
rename to examples/dynamics_training/integrate_brainpy_into_flax-convlstm.py
diff --git a/examples_classic/dynamics_training/integrate_brainpy_into_flax-lif.py b/examples/dynamics_training/integrate_brainpy_into_flax-lif.py
similarity index 100%
rename from examples_classic/dynamics_training/integrate_brainpy_into_flax-lif.py
rename to examples/dynamics_training/integrate_brainpy_into_flax-lif.py
diff --git a/examples_classic/dynamics_training/integrate_flax_into_brainpy.py b/examples/dynamics_training/integrate_flax_into_brainpy.py
similarity index 100%
rename from examples_classic/dynamics_training/integrate_flax_into_brainpy.py
rename to examples/dynamics_training/integrate_flax_into_brainpy.py
diff --git a/examples_classic/dynamics_training/integrator_rnn.py b/examples/dynamics_training/integrator_rnn.py
similarity index 100%
rename from examples_classic/dynamics_training/integrator_rnn.py
rename to examples/dynamics_training/integrator_rnn.py
diff --git a/examples_classic/dynamics_training/reservoir-mnist.py b/examples/dynamics_training/reservoir-mnist.py
similarity index 100%
rename from examples_classic/dynamics_training/reservoir-mnist.py
rename to examples/dynamics_training/reservoir-mnist.py
diff --git a/examples_classic/training_ann_models/mnist-cnn.py b/examples/training_ann_models/mnist-cnn.py
similarity index 100%
rename from examples_classic/training_ann_models/mnist-cnn.py
rename to examples/training_ann_models/mnist-cnn.py
diff --git a/examples_classic/training_ann_models/mnist_ResNet.py b/examples/training_ann_models/mnist_ResNet.py
similarity index 100%
rename from examples_classic/training_ann_models/mnist_ResNet.py
rename to examples/training_ann_models/mnist_ResNet.py
diff --git a/examples_classic/training_snn_models/readme.md b/examples/training_snn_models/readme.md
similarity index 100%
rename from examples_classic/training_snn_models/readme.md
rename to examples/training_snn_models/readme.md
diff --git a/examples_classic/training_snn_models/spikebased_bp_for_cifar10.py b/examples/training_snn_models/spikebased_bp_for_cifar10.py
similarity index 100%
rename from examples_classic/training_snn_models/spikebased_bp_for_cifar10.py
rename to examples/training_snn_models/spikebased_bp_for_cifar10.py
diff --git a/examples_state/102_EI_net_1996.py b/examples_state/102_EI_net_1996.py
deleted file mode 100644
index d0235bcb7..000000000
--- a/examples_state/102_EI_net_1996.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# 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.state.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.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(n_exc, self.num, prob, JE),
- syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms),
- out=brainpy.state.CUBA.desc(),
- post=self.N,
- )
- self.I = brainpy.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(n_inh, self.num, prob, JI),
- syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms),
- out=brainpy.state.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_state/103_COBA_2005.py b/examples_state/103_COBA_2005.py
deleted file mode 100644
index e8569f93b..000000000
--- a/examples_state/103_COBA_2005.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# 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.state.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.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=0.6 * u.mS),
- syn=brainpy.state.Expon.desc(self.num, tau=5. * u.ms),
- out=brainpy.state.COBA.desc(E=0. * u.mV),
- post=self.N
- )
- self.I = brainpy.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=6.7 * u.mS),
- syn=brainpy.state.Expon.desc(self.num, tau=10. * u.ms),
- out=brainpy.state.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_state/104_CUBA_2005.py b/examples_state/104_CUBA_2005.py
deleted file mode 100644
index 0a39e43a6..000000000
--- a/examples_state/104_CUBA_2005.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# 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.state.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.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=1.62 * u.mS),
- syn=brainpy.state.Expon.desc(self.num, tau=5. * u.ms),
- out=brainpy.state.CUBA.desc(scale=u.volt),
- post=self.N
- )
- self.I = brainpy.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=-9.0 * u.mS),
- syn=brainpy.state.Expon.desc(self.num, tau=10. * u.ms),
- out=brainpy.state.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_state/104_CUBA_2005_version2.py b/examples_state/104_CUBA_2005_version2.py
deleted file mode 100644
index 5ab7ee5a1..000000000
--- a/examples_state/104_CUBA_2005_version2.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# 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.state.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.state.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.state.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.state.Expon.desc(self.n_exc, tau=5. * u.ms),
- out=brainpy.state.CUBA.desc(scale=u.volt),
- post=self.E
- )
- self.E2I = brainpy.state.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.state.Expon.desc(self.n_inh, tau=5. * u.ms),
- out=brainpy.state.CUBA.desc(scale=u.volt),
- post=self.I
- )
- self.I2E = brainpy.state.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.state.Expon.desc(self.n_exc, tau=10. * u.ms),
- out=brainpy.state.CUBA.desc(scale=u.volt),
- post=self.E
- )
- self.I2I = brainpy.state.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.state.Expon.desc(self.n_inh, tau=10. * u.ms),
- out=brainpy.state.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_state/106_COBA_HH_2007.py b/examples_state/106_COBA_HH_2007.py
deleted file mode 100644
index d590e7372..000000000
--- a/examples_state/106_COBA_HH_2007.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# 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.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_exc, self.varshape, conn_num=0.02, conn_weight=we),
- syn=brainpy.state.Expon(self.varshape, tau=taue),
- out=brainpy.state.COBA(E=Ee),
- post=self.N
- )
- self.I = brainpy.state.AlignPostProj(
- comm=brainstate.nn.EventFixedProb(self.n_inh, self.varshape, conn_num=0.02, conn_weight=wi),
- syn=brainpy.state.Expon(self.varshape, tau=taui),
- out=brainpy.state.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_state/107_gamma_oscillation_1996.py b/examples_state/107_gamma_oscillation_1996.py
deleted file mode 100644
index 2e5833dbc..000000000
--- a/examples_state/107_gamma_oscillation_1996.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# 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.state.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.state.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.state.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.state.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=100)
-
-# 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_state/108_synfire_chains_199.py b/examples_state/108_synfire_chains_199.py
deleted file mode 100644
index 050a3ca28..000000000
--- a/examples_state/108_synfire_chains_199.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# 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.state.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.state.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.state.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_state/109_fast_global_oscillation.py b/examples_state/109_fast_global_oscillation.py
deleted file mode 100644
index 600238993..000000000
--- a/examples_state/109_fast_global_oscillation.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# 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.state.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.state.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_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py b/examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py
deleted file mode 100644
index ca4b505fa..000000000
--- a/examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# 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.Module):
- 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.state.PoissonEncoder(self.num_exc)
-
- # Poisson inputs
- self.ext_to_FS = brainpy.state.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.state.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.state.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.state.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.state.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.state.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=4000)
-
- # # 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_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py b/examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py
deleted file mode 100644
index 599fdd8e0..000000000
--- a/examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# 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.Module):
- 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.state.PoissonEncoder(self.num_rs)
-
- # Poisson inputs
- self.ext_to_FS = brainpy.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py b/examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py
deleted file mode 100644
index cf7108a35..000000000
--- a/examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# 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.Module):
- 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.state.PoissonEncoder(self.num_rs)
-
- # Poisson inputs
- self.ext_to_FS = brainpy.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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.state.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=1000)
-
- # 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_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py b/examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py
deleted file mode 100644
index 3a5a7ca77..000000000
--- a/examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# 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.Module):
- 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.state.PoissonEncoder(self.num_exc)
-
- # Poisson inputs
- self.ext_to_FS = brainpy.state.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.state.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.state.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.state.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.state.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.state.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_state/200_surrogate_grad_lif.py b/examples_state/200_surrogate_grad_lif.py
deleted file mode 100644
index 7861f6f23..000000000
--- a/examples_state/200_surrogate_grad_lif.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# 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.state.Expon(num_rec, tau=5. * u.ms, g_initializer=braintools.init.Constant(0. * u.mA))
- )
- # recurrent: r
- self.r = brainpy.state.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.state.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_state/201_surrogate_grad_lif_fashion_mnist.py b/examples_state/201_surrogate_grad_lif_fashion_mnist.py
deleted file mode 100644
index b3e89af84..000000000
--- a/examples_state/201_surrogate_grad_lif_fashion_mnist.py
+++ /dev/null
@@ -1,221 +0,0 @@
-# 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.state.Expon(num_rec, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit())
- )
- # recurrent: r
- self.r = brainpy.state.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.state.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_state/202_mnist_lif_readout.py b/examples_state/202_mnist_lif_readout.py
deleted file mode 100644
index 45918f40f..000000000
--- a/examples_state/202_mnist_lif_readout.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# 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.state.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_state/README.md b/examples_state/README.md
deleted file mode 100644
index 7cc84e114..000000000
--- a/examples_state/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# BrainPy Version 3 Examples
-
-This directory contains example scripts demonstrating the capabilities of BrainPy 3.x for simulating and training spiking neural networks.
-
-## Overview
-
-BrainPy 3.x is rewritten based on [brainstate](https://github.com/chaobrain/brainstate) and provides a powerful framework for computational neuroscience and brain-inspired computation.
-
-## Example Categories
-
-### Network Simulations (100-series)
-
-Classic network models demonstrating recurrent dynamics and emergent behaviors:
-
-- **102_EI_net_1996.py** - E/I balanced network from Brunel (1996) and Van Vreeswijk & Sompolinsky (1996)
-- **103_COBA_2005.py** - Conductance-based E/I network (COBA model)
-- **104_CUBA_2005.py** - Current-based E/I network (CUBA model)
-- **106_COBA_HH_2007.py** - COBA network with Hodgkin-Huxley neurons
-- **107_gamma_oscillation_1996.py** - Gamma oscillation generation
-- **108_synfire_chains_199.py** - Synfire chain propagation
-- **109_fast_global_oscillation.py** - Fast global oscillation dynamics
-
-### Gamma Oscillation Models (110-series)
-
-Implementations from Susin & Destexhe (2021) demonstrating different gamma oscillation mechanisms:
-
-- **110_Susin_Destexhe_2021_gamma_oscillation_AI.py** - Asynchronous-Irregular (AI) regime
-- **111_Susin_Destexhe_2021_gamma_oscillation_CHING.py** - CHING mechanism
-- **112_Susin_Destexhe_2021_gamma_oscillation_ING.py** - Interneuron Gamma (ING)
-- **113_Susin_Destexhe_2021_gamma_oscillation_PING.py** - Pyramidal-Interneuron Gamma (PING)
-
-### Spiking Neural Network Training (200-series)
-
-Examples demonstrating training of SNNs using surrogate gradient methods:
-
-- **200_surrogate_grad_lif.py** - Basic surrogate gradient learning with LIF neurons
-- **201_surrogate_grad_lif_fashion_mnist.py** - Fashion-MNIST classification with surrogate gradients
-- **202_mnist_lif_readout.py** - MNIST classification with LIF network and readout layer
-
-## Requirements
-
-```bash
-pip install -U brainpy[cpu] # or brainpy[cuda12] for GPU support
-```
-
-## Usage
-
-Run any example directly:
-
-```bash
-python 102_EI_net_1996.py
-```
-
-## Key Features Demonstrated
-
-- Building recurrent spiking neural networks
-- Neuron models (LIF, Hodgkin-Huxley)
-- Synaptic models (exponential, conductance-based, current-based)
-- Network projection and connectivity
-- Surrogate gradient learning for SNNs
-- State management and initialization
-- Visualization of network activity
-
-## References
-
-These examples are based on influential papers in computational neuroscience. See individual script headers for specific citations.
-
-## Documentation
-
-For more information, visit the [BrainPy documentation](https://brainpy.readthedocs.io).
diff --git a/examples_state/Susin_Destexhe_2021_gamma_oscillation.py b/examples_state/Susin_Destexhe_2021_gamma_oscillation.py
deleted file mode 100644
index dfc72170a..000000000
--- a/examples_state/Susin_Destexhe_2021_gamma_oscillation.py
+++ /dev/null
@@ -1,273 +0,0 @@
-# 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.state.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/pyproject.toml b/pyproject.toml
index 8cb827436..70e798428 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Topic :: Scientific/Engineering :: Bio-Informatics",
@@ -38,7 +39,7 @@ dependencies = [
"numpy>=1.15",
"jax",
"tqdm",
- "brainstate>=0.2.0",
+ "brainstate>=0.2.7",
"brainunit",
"brainevent>=0.0.4",
"braintools>=0.0.9",
diff --git a/requirements.txt b/requirements.txt
index 3292eab3b..8e826d196 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
numpy
-brainstate>=0.2.0
brainunit
brainevent>=0.0.4
braintools>=0.1.0
+brainstate>=0.2.7
jax
tqdm