function [k] = kin(V,A,B)
%KIN The kinetics of the channels
% [k] = kin(V,A,B)
%
% X:
% X(1) Ril
% X(2) nKs_i
% X(3) pNap
% X(4) Vr
% X(5) Nna
%
% default: [21 11 0 -84 1000]
% model:
% E GN GI A B X0
k.V = V;
for n = 1:length(V)
k.m0(n) = m0(V(n),A,B);
k.h0(n) = h0(V(n),A,B);
k.p0(n) = p0(V(n),A,B);
k.n0(n) = n0(V(n),A,B);
k.s0(n) = s0(V(n),A,B);
end
for n = 1:length(V)
k.m_tau(n) = m_tau(V(n),A,B);
k.h_tau(n) = h_tau(V(n),A,B);
k.p_tau(n) = p_tau(V(n),A,B);
k.n_tau(n) = n_tau(V(n),A,B);
k.s_tau(n) = s_tau(V(n),A,B);
end
function [x] = type1(E,A,B,C)
x = A*(E-B)/(1 - exp((B-E)/C));
return
function [x] = type2(E,A,B,C)
x = A*(B-E)/(1 - exp((E-B)/C));
return
function [x] = type3(E,A,B,C)
x = A./(1+exp((B-E)/C));
return
function [x] = m0(E,A,B)
alpha = type1(E,A(1,1),A(1,2),A(1,3));
beta = type2(E,B(1,1),B(1,2),B(1,3));
x = alpha/(alpha+beta);
return
function [x] = h0(E,A,B)
alpha = type2(E,A(2,1),A(2,2),A(2,3));
beta = type3(E,B(2,1),B(2,2),B(2,3));
x = alpha/(alpha+beta);
return
function [x] = p0(E,A,B)
alpha = type1(E,A(3,1),A(3,2),A(3,3));
beta = type2(E,B(3,1),B(3,2),B(3,3));
x = alpha/(alpha+beta);
return
function [x] = n0(E,A,B)
alpha = type1(E,A(4,1),A(4,2),A(4,3));
beta = type2(E,B(4,1),B(4,2),B(4,3));
x = alpha/(alpha+beta);
return
function [x] = s0(E,A,B)
alpha = type1(E,A(5,1),A(5,2),A(5,3));
beta = type2(E,B(5,1),B(5,2),B(5,3));
x = alpha/(alpha+beta);
return
function [x] = m_tau(E,A,B)
alpha = type1(E,A(1,1),A(1,2),A(1,3));
beta = type2(E,B(1,1),B(1,2),B(1,3));
x = 1/(alpha+beta);
return
function [x] = p_tau(E,A,B)
alpha = type2(E,A(2,1),A(2,2),A(2,3));
beta = type3(E,B(2,1),B(2,2),B(2,3));
x = 1/(alpha+beta);
return
function [x] = h_tau(E,A,B)
alpha = type1(E,A(3,1),A(3,2),A(3,3));
beta = type2(E,B(3,1),B(3,2),B(3,3));
x = 1/(alpha+beta);
return
function [x] = n_tau(E,A,B)
alpha = type1(E,A(4,1),A(4,2),A(4,3));
beta = type2(E,B(4,1),B(4,2),B(4,3));
x = 1/(alpha+beta);
return
function [x] = s_tau(E,A,B)
alpha = type1(E,A(5,1),A(5,2),A(5,3));
beta = type2(E,B(5,1),B(5,2),B(5,3));
x = 1/(alpha+beta);
return
function [I] = Iion_n(E,m,h,p,n,s,eNa,eK,gNaf,gNap,gKs,gKf)
iNaf = gNaf*(m^3)*h*(E-eNa);
iNap = gNap*(p^3)*(E-eNa);
iKs = gKs*s*(E-eK);
iKf = gKf*(n^4)*(E-eK);
I = iNaf + iNap + iKs + iKf;
return
function [I] = Iion_i(E,m,h,s,eNa,eK,gNaf,gKs,gL,eL)
iNaf = gNaf*(m^3)*h*(E-eNa);
iKs = gKs*s*(E-eK);
iL = gL*(E-eL);
I = iNaf + iKs + iL;
return