// This program was developed by // Yue Dai // Dept of Physiology // University of Manitoba // Winnipeg, Manitoba // Canada R3E 3J7 // // Upgraded on Feb. 16, 2001 include variables.g //****************** Channels in Initial Segment (IS) ******************* //======================================================================== // IS: Tabchannel IS_Na cat cell channel (from Traub 1977) //======================================================================== function make_IS_Na if ({exists IS_Na}) return end create tabchannel IS_Na setfield ^ \ Ek {ENA} \ // V Gbar { IS_GNa * IS_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 3 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha IS_Na X \ {1e6*(4e-3 + 0.4*EREST_ACT - 0.4 * IS_m_shift)}\ //alpha_A -0.4e6 \ //alpha_B -1.0 \ //alpha_C {-10e-3 - EREST_ACT + IS_m_shift }\ //alpha_D -0.005 \ //alpha_F {1e6 *(-14e-3 - 0.4*EREST_ACT + 0.4*IS_m_shift) }\ //Beta_A 0.4e6 \ //Beta_B -1.0 \ //Beta_C {-0.035 - EREST_ACT + IS_m_shift } \ //Beta_D 0.005 //Beta_F setupalpha IS_Na Y 280.0 \ //alpha_A 0.0 \ //alpha_B 0.0 \ //alpha_C {-0.030 - EREST_ACT + IS_h_shift}\ //alpha_D 0.020 \ //alpha_F 4.0e3 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {-0.030 - EREST_ACT + IS_h_shift }\ //Beta_D -1.0e-2 //Beta_F end //======================================================================== // IS: Tabchannel IS_K(DR) Cat cell channel (from Traub 1977) //======================================================================== function make_IS_K_DR if ({exists IS_K_DR}) return end create tabchannel IS_K_DR setfield ^ \ Ek {EK} \ // V Gbar {IS_GK_DR*IS_A} \ // S Ik 0 \ // A Gk 0 \ // S Xpower 4 \ Ypower 0 \ Zpower 0 setupalpha IS_K_DR X \ {1e6*(0.2e-3 + 0.02*EREST_ACT - 0.02*IS_n_shift)}\ // alpha_A -0.02e6 \ // alpha_B -1.0 \ // alpha_C {-0.010 - EREST_ACT + IS_n_shift }\ // alpha_D -1.0e-2 \ // alpha_F 250 \ // Beta_A 0.0 \ // Beta_B 0.0 \ // Beta_C {0.0 - EREST_ACT + IS_n_shift } \ // Beta_D 0.080 // Beta_F end //======================================================================== // IS: Tabchannel K(AHP) Cat cell channel from Traub (1977), NOT Use ! //======================================================================== function make_IS_AHP if ({exists IS_K_AHP}) return end create tabchannel IS_K_AHP setfield ^ \ Ek {EK} \ // V Gbar { IS_GK_AHP * IS_A } \ // S (org =50) Ik 0 \ // A Gk 0 \ // S Xpower 2 \ Ypower 0 \ Zpower 0 setupalpha K_AHP X {3.5*1e3} \ // alpha_A 0.0 \ // alpha_B 1.0 \ // alpha_C {-1.0*(0.055 + EREST_ACT)} \ // alpha_D -0.004 \ // alpha_F {0.006*1e3} \ // Beta_A 0.0 \ // Beta_B 0.0 \ // Beta_C { 0.0 - EREST_ACT} \ // Beta_D 1e20 // Beta_F //Jones' dara for bata: 0.015e3 0.0 -1.0 {0.050 - EREST_ACT} -1e-6// end // =================== Conductancs in Soma ===================== //======================================================================== // soma: Tabchannel Na cat cell channel (from Traub (1977)) //======================================================================== function make_Na if ({exists Na}) return end create tabchannel Na setfield ^ \ Ek {ENA} \ // V Gbar {sm_GNa * SOMA_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 3 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha Na X \ {1e6*(7e-3 + 0.4*EREST_ACT - 0.4 * m_shift)}\ //alpha_A -0.4e6 \ //alpha_B -1.0 \ //alpha_C {-17.5e-3 - EREST_ACT + m_shift }\ //alpha_D -0.005 \ //alpha_F {1e6 *(-18e-3 - 0.4*EREST_ACT + 0.4*m_shift) }\ //Beta_A 0.4e6 \ //Beta_B -1.0 \ //Beta_C {-0.045 - EREST_ACT + m_shift } \ //Beta_D 0.005 //Beta_F setupalpha Na Y 280.0 \ //alpha_A 0.0 \ //alpha_B 0.0 \ //alpha_C {-0.025 - EREST_ACT + h_shift}\ //alpha_D 0.020 \ //alpha_F 4.0e3 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {-0.040 - EREST_ACT + h_shift }\ //Beta_D -1.0e-2 //Beta_F end //======================================================================== // soma: Tabchannel K(DR) Cat cell channel (from Traub 1977) //======================================================================== function make_K_DR if ({exists K_DR}) return end create tabchannel K_DR setfield ^ \ Ek {EK} \ // V Gbar {sm_GK_DR*SOMA_A} \ // (org=350) S Ik 0 \ // A Gk 0 \ // S Xpower 4 \ Ypower 0 \ Zpower 0 setupalpha K_DR X \ {1e6*(0.4e-3 + 0.02*EREST_ACT - 0.02*n_shift)}\ // alpha_A -0.02e6 \ // alpha_B -1.0 \ // alpha_C {-0.020 - EREST_ACT + n_shift }\ // alpha_D -1.0e-2 \ // alpha_F 250 \ // Beta_A 0.0 \ // Beta_B 0.0 \ // Beta_C {-0.01 - EREST_ACT + n_shift } \ // Beta_D 0.080 // Beta_F end // ****************************************************************** //======================================================================== // Soma: Tabchannel K(AHP) Cat cell channel from Traub (1977) i.e. Iks //======================================================================== function make_AHP if ({exists K_AHP}) return end create tabchannel K_AHP setfield ^ \ Ek {EK} \ // V Gbar { sm_GK_AHP * SOMA_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 2 \ Ypower 0 \ Zpower 0 setupalpha K_AHP X {3.5*1e3} \ // alpha_A 0.0 \ // alpha_B 1.0 \ // alpha_C {-1.0*(0.055 + EREST_ACT)} \ // alpha_D -0.004 \ // alpha_F {0.02*1e3} \ // Beta_A !!! 0.0 \ // Beta_B 0.0 \ // Beta_C { 0.0 - EREST_ACT} \ // Beta_D 1e20 // Beta_F //Jones' dara for bata: 0.015e3 0.0 -1.0 {0.050 - EREST_ACT} -1e-6// // which doesn't work// end // ********************************************************************** //======================================================================== // soma: Tabchannel K(A) current cat cell channel from KE Jones //======================================================================== function make_K_A if ({exists K_A}) return end create tabchannel K_A setfield ^ \ Ek {EK} \ // V Gbar { sm_GK_A * SOMA_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 4 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha K_A X \ {-1e6*(2.048e-3 +0.032 * Am_shift)}\ //alpha_A -0.032e6 \ //alpha_B -1.0 \ //alpha_C {64e-3 + Am_shift }\ //alpha_D -0.006 \ //alpha_F 0.203e3 \ //Beta_A 0 \ //Beta_B 0 \ //Beta_C {0.040 +Am_shift }\ //Beta_D 0.024 //Beta_F setupalpha K_A Y 50.0 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C {86e-3 + Ah_shift}\ //alpha_D 0.010 \ //alpha_F 50.0 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {86e-3 + Ah_shift }\ //Beta_D -0.010 //Beta_F end //======================================================================== // soma: Tabchannel I_h current //======================================================================== function make_H if ({exists H}) return end create tabchannel H setfield ^ \ Ek {Eh} \ // V Gbar { sm_Gh * SOMA_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 1 \ // X=m Ypower 0 \ // Y=h Zpower 0 setupalpha H X \ 60 \ //alpha_A 0 \ //alpha_B 1.0 \ //alpha_C { 0.075 + Hm_shift }\ //alpha_D 0.005 \ //alpha_F 60 \ //Beta_A 0 \ //Beta_B 1.0 \ //Beta_C { 0.075 + Hm_shift } \ //Beta_D -0.005 //Beta_F end // ========== Ca & K(AHP) channels in Soma ============================== // ======================= T-type Ca++ channel =========================== // From J. Tegner et al., (1997) J. Neurophysiol. 77: 1795 - 1812 function make_Ca_T if ({exists Ca_T}) return end create tabchannel Ca_T setfield ^ \ Ek {ECA} \ // V Gbar { sm_GCa_T * SOMA_A }\ // S Ik 0 \ // A Gk 0 \ // S Xpower 3 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha Ca_T X \ {-1160 - 20000*mT_shift}\ //alpha_A -20000.0 \ //alpha_B -1.0 \ //alpha_C {0.058 + mT_shift }\ //alpha_D -0.0045 \ //alpha_F {3050 + 50000*mT_shift}\ //Beta_A 50000.0 \ //Beta_B -1.0 \ //Beta_C {0.061 + mT_shift } \ //Beta_D 0.0045 //Beta_F setupalpha Ca_T Y \ {6.3 + 100*hT_shift}\ //alpha_A 100.0 \ //alpha_B -1.0 \ //alpha_C {0.063 + hT_shift}\ //alpha_D 0.0078 \ //alpha_F 30.0 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {0.061 + hT_shift }\ //Beta_D -0.0048 //Beta_F end // =========== Ca channels (N and L type) & Ca-dependent K(AHP) =========== //======================================================================== // soma: Ca_N channel: N type chennal from V. Booth 1997 //======================================================================== function make_Ca_N if ({exists Ca_N}) return end create tabchannel Ca_N setfield ^ \ Ek {ECA} \ // V Gbar { sm_GCa_N * SOMA_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 2 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha Ca_N X \ 250 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C { 0.030 + mN_shift }\ //alpha_D -0.005 \ //alpha_F 250 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C { 0.030 + mN_shift } \ //Beta_D 0.005 //Beta_F setupalpha Ca_N Y \ 25 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C { 0.045 + hN_shift }\ //alpha_D 0.005 \ //alpha_F 25 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C { 0.045 + hN_shift }\ //Beta_D -0.005 //Beta_F end //======================================================================== // soma: Ca_L channel: L type chennal from V. Booth 1997 //======================================================================== function make_Ca_L if ({exists Ca_L}) return end create tabchannel Ca_L setfield ^ \ Ek {ECA} \ // V Gbar { sm_GCa_L * SOMA_A }\ // S Ik 0 \ // A Gk 0 \ // S Xpower 1 \ // X=m Ypower 0 \ // Y=h Zpower 0 setupalpha Ca_L X \ 25 \ //alpha_A 0 \ //alpha_B 1.0 \ //alpha_C { 0.040 + mL_shift }\ //alpha_D -0.007 \ //alpha_F 25 \ //Beta_A 0 \ //Beta_B 1.0 \ //Beta_C { 0.040 + mL_shift } \ //Beta_D 0.007 //Beta_F end //======================================================================== // soma: Ca conc //======================================================================== function make_Ca_conc if ({exists Ca_conc}) return end create Ca_concen Ca_conc setfield Ca_conc \ tau 0.01333 \ B 17.402e12 \ Ca_base 0 addfield Ca_conc addmsg1 setfield Ca_conc \ addmsg1 "../Ca_N . I_Ca Ik" end //======================================================================== // soma: Tabulated Ca-dependent K AHP Channel //======================================================================== function make_K_AHP if ({exists K_AHP}) return end create tabchannel K_AHP setfield ^ \ Ek {EK} \ // V Gbar { sm_GK_AHP * SOMA_A } \// S Ik 0 \ // A Gk 0 \ // S Xpower 0 \ Ypower 0 \ Zpower 1 float xmin = 0.0 float xmax = 1000.0 int xdivs = 50 call K_AHP TABCREATE Z {xdivs} {xmin} {xmax} int i float x,dx,y dx = (xmax - xmin)/xdivs x = xmin for (i = 0 ; i <= {xdivs} ; i = i + 1) y = x setfield K_AHP Z_A->table[{i}] {y} setfield K_AHP Z_B->table[{i}] {y + Kd} x = x + dx end addfield K_AHP addmsg1 setfield K_AHP \ addmsg1 "../Ca_conc . CONCEN Ca" end //************************************************************************* // =================== Conductancs in Dendrite ===================== //======================================================================== // dendrite: Tabchannel Na cat cell channel (from Traub (1977)) //======================================================================== function make_D_Na if ({exists D_Na}) return end create tabchannel D_Na setfield ^ \ Ek {ENA} \ // V Gbar { pd_GNa * dend_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 3 \ // Ypower 1 \ // Zpower 0 setupalpha D_Na X \ {1e6*(7e-3 + 0.4*EREST_ACT - 0.4 * D_m_shift)}\ //alpha_A -0.4e6 \ //alpha_B -1.0 \ //alpha_C {-17.5e-3 - EREST_ACT + D_m_shift }\ //alpha_D -0.005 \ //alpha_F {1e6 *(-18e-3 - 0.4*EREST_ACT + 0.4*D_m_shift) }\ //Beta_A 0.4e6 \ //Beta_B -1.0 \ //Beta_C {-0.045 - EREST_ACT + D_m_shift } \ //Beta_D 0.005 //Beta_F setupalpha D_Na Y 280.0 \ //alpha_A 0.0 \ //alpha_B 0.0 \ //alpha_C {-0.025 - EREST_ACT + D_h_shift}\ //alpha_D 0.020 \ //alpha_F 4.0e3 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {-0.040 - EREST_ACT + D_h_shift }\ //Beta_D -1.0e-2 //Beta_F end //======================================================================== // dendrite: Tabchannel K(DR) Cat cell channel (from Traub 1977) //======================================================================== function make_D_K_DR if ({exists D_K_DR}) return end create tabchannel D_K_DR setfield ^ \ Ek {EK} \ // V Gbar {pd_GK_DR*dend_A} \ // S Ik 0 \ // A Gk 0 \ // S Xpower 4 \ Ypower 0 \ Zpower 0 setupalpha D_K_DR X \ {1e6*(0.4e-3 + 0.02*EREST_ACT - 0.02*D_n_shift)}\ // alpha_A -0.02e6 \ // alpha_B -1.0 \ // alpha_C {-0.020 - EREST_ACT + D_n_shift }\ // alpha_D -1.0e-2 \ // alpha_F 250 \ // Beta_A 0.0 \ // Beta_B 0.0 \ // Beta_C {-0.01 - EREST_ACT + D_n_shift } \ // Beta_D 0.080 // Beta_F end //======================================================================== // dendrite: Tabchannel K(A) current cat cell channel from KE Jones //======================================================================== function make_D_K_A if ({exists D_K_A}) return end create tabchannel D_K_A setfield ^ \ Ek {EK} \ // V Gbar { pd_GK_A * dend_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 4 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha D_K_A X \ {-1e6*(2.048e-3 +0.032 * D_Am_shift)}\ //alpha_A -0.032e6 \ //alpha_B -1.0 \ //alpha_C {64e-3 + D_Am_shift }\ //alpha_D -0.006 \ //alpha_F 0.203e3 \ //Beta_A 0 \ //Beta_B 0 \ //Beta_C {0.040 +D_Am_shift }\ //Beta_D 0.024 //Beta_F setupalpha D_K_A Y 50.0 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C {86e-3 + D_Ah_shift}\ //alpha_D 0.010 \ //alpha_F 50.0 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {86e-3 + D_Ah_shift }\ //Beta_D -0.010 //Beta_F end //======================================================================== // dendrite: Tabchannel I_h current //======================================================================== function make_D_H if ({exists D_H}) return end create tabchannel D_H setfield ^ \ Ek {Eh} \ // V Gbar { pd_Gh * dend_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 1 \ // X=m Ypower 0 \ // Y=h Zpower 0 setupalpha D_H X \ 60 \ //alpha_A 0 \ //alpha_B 1.0 \ //alpha_C { 0.075 + D_Hm_shift }\ //alpha_D 0.005 \ //alpha_F 60 \ //Beta_A 0 \ //Beta_B 1.0 \ //Beta_C { 0.075 + D_Hm_shift } \ //Beta_D -0.005 //Beta_F end // ======================= T-type Ca++ channel =========================== // From J. Tegner et al., (1997) J. Neurophysiol. 77: 1795 - 1812 function make_D_Ca_T if ({exists D_Ca_T}) return end create tabchannel D_Ca_T setfield ^ \ Ek {ECA} \ // V Gbar { pd_GCa_T * dend_A }\ // S Ik 0 \ // A Gk 0 \ // S Xpower 3 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha D_Ca_T X \ {-1160 - 20000*D_mT_shift}\ //alpha_A -20000.0 \ //alpha_B -1.0 \ //alpha_C {0.058 + D_mT_shift }\ //alpha_D -0.0045 \ //alpha_F {3050 + 50000*D_mT_shift}\ //Beta_A 50000.0 \ //Beta_B -1.0 \ //Beta_C {0.061 + D_mT_shift } \ //Beta_D 0.0045 //Beta_F setupalpha D_Ca_T Y \ {6.3 + 100*D_hT_shift}\ //alpha_A 100.0 \ //alpha_B -1.0 \ //alpha_C {0.063 + D_hT_shift}\ //alpha_D 0.0078 \ //alpha_F 30.0 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C {0.061 + D_hT_shift }\ //Beta_D -0.0048 //Beta_F end // ================= Ca & AHP channels in Dendrite compartment ========= // =========== Ca channels (N and L type) & Ca-dependent K(AHP) =========== //======================================================================== // dendrite: Ca_N channel: N type chennal from V. Booth 1997 //======================================================================== function make_D_Ca_N if ({exists D_Ca_N}) return end create tabchannel D_Ca_N setfield ^ \ Ek {ECA} \ // V Gbar { pd_GCa_N * dend_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 2 \ // X=m Ypower 1 \ // Y=h Zpower 0 setupalpha D_Ca_N X \ 250 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C { 0.030 + D_mN_shift }\ //alpha_D -0.005 \ //alpha_F 250 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C { 0.030 + D_mN_shift } \ //Beta_D 0.005 //Beta_F setupalpha D_Ca_N Y \ 25 \ //alpha_A 0.0 \ //alpha_B 1.0 \ //alpha_C { 0.045 + D_hN_shift }\ //alpha_D 0.005 \ //alpha_F 25 \ //Beta_A 0.0 \ //Beta_B 1.0 \ //Beta_C { 0.045 + D_hN_shift }\ //Beta_D -0.005 //Beta_F end //======================================================================== // dendrite: Ca_L channel: L type chennal from V. Booth 1997 //======================================================================== function make_D_Ca_L if ({exists D_Ca_L}) return end create tabchannel D_Ca_L setfield ^ \ Ek {ECA} \ // V Gbar { pd_GCa_L * dend_A } \ // S Ik 0 \ // A Gk 0 \ // S Xpower 1 \ // X=m Ypower 0 \ // Y=h Zpower 0 setupalpha D_Ca_L X \ 25 \ //alpha_A 0 \ //alpha_B 1.0 \ //alpha_C { 0.040 + D_mL_shift }\ //alpha_D -0.007 \ //alpha_F 25 \ //Beta_A 0 \ //Beta_B 1.0 \ //Beta_C { 0.040 + D_mL_shift } \ //Beta_D 0.007 //Beta_F end //======================================================================== // dendrite" Ca conc //======================================================================== function make_D_Ca_conc if ({exists D_Ca_conc}) return end create Ca_concen D_Ca_conc setfield D_Ca_conc \ tau 0.01333 \ // sec B 17.402e12 \ // Curr to conc for soma Ca_base 0 // org =0.0 addfield D_Ca_conc addmsg1 setfield D_Ca_conc \ addmsg1 "../D_Ca_N . I_Ca Ik" end //======================================================================== // dendrite: Tabulated Ca-dependent K AHP Channel //======================================================================== function make_D_K_AHP if ({exists D_K_AHP}) return end create tabchannel D_K_AHP setfield ^ \ Ek {EK} \ // V Gbar { pd_GK_AHP * dend_A }\ // S Ik 0 \ // A Gk 0 \ // S Xpower 0 \ Ypower 0 \ Zpower 1 float xmin = 0.0 float xmax = 1000.0 int xdivs = 50 call D_K_AHP TABCREATE Z {xdivs} {xmin} {xmax} int i float x,dx,y dx = (xmax - xmin)/xdivs x = xmin for (i = 0 ; i <= {xdivs} ; i = i + 1) y = 0.1*x setfield D_K_AHP Z_A->table[{i}] {y} setfield D_K_AHP Z_B->table[{i}] {y + Kd} x = x + dx end setfield D_K_AHP Z_A->calc_mode 0 Z_B->calc_mode 0 call D_K_AHP TABFILL Z 3000 0 addfield D_K_AHP addmsg1 setfield D_K_AHP \ addmsg1 "../D_Ca_conc . CONCEN Ca" end //================================= leakage channel ===================== function make_K_leak (path, gleak) str path // float gleak if ({exists /{path}/K_leak}) return end create leakage {path}/K_leak setfield ^ \ Ek {EK} \ // V Gk {gleak}\ // S activation {gleak} // S end