TITLE stochastic Ihchannels
COMMENT
Author: Stefan Hallermann
Provides Ihchannel stochastics as described in Kole et al. (2006).
In the initiation the number of channels (N) and the number of open channels (N_open)
is calculated for each segment and stored as a range variable. For each dt the Procedure
noise() is evaluated once. In noise() each open channel has the chance to close according
to the closing rate beta(v) and each close channels has the chance to open according to
the opening rate alpha(v). After this "update" of the number of open channels the
resulting current through the open channels (i) is calculated depending on the local
driving force in the segment.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
PARAMETER {
v (mV)
ehd=45 (mV) :ihreversal potential
ghdbar=0.00015 (S/cm2) :default Ih conductance; exponential distribution is set in Ri18init.hoc
gamma=680e15 (S) :single channel cond
seed
}
NEURON {
SUFFIX ih
NONSPECIFIC_CURRENT i
RANGE ghdbar,N,N_open
}
STATE {
l
}
ASSIGNED {
i (mA/cm2)
dt (ms)
area (um2)
N :number of channels
N_open :number of open channels
}
INITIAL { :calculates the number of Ihchannel per segment and the number of open channels at the initial potential
N=abs(((1e8*area*ghdbar)/gamma)+0.5) :area in um2; 1e8*area in cm2; ghdbar in S/cm2; gamma in S
N_open=abs(N*alpha(v)/(alpha(v)+beta(v)))
l=0 :only needed for dummy diff.eq.
set_seed(seed)
}
BREAKPOINT {
SOLVE states METHOD cnexp :only needed to make the proc noise() be evaluated once per dt (breakpoint() is evaluated twice per dt!)
i = ((N_open*gamma)/(1e8*area))*(vehd) :cond/cm2 * delta_pot (cond=N_open*gamma in S)
}
FUNCTION alpha(v(mV)) {
:opening rate in 1/s
alpha = 6.43*(v+154.9)/(exp((v+154.9)/11.9)1) :parameters are estimated by direct fitting of HH model to activation time constants and voltage activation curve recorded at 34C
}
FUNCTION beta(v(mV)) {
:closing rate in 1/s
beta = 193*exp(v/33.1)
}
DERIVATIVE states {
l' = l :dummy diff.eq.
noise()
}
PROCEDURE noise() {
LOCAL N_close,N_open_merk,N_close_merk,a,b,prob_open,prob_close
a=alpha(v)
b=beta(v)
N_open_merk=N_open
N_close_merk=NN_open
:activation (all close channels have the chance to open with the probability prob_open depending on dt and the opening rate alpha(v))
:(the approximation with the 1. and 2. element of exp. infinitive series is only little faster: prob_open=dt*b/1000)
prob_open=1exp(dt*a/1000) :(/1000 since dt is in ms and rate beta in 1/s)
FROM ii=1 TO N_close_merk {
if (scop_random()<= prob_open) { :scop_random uniform between 0 and 1
N_open=N_open+1
}
}
:deactivation (all open channels have the chance to close with the probability prob_close depending on dt and the closing rate beta(v))
prob_close=1exp(dt*b/1000)
FROM ii=1 TO N_open_merk {
if (scop_random()<= prob_close) {
N_open=N_open1
}
}
}
