Source code for cleo.stimulators

"""Contains basic stimulators."""
from brian2 import Unit
from cleo.base import Stimulator


[docs]class StateVariableSetter(Stimulator): """Sets the given state variable of target neuron groups.""" def __init__( self, name: str, variable_to_ctrl: str, unit: Unit, start_value: float = 0 ): """ Parameters ---------- name : str Unique device name variable_to_ctrl : str Name of state variable to control unit : Unit Unit of that state variable: will be used in :meth:`update` start_value : float, optional Starting variable value, by default 0 """ super().__init__(name, start_value) self.neuron_groups = [] self.var = variable_to_ctrl self.unit = unit self.value = start_value
[docs] def connect_to_neuron_group(self, neuron_group): self.neuron_groups.append(neuron_group) self.update(self.value)
[docs] def update(self, ctrl_signal: float) -> None: """Set state variable of target neuron groups Parameters ---------- ctrl_signal : float Value to update variable to, without unit. The unit provided on initialization is automatically multiplied. """ for ng in self.neuron_groups: setattr(ng, self.var, ctrl_signal * self.unit)