Event-based synaptic noise mechanism
Posted: Thu Apr 02, 2015 2:21 pm
Hello,
I would like to convert the synaptic noise mechanism Gfluct2 https://bitbucket.org/mbezaire/dentate/ ... fluct2.mod for use with NEURON's variable timestep solver, and on another thread Ted suggested that I try to use the event delivery mechanism to avoid being dependent on dt. So I have placed the equations from the BREAKPOINT block in Gfluct2 in a NET_RECEIVE block which is invoked at a predefined interval (code included below). However the current computed in this new mechanism seems to have no effect on the cell in which it is placed. What am I doing wrong? I am including below just the INITIAL and NET_RECEIVE blocks, I can provide the whole file if necessary. Thanks for any help.
I would like to convert the synaptic noise mechanism Gfluct2 https://bitbucket.org/mbezaire/dentate/ ... fluct2.mod for use with NEURON's variable timestep solver, and on another thread Ted suggested that I try to use the event delivery mechanism to avoid being dependent on dt. So I have placed the equations from the BREAKPOINT block in Gfluct2 in a NET_RECEIVE block which is invoked at a predefined interval (code included below). However the current computed in this new mechanism seems to have no effect on the cell in which it is placed. What am I doing wrong? I am including below just the INITIAL and NET_RECEIVE blocks, I can provide the whole file if necessary. Thanks for any help.
Code: Select all
INITIAL {
g_e1 = 0
g_i1 = 0
if(tau_e != 0) {
D_e = 2 * std_e * std_e / tau_e
exp_e = exp(-randinterval/tau_e)
amp_e = std_e * sqrt( (1-exp(-2*randinterval/tau_e)) )
}
if(tau_i != 0) {
D_i = 2 * std_i * std_i / tau_i
exp_i = exp(-randinterval/tau_i)
amp_i = std_i * sqrt( (1-exp(-2*randinterval/tau_i)) )
}
net_send(0,1)
}
NET_RECEIVE (w) {
if(tau_e!=0) {
g_e1 = exp_e * g_e1 + amp_e * mynormrand(0,1)
}
if(tau_i!=0) {
g_i1 = exp_i * g_i1 + amp_i * mynormrand(0,1)
}
if(tau_e==0) {
g_e = std_e * mynormrand(0,1)
}
if(tau_i==0) {
g_i = std_i * mynormrand(0,1)
}
g_e = g_e0 + g_e1
if(g_e < 0) { g_e = 0 }
g_i = g_i0 + g_i1
if(g_i < 0) { g_i = 0 }
i = g_e * (v - E_e) + g_i * (v - E_i)
:printf("oup: t = %g v = %g i = %g g_e = %g g_i = %g E_e = %g E_i = %g\n", t, v, i, g_e, g_i, E_e, E_i)
net_send(randinterval,1)
}