jaxley.synapses.IonotropicSynapse#

class IonotropicSynapse(name=None)[source]#

Bases: Synapse

A state-based synapse with voltage dependent time constant.

This synapse is similar to the DynamicSynapse, but its time constant is voltage dependent. In addition, this synapse only supports a sigmoidal activation function.

This synapse implements the following equations:

\[I = \overline{g}\, \cdot s\, \cdot (E - V_{\text{post}})\]
\[\tau (V_{\text{pre}}) \frac{\text{d}s}{\text{d}t} = s_{\infty}(V_{\text{pre}}) - s\]
\[s_{\infty}(V_{\text{pre}}) = \sigma\!\left(\frac{V_{\text{pre}} - V_{\text{thr}}}{\Delta}\right)\]
\[\tau(V_{\text{pre}})\, = \frac{1 - s_{\infty}(V_{\text{pre}})}{k_{-}},\]

The synapse state “s” is the probability that a postsynaptic receptor channel is open, and this depends on the amount of neurotransmitter released, which is in turn dependent on the presynaptic voltage. This synapse has a time constant which is voltage dependent.

The synaptic parameters are:
  • gS: the maximal conductance \(\overline{g}\) (uS).

  • e_syn: the reversal potential \(E\) (mV).

  • k_minus: the rate constant \(1/\tau\) (\(ms^{-1}\)).

  • v_th: the threshold at which the synapse becomes active \(V_{\text{thr}}\) (mV).

  • delta: The inverse of the slope of the activation \(\Delta\) (mV).

The inserted cellular parameters are:
  • e_syn: The synaptic reversal potential \(E\) (mV). This synapse uses the pre-synaptic reveral potential to compute the current, thereby directly enforcing Dale’s law.

The synaptic state is:
  • s: the activity level of the synapse \(\in [0, 1]\).

Details of this implementation can be found in the following book chapter:

L. F. Abbott and E. Marder, “Modeling Small Networks,” in Methods in Neuronal Modeling, C. Koch and I. Sergev, Eds. Cambridge: MIT Press, 1998.

Parameters:

name (str | None)

synapse_params = None#
synapse_states = None#
update_states(synapse_states, synapse_params, pre_voltage, post_voltage, pre_states, post_states, pre_params, post_params, delta_t)[source]#

Return updated synapse state and current.

Parameters:
Return type:

Dict

compute_current(synapse_states, synapse_params, pre_voltage, post_voltage, pre_states, post_states, pre_params, post_params, delta_t)[source]#

Return current through one synapse in nA.

Internally, we use jax.vmap to vectorize this function across many synapses.

Parameters:
  • states – States of the synapse.

  • pre_voltage (Array) – Voltage of the presynaptic compartment, shape ().

  • post_voltage (Array) – Voltage of the postsynaptic compartment, shape ().

  • params – Parameters of the synapse. Conductances in uS.

  • synapse_states (dict[str, Array])

  • synapse_params (dict[str, Array])

  • pre_states (dict[str, Array])

  • post_states (dict[str, Array])

  • pre_params (dict[str, Array])

  • post_params (dict[str, Array])

  • delta_t (float)

Returns:

Current through the synapse in nA, shape ().

Return type:

float

change_name(new_name)#

Change the synapse name.

Parameters:

new_name (str) – The new name of the channel.

Returns:

Renamed channel, such that this function is chainable.

property name: str | None#