// genesis HEchan.g // ****Warning this file although similar to HNchan.g // has been modified by Paul Garcia and is not the same. // filltable.g and constants.g were not modified and are // the same in both HN and HE simulations. // do not use this HEchan.g file in an HN simulation // Last modified: August 22, 2003 // Modified by Damon Lamb 20 May 2009 to add Ca_conc and K_Ca /* ** This file depends on functions and constants defined in defaults.g */ include filltable.g include constants.g // based on the file HNchan.g used in Adam and Andrew's models // Calcium concentration/decay object, values from Ivanov & Calabrese 2000, 2003 // The parameters are generally understood to be upper bounds, as they were determined // by calcium sensitive fluorescent dye. // Note: Genesis concentrations are in mM. // Need to update values to represent background Ca in HN cells: 61nM +-13 @-70mV, 87+- 10 @-35mV // Need to benchmark versus more wet data function make_Ca_conc str chanpath = "Ca_conc" if ({exists {chanpath}}) return end create Ca_concen {chanpath} setfield Ca_conc \ tau 1.5 \ //1.7 // seconds; estimate of upper value = 1.7s ...was 0.85 \ // B 2.64E+010\ //1000 \ // Curr to conc NEEDS TO BE CALCULATED thick 0 \ Ca_base 60e-6 //temp change for testing v gate from 40e-6 to max //echo "Created Ca_conc object" addfield {chanpath} addmsg1 setfield {chanpath} addmsg1 "../CaS_ron . I_Ca Ik" end // alpha version of K_Ca --------------------------------------------------------------------------------- function make_K_Ca str chanpath = "K_Ca" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK1} \ Gbar {100e-9} \ Ik 0 \ Gk 0 \ Xpower 1 \ Ypower 0 \ Zpower 1 // note! concentrations in mM float camin = 60e-6 // 61e-6 //Genesis values are in mM, so nM is e-6 // e-4 before, wrong calc I think. float camax = 15e-5 int xdivs = 2999 // Voltage gate call {chanpath} TABCREATE X 100 -0.100 0.050 // calcium gate call {chanpath} TABCREATE Z {xdivs} {camin} {camax} settab2const {chanpath} Z_A 0 {xdivs} .3 // -0 thru 100 => .04. set to constant time_constant for now // change 0.4 to 0.3 int i float x,dx,dy,y dx = ({camax} - {camin})/{xdivs} dy = 1 / ({camax} - {camin}) x = 0 for (i = 0 ; i <= {xdivs} ; i = i + 1) y = {dy} * x // y = 7e3 * {x} - 1 /* if ({y}<0) y = 0 end if ({y}>1) y = 1 end */ setfield {chanpath} Z_B->table[{i}] {y} // m_inf x = x + dx end //FillTableTau {chanpath} X_A .001 .011 150 {k1shft1} -.006 settab2const {chanpath} X_A 0 100 .2 FillTableInf {chanpath} X_B 0 1 -80 -0.005 -.01 // shift (6th argument) changed from 0 to -10mV (-0.005) call {chanpath} TABFILL X 3000 0 // debug //tab2file ./Debug/K_Ca_XA.txt {chanpath} X_A -mode xy -overwrite //tab2file ./Debug/K_Ca_XB.txt {chanpath} X_B -mode xy -overwrite //tab2file ./Debug/K_Ca_A.txt {chanpath} Z_A -mode xy -overwrite //tab2file ./Debug/K_Ca_B.txt {chanpath} Z_B -mode xy -overwrite setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 tweaktau {chanpath} X setfield {chanpath} Z_A->calc_mode 0 Z_B->calc_mode 0 /* Setting the calc_mode to NO_INTERP for speed */ tweaktau {chanpath} Z /* tweaking the tables for the tabchan calculation */ addfield {chanpath} addmsg1 setfield {chanpath} addmsg1 "../Ca_conc . CONCEN Ca" //--------------------------------------------- //echo "Created K_Ca object" end /*********************************************************************** Na-Current (HN3,4 cells) ***********************************************************************/ function make_Na_ron // Na-current str chanpath = "Na_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {ENa} \ Gbar {200e-9} \ Ik 0 \ Gk 0 \ Xpower 3 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 settab2const {chanpath} X_A 0 100 0.0001 // -0.1 thru 0.05=>0. // -150 -.023 FillTableInf {chanpath} X_B 0 1 -150 {nashft_X} -.024 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 // setfield {chanpath} instant {INSTANTX} call {chanpath} TABCREATE Y 100 -0.100 0.050 // .004 .006 500 -.023 // echo FillTableTau_Na FillTableTau_Na {chanpath} Y_A .004 .006 500 {nashft_Y} -.023 // 500 -.025 FillTableInf {chanpath} Y_B 0 1 500 {nashft_Y} -.025 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end // function make_K1_ron str chanpath = "K1_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK1} \ Gbar {100e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // echo // echo K1_ronX FillTableTau {chanpath} X_A .001 .011 150 {k1shft1} -.006 // -143 FillTableInf {chanpath} X_B 0 1 -143 {k1shft} -.011 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 call {chanpath} TABCREATE Y 100 -0.100 0.050 // echo // echo K1_ronY FillTableTau {chanpath} Y_A .500 .200 -143 {k1shft} -.003 FillTableInf {chanpath} Y_B 0 1 111 {k1shft} -.018 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end function make_K2_ron str chanpath = "K2_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK2} \ Gbar {80e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 0 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // echo // echo K2_ronX FillTableTau {chanpath} X_A .057 .043 200 {k2shft} -.025 FillTableInf {chanpath} X_B 0 1 -83 {k2shft} -.010 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 end function make_K2Inact_ron str chanpath = "K2Inact_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK2} \ Gbar {GK2Inact} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // echo // echo K2Inact_ronX FillTableTau {chanpath} X_A .057 .043 200 0 -.035 FillTableInf {chanpath} X_B 0 1 -200 0 -.050 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 call {chanpath} TABCREATE Y 100 -0.100 0.050 // echo // echo K2Inact_ronY // FillTableTau {chanpath} Y_A .026 4.974 -500 0 -.045 FillTableTau {chanpath} Y_A .026 {TauK2Inact} -500 0 -.045 FillTableInf {chanpath} Y_B 0 1 500 0 -.050 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end // make A channel function make_A_ron str chanpath = "A_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EA} \ Gbar {200e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // 0.0028 //settab2const {chanpath} X_A 0 100 0.010 //-0.1 thru 0.05=>0. // echo // echo A_ronX FillTableTau {chanpath} X_A .005 .011 200 {ashft} -.020 FillTableInf {chanpath} X_B 0 1 -130 {ashft} -.034 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 call {chanpath} TABCREATE Y 100 -0.100 0.050 // echo // echo A_ronY FillTableTau {chanpath} Y_A .026 .0085 -300 {ashft} -.045 FillTableInf {chanpath} Y_B 0 1 160 {ashft} -.053 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end function make_h_ron str chanpath="h_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {Eh} \ Gbar {7e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 0 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // add some fields // echo // echo h_ronX FillTableTau {chanpath} X_A .700 1.700 -100 0 -.073 FillTableInf_h {chanpath} X_B 0 1 180 0 -.047 setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 end // make CaF function make_CaF_ron str chanpath = "CaF_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {ECaF} \ Gbar {16e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // echo // echo CaF_ronX FillTableTau_CaF {chanpath} X_A FillTableInf {chanpath} X_B 0 1 -600 {CaFshft} -.0467 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 call {chanpath} TABCREATE Y 100 -0.100 0.050 //.060 .310 // echo // echo CaF_ronY FillTableTau {chanpath} Y_A .060 .310 270 {CaFshft} -.055 FillTableInf {chanpath} Y_B 0 1 350 {CaFshft} -.0555 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end //make CaS // Cas adjusted for HE cells - inactivation gate slowed down function make_CaS_ron str chanpath = "CaS_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {ECaS} \ Gbar {3e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 FillTableTau {chanpath} X_A .005 .134 {CaSa} {CaSshft1} -.0487 FillTableInf {chanpath} X_B 0 1 -420 {CaSshft1} -.0472 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 // ---- call {chanpath} TABCREATE Y 100 -0.100 0.050 FillTableTau {chanpath} Y_A .200 8 -250 {CaSshft2} -.043 // -------------------------5.250 changed to 8 FillTableInf {chanpath} Y_B 0 1 360 {CaSshft2} -.055 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ //tab2file ./Debug/CaS_XA.txt {chanpath} X_A -mode xy -overwrite //tab2file ./Debug/CaS_XB.txt {chanpath} X_B -mode xy -overwrite //tab2file ./Debug/CaS_YA.txt {chanpath} Y_A -mode xy -overwrite //tab2file ./Debug/CaS_YB.txt {chanpath} Y_B -mode xy -overwrite tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end //make HN1_CaS function make_HN1_CaS_ron str chanpath = "HN1_CaS_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {ECaS} \ Gbar {3e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 1 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // .005 .134 // echo // echo CaSHN1_ronX FillTableTau {chanpath} X_A .005 .134 -400 {HN1_CaSshft1} -.0487 FillTableInf {chanpath} X_B 0 1 -420 {HN1_CaSshft1} -.0472 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 call {chanpath} TABCREATE Y 100 -0.100 0.050 //.200 // echo // echo CaSHN1_ronY FillTableTau {chanpath} Y_A .200 5.250 -250 {HN1_CaSshft2} -.043 // -.0512 FillTableInf {chanpath} Y_B 0 1 360 {HN1_CaSshft2} -.055 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} Y /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL Y 3000 0 end function make_P_ron str chanpath = "P_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EP} \ Gbar {7e-9} \ // GP param sometime used 7e-9 default Ik 0 \ Gk 0 \ Xpower 1 \ Ypower 0 \ Zpower 0 // Gbar {10e-9} \ call {chanpath} TABCREATE X 100 -0.100 0.050 //.010 .200 -.057 // echo // echo P_ronX FillTableTau {chanpath} X_A .010 .200 400 {Pshft} -.057 // -120 0 -.039 FillTableInf {chanpath} X_B 0 1 -120 0 -.039 // Setting the calc_mode to NO_INTERP for speed setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 // tweaking the tables for the tabchan calculation tweaktau {chanpath} X // Filling the tables using B-SPLINE interpolation call {chanpath} TABFILL X 3000 0 end function make_P2_ron // added by Adam to emulate HN5's accelerating ISF str chanpath = "P2_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EP2} \ Gbar {10e-9} \ Ik 0 \ Gk 0 \ Xpower 1 \ Ypower 0 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 //.010 .200 -.057 FillTableTau {chanpath} X_A .010 .200 400 {P2shft} -.057 // -120 0 -.039 FillTableInf {chanpath} X_B 0 1 -120 0 -.039 // Setting the calc_mode to NO_INTERP for speed setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 // tweaking the tables for the tabchan calculation tweaktau {chanpath} X // Filling the tables using B-SPLINE interpolation call {chanpath} TABFILL X 3000 0 end function make_K3_ron str chanpath = "K3_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK1} \ Gbar {10e-9} \ Ik 0 \ Gk 0 \ Xpower 1 \ Ypower 0 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 //.010 .200 -.057 // echo // echo K3_ronX FillTableTau {chanpath} X_A .020 4.0 400 0 -.020 // -120 0 -.039 FillTableInf {chanpath} X_B 0 1 -400 0 -.020 // Setting the calc_mode to NO_INTERP for speed setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 // tweaking the tables for the tabchan calculation tweaktau {chanpath} X // Filling the tables using B-SPLINE interpolation call {chanpath} TABFILL X 3000 0 end function make_KF_ron str chanpath = "KF_ron" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek {EK2} \ Gbar {40e-9} \ Ik 0 \ Gk 0 \ Xpower 2 \ Ypower 0 \ Zpower 0 call {chanpath} TABCREATE X 100 -0.100 0.050 // echo // echo KF_ronX FillTableTau_KF {chanpath} X_A 1.5 8.0 -100 {0} -.022 FillTableInf {chanpath} X_B 0 1 -100 {0} -.022 /* Setting the calc_mode to NO_INTERP for speed */ setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0 /* tweaking the tables for the tabchan calculation */ tweaktau {chanpath} X /* Filling the tables using B-SPLINE interpolation */ call {chanpath} TABFILL X 3000 0 end