// genesis
/* Channels used in:
'Exploring parameter space in detailed single neuron models:
simulations of the mitral and granule cells of the olfactory bulb'
Upinder S. Bhalla and James M. Bower
Journal of Neurophysiology Vol 69 No. 6, June 1993 pp 1948-1965
*/
/* FILE INFORMATION
** Some Ca channels for the purkinje cell
** L Channel data from :
** T. Hirano and S. Hagiwara Pflugers A 413(5) pp463-469, 1989
**
** T Channel data from :
** Kaneda, Wakamori, Ito and Akaike J Neuroph 63(5), pp1046-1051 1990
**
** Implemented by Eric De Schutter - January 1991
** Converted to NEUROKIT format by Upinder S. Bhalla. Feb 1991
** This file depends on functions and constants defined in defaults.g
*/
// CONSTANTS
float ECa = 0.07 // (I-current)
float ENa = 0.045 // (I-current)
float SOMA_A = 1e-9 // sq m
/* FILE INFORMATION
** Rat Na channel, cloned, in oocyte expression system.
** Data from :
** Stuhmer, Methfessel, Sakmann, Noda an Numa, Eur Biophys J 1987
** 14:131-138
**
** Expts carred out at 16 deg Celsius.
**
** Implemented in tabchan format by Upinder S. Bhalla March 1991
** This file depends on functions and constants defined in defaults.g
*/
//========================================================================
// Adjusted LCa channel
//========================================================================
function make_LCa3_mit_usb
if ({exists LCa3_mit_usb})
return
end
float ECa = 0.07 // (I-current)
create tabchannel LCa3_mit_usb
setfield LCa3_mit_usb Ek {ECa} Gbar {1200.0*SOMA_A} Ik 0 Gk 0 \
Xpower 1 Ypower 1 Zpower 0
setupalpha LCa3_mit_usb X 7500.0 0.0 1.0 -0.013 -0.007 1650.0 \
0.0 1.0 -0.014 0.004
setupalpha LCa3_mit_usb Y 6.8 0.0 1.0 0.030 0.012 60.0 0.0 \
1.0 0.0 -0.011
end
/*********************************************************************
** I-Current (Na)
*********************************************************************/
function make_Na_rat_smsnn// Na current
float ENa = 0.045 // (I-current)
float x, y, dx
int i
if ({exists Na_rat_smsnn})
return
end
create tabchannel Na_rat_smsnn
setfield Na_rat_smsnn Ek {ENa} Gbar {1200.0*SOMA_A} Ik 0 Gk 0 \
Xpower 3 Ypower 1 Zpower 0
call Na_rat_smsnn TABCREATE X 30 -0.1 0.05
setfield Na_rat_smsnn \
X_A->table[0] 1.0e-4 \ // -0.100 Volts
X_A->table[1] 1.0e-4 \ // -0.095 Volts
X_A->table[2] 1.2e-4 \ // -0.090 Volts
X_A->table[3] 1.45e-4 \ // -0.085 Volts
X_A->table[4] 1.67e-4 \ // -0.080 Volts
X_A->table[5] 2.03e-4 \ // -0.075 Volts
X_A->table[6] 2.47e-4 \ // -0.070 Volts
X_A->table[7] 3.20e-4 \ // -0.065 Volts
X_A->table[8] 3.63e-4 \ // -0.060 Volts
X_A->table[9] 4.94e-4 \ // -0.055 Volts
X_A->table[10] 4.07e-4 \ // -0.050 Volts
X_A->table[11] 4.00e-4 \ // -0.045 Volts
X_A->table[12] 3.56e-4 \ // -0.040 Volts
X_A->table[13] 3.49e-4 \
X_A->table[14] 3.12e-4 \ // -0.030
X_A->table[15] 2.83e-4 \
X_A->table[16] 2.62e-4 \ // -0.020
X_A->table[17] 2.25e-4 \
X_A->table[18] 2.03e-4 \ // -0.010
X_A->table[19] 1.74e-4 \
X_A->table[20] 1.67e-4 \ // 0.0
X_A->table[21] 1.31e-4 \
X_A->table[22] 1.23e-4 \ // 0.010
X_A->table[23] 1.16e-4 \
X_A->table[24] 1.02e-4 \ // 0.020
X_A->table[25] 0.87e-4 \
X_A->table[26] 0.73e-4 \ // 0.030
X_A->table[27] 0.80e-4 \
X_A->table[28] 0.80e-4 \ // 0.040
X_A->table[29] 0.80e-4 \
X_A->table[30] 0.80e-4 // 0.050
x = -0.1
dx = 0.15/30.0
for (i = 0; i <= 30; i = i + 1)
y = 1.0/(1.0 + {exp {-(x + 0.041)/0.0086}})
setfield Na_rat_smsnn X_B->table[{i}] {y}
x = x + dx
end
tweaktau Na_rat_smsnn X
setfield Na_rat_smsnn X_A->calc_mode 0 X_B->calc_mode 0
call Na_rat_smsnn TABFILL X 3000 0
call Na_rat_smsnn TABCREATE Y 30 -0.1 0.05
// settab2const(Na_rat_smsnn,Y_A,0,10,6.4e-3)
//-0.1 thru -0.05=>0.0
setfield Na_rat_smsnn \
Y_A->table[0] 0.9e-3 \ // -0.100 Volts
Y_A->table[1] 1.0e-3 \ // -0.095 Volts
Y_A->table[2] 1.2e-3 \ // -0.090 Volts
Y_A->table[3] 1.45e-3 \ // -0.085 Volts
Y_A->table[4] 1.7e-3 \ // -0.080 Volts
Y_A->table[5] 2.05e-3 \ // -0.075 Volts
Y_A->table[6] 2.55e-3 \ // -0.070 Volts
Y_A->table[7] 3.2e-3 \ // -0.065 Volts
Y_A->table[8] 4.0e-3 \ // -0.060 Volts
Y_A->table[9] 5.0e-3 \ // -0.055 Volts
Y_A->table[10] 6.49e-3 \ // -0.050 Volts
Y_A->table[11] 6.88e-3 \ // -0.045 Volts
Y_A->table[12] 4.07e-3 \ // -0.040 Volts
Y_A->table[13] 2.71e-3 \
Y_A->table[14] 2.03e-3 \ // -0.030
Y_A->table[15] 1.55e-3 \
Y_A->table[16] 1.26e-3 \ // -0.020
Y_A->table[17] 1.07e-3 \
Y_A->table[18] 0.87e-3 \ // -0.010
Y_A->table[19] 0.78e-3 \
Y_A->table[20] 0.68e-3 \ // 0.0
Y_A->table[21] 0.63e-3 \
Y_A->table[22] 0.58e-3 \ // 0.010
Y_A->table[23] 0.53e-3 \
Y_A->table[24] 0.48e-3 \ // 0.020
Y_A->table[25] 0.48e-3 \
Y_A->table[26] 0.48e-3 \ // 0.030
Y_A->table[27] 0.48e-3 \
Y_A->table[28] 0.48e-3 \ // 0.040
Y_A->table[29] 0.43e-3 \
Y_A->table[30] 0.39e-3 // 0.050
x = -0.1
dx = 0.15/30.0
for (i = 0; i <= 30; i = i + 1)
y = 1.0/(1.0 + {exp {(x + 0.064)/0.0102}})
setfield Na_rat_smsnn Y_B->table[{i}] {y}
x = x + dx
end
tweaktau Na_rat_smsnn Y
setfield Na_rat_smsnn Y_A->calc_mode 0 Y_B->calc_mode 0
call Na_rat_smsnn TABFILL Y 3000 0
end
function make_Na2_rat_smsnn
if (({exists Na2_rat_smsnn}))
return
end
float EK = -0.07
int i, xdivs, di
float temp
float ox = 0.01
if (({exists Na_rat_smsnn}))
move Na_rat_smsnn Na2_rat_smsnn
make_Na_rat_smsnn
else
make_Na_rat_smsnn
move Na_rat_smsnn Na2_rat_smsnn
end
/* Upi change 5 Apr 1992 : functionally the same but this
** works with the hsolver */
xdivs = {getfield Na2_rat_smsnn X_A->xdivs}
temp = {getfield Na2_rat_smsnn X_A->invdx}
temp = ox*temp
di = temp
for (i = xdivs; i >= di; i = i - 1)
temp = {getfield Na2_rat_smsnn X_A->table[{i - di}]}
setfield Na2_rat_smsnn X_A->table[{i}] {temp}
temp = {getfield Na2_rat_smsnn X_B->table[{i - di}]}
setfield Na2_rat_smsnn X_B->table[{i}] {temp}
end
xdivs = {getfield Na2_rat_smsnn Y_A->xdivs}
temp = {getfield Na2_rat_smsnn Y_A->invdx}
temp = ox*temp
di = temp
for (i = xdivs; i >= di; i = i - 1)
temp = {getfield Na2_rat_smsnn Y_A->table[{i - di}]}
setfield Na2_rat_smsnn Y_A->table[{i}] {temp}
temp = {getfield Na2_rat_smsnn Y_B->table[{i - di}]}
setfield Na2_rat_smsnn Y_B->table[{i}] {temp}
end
setfield Na2_rat_smsnn X_A->sy 0.5 X_B->sy 0.5 Y_A->sy 0.5 \
Y_B->sy 0.5
if (0)
// A change below -- UPI Aug3
setfield Na2_rat_smsnn X_A->ox 0.01 X_B->ox 0.01 Y_A->ox 0.01 \
Y_B->ox 0.01 X_A->sy 0.5 X_B->sy 0.5 Y_A->sy 0.5 Y_B->sy 0.5
end
end
/********************************************************************
** Transient outward K current - see yamadachan.g
********************************************************************/
// CONSTANTS
float V_OFFSET = 0.0
float EK = -0.07
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
** Modified from yamadachan.g by Upinder S. Bhalla - the
** minf curve has been steepened.
**
********************************************************************/
float VKTAU_OFFSET = 0.00
float VKMINF_OFFSET = 0.00
function make_KM_bsg_upi
if (({exists KM_bsg_upi}))
return
end
int i
float x, dx, y, b
create tabchannel KM_bsg_upi
setfield KM_bsg_upi Ek {EK} Gbar {1200.0*SOMA_A} Ik 0 Gk 0 Xpower 1 \
Ypower 0 Zpower 0
/*
** Replaced for hsolve compatibility on 5 Apr 1992
**
call KM_bsg_upi TABCREATE X 49 -0.1 0.1
x = -0.1
dx = 0.2/49.0
*/
call KM_bsg_upi TABCREATE X 49 -0.1 0.05
x = -0.1
dx = 0.15/49.0
// UPI Aug3
for (i = 0; i <= 49; i = i + 1)
y = 1.0/(3.3*({exp {(x + 0.035 - VKTAU_OFFSET)/0.04}}) + {exp {-(x + 0.035 - VKTAU_OFFSET)/0.02}})
setfield KM_bsg_upi X_A->table[{i}] {y}
y = 1.0/(1.0 + {exp {-(x + 0.035 - VKMINF_OFFSET)/0.005}})
setfield KM_bsg_upi X_B->table[{i}] {y}
x = x + dx
end
tweaktau KM_bsg_upi X
setfield KM_bsg_upi X_A->calc_mode 0 X_B->calc_mode 0
call KM_bsg_upi TABFILL X 3000 0
end
/**********************************************************************
** Mitral K current
** Heavily adapted from :
** K current activation from Thompson, J. Physiol 265, 465 (1977)
** (Tritonia (LPl 2 and LPl 3 cells)
** Inactivation from RW Aldrich, PA Getting, and SH Thompson,
** J. Physiol, 291, 507 (1979)
**
**********************************************************************/
function make_K_mit_usb// K-current
if ({exists K_mit_usb})
return
end
float EK = -0.07
create tabchannel K_mit_usb
setfield K_mit_usb Ek {EK} Gbar {1200*SOMA_A} Ik 0 Gk 0 Xpower 2 \
Ypower 1 Zpower 0
call K_mit_usb TABCREATE X 30 -0.100 0.050
settab2const K_mit_usb X_A 0 12 0.0 //-0.1 thru -0.045=>0.0
setfield K_mit_usb X_A->table[13] 0.00 \
X_A->table[14] 2.87 \ // -0.030
X_A->table[15] 4.68 \
X_A->table[16] 7.46 \ // -0.020
X_A->table[17] 10.07 \
X_A->table[18] 14.27 \ // -0.010
X_A->table[19] 17.87 \
X_A->table[20] 22.9 \ // 0.0
X_A->table[21] 33.6 \
X_A->table[22] 49.3 \ // 0.010
X_A->table[23] 65.6 \
X_A->table[24] 82.0 \ // 0.020
X_A->table[25] 110.0 \
X_A->table[26] 147.1 \ // 0.030
X_A->table[27] 147.1 \
X_A->table[28] 147.1 \ // 0.040
X_A->table[29] 147.1 \
X_A->table[30] 147.1 // 0.050
setfield K_mit_usb \
X_B->table[0] 36.0 \ // -0.100 Volts
X_B->table[1] 34.4 \ // -0.095 Volts
X_B->table[2] 32.8 \ // -0.090 Volts
X_B->table[3] 31.2 \ // -0.085 Volts
X_B->table[4] 29.6 \ // -0.080 Volts
X_B->table[5] 28.0 \ // -0.075 Volts
X_B->table[6] 26.3 \ // -0.070 Volts
X_B->table[7] 24.7 \ // -0.065 Volts
X_B->table[8] 23.1 \ // -0.060 Volts
X_B->table[9] 21.5 \ // -0.055 Volts
X_B->table[10] 19.9 \ // -0.050 Volts
X_B->table[11] 18.3 \ // -0.045 Volts
X_B->table[12] 16.6 \ // -0.040 Volts
X_B->table[13] 15.4 \
X_B->table[14] 13.5 \ // -0.030
X_B->table[15] 13.2 \
X_B->table[16] 11.9 \ // -0.020
X_B->table[17] 11.5 \
X_B->table[18] 10.75 \ // -0.010
X_B->table[19] 9.30 \
X_B->table[20] 8.30 \ // 0.00
X_B->table[21] 6.00 \
X_B->table[22] 5.10 \ // 0.010
X_B->table[23] 4.80 \
X_B->table[24] 3.20 \ // 0.020
X_B->table[25] 1.60 \
X_B->table[26] 0.00 \ // 0.030
X_B->table[27] 0.00 \
X_B->table[28] 0.00 \ // 0.040
X_B->table[29] 0.00 \
X_B->table[30] 0.00 // 0.050
/* Setting the calc_mode to NO_INTERP for speed */
setfield K_mit_usb X_A->calc_mode 0 X_B->calc_mode 0
/* tweaking the tables for the tabchan calculation */
tweakalpha K_mit_usb X
/* Filling the tables using B-SPLINE interpolation */
call K_mit_usb TABFILL X 3000 0
call K_mit_usb TABCREATE Y 30 -0.100 0.050
settab2const K_mit_usb Y_A 0 11 1.0 //-0.1 thru -0.035 => 1.0
setfield K_mit_usb \
Y_A->table[12] 1.00 \ // -0.040 Volts
Y_A->table[13] 0.97 \ //
Y_A->table[14] 0.94 \ // -0.030 Volts
Y_A->table[15] 0.88 \
Y_A->table[16] 0.75 \ // -0.020
Y_A->table[17] 0.61 \
Y_A->table[18] 0.43 \ // -0.010
Y_A->table[19] 0.305 \
Y_A->table[20] 0.220 \ // 0.00
Y_A->table[21] 0.175 \
Y_A->table[22] 0.155 \ // 0.010
Y_A->table[23] 0.143 \
Y_A->table[24] 0.138 \ // 0.020
Y_A->table[25] 0.137 \
Y_A->table[26] 0.136 \ // 0.030
Y_A->table[27] 0.135 \
Y_A->table[28] 0.135 \ // 0.040
Y_A->table[29] 0.135 \
Y_A->table[30] 0.135 // 0.050
settab2const K_mit_usb Y_B 0 11 0.0 //-0.1 thru -0.045 => 0.0
setfield K_mit_usb \
Y_B->table[12] 0.0 \ // -0.040 Volts
Y_B->table[13] 0.03 \ //
Y_B->table[14] 0.06 \ // -0.030 Volts
Y_B->table[15] 0.12 \
Y_B->table[16] 0.25 \ // -0.020
Y_B->table[17] 0.39 \
Y_B->table[18] 0.57 \ // -0.010
Y_B->table[19] 0.695 \
Y_B->table[20] 0.78 \ // 0.00
Y_B->table[21] 0.825 \
Y_B->table[22] 0.845 \ // 0.010
Y_B->table[23] 0.857 \
Y_B->table[24] 0.862 \ // 0.020
Y_B->table[25] 0.863 \
Y_B->table[26] 0.864 \ // 0.030
Y_B->table[27] 0.865 \
Y_B->table[28] 0.865 \ // 0.040
Y_B->table[29] 0.865 \
Y_B->table[30] 0.865 // 0.050
/* Setting the calc_mode to NO_INTERP for speed */
setfield K_mit_usb Y_A->calc_mode 0 Y_B->calc_mode 0
/* tweaking the tables for the tabchan calculation */
tweakalpha K_mit_usb Y
/* Filling the tables using B-SPLINE interpolation */
call K_mit_usb TABFILL Y 3000 0
setfield K_mit_usb X_A->sy 5.0 X_B->sy 5.0 Y_A->sy 5.0 \
Y_B->sy 5.0 Ek {EK}
end
function make_K2_mit_usb
if (({exists K2_mit_usb}))
return
end
float EK = -0.07
if (({exists K_mit_usb}))
move K_mit_usb K2_mit_usb
make_K_mit_usb
else
make_K_mit_usb
move K_mit_usb K2_mit_usb
end
setfield K2_mit_usb X_A->sy 20.0 X_B->sy 20.0 Y_A->sy 20.0 \
Y_B->sy 20.0 Ek {EK}
end
function make_K_slow_usb
if (({exists K_slow_usb}))
return
end
float EK = -0.07
if (({exists K_mit_usb}))
move K_mit_usb K_slow_usb
make_K_mit_usb
else
make_K_mit_usb
move K_mit_usb K_slow_usb
end
setfield K_slow_usb X_A->sy 1.0 X_B->sy 1.0 Y_A->sy 1.0 \
Y_B->sy 1.0
end
//========================================================================
// Tabchan Na Mitral cell channel
//========================================================================
function make_Na_mit_usb
if (({exists Na_mit_usb}))
return
end
float THRESH = -0.055 /* offset both for erest and for thresh */
float ENA = 0.045 /* Sodium reversal potl */
create tabchannel Na_mit_usb
setfield ^ \
Ek {ENA} \ // V
Gbar { 1.2e3 * SOMA_A } \ // S
Ik 0 \ // A
Gk 0 \ // S
Xpower 3 \
Ypower 1 \
Zpower 0
setupalpha Na_mit_usb X {320e3*(0.013 + THRESH)} -320e3 -1.0 \
{-1.0*(0.013 + THRESH)} -0.004 {-280e3*(0.040 + THRESH)} \
280e3 -1.0 {-1.0*(0.040 + THRESH)} 5.0e-3
setupalpha Na_mit_usb Y 128.0 0.0 0.0 {-1.0*(0.017 + THRESH)} \
0.018 4.0e3 0.0 1.0 {-1.0*(0.040 + THRESH)} -5.0e-3
end
//========================================================================
function make_Na2_mit_usb
if (({exists Na2_mit_usb}))
return
end
float THRESH = -0.060 /* offset both for erest and for thresh */
float ENA = 0.045 /* Sodium reversal potl */
create tabchannel Na2_mit_usb
setfield ^ \
Ek {ENA} \ // V
Gbar { 1.2e3 * SOMA_A } \ // S
Ik 0 \ // A
Gk 0 \ // S
Xpower 3 \
Ypower 1 \
Zpower 0
setupalpha Na2_mit_usb X {320e3*(0.013 + THRESH)} -320e3 -1.0 \
{-1.0*(0.013 + THRESH)} -0.004 {-280e3*(0.040 + THRESH)} \
280e3 -1.0 {-1.0*(0.040 + THRESH)} 5.0e-3
setupalpha Na2_mit_usb Y 128.0 0.0 0.0 \
{-1.0*(0.017 + THRESH)} 0.018 4.0e3 0.0 1.0 \
{-1.0*(0.040 + THRESH)} -5.0e-3
end
//========================================================================
// CONSTANTS
float EGlu = 0.045
float EGABA_1 = -0.080
float EGABA_2 = -0.080
float SOMA_A = 1e-9
float GGlu = SOMA_A*50
float GGABA_1 = SOMA_A*50
float GGABA_2 = SOMA_A*50
//===================================================================
// SYNAPTIC CHANNELS (Values guessed at)
//===================================================================
function make_glu_mit_usb
if (({exists glu_mit_usb}))
return
end
// for receptor input only
create channelC2 glu_mit_usb
setfield glu_mit_usb \
Ek {EGlu} \
tau1 { 4.0e-3 } \ // sec
tau2 { 4.0e-3 } \ // sec
gmax {GGlu} // Siemens
end
function make_GABA_1_mit_usb
if (({exists GABA_1_mit_usb}))
return
end
create ddsyn GABA_1_mit_usb // for both dd and ax inputs
call GABA_1_mit_usb TABCREATE 10 -0.065 0.05
setfield GABA_1_mit_usb \
Ek { EGABA_1 } \
tau1 { 10.0e-3 } \ // sec
tau2 { 10.0e-3 } \ // sec
gmax {GGABA_1} \ // Siemens
transf->table[0] 0 \ // Setting up the table for
transf->table[1] 0.02 \ // transforming from presyn Vm to
transf->table[2] 0.05 \ // activation.
transf->table[3] 0.1 \
transf->table[4] 0.2 \
transf->table[5] 0.5 \
transf->table[6] 0.8 \
transf->table[7] 0.9 \
transf->table[8] 0.95 \
transf->table[9] 0.98 \
transf->table[10] 1
call GABA_1_mit_usb TABFILL 1000 0
end
function make_GABA_2_mit_usb
if (({exists GABA_2_mit_usb}))
return
end
create ddsyn GABA_2_mit_usb // for both dd and ax inputs
call GABA_2_mit_usb TABCREATE 10 -0.065 0.05
setfield GABA_2_mit_usb \
Ek { EGABA_2 } \
tau1 { 10.0e-3 } \ // sec
tau2 { 10.0e-3 } \ // sec
gmax {GGABA_2} \ // Siemens
transf->table[0] 0 \ // Setting up the table for
transf->table[1] 0.05 \ // transforming from presyn Vm to
transf->table[2] 0.1 \ // activation.
transf->table[3] 0.2 \
transf->table[4] 0.5 \
transf->table[5] 0.7 \
transf->table[6] 0.8 \
transf->table[7] 0.9 \
transf->table[8] 0.95 \
transf->table[9] 0.98 \
transf->table[10] 1
call GABA_2_mit_usb TABFILL 1000 0
end
function make_glu_gran_usb
if (({exists glu_gran_usb}))
return
end
create ddsyn glu_gran_usb // for dd, ax, and centrif inputs
call glu_gran_usb TABCREATE 10 -0.070 0.05
// sec
// sec
// Siemens
// Setting up the table for
// transforming from presyn Vm to
// activation.
setfield glu_gran_usb Ek {EGlu} tau1 {4.0e-3} tau2 {6.0e-3} \
gmax {GGlu} transf->table[0] 0 transf->table[1] 0.05 \
transf->table[2] 0.1 transf->table[3] 0.2 \
transf->table[4] 0.5 transf->table[5] 0.7 \
transf->table[6] 0.8 transf->table[7] 0.9 \
transf->table[8] 0.95 transf->table[9] 0.98 \
transf->table[10] 1
// for dd, ax, and centrif inputs
setfield glu_gran_usb \
Ek {EGlu} \
tau1 { 4.0e-3 } \ // sec
tau2 { 6.0e-3 } \ // sec
gmax {GGlu} \ // Siemens
transf->table[0] 0 \ // Setting up the table for
transf->table[1] 0.05 \ // transforming from presyn Vm to
transf->table[2] 0.1 \ // activation.
transf->table[3] 0.2 \
transf->table[4] 0.5 \
transf->table[5] 0.7 \
transf->table[6] 0.8 \
transf->table[7] 0.9 \
transf->table[8] 0.95 \
transf->table[9] 0.98 \
transf->table[10] 1
call glu_gran_usb TABFILL 1000 0
end
function make_glu_pg_usb
if (({exists glu_pg_usb}))
return
end
create ddsyn glu_pg_usb // for dd, ax, and centrif inputs
call glu_pg_usb TABCREATE 10 -0.070 0.05
setfield glu_pg_usb \
Ek {EGlu} \
tau1 { 4.0e-3 } \ // sec
tau2 { 6.0e-3 } \ // sec
gmax {GGlu} \ // Siemens
transf->table[0] 0 \ // Setting up the table for
transf->table[1] 0.02 \ // transforming from presyn Vm to
transf->table[2] 0.05 \ // activation.
transf->table[3] 0.1 \
transf->table[4] 0.2 \
transf->table[5] 0.5 \
transf->table[6] 0.8 \
transf->table[7] 0.9 \
transf->table[8] 0.95 \
transf->table[9] 0.98 \
transf->table[10] 1
call glu_pg_usb TABFILL 1000 0
end
function make_olf_receptor
if (({exists olf_receptor}))
return
end
float ENa = 0.045 // Volts
create receptor2 olf_receptor
setfield ^ \
Ek {ENa} \
tau1 0.05 \ //sec
tau2 0.1 \ //sec
gmax 5e-8 \ //Siemens
modulation 1 // unitless
end
function make_spike
if (({exists spike}))
return
end
create spikegen spike
setfield spike \
thresh -0.00 \ // V
abs_refract 10e-3 \ // sec
output_amp 1
end
//========================================================================
function make_Kca_mit_usb
if (({exists Kca_mit_usb}))
return
end
float EK = -0.08
create vdep_channel Kca_mit_usb
setfield ^ \
Ek {EK} \ // V
gbar { 360.0 * SOMA_A } \ // S
Ik 0 \ // A
Gk 0 // S
create table Kca_mit_usb/qv
call Kca_mit_usb/qv TABCREATE 100 -0.1 0.1
int i
float x, dx, y
x = -0.1
dx = 0.2/100.0
for (i = 0; i <= 100; i = i + 1)
y = {exp {(x - {EREST_ACT})/0.027}}
setfield Kca_mit_usb/qv table->table[{i}] {y}
x = x + dx
end
create tabgate Kca_mit_usb/qca
setupgate Kca_mit_usb/qca alpha {5.0e5*0.015} \
-5.0e5 -1.0 -0.015.0 -0.0013 -size 1000 -range 0.0 0.01
call Kca_mit_usb/qca TABCREATE beta 1 -1 100
setfield Kca_mit_usb/qca beta->table[0] 50
setfield Kca_mit_usb/qca beta->table[1] 50
addmsg Kca_mit_usb/qv Kca_mit_usb/qca PRD_ALPHA output
addmsg Kca_mit_usb/qca Kca_mit_usb MULTGATE m 1
addfield Kca_mit_usb addmsg1
addfield Kca_mit_usb addmsg2
setfield Kca_mit_usb \
addmsg1 "../Ca_mit_conc qca VOLTAGE Ca" \
addmsg2 ".. qv INPUT Vm"
end
//========================================================================
// Ca conc - mitral cell
//========================================================================
function make_Ca_mit_conc
if (({exists Ca_mit_conc}))
return
end
create Ca_concen Ca_mit_conc
setfield Ca_mit_conc \
tau 0.01 \ // sec
B 5.2e-6 \ // Curr to conc
Ca_base 0.00001
addfield Ca_mit_conc addmsg1
setfield Ca_mit_conc \
addmsg1 "../LCa3_mit_usb . I_Ca Ik"
end