1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
//genesis
/* FILE INFORMATION
** The Traub set of voltage and conc dependent channels
** Implemented by : Upinder S. Bhalla.
** R.D.Traub, Neuroscience Vol 7 No 5 pp 1233-1242 (1982)
**
** This file depends on functions and constants defined in defaults.g
*/
// CONSTANTS
/* hippocampal cell resting potl */
float EREST_ACT = -0.070
float ENA = 0.045
float EK = -0.085
float ECA = 0.070
float SOMA_A = 1e-9 /* Square meters */
//========================================================================
// Tabulated Ca Channel
//========================================================================
function make_Ca_hip_traub
if (({exists Ca_hip_traub}))
return
end
create vdep_channel Ca_hip_traub
setfield ^ Ek {ECA} gbar {1.2e3*SOMA_A} Ik 0 Gk 0
create tabgate Ca_hip_traub/s
/* there is a singularity at x=0, so I hack around that by using
** an odd number of sample points */
setup_table Ca_hip_traub/s alpha 101 {40e3*(0.060 + EREST_ACT)} \
-40e3 -1.0 {-1.0*(0.060 + EREST_ACT)} -0.010
setup_table Ca_hip_traub/s beta 101 {-5e3*(0.045 + EREST_ACT)} \
5e3 -1.0 {-1.0*(0.045 + EREST_ACT)} 10.0e-3
create tabgate Ca_hip_traub/r
call Ca_hip_traub/r TABCREATE alpha 1 -1 1000
setfield Ca_hip_traub/r alpha->table[0] 5.0
setfield Ca_hip_traub/r alpha->table[1] 5.0
setupgate Ca_hip_traub/r beta {25.0*200.0} -25.0 \
-1.0 -200.0 -20.0 -size 1000 -range -1 1000
/*
create Ca_concen Ca_hip_traub/conc
set Ca_hip_traub/conc \
tau 0.01 \ // sec
B {5.2e-6/(SOMA_XA* \
SOMA_L)} \ // Curr to conc
Ca_base 0.0
*/
addmsg Ca_hip_traub/s Ca_hip_traub MULTGATE m 5
addmsg Ca_hip_traub/r Ca_hip_traub MULTGATE m 1
addfield Ca_hip_traub addmsg1
addfield Ca_hip_traub addmsg2
addfield Ca_hip_traub addmsg3
setfield Ca_hip_traub \
addmsg1 "../Ca_mit_conc r VOLTAGE Ca" \
addmsg2 ". ../Ca_mit_conc I_Ca Ik" \
addmsg3 ".. s VOLTAGE Vm"
end
//========================================================================
// Ca conc
//========================================================================
function make_Ca_mit_conc
if (({exists Ca_mit_conc}))
return
end
create Ca_concen Ca_mit_conc
// sec
// Curr to conc
setfield Ca_mit_conc tau 0.01 B 5.2e-6 Ca_base 0.00001
end
//========================================================================
// Tabulated K channel -
//========================================================================
function make_K_hip_traub
if (({exists K_hip_traub}))
return
end
create vdep_channel K_hip_traub
setfield ^ Ek {EK} gbar {360.0*SOMA_A} Ik 0 Gk 0
create tabgate K_hip_traub/n
setup_table K_hip_traub/n alpha 100 {32e3*(0.015 + EREST_ACT)} \
-32e3 -1.0 {-1.0*(0.015 + EREST_ACT)} -0.005
setup_table K_hip_traub/n beta 100 500.0 0.0 0.0 \
{-1.0*(0.010 + EREST_ACT)} 40.0e-3
create table K_hip_traub/ya2
call K_hip_traub/ya2 TABCREATE 100 -0.1 0.1
setup_table3 K_hip_traub/ya2 table 100 -0.1 0.1 2000 0 1 \
{-1.0*(0.085 + EREST_ACT)} -0.010
create tabgate K_hip_traub/y
setup_table K_hip_traub/y alpha 100 28 0 0 \
{-1.0*(0.015 + EREST_ACT)} 0.015
setup_table K_hip_traub/y beta 100 400 0 1 \
{-1.0*(0.040 + EREST_ACT)} -0.010
addmsg K_hip_traub/n K_hip_traub MULTGATE m 4
addmsg K_hip_traub/y K_hip_traub MULTGATE m 1
addmsg K_hip_traub/ya2 K_hip_traub/y SUM_ALPHA output
addfield K_hip_traub addmsg1
addfield K_hip_traub addmsg2
addfield K_hip_traub addmsg3
setfield K_hip_traub addmsg1 ".. n VOLTAGE Vm" \
addmsg2 ".. y VOLTAGE Vm" \
addmsg3 ".. ya2 INPUT Vm"
end
//========================================================================
// Tabulated Ca dependent K - channel.
//========================================================================
function make_Kca_hip_traub
if (({exists Kca_hip_traub}))
return
end
create vdep_channel Kca_hip_traub
setfield ^ Ek {EK} gbar {360.0*SOMA_A} Ik 0 Gk 0
create table Kca_hip_traub/qv
call Kca_hip_traub/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_hip_traub/qv table->table[{i}] {y}
x = x + dx
end
create tabgate Kca_hip_traub/qca
setupgate Kca_hip_traub/qca alpha {5.0*200.0} \
-5.0 -1.0 -200.0 -20.0 -size 1000 -range -1 100
call Kca_hip_traub/qca TABCREATE beta 1 -1 100
setfield Kca_hip_traub/qca beta->table[0] 2.0
setfield Kca_hip_traub/qca beta->table[1] 2.0
addmsg Kca_hip_traub/qv Kca_hip_traub/qca PRD_ALPHA output
addmsg Kca_hip_traub/qca Kca_hip_traub MULTGATE m 1
addfield Kca_hip_traub addmsg1
addfield Kca_hip_traub addmsg2
setfield Kca_hip_traub \
addmsg1 "../Ca_mit_conc qca VOLTAGE Ca" \
addmsg2 ".. qv INPUT Vm"
end
//========================================================================
|