//genesis - thalchan.g /************************************************************************** ** ** THALCHAN : channel definition file ** ** By Pratik Mukherjee, Aug. 1991 ** ** All units are in SI (Meters Kilograms Seconds Amps). While this ** does result in lots of powers of 10 in the parameters, it prevents ** the chaos of interconversions when relating parameters of different ** units. ** ***************************************************************************/ //======================================================================== // ACTIVE SQUID NA CHANNEL (TABULATED) // A.L.Hodgkin and A.F.Huxley, J.Physiol(Lond) 117, pp 500-544 (1952) //======================================================================== // This channel forcibly sets EREST_ACT to -0.045 V to compute V0 function make_Na_squid_tab float tempvar if (({exists Na_squid_tab})) return end tempvar = {EREST_ACT} EREST_ACT = -0.045 create tabchannel Na_squid_tab setfield Na_squid_tab Ek {ENA_ACT} Gbar {1.2e3*{SOMA_A}} \ Xpower 3.0 Ypower 1.0 Zpower 0.0 setupalpha Na_squid_tab X {0.1e6*(0.025 + {EREST_ACT})} \ -0.1e6 -1.0 {-0.025 - {EREST_ACT}} -0.010 4.0e3 0.0 0.0 \ {0.0 - {EREST_ACT}} 18.0e-3 setupalpha Na_squid_tab Y 70.0 0.0 0.0 {0.0 - {EREST_ACT}} \ 20.0e-3 1.0e3 0.0 1.0 {-0.030 - {EREST_ACT}} -10.0e-3 EREST_ACT = tempvar end //======================================================================== // SEJNOWSKI CORTICAL FAST NA CHANNEL (TABULATED) // Lytton & Sejnowski (1991), J. Neurophysiology, in press //======================================================================== // This channel assumes an EREST_ACT of -0.062 V for published kinetics function setup_tabchan_bg(chan, table, z, gamma, V0, A0, B0, temp, tmin) str chan, table float z, gamma, V0, A0, B0, temp, tmin float AA, AB, AC, AD, AF, BA, BB, BC, BD, BF float T = temp + 273.15 int i str tabB = (table) @ "_B" AB = 0 /* convert from Borg-Graham to Hodgkin-Huxley format */ BB = 0 AC = 0 BC = 0 AA = A0 BA = B0 AD = (-1.0*V0) BD = (-1.0*V0) AF = (-1.0*{R}*T/(z*gamma*{F})) BF = (-1.0*{R}*T/(-1*z*(1 - gamma)*{F})) setupalpha {chan} {table} {AA} {AB} {AC} {AD} {AF} {BA} {BB} \ {BC} {BD} {BF} end function make_Na_sej_tab if (({exists Na_sej_tab})) return end create tabchannel Na_sej_tab setfield Na_sej_tab Ek {ENA} Gbar {1.737e3*{SOMA_A}} Ik 0 Gk 0 \ Xpower 3 Ypower 1 Zpower 0 setup_tabchan_bg Na_sej_tab X 3.3 0.7 {0.0275 + {EREST_ACT}} \ 4.2e3 4.2e3 37.0 5.0e-5 setup_tabchan_bg Na_sej_tab Y -3.0 0.27 {0.017 + {EREST_ACT}} \ 90.0 90.0 37.0 2.5e-4 end //---------------------------------------------------------------------------- // ACTIVE SQUID K CHANNEL (TABULATED) // A.L.Hodgkin and A.F.Huxley, J.Physiol(Lond) 117, pp 500-544 (1952) //---------------------------------------------------------------------------- function make_K_squid_tab if (({exists K_squid_tab})) return end create tabchannel K_squid_tab setfield K_squid_tab Ek {EK} Gbar {360.0*{SOMA_A}} Xpower 4.0 \ Ypower 0.0 Zpower 0.0 setup_tabchan K_squid_tab X {10.0e3*(0.010 + {EREST_ACT})} \ -10.0e3 -1.0 {-10.0e-3 - {EREST_ACT}} -10.0e-3 125.0 0.0 0.0 \ {-1.0*{EREST_ACT}} 80.0e-3 end //---------------------------------------------------------------------------- // DELAYED RECTIFIER K CURRENT // McCormick et. al. (1991), Single Neuron Computation, Academic Press //---------------------------------------------------------------------------- // This channel forcibly sets EREST_ACT to -0.085 V to compute V0 // Kinetics at -0.085 V match published kinetics function make_K_lgn_hh float tempvar if (({exists K_lgn_hh})) return end tempvar = {EREST_ACT} // McCormick's EREST EREST_ACT = -0.085 create hh_channel K_lgn_hh setfield K_lgn_hh Ek {EK} Gbar {180.0*{SOMA_A}} Xpower 4.0 \ Ypower 0.0 X_alpha_FORM {LINOID} X_alpha_A -9.6e4 \ X_alpha_B -5.0e-3 X_alpha_V0 {{EREST_ACT} + 0.040} \ X_beta_FORM {EXPONENTIAL} X_beta_A 1.5e3 X_beta_B -4.0e-2 \ X_beta_V0 {{EREST_ACT} + 0.035} EREST_ACT = tempvar end //---------------------------------------------------------------------------- // DELAYED RECTIFIER K CURRENT (TABULATED) // McCormick et. al. (1991), Single Neuron Computation, Academic Press //---------------------------------------------------------------------------- // This channel forcibly sets EREST_ACT to -0.085 V to compute V0 // Kinetics at -0.085 V match published kinetics function make_K_lgn_tab float tempvar if (({exists K_lgn_tab})) return end tempvar = {EREST_ACT} EREST_ACT = -0.085 // McCormick's EREST create tabchannel K_lgn_tab setfield K_lgn_tab Ek {EK} Gbar {180.0*{SOMA_A}} Xpower 4.0 \ Ypower 0.0 Zpower 0.0 setup_tabchan K_lgn_tab X 9.6e4*{{EREST_ACT} + 0.040} -9.6e4 \ -1.0 {-{EREST_ACT} - 0.040} -5.0e-3 1.5e3 0.0 0.0 \ {-{EREST_ACT} - 0.035} 4.0e-2 EREST_ACT = tempvar end //======================================================================== // LOW-THRESHOLD CA (T) CHANNEL // McCormick (1991), Single Neuron Computation, Academic Press //======================================================================== // This channel forcibly sets EREST_ACT to -0.085 V to compute V0 // Kinetics at -0.085 V match published kinetics function make_Ca_lgn_hh float tempvar if (({exists Ca_lgn_hh})) return end tempvar = {EREST_ACT} // McCormick's EREST EREST_ACT = -0.085 create hh_channel Ca_lgn_hh setfield Ca_lgn_hh Ek {ECA} Gbar {379.1*{SOMA_A}} Xpower 2.0 \ Ypower 1.0 X_alpha_FORM {LINOID} X_alpha_A -7.5e4 \ X_alpha_B -7.5e-3 X_alpha_V0 {{EREST_ACT} + 0.035} \ X_beta_FORM {LINOID} X_beta_A 1.01e4 X_beta_B 4.4e-3 \ X_beta_V0 {{EREST_ACT} + 0.034} Y_alpha_FORM {LINOID} \ Y_alpha_A 344.0 Y_alpha_B 4.45e-3 \ Y_alpha_V0 {{EREST_ACT} + 0.006} Y_beta_FORM {LINOID} \ Y_beta_A -309.3 Y_beta_B -4.0e-3 Y_beta_V0 {EREST_ACT} EREST_ACT = tempvar end //======================================================================== // SEJNOWSKI CA (T) CHANNEL (TABULATED) // Lytton & Sejnowski (1991), J. Neurophysiology, in press //======================================================================== // This channel assumes an EREST_ACT of -0.055 V for published kinetics function make_Ca_sej_tab if (({exists Ca_sej_tab})) return end create tabchannel Ca_sej_tab setfield Ca_sej_tab Ek {ECA} Gbar {10.0*{SOMA_A}} Ik 0 Gk 0 Xpower 3 \ Ypower 1 Zpower 0 setup_tabchan_bg Ca_sej_tab X 3.43 0.5 {-0.008 + {EREST_ACT}} \ 60.0 60.0 23.0 2.5e-3 setup_tabchan_bg Ca_sej_tab Y -4.24 0.75 {-0.0285 + {EREST_ACT}} \ 8.0 8.0 23.0 18.0e-3 end //======================================================================== // HYPERPOLARIZATION-ACTIVATED K (H) CHANNEL (TABULATED) // McCormick (1991), Single Neuron Computation, Academic Press //======================================================================== function setup_Atable3_H(gate, table, xdivs, xmin, xmax) str gate, table int xdivs float xmin, xmax int i float x, dx, y dx = xdivs dx = (xmax - xmin)/dx x = xmin for (i = 0; i <= (xdivs); i = i + 1) y = 1.0/(({exp {-6.26 - 76.7*x}}) + ({exp {7.13 + 107.9*x}})) setfield {gate} {table}->table[{i}] {y} x = x + dx end end function setup_Btable3_H(gate, table, xdivs, xmin, xmax) str gate, table int xdivs float xmin, xmax int i float x, dx, y dx = xdivs dx = (xmax - xmin)/dx x = xmin for (i = 0; i <= (xdivs); i = i + 1) y = (x + 0.069)/7.1e-3 y = 1.0/(1.0 + ({exp {y}})) setfield {gate} {table}->table[{i}] {y} x = x + dx end end /* Sets up a tabchan with special non-hh params, with the non-interp option in ** a table of 3000 entries. ** This version uses parameters for tau and minf instead ** of alpha and beta */ function setup_tabchan_tau_H(chan, table) str chan, table str tabA = (table) @ "_A" str tabB = (table) @ "_B" call {chan} TABCREATE {table} 49 -0.1 0.05 setup_Atable3_H {chan} {tabA} 49 -0.1 0.05 setup_Btable3_H {chan} {tabB} 49 -0.1 0.05 tweaktau {chan} {table} setfield {chan} {tabA}->calc_mode 0 {tabB}->calc_mode 0 call {chan} TABFILL {table} 3000 0 end function make_H_lgn_tab if (({exists H_lgn_tab})) return end create tabchannel H_lgn_tab setfield H_lgn_tab Ek {EH} Gbar {360.0*{SOMA_A}} Gk 0 Ik 0 \ Xpower 2 Ypower 0 Zpower 0 setup_tab_tau_H H_lgn_tab X end //========================================================================== // K LEAK CHANNEL // Pratik Mukherjee //========================================================================== // This channel is mainly used to regulate the resting membrane potential function make_K_leak if (({exists K_leak})) return end create leakage K_leak setfield K_leak Ek {EK} activation 0.0 Gk {Gleak} Ik 0.0 \ inject 0.0 end