My first thought was to add a `NET_RECEIVE` block to the graded synapse mechanism and then use a NetCon with delay to transfer voltage from the presynaptic compartment, and set the NetCon threshold very low. But I am not sure if NetCon stores the source voltage at threshold crossing, and if so how to access that. NetCon documentation says `NetCon.x` is a reference to the source variable, so my understanding is that this provides access to `x` at current time, not at the time of threshold crossing. All the examples I could find show something along the line of passing parameters as weights to `NET_RECEIVE` block, which is often set explicitly.
So my questions are:
- Is there a simple way to access the NetCon source variable in a NET_RECEIVE block that I am missing?
- Since the NetCon with presynaptic voltage always above threshold will be sending events at every time step, will it add serious performance overhead?
- I also thought of buffering the past values of the presynaptic voltage in a FIFO queue, but that will likely be more complicated than just accessing the value in NetCon.
- Instead of implementing my own FIFO queue, putting self-events with the current presynaptic voltage as a parameter into the event queue is another possibility. But again, I wonder if this will be a performance issue?
- Is there a better alternative that I am missing?
Code: Select all
: Graded synaptic transmission based on presynaptic depolarization
: This is after the model in Manor, et al., JNeurosci., 1997
NEURON {
POINT_PROCESS GradedSyn
POINTER vpre
RANGE e, g, i, gbar, vmid, vslope, tau, sinf
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(uS) = (microsiemens)
}
PARAMETER {
e = -80 (mV) : Reversal potential
vslope = 5.0 (mV) : slope
vmid = -40 (mV) : midpoint for sigmoid
gbar = 0.0 (uS)
tau = 4.0 (ms)
}
ASSIGNED {
v (mV)
vpre (mV) : presynaptic Vm
g (uS)
i (nA)
sinf
}
STATE {
s
}
BREAKPOINT {
SOLVE states METHOD cnexp
g = gbar * s
i = g * (v - e)
}
INITIAL {
s = 0.0
}
DERIVATIVE states {
sinf = 1 / (1 + exp((vmid - vpre) / vslope))
s' = (sinf - s) / tau
}