COMMENT
Alpha function Hair Cell synapse
activation follows Poisson rate (atau) time constant
alpha(t) = t/tau * exp( -t/tau )
ENDCOMMENT
VERBATIM
extern double du_dev0( );
extern double dexp_dev(double);
ENDVERBATIM
NEURON {
POINT_PROCESS afhcsyn_i0
RANGE i, tau, atau, sw, del
NONSPECIFIC_CURRENT i
}
PARAMETER {
e = 0 (mV) : equib potential
tau = 1.3 (ms) : time constant of alpha current
atau = 0 (ms) : time constant of activation (default=0 => inactive )
sw = 0.1 (pS) : default synaptic weight
del = 0.1 (ms) : default delay
idebug = 0
}
ASSIGNED {
v (mV)
i (nanoamp)
}
STATE {
a (pS)
g (pS)
}
UNITS {
(mV) = (millivolt)
(pS) = (picosiemens)
PI = (pi) (1)
}
INITIAL {
net_send( 0, 1 )
g = 0
}
BREAKPOINT {
SOLVE state METHOD sparse
i = g*( v - e )*(1e-06)
}
KINETIC state {
~ a <-> g ( 1/tau, 0 )
~ g -> ( 1/tau )
}
NET_RECEIVE( weight (pS)) {
LOCAL wait
UNITSOFF
if( idebug ) {
printf( "Net_receive afhcsyn: t %g flag %g", t, flag )
if( flag == 0 ){ printf( " weight %g", weight ) }
printf( "\n" )
}
if( flag == 0 ){
a = a + weight * exp(1)
}
if( flag == 1 && atau > 0 ){
wait = del
net_send( wait, 2 )
}
if( flag == 2 && atau > 0 ){
wait = dexp_dev( 1(ms)/atau )
net_send( wait, 3 )
}
if( flag == 3 && atau > 0 ){
a = a + sw *exp(1)
wait = dexp_dev( 1/atau )
net_send( wait, 1 )
}
UNITSON
}