function [varargout] = STN_Otsuka(varargin)
%1='m','h','alfam','alfah','betam','betah'
%2= V[1:#node]
%3 (for m&h, old mgate & hgate have to be supplied
%4 = dt
persistent q10;
action=varargin{1};
switch action
case 'Initial'
model=[];%remove the old model
%-----------------------
model.name='STN_Otsuka';
%-----------------------
model.gate{1} ='m';
model.gate{2} ='h';
model.gate{3} ='n';
model.gate{4} ='a';
model.gate{5} ='b';
model.gate{6} ='c';
model.gate{7} ='d1';
model.gate{8} ='d2';
model.gate{9} ='p';
model.gate{10}='q';
model.gate{11}='r';
%-----------------------
model.I{1}.name='Na';
model.I{1}.G=49; %(kOhm-Cm^2)^-1
model.I{1}.E=60; %(mV)
model.I{1}.gate=[1 3;
2 1]; %gate1^3.gate2^1
model.I{2}.name='K';
model.I{2}.G=57; %(kOhm-Cm^2)^-1
model.I{2}.E=-90; %(mV)
model.I{2}.gate=[3 4]; %gate3^4
model.I{3}.name='A';
model.I{3}.G=5; %(kOhm-Cm^2)^-1
model.I{3}.E=-90; %(mV)
model.I{3}.gate=[4 2;
5 1];
model.I{4}.name='L';
model.I{4}.G=49; %(kOhm-Cm^2)^-1
model.I{4}.E=55; %(mV)
model.I{4}.gate=[6 2;
7 1;
8 1];
model.I{5}.name='T';
model.I{5}.G=49; %(kOhm-Cm^2)^-1
model.I{5}.E=55; %(mV)
model.I{5}.gate=[ 9 2;
10 1];
model.I{6}.name='CaK';
model.I{6}.G=49; %(kOhm-Cm^2)^-1
model.I{6}.E=55; %(mV)
model.I{6}.gate=[11 2];
model.I{7}.name='l';
model.I{7}.G=0.3;
model.I{7}.E=-49.4001;
model.I{7}.gate=[];
%-----------------------
%optional
model.vini=-60;
model.temperature=6;
%-----------------------
varargout{1}=model;
case 'setting'
%Setting is called every calculation
q=3;
q10=q^((varargin{2}-6.3)/10);
case 'm'
%v=varargin{2};
%gate=varargin{3};
%dt=varargin{4};
varargout{1}=Gate_Trap(varargin{3},varargin{4},STN_Otsuka('m_alfa',varargin{2}),STN_Otsuka('m_beta',varargin{2}));
case 'm_alfa'
%v=varargin{2};
varargout{1}= -0.1*q10*(varargin{2}+35)./( exp(-(varargin{2}+35)/10) -1 );
case 'm_beta'
%v=varargin{2};
varargout{1}=4*q10*exp( -(varargin{2}+60)/18 );
case 'h'
%v=varargin{2};
%gate=varargin{3};
%dt=varargin{4};
varargout{1}=Gate_Trap(varargin{3},varargin{4},STN_Otsuka('h_alfa',varargin{2}),STN_Otsuka('h_beta',varargin{2}));
case 'h_alfa'
%v=varargin{2};
varargout{1}=0.07*q10*exp( -(varargin{2}+60)/20);
case 'h_beta'
%v=varargin{2};
varargout{1}=q10./( exp(-(varargin{2}+30)/10) +1 );
case 'n'
%v=varargin{2};
%gate=varargin{3};
%dt=varargin{4};
varargout{1}=Gate_Trap(varargin{3},varargin{4},STN_Otsuka('n_alfa',varargin{2}),STN_Otsuka('n_beta',varargin{2}));
case 'n_alfa'
%v=varargin{2};
varargout{1}= -0.01*q10*(varargin{2}+50)./( exp( -(varargin{2}+50)/10 ) - 1 );
case 'n_beta'
%v=varargin{2};
varargout{1}=0.125*q10*exp( -(varargin{2}+60)/80);
otherwise
disp(':(')
end