yamadachan.g.txt
Click here to get the file
Size
7.3 kB
-
File type
text/plain
File contents
//genesis
/* FILE INFORMATION
** tabulated implementation of bsg cell voltage and Ca-dependent
** channels.
** Implemented in Neurokit format by : Upinder S. Bhalla.
**
** Source : Yamada, Koch, and Adams
** Methods in Neuronal Modeling, MIT press, ed Koch and Segev.
**
** This file depends on functions and constants defined in library.g
*/
// CONSTANTS
float V_OFFSET = 0.0
float VKTAU_OFFSET = 0.0
float VKMINF_OFFSET = 0.02
float ECA = 0.070
float ENa = 0.050
float EK = -0.07
/********************************************************************
** Fast Na Current
********************************************************************/
function make_Na_bsg_yka
if (({exists Na_bsg_yka}))
return
end
create tabchannel Na_bsg_yka
setfield Na_bsg_yka Ek {ENa} Gbar {1200.0*{SOMA_A}} Ik 0 Gk 0 \
Xpower 2 Ypower 1 Zpower 0
setupalpha Na_bsg_yka X {-360e3*(0.033 - V_OFFSET)} -360e3 \
-1.0 {0.033 - V_OFFSET} -0.003 {4.0e5*(0.042 - V_OFFSET)} \
4.0e5 -1.0 {0.042 - V_OFFSET} 0.020
setupalpha Na_bsg_yka Y {1e5*(0.055 - V_OFFSET)} 1.0e5 -1.0 \
{0.055 - V_OFFSET} 0.006 4500.0 0.0 1.0 {-V_OFFSET} -0.010
end
/********************************************************************
** Fast Ca Current
********************************************************************/
function make_Ca_bsg_yka
if (({exists Ca_bsg_yka}))
return
end
int ndivs, i
float x, dx, y
create vdep_channel Ca_bsg_yka
setfield Ca_bsg_yka Ek {ECA} gbar {200*{SOMA_A}}
create tabgate Ca_bsg_yka/mgate
call Ca_bsg_yka/mgate TABCREATE alpha 100 -0.2 0.1
call Ca_bsg_yka/mgate TABCREATE beta 100 -0.2 0.1
x = {getfield Ca_bsg_yka/mgate alpha->xmin}
dx = {getfield Ca_bsg_yka/mgate alpha->dx}
ndivs = {getfield Ca_bsg_yka/mgate alpha->xdivs}
V_OFFSET = -0.065 // Mit definitions
for (i = 0; i <= ndivs; i = i + 1)
if (x < -0.032)
setfield Ca_bsg_yka/mgate alpha->table[{i}] 0.0
y = ({exp {(x + 0.006 - V_OFFSET)/0.016}} + {exp {-(x + 0.006 - V_OFFSET)/0.016}})/7.8e-3
setfield Ca_bsg_yka/mgate beta->table[{i}] {y}
else
y = ({exp {(x + 0.006 - V_OFFSET)/0.016}} + {exp {-(x + 0.006 - V_OFFSET)/0.016}})/(7.8e-3*(1.0 + {exp {-(x - 0.003 - V_OFFSET)/0.008}}))
setfield Ca_bsg_yka/mgate alpha->table[{i}] {y}
y = ({exp {(x + 0.006 - V_OFFSET)/0.016}} + {exp {-(x + 0.006 - V_OFFSET)/0.016}})/7.8e-3*(1.0 - 1.0/(1.0 + {exp {-(x - 0.003 - V_OFFSET)/0.008}}))
setfield Ca_bsg_yka/mgate beta->table[{i}] {y}
end
x = x + dx
end
create table Ca_bsg_yka/hgate
call Ca_bsg_yka/hgate TABCREATE 100 0.0 1.0
x = {getfield Ca_bsg_yka/hgate table->xmin}
dx = {getfield Ca_bsg_yka/hgate table->dx}
ndivs = {getfield Ca_bsg_yka/hgate table->xdivs}
for (i = 0; i <= ndivs; i = i + 1)
y = 0.01/(0.01 + x)
setfield Ca_bsg_yka/hgate table->table[{i}] {y}
x = x + dx
end
create table Ca_bsg_yka/nernst
call Ca_bsg_yka/nernst TABCREATE 1000 0.00005 0.01
x = {getfield Ca_bsg_yka/nernst table->xmin}
dx = {getfield Ca_bsg_yka/nernst table->dx}
ndivs = {getfield Ca_bsg_yka/nernst table->xdivs}
for (i = 0; i <= ndivs; i = i + 1)
y = 12.5e-3*{log {4.0/x}}
setfield Ca_bsg_yka/nernst table->table[{i}] {y}
x = x + dx
end
/*
create Ca_concen Ca_bsg_yka/conc
set Ca_bsg_yka/conc \
tau 0.00001 \ // sec
B 5.2e-6 \ // Moles per coulomb, later scaled to conc
Ca_base 1.0e-4 // Moles per cubic m
*/
/* Send messages to and from conc, which is not on Ca_bsg_yka */
addfield Ca_bsg_yka addmsg1
addfield Ca_bsg_yka addmsg2
addfield Ca_bsg_yka addmsg3
addfield Ca_bsg_yka addmsg4
setfield Ca_bsg_yka \
addmsg1 ". ../Ca_bsg_conc I_Ca Ik" \
addmsg2 "../Ca_bsg_conc nernst INPUT Ca" \
addmsg3 "../Ca_bsg_conc hgate INPUT Ca" \
addmsg4 ".. mgate VOLTAGE Vm"
/*
addmsg Ca_bsg_yka Ca_bsg_yka/conc I_Ca Ik
addmsg Ca_bsg_yka/conc Ca_bsg_yka/nernst INPUT Ca
addmsg Ca_bsg_yka/conc Ca_bsg_yka/hgate INPUT Ca
*/
addmsg Ca_bsg_yka/nernst Ca_bsg_yka EK output
addmsg Ca_bsg_yka/hgate Ca_bsg_yka MULTGATE output 1
addmsg Ca_bsg_yka/mgate Ca_bsg_yka MULTGATE m 1
end
function make_Ca_bsg_conc
if (({exists Ca_bsg_conc}))
return
end
create Ca_concen Ca_bsg_conc
setfield Ca_bsg_conc \
tau 0.00001 \ // sec
B 5.2e-6 \ // Moles per coulomb, later scaled to conc
Ca_base 1.0e-4 // Moles per cubic m
end
/********************************************************************
** Transient outward K current
********************************************************************/
function make_KA_bsg_yka
if (({exists KA_bsg_yka}))
return
end
create tabchannel KA_bsg_yka
setfield KA_bsg_yka Ek {EK} Gbar {1200.0*{SOMA_A}} Ik 0 Gk 0 \
Xpower 1 Ypower 1 Zpower 0
setuptau KA_bsg_yka X 1.38e-3 0.0 1.0 -1.0e3 1.0 1.0 \
0.0 1.0 {0.042 - V_OFFSET} -0.013
setuptau KA_bsg_yka Y 0.150 0.0 1.0 -1.0e3 1.0 1.0 0.0 \
1.0 {0.110 - V_OFFSET} 0.018
end
/********************************************************************
** Non-inactivating Muscarinic K current
********************************************************************/
function make_KM_bsg_yka
if (({exists KM_bsg_yka}))
return
end
int i
float x, dx, y
create tabchannel KM_bsg_yka
setfield KM_bsg_yka Ek {EK} Gbar {1200.0*{SOMA_A}} Ik 0 Gk 0 \
Xpower 1 Ypower 0 Zpower 0
call KM_bsg_yka TABCREATE X 49 -0.1 0.1
x = -0.1
dx = 0.2/49.0
for (i = 0; i <= 49; i = i + 1)
y = 1.0/(3.3*({exp {(x + 0.035 - V_OFFSET)/0.04}}) + {exp {-(x + 0.035 - V_OFFSET)/0.02}})
setfield KM_bsg_yka X_A->table[{i}] {y}
y = 1.0/(1.0 + {exp {-(x + 0.035 - V_OFFSET)/0.01}})
setfield KM_bsg_yka X_B->table[{i}] {y}
x = x + dx
end
tweaktau KM_bsg_yka X
setfield KM_bsg_yka X_A->calc_mode 0 X_B->calc_mode 0
call KM_bsg_yka TABFILL X 3000 0
end
/********************************************************************
** Delayed rectifying K current
********************************************************************/
function make_K_bsg_yka
if (({exists K_bsg_yka}))
return
end
int i
float x, dx, y
float a, b
create tabchannel K_bsg_yka
setfield K_bsg_yka Ek {EK} Gbar 1.17e-6 Ik 0 Gk 0 Xpower 2 Ypower 1 \
Zpower 0
call K_bsg_yka TABCREATE X 49 -0.1 0.1
x = -0.1
dx = 0.2/49.0
for (i = 0; i <= 49; i = i + 1)
a = -4.7e3*(x + 0.012 - VKTAU_OFFSET)/({exp {(x + 0.012 - VKTAU_OFFSET)/-0.012}} - 1.0)
b = 1.0e3*{exp {-(x + 0.147 - VKTAU_OFFSET)/0.030}}
setfield K_bsg_yka X_A->table[{i}] {1.0/(a + b)}
a = -4.7e3*(x + 0.012 - VKMINF_OFFSET)/({exp {(x + 0.012 - VKMINF_OFFSET)/-0.012}} - 1.0)
b = 1.0e3*{exp {-(x + 0.147 - VKMINF_OFFSET)/0.030}}
setfield K_bsg_yka X_B->table[{i}] {a/(a + b)}
x = x + dx
end
tweaktau K_bsg_yka X
setfield K_bsg_yka X_A->calc_mode 0 X_B->calc_mode 0
call K_bsg_yka TABFILL X 3000 0
call K_bsg_yka TABCREATE Y 49 -0.1 0.1
x = -0.1
dx = 0.2/49.0
for (i = 0; i <= 49; i = i + 1)
if (x < -0.025)
setfield K_bsg_yka Y_A->table[{i}] 6.0
else
setfield K_bsg_yka Y_A->table[{i}] 0.050
end
y = 1.0 + {exp {(x + 0.025 - V_OFFSET)/0.004}}
setfield K_bsg_yka Y_B->table[{i}] {1.0/y}
x = x + dx
end
tweaktau K_bsg_yka Y
setfield K_bsg_yka Y_A->calc_mode 0 Y_B->calc_mode 0
call K_bsg_yka TABFILL Y 3000 0
end
/********************************************************************/