nest / nest-simulator

The NEST simulator
http://www.nest-simulator.org
GNU General Public License v2.0
531 stars 361 forks source link

implementation of synapse with 2 variables, access to presynaptic voltage #1417

Closed Ziaeemehr closed 4 years ago

Ziaeemehr commented 4 years ago

In "An Introduction to modeling neural dynamics" by Borgers, section 20.2, the synaptic current is defined as:

I_syn = g_bar_syn * s(t) (V_rev - V_post)
dq/dt = (1+tanh(V/10)) / 2 * (1-q) / tau_rise - q / 0.1 - q / tau_decay_q
ds / dt = q (1 - s) / tau_rise - s / tau_decay

fig_20_4

The question is how to implement this synapse?

Is it possible to define an ODE for synapse variable? I think the problem is sigmoid function (F(V_pre)) that depends on V_pre of the presynaptic neuron which we do not have access to it. for the simple case of one variable:

I_syn = g_bar_syn * s(t) (V_rev - V_post)
ds/dt = F(V_pre)(1-s) / tau_rise - s / tau_decay

is implemented as :

shape g_ex = exp(-1/tau_decay * t)
function I_syn_exc pA = convolve(g_ex, spikeExc) * ( V_m - E_ex )

am I right? and instead of sigmoid function we use the condition on voltage V_m passing the threshold.

for the case of 2 variable synapse, if we have a spike at t=0, then approximately s satisfy [Borgers eq. 20.11]

ds/dt = exp(-t / tau_decay_q) * (1 - s) / tau_rise - s / tau_decay

the term exp(-t / tau_decay_q) * (1 - s) / tau_rise initially drives s up. However, as exp(-t / tau_decay_q), decays, the term -s / tau_decay takes over. Still I don't know how to include the slow rise.

Ziaeemehr commented 4 years ago

I asked this in issue #532 of nestml, the main problem I think is having access to presynaptic voltage, to exactly implement the synapse, instead of trying to mimic the behavior using defined receptors.

clinssen commented 4 years ago

nest/nestml#532

jakobj commented 4 years ago

since the introduction of gap junctions to NEST (https://doi.org/10.3389/fninf.2015.00022) it is in principle possible to communicate presynaptic membrane potentials to postsynaptic cells. one could hence think of reusing the gap junction framework to implement a spiking connection with dependence on the presynaptic V_m -- this might make for an interesting experiment. however, since continuous variables are much more costly to communicate, I wouldn't expect high performance from such an approach.

heplesser commented 4 years ago

@Ziaeemehr Implementing models with access to presynaptic voltage would require significant modifications to the NEST kernel, with uncertain consequences for performance. Therefore, NEST may not be a suitable simulator for your model. Have you considered other simulators such as Brian?

Ziaeemehr commented 4 years ago

@heplesser : I used Brian2 to implement a synapse with 2 variable (for gradual rise of synaptic gating variable) to mimic AMPA, GABA_A and GABA_B. LINK.

PING_2_cell_sq

Thanks for the comment.