Source code for conex.behaviors.network.neuromodulators

"""
Network-wide neuromodulators.
"""

from pymonntorch import Behavior


[docs]class Dopamine(Behavior): """ Compute extracellular dopamine concentration. Note: Payoff behavior should be defined prior to Dopamine behavior while defining the network. Args: tau_dopamine (float): Dopamine decay time constant. initial_dopamine_concentration (float, optional): Initial dopamine concentration """ def __init__( self, *args, tau_dopamine=0.0, initial_dopamine_concentration=None, **kwargs ): super().__init__( *args, tau_dopamine=tau_dopamine, initial_dopamine_concentration=initial_dopamine_concentration, **kwargs )
[docs] def initialize(self, network): """ Set initial dopamine concentration value based on initial payoff value. Args: network (Network): Network object. """ self.add_tag("Dopamine") network.tau_dopamine = self.parameter("tau_dopamine", 0.0) network.dopamine_concentration = self.parameter( "initial_dopamine_concentration", network.payoff )
[docs] def forward(self, network): """ Compute extracellular dopamine concentration at each time step by: dd/dt = -d/tau_d + payoff(t). Args: network (Network): Network object. """ dd_dt = ( -(network.dopamine_concentration / network.tau_dopamine) + network.payoff ) network.dopamine_concentration += dd_dt