// Potassium channel from original HH model
// Voltage clamp simulations with non-stationary noise analysis
// UNcoupled activation particles (2-state independent particles),
// Linaro et al. (Plos Comput Biol 7:e1001102 (2011)) algorithm for channel noise
// Steady state approximation of variables in the stochastic terms
// See "StochHH_K2 F1 Vclamp noise.sci" for more comments
stacksize('max')
nsim=200;
NK=300;
Tstop=6; dt=0.001; //ms
//Iamp=10;
Vhold=-90;
Vtest=70;
rand('normal')
tic()
points = round(Tstop/dt)
p=1;
Norec = zeros(points,nsim);
v = Vhold*ones(1,nsim);
alpha_n=0.01*(v+55)./(1-exp(-(v+55)/10));
beta_n=0.125*exp(-(v+65)/80);
n=ones(1,nsim)./(1+beta_n./alpha_n);
v = Vtest*ones(1,nsim);
alpha_n=0.01*(v+55)./(1-exp(-(v+55)/10));
beta_n=0.125*exp(-(v+65)/80);
nss=alpha_n./(alpha_n+beta_n);
tn=(1)./(alpha_n+beta_n);
ChiK=0;
for t = dt:dt:Tstop
Norec(p,:) = NK*(n.^4 +sum(ChiK,1));
p=p+1;
n=n+dt*(alpha_n.*(1-n)-beta_n.*n);
Sign = sqrt([4*nss.^7 .*(1-nss);
6*nss.^6 .*(1-nss)^2;
4*nss.^5 .*(1-nss)^3;
nss.^4 .*(1-nss).^4]./NK);
Taun = [tn;
tn/2;
tn/3;
tn/4];
ChiK = ChiK + dt*(-ChiK + Sign.*sqrt(2*Taun/dt).*rand(4,nsim))./Taun;
end
time=toc()
printf("time = %g\n",time);
scf(0);
clf
plot(dt:dt:Tstop,Norec)
scf(1);
clf
plot(dt:dt:Tstop,[mean(Norec,2),variance(Norec,2)])
scf(2);
clf
plot(mean(Norec,2),variance(Norec,2))