//genesis
// create fast Na channel
function make_NaF
echo creating fast Na channel
int i
float x, dx
float tau, act
if ({exists NaF})
return
end
create tabchannel NaF
setfield NaF Ek {ENa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 1 Zpower 0
// activation
call NaF TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 5.833e-3/({exp {(x - 0.0064)/-0.009}} + {exp {(x + 0.097)/0.017}}) + 2.5e-5
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.045)/-0.007324}})
setfield NaF X_A->table[{i}] {tau}
setfield NaF X_B->table[{i}] {act}
x = x + dx
end
tweaktau NaF X
setfield NaF X_A->calc_mode {tab_calcmode}
setfield NaF X_B->calc_mode {tab_calcmode}
call NaF TABFILL X {tab_xfills} 0
// inactivation
call NaF TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 16.67e-3/({exp {(x - 0.0083)/-0.029}} + {exp {(x + 0.066)/0.009}}) + 2.0e-04
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.042)/0.0059}})
setfield NaF Y_A->table[{i}] {tau}
setfield NaF Y_B->table[{i}] {act}
x = x + dx
end
tweaktau NaF Y
setfield NaF Y_A->calc_mode {tab_calcmode}
setfield NaF Y_B->calc_mode {tab_calcmode}
call NaF TABFILL Y {tab_xfills} 0
end
// create persistent Na channel
function make_NaP
echo creating persistent Na channel
int i
float x, dx
float tau, act
float alpha, beta
if ({exists NaP})
return
end
create tabchannel NaP
setfield NaP Ek {ENa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 1 Zpower 0
// activation
call NaP TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 0.05/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.070)/-0.0041}})
setfield NaP X_A->table[{i}] {tau}
setfield NaP X_B->table[{i}] {act}
x = x + dx
end
tweaktau NaP X
setfield NaP X_A->calc_mode {tab_calcmode}
setfield NaP X_B->calc_mode {tab_calcmode}
call NaP TABFILL X {tab_xfills} 0
// inactivation
call NaP TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 0.25 + 1.75/(1.0 + {exp {(x + 0.065)/-0.008}})
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.080)/0.004}})
setfield NaP Y_A->table[{i}] {tau}
setfield NaP Y_B->table[{i}] {act}
x = x + dx
end
tweaktau NaP Y
setfield NaP Y_A->calc_mode {tab_calcmode}
setfield NaP Y_B->calc_mode {tab_calcmode}
call NaP TABFILL Y {tab_xfills} 0
end
// create fast delayed rectifier Kv3
function make_fKdr
echo creating fast delayed rectifier
int i
float x, dx
float tau, act
if ({exists fKdr})
return
end
create tabchannel fKdr
setfield fKdr Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 4 Ypower 0 Zpower 0
// activation
call fKdr TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 0.0001 + (0.0139/({exp { (-0.040 - x)/-0.012 } } + {exp {-(-0.040 - x)/-0.013 }}))
tau = tau/QDeltaT
act = 1/(1 + {exp { (-0.040 - x)/0.0078 } } )
setfield fKdr X_A->table[{i}] {tau}
setfield fKdr X_B->table[{i}] {act}
x = x + dx
end
tweaktau fKdr X
setfield fKdr X_A->calc_mode {tab_calcmode}
setfield fKdr X_B->calc_mode {tab_calcmode}
call fKdr TABFILL X {tab_xfills} 0
end
// create slow delayed rectifier Kv2
function make_sKdr
echo creating slow delayed rectifier
int i
float x, dx
float tau, act
if ({exists sKdr})
return
end
create tabchannel sKdr
setfield sKdr Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 4 Ypower 0 Zpower 0
// activation
call sKdr TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 5.0e-5 + (0.01495 / ({exp { (-0.050 - x) / -0.02174 } } + {exp {-(-0.050 - x) / -0.01391 }}))
tau = tau/QDeltaT
act = 1 / (1 + {exp { (-0.050 - x) / 0.0091 } } )
setfield sKdr X_A->table[{i}] {tau}
setfield sKdr X_B->table[{i}] {act}
x = x + dx
end
tweaktau sKdr X
setfield sKdr X_A->calc_mode {tab_calcmode}
setfield sKdr X_B->calc_mode {tab_calcmode}
call sKdr TABFILL X {tab_xfills} 0
end
// create small conductance KCa channel
function make_Sk
echo creating small conductance KCa channel
int i
float y, dy
float tau, act
if ({exists Sk})
return
end
create tabchannel Sk
setfield Sk Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 0 Ypower 0 Zpower 1
call Sk TABCREATE Z {tab_ydivs} {tab_ymin} {tab_ymax}
y = {tab_ymin}
dy = ({tab_ymax} - {tab_ymin})/{tab_ydivs}
for (i = 0; i <= {tab_ydivs}; i = i + 1)
if ({y < 0.005})
tau = 0.001 - y*0.1867
else
tau = 6.667e-5
end
tau = tau/QDeltaT
act = {pow {y} {4.0}}/({pow {y} {4.0}} + {pow {0.3e-3} {4.0}})
setfield Sk Z_A->table[{i}] {tau}
setfield Sk Z_B->table[{i}] {act}
y = y + dy
end
tweaktau Sk Z
setfield Sk Z_A->calc_mode {tab_calcmode}
setfield Sk Z_B->calc_mode {tab_calcmode}
call Sk TABFILL Z {tab_xfills} 0
end
// create slow h current
function make_h_slow
echo creating slow h current
int i
float x, dx
float tau, act
if ({exists h_slow})
return
end
create tabchannel h_slow
setfield h_slow Ek {Eh} Gbar {Ginit} Ik 0 Gk 0 Xpower 2 Ypower 0 Zpower 0
// activation
call h_slow TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 0.4
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.080)/0.005}})
setfield h_slow X_A->table[{i}] {tau}
setfield h_slow X_B->table[{i}] {act}
x = x + dx
end
tweaktau h_slow X
setfield h_slow X_A->calc_mode {tab_calcmode}
setfield h_slow X_B->calc_mode {tab_calcmode}
call h_slow TABFILL X {tab_xfills} 0
end
// create low voltage activated calcium channel
function make_CaLVA
echo creating low voltage activated Ca channel
int i
float x, dx
float tau, act
if ({exists CaLVA})
return
end
create tabchannel CaLVA
setfield CaLVA Ek {ECa} Gbar {Ginit} Ik 0 Gk 0 Xpower 2 Ypower 1 Zpower 0
// activation
call CaLVA TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = 0.000204 + 0.333e-3/({exp {(x + 0.131)/-0.0167}} + {exp {(x + 0.0158)/0.0182}})
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.056)/-0.0062}})
setfield CaLVA X_A->table[{i}] {tau}
setfield CaLVA X_B->table[{i}] {act}
x = x + dx
end
tweaktau CaLVA X
setfield CaLVA X_A->calc_mode {tab_calcmode}
setfield CaLVA X_B->calc_mode {tab_calcmode}
call CaLVA TABFILL X {tab_xfills} 0
// inactivation
call CaLVA TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
if(x < -0.081)
tau = 0.333e-3 * {exp {(x + 0.466)/0.0666}}
else
tau = 9.32e-3 + (0.333e-3 * {exp {(x + 0.021)/-0.0105}})
end
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.080)/0.004}})
setfield CaLVA Y_A->table[{i}] {tau}
setfield CaLVA Y_B->table[{i}] {act}
x = x + dx
end
tweaktau CaLVA Y
setfield CaLVA Y_A->calc_mode {tab_calcmode}
setfield CaLVA Y_B->calc_mode {tab_calcmode}
call CaLVA TABFILL Y {tab_xfills} 0
end
// create high voltage activated calcium channel
function make_CaHVA
echo creating high voltage activated Ca channel
int i
float x, dx
float tau, act
float a, b
if ({exists CaHVA})
return
end
create tabchannel CaHVA
setfield CaHVA Ek {ECa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 0 Zpower 0
// activation
call CaHVA TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
a = 31746.03/(1.0 + {exp {-72.0*(x - 0.005)}})
b = 396.825*(x + 0.0089)/({exp {(x + 0.0089)/0.005}} - 1.0)
tau = 1/(a + b)
tau = tau/QDeltaT
act = 1.0/(1.0 + {exp {(x + 0.0345)/-0.009}})
setfield CaHVA X_A->table[{i}] {tau}
setfield CaHVA X_B->table[{i}] {act}
x = x + dx
end
tweaktau CaHVA X
setfield CaHVA X_A->calc_mode {tab_calcmode}
setfield CaHVA X_B->calc_mode {tab_calcmode}
call CaHVA TABFILL X {tab_xfills} 0
end
// create tonic non-selective cation current
function make_TNC
echo creating non specific cation current
int i
float x, dx
float tau, act
if ({exists TNC})
return
end
create tabchannel TNC
setfield TNC Ek {ETNC} Gbar {Ginit} Ik 0 Gk 0 Xpower 1 Ypower 0 Zpower 0
// activation
call TNC TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
tau = {dt}
act = 1.0
setfield TNC X_A->table[{i}] {tau}
setfield TNC X_B->table[{i}] {act}
x = x + dx
end
tweaktau TNC X
setfield TNC X_A->calc_mode {tab_calcmode}
setfield TNC X_B->calc_mode {tab_calcmode}
call TNC TABFILL X {tab_xfills} 0
end
// create Goldman-Hodgkin-Katz element
function make_GHK
echo creating GHK element
if (!{exists GHK})
create tabcurrent GHK
setfield GHK Gindex {VOLT_C1_INDEX} Gbar 0.0
call GHK TABCREATE G_tab {tab_xfills} {tab_xmin} {tab_xmax} \
{tab_xfills} {tab_ymin} {tab_ymax}
end
setupghk GHK 2 {TempC} 0 {CCaO} \
-xsize {tab_xfills} -xrange {tab_xmin} {tab_xmax} \
-ysize {tab_xfills} -yrange {tab_ymin} {tab_ymax}
setfield GHK G_tab->calc_mode {tab_calcmode}
setfield GHK I_tab->calc_mode {tab_calcmode}
end
// create all channels
function make_cn_chans
echo making CN channel library...
make_NaF
make_NaP
make_sKdr
make_fKdr
make_Sk
make_h_slow
make_CaLVA
make_CaHVA
make_TNC
make_GHK
echo done.
end
|