COMMENT
alpha function synapse implemented as continuously integrated
kinetic scheme a la Srinivasan and Chiel (Neural Computation) so that
one can give many stimuli which summate.
Onset times are placed in the vector onset[SIZE]
Conductance located in state variable G
The amplitude of each individual alpha function is given by stim,
stim * t * exp(-t/tau).
The last onset time should be a very large number so stim stops getting
added to state A
ENDCOMMENT
DEFINE SIZE 100
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS KSyn100
RANGE tau, stim, e, i,onset
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(umho) = (micromho)
}
PARAMETER {
tau = 0.1 (ms)
stim = 0.05 (umho)
e=0 (mV)
v (mV)
}
ASSIGNED {
index
i (nA)
bath (umho)
k (/ms)
onset[SIZE] (ms)
}
STATE {
A (umho)
G (umho)
}
INITIAL {
k = 1/tau
A = 0
G = 0
index=0
}
? current
BREAKPOINT {
SOLVE conductance
i = G*(v - e)
}
: at each onset time a fixed quantity of material is added to state A
: this material moves through G with the form of an alpha function
PROCEDURE conductance() {
LOCAL x
while(index < SIZE && t>onset[index]) {
index=index+1
A = A + stim
}
SOLVE state METHOD sparse
VERBATIM
return 0;
ENDVERBATIM
}
? kinetics
KINETIC state {
~ A <-> G (k, 0)
~ G <-> bath (k, 0)
}