jaxley.synapses.AlphaSynapse#
- class AlphaSynapse(name=None)[source]#
Bases:
SynapseAlpha synapse which responds to binary pre-synaptic spike trains.
This synapse is meant to be used together with pre-synaptic neurons whose voltage is binary (indicating spike or no spike).
This synapse is implemented as two cascaded first-order linear ODEs:
\[\tau_{\mathrm{rise}}\frac{d r(t)}{d t} = -r(t) + x(t)\]\[\tau_{\mathrm{decay}}\frac{d s(t)}{d t} = -s(t) + r(t)\]\[I = \overline{g}\, \cdot s \cdot (E - V_{\text{post}})\]Here, \(x(t)\) denotes the presynaptic input (typically a binary spike train), \(r(t)\) is an intermediate rise state, and \(s(t)\) is the synaptic state that determines the synaptic conductance.
For an impulse input \(x(t) = \delta(t)\), the resulting synaptic kernel is
\[s(t) \propto e^{-t / \tau_{\mathrm{decay}}} - e^{-t / \tau_{\mathrm{rise}}}, \qquad t \ge 0.\]- The synaptic parameters are:
gS: the maximal conductance \(\overline{g}\) (uS).tau_decay: The decay time constant \(\tau_{\text{rise}}\) (ms).tau_rise: The rise time constant \(\tau_{\text{decay}}\) (ms).
- 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:
r: Intermediate state representing the rising phase.s: Activity level of the synapse.
Example usage#
import jaxley as jx from jaxley.connect import connect from jaxley.synapses import AlphaSynapse from jaxley.channels import Leak dummy = jx.Cell() cell = jx.read_swc("morph_ca1_n120.swc", ncomp=1) net = jx.Network([dummy, cell]) net.cell(1).insert(Leak()) # Connect pre-synaptic dummy to the morphologically detailed cell. connect(net.cell(0), net.cell(1).branch(5).comp(0), AlphaSynapse()) net.set("AlphaSynapse_gS", 0.1) # Synaptic strength. net.set("AlphaSynapse_tau_decay", 5.0) # Decay time in ms # Clamp the voltage of the pre-synaptic cell to the spike train. net.cell(0).set("v", 0.0) # Initial state. net.cell(0).clamp("v", spike_train) net.cell(1).branch(5).comp(0).record() v = jx.integrate(net, delta_t=dt)
- 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.
- compute_current(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:
name (str | None)