Initialization#
- class braintools.init.Initialization#
Base class for all parameter initialization strategies.
This abstract class defines the interface for initialization strategies used to generate connectivity parameters such as weights and delays. All initialization classes must implement the
__call__method.Initialization objects support composition through arithmetic operations and functional composition, enabling the creation of complex initialization strategies from simple ones.
- Supported Operations:
Arithmetic: +, -, *, / (element-wise operations)
Composition: | (pipe operator for chaining transformations)
Transformations: .clip(), .add(), .multiply(), .apply()
Examples
Create a custom initialization class:
>>> import numpy as np >>> import brainunit as u >>> from braintools.init import Initialization >>> >>> class CustomInit(Initialization): ... def __init__(self, value): ... self.value = value ... ... def __call__(self, size, **kwargs): ... return np.full(size, self.value)
Compose initializations:
>>> from braintools.init import Normal, Uniform >>> >>> weight_init = Normal(0.5 * u.nS, 0.1 * u.nS) * 2.0 + 0.1 * u.nS >>> >>> delay_init = Uniform(1.0 * u.ms, 3.0 * u.ms).clip(0.5 * u.ms, 5.0 * u.ms) >>> >>> combined = (Normal(1.0 * u.nS, 0.2 * u.nS) | ... lambda x: x.clip(0, 2 * u.nS) | ... lambda x: x * 0.5)