//genesis function create_CaT str path = "CaT_channel" float xmin = -0.10 /* minimum voltage we will see in the simulation */ // V float xmax = 0.05 /* maximum voltage we will see in the simulation */ // V int xdivsFiner = 3000 int c = 0 float gMax = 1.0 // random number, but to be modified later /****** Begin vars used to enable genesis calculations ********/ float increment = (xmax - xmin)*1e3/xdivsFiner // mV echo "naF: increment" {increment} "mV" float x = -100.00 // mV float minf = 0 float hinf = 0 /*************************a1G*********************************************************/ float mvhalf = -59.0 // mV, McRory JE, et,al. 2001, Note: fixed with m^2 float mslope = 7.74 // mV, McRory JE, et,al. 2001 float hvhalf = -87.6 // mV, Hoehn,et,al 1993 float hslope = 6.1 // 6mV, Hoehn,et,al 1993 /*****************************************************************************************************/ /*******************************a1I*****************************************************/ //float mvhalf = -70.02 // mV, McRory JE, et,al. 2001, Note: fixed with m^2 // float mslope = 9.98 // mV, McRory JE, et,al. 2001 // float hvhalf = -93.2 // mV, // float hslope = 4.7 // 6mV, /******************************************************************************************************/ /************************************a1H************************************************/ // float mvhalf = -49.7 // mV, McRory JE, et,al. 2001, Note: fixed with m^2 // float mslope = 6.35 // mV, McRory JE, et,al. 2001 // float hvhalf = -73.6 // mV, a1H // float hslope = 2.76 // a1H /*********************************************************************************************************/ float mshift = 0.0 // mV float hshift = 0.0 // mV float taum = 0 // ms float tauh = 0 // ms /****** End vars used to enable genesis calculations **********/ pushe /library create tabchannel {path} call {path} TABCREATE X {xdivsFiner} {xmin} {xmax} // activation gate call {path} TABCREATE Y {xdivsFiner} {xmin} {xmax} // inactivation gate /* Defines the powers of m Hodgkin-Huxley equationref: Katja Hoehn, et,al. 1993 */ setfield {path} Ek {Erev} Xpower 2 Ypower 1 /********************* taken from Wolf's model************************************/ // set tau_m table float qfactor = 3.0 // experiment was done in room temperature create table CaT_taum // ms call CaT_taum TABCREATE 30 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV setfield CaT_taum table->table[0] 24.1 \ table->table[1] 24.1 \ table->table[2] 24.1 \ table->table[3] 24.1 \ table->table[4] 24.1 \ table->table[5] 24.1 \ table->table[6] 24.1 \ table->table[7] 24.1 \ table->table[8] 24.1 \ table->table[9] 13.1 \ table->table[10] 8.7 \ table->table[11] 6.8 \ table->table[12] 5.6 \ table->table[13] 4.4 \ table->table[14] 3.8 \ table->table[15] 3.6 \ table->table[16] 3.3 \ table->table[17] 3.6 \ table->table[18] 3.6 \ table->table[19] 3.3 \ table->table[20] 3.3 \ table->table[21] 3.3 \ table->table[22] 3.3 \ table->table[23] 3.3 \ table->table[24] 3.3 \ table->table[25] 3.3 \ table->table[26] 3.3 \ table->table[27] 3.3 \ table->table[28] 3.3 \ table->table[29] 3.3 \ table->table[30] 3.3 create table CaT_tauh call CaT_tauh TABCREATE 30 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV setfield CaT_tauh table->table[0] 382 \ table->table[1] 382 \ table->table[2] 382 \ table->table[3] 382 \ table->table[4] 382 \ table->table[5] 382 \ table->table[6] 382 \ table->table[7] 382 \ table->table[8] 208 \ table->table[9] 162 \ table->table[10] 129 \ table->table[11] 119 \ table->table[12] 107 \ table->table[13] 107 \ table->table[14] 107 \ table->table[15] 108 \ table->table[16] 109 \ table->table[17] 109 \ table->table[18] 110 \ table->table[19] 110 \ table->table[20] 110 \ table->table[21] 110 \ table->table[22] 110 \ table->table[23] 110 \ table->table[24] 110 \ table->table[25] 110 \ table->table[26] 110 \ table->table[27] 110 \ table->table[28] 110 \ table->table[29] 110 \ table->table[30] 110 call CaT_taum TABFILL {xdivsFiner} 2 call CaT_tauh TABFILL {xdivsFiner} 2 for(c = 0; c < {xdivsFiner} + 1; c = c + 1) minf = 1/(1 + {exp {-(x - mvhalf + mshift)/mslope}}) hinf = 1/(1 + {exp {(x - hvhalf + hshift)/hslope}}) taum = {getfield CaT_taum table->table[{c}]}/qfactor tauh = {getfield CaT_tauh table->table[{c}]}/qfactor setfield {path} X_A->table[{c}] {2*taum*1e-3} // use m^2, the taum should X2, ref: Katja Hoehn, et,al. 1993 setfield {path} X_B->table[{c}] {minf} setfield {path} Y_A->table[{c}] {tauh*1e-3} setfield {path} Y_B->table[{c}] {hinf} x = x + increment end /* fill the tables with the values of tau and minf/hinf * calculated from tau and minf/hinf */ tweaktau {path} X tweaktau {path} Y create ghk {path}GHK setfield {path}GHK Cout 2 // Carter & Sabatini 2004 uses 2mM, // Wolf 5mM setfield {path}GHK valency 2.0 setfield {path}GHK T {TEMPERATURE} setfield {path} Gbar {gMax} addmsg {path} {path}GHK PERMEABILITY Gk end /************************************************************************************************** ******************************* a1I subnuit****************************************** *************************************************************************************************** Ref: Molecular and Functional Characterization of a Family of Rat Brain T-type Calcium Channels ****************************************************by Kai DU, kaidu828@gmail.com**** ***************************************************************************************************/ function create_CaV33 str path = "CaT33_channel" int usingSingleGate = 0 float xmin = -0.10 /* minimum voltage we will see in the simulation */ // V float xmax = 0.05 /* maximum voltage we will see in the simulation */ // V int xdivsFiner = 3000 int c = 0 float gMax = 1.0 // random number, but to be modified later /****** Begin vars used to enable genesis calculations ********/ float increment = (xmax - xmin)*1e3/xdivsFiner // mV echo "naF: increment" {increment} "mV" float x = -100.00 // mV float minf = 0 float hinf = 0 float qfactor = 1 // experiment was done in room temperature if({TEMPERATURE}>30) qfactor = 3 end /*******************************a1I*****************************************************/ if ({usingSingleGate}==1) float mvhalf = -72.9 // mV, IFTINCA, et,al. 2006 float mslope = 4.6 // mV, else float mvhalf = -78.01 // mV, IFTINCA, et,al. 2006, Note: fixed with m^2 float mslope = 5.472 // mV, end float hvhalf = -78.3 // mV, IFTINCA, et,al. 2006 float hslope = 6.5 // 6mV, /******************************************************************************************************/ // set tau_m table create table CaV33_taum // ms call CaV33_taum TABCREATE 15 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV /*****************************************************/ // Mcrory,et,al.2001 // setfield CaV33_taum table->table[0] 24.1 \ // table->table[1] 24.1 \ // table->table[2] 24.1 \ // table->table[3] 24.1 \ // table->table[4] 24.1 \ // table->table[5] 24.1 \ // table->table[6] 24.1 \ // table->table[7] 24.1 \ // table->table[8] 24.1 \ // table->table[9] 13.1 \ // table->table[10] 8.7 \ // table->table[11] 6.8 \ // table->table[12] 5.6 \ // table->table[13] 4.4 \ // table->table[14] 3.8 \ // table->table[15] 3.6 \ // table->table[16] 3.3 \ // table->table[17] 3.6 \ // table->table[18] 3.6 \ // table->table[19] 3.3 \ // table->table[20] 3.3 \ // table->table[21] 3.3 \ // table->table[22] 3.3 \ // table->table[23] 3.3 \ // table->table[24] 3.3 \ // table->table[25] 3.3 \ // table->table[26] 3.3 \ // table->table[27] 3.3 \ // table->table[28] 3.3 \ // table->table[29] 3.3 \ // table->table[30] 3.3 setfield CaV33_taum table->table[0] 19.8 \ table->table[1] 19.8 \ table->table[2] 19.8 \ table->table[3] 19.8 \ table->table[4] 10.3 \ table->table[5] 7.66 \ table->table[6] 5.42 \ table->table[7] 4.36 \ table->table[8] 3.83 \ table->table[9] 3.4 \ table->table[10] 2.98 \ table->table[11] 2.13 \ table->table[12] 2.65 \ table->table[13] 2.65 \ table->table[14] 2.65 \ table->table[15] 2.65 create table CaV33_tauh call CaV33_tauh TABCREATE 15 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV // setfield CaV33_tauh table->table[0] 382 \ // table->table[1] 382 \ // table->table[2] 382 \ // table->table[3] 382 \ // table->table[4] 382 \ // table->table[5] 382 \ // table->table[6] 382 \ // table->table[7] 382 \ // table->table[8] 208 \ // table->table[9] 162 \ // table->table[10] 129 \ // table->table[11] 119 \ // table->table[12] 107 \ // table->table[13] 107 \ // table->table[14] 107 \ // table->table[15] 108 \ // table->table[16] 109 \ // table->table[17] 109 \ // table->table[18] 110 \ // table->table[19] 110 \ // table->table[20] 110 \ // table->table[21] 110 \ // table->table[22] 110 \ // table->table[23] 110 \ // table->table[24] 110 \ // table->table[25] 110 \ // table->table[26] 110 \ // table->table[27] 110 \ // table->table[28] 110 \ // table->table[29] 110 \ // table->table[30] 110 setfield CaV33_tauh table->table[0] 268.4 \ table->table[1] 268.4 \ table->table[2] 268.4 \ table->table[3] 268.4 \ table->table[4] 188.9 \ table->table[5] 145.6 \ table->table[6] 147.4 \ table->table[7] 141.8 \ table->table[8] 139.1 \ table->table[9] 142.27 \ table->table[10] 129.48 \ table->table[11] 119.57 \ table->table[12] 115.46 \ table->table[13] 115.46 \ table->table[14] 115.46 \ table->table[15] 115.46 call CaV33_taum TABFILL {xdivsFiner} 2 call CaV33_tauh TABFILL {xdivsFiner} 2 float mshift = 0 // mV float hshift = 0 // mV float taum = 0 // ms float tauh = 0 // ms /****** End vars used to enable genesis calculations **********/ pushe /library create tabchannel {path} call {path} TABCREATE X {xdivsFiner} {xmin} {xmax} // activation gate call {path} TABCREATE Y {xdivsFiner} {xmin} {xmax} // inactivation gate /* Defines the powers of m Hodgkin-Huxley equationref: Katja Hoehn, et,al. 1993 */ if ({usingSingleGate}==1) setfield {path} Xpower 1 Ypower 1 else setfield {path} Xpower 2 Ypower 1 end /********************* taken from Wolf's model************************************/ // set tau_m table for(c = 0; c < {xdivsFiner} + 1; c = c + 1) minf = 1/(1 + {exp {-(x - mvhalf + mshift)/mslope}}) hinf = 1/(1 + {exp {(x - hvhalf + hshift)/hslope}}) taum = {getfield CaV33_taum table->table[{c}]}/qfactor tauh = {getfield CaV33_tauh table->table[{c}]}/qfactor if ({usingSingleGate}==1) setfield {path} X_A->table[{c}] {taum*1e-3} else setfield {path} X_A->table[{c}] {2*taum*1e-3} // use m^2, the taum should X2, ref: Katja Hoehn, et,al. 1993 end setfield {path} X_B->table[{c}] {minf} setfield {path} Y_A->table[{c}] {tauh*1e-3} setfield {path} Y_B->table[{c}] {hinf} x = x + increment end /* fill the tables with the values of tau and minf/hinf * calculated from tau and minf/hinf */ tweaktau {path} X tweaktau {path} Y create ghk {path}GHK setfield {path}GHK Cin 0 Cout {Cout} // Carter & Sabatini 2004 uses 2mM, // Wolf 5mM setfield {path}GHK valency 2.0 setfield {path}GHK T {TEMPERATURE} setfield {path} Gbar {gMax} addmsg {path} {path}GHK PERMEABILITY Gk end /************************************************************************************************** ******************************* a1G subnuit****************************************** *************************************************************************************************** Ref: TEMPERATURE DEPENDENCE OF T-TYPE CALCIUM CHANNEL GATING, M. IFTINCA, et.al. 2006 ****************************************************by Kai DU, kaidu828@gmail.com**** ***************************************************************************************************/ function create_CaV32 int usingSingleGate = 1 str path = "CaT32_channel" float xmin = -0.10 /* minimum voltage we will see in the simulation */ // V float xmax = 0.05 /* maximum voltage we will see in the simulation */ // V int xdivsFiner = 3000 int c = 0 float gMax = 0.0 // random number, but to be modified later /****** Begin vars used to enable genesis calculations ********/ float increment = (xmax - xmin)*1e3/xdivsFiner // mV echo "naF: increment" {increment} "mV" float x = -100.00 // mV float minf = 0 float hinf = 0 float qfactor = 1 // experiment was done in room temperature if({TEMPERATURE}>30) qfactor = 3 end /*************************a1G*********************************************************/ if ({usingSingleGate}==1) float mvhalf = -42.9 // mV, float mslope = 6.2 // mV, else float mvhalf = -59.0 // mV, M. IFTINCA, et.al. 2006, Note: fixed with m^2 float mslope = 7.74 // mV, M. IFTINCA, et.al. 2006 end float hvhalf = -64.2 // mV, float hslope = 8.8 // 6mV, float mshift = 5.0 // mV float hshift = 5.0 // mV float taum = 0 // ms float tauh = 0 // ms /*****************************************************************************************************/ /******************************************************************************************************/ pushe /library create tabchannel {path} call {path} TABCREATE X {xdivsFiner} {xmin} {xmax} // activation gate call {path} TABCREATE Y {xdivsFiner} {xmin} {xmax} // inactivation gate /* Defines the powers of m Hodgkin-Huxley equationref: Katja Hoehn, et,al. 1993 */ // setfield {path} Ek {Erev} Xpower 2 Ypower 1 // set tau_m table create table CaV32_taum // ms call CaV32_taum TABCREATE 15 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV setfield CaV32_taum table->table[0] 24.1 \ table->table[1] 24.1 \ table->table[2] 24.1 \ table->table[3] 24.1 \ table->table[4] 12.76 \ table->table[5] 6.89 \ table->table[6] 3.95 \ table->table[7] 3.57 \ table->table[8] 2.04 \ table->table[9] 1.53 \ table->table[10] 1.53 \ table->table[11] 2.1 \ table->table[12] 2.04 \ table->table[13] 2.04 \ table->table[14] 2.04 \ table->table[15] 2.04 create table CaV32_tauh call CaV32_tauh TABCREATE 15 {xmin} {xmax} //the table corresponds to -100 mV to 50 mV setfield CaV32_tauh table->table[0] 294 \ table->table[1] 294 \ table->table[2] 294 \ table->table[3] 294 \ table->table[4] 294 \ table->table[5] 104 \ table->table[6] 66.4 \ table->table[7] 60.08 \ table->table[8] 50.3 \ table->table[9] 40.4 \ table->table[10] 34.1 \ table->table[11] 32.9 \ table->table[12] 31.8 \ table->table[13] 31.8 \ table->table[14] 31.8 \ table->table[15] 31.8 call CaV32_taum TABFILL {xdivsFiner} 2 call CaV32_tauh TABFILL {xdivsFiner} 2 if ({usingSingleGate}==1) setfield {path} Xpower 1 Ypower 1 else setfield {path} Xpower 2 Ypower 1 end /********************* taken from Wolf's model************************************/ // set tau_m table for(c = 0; c < {xdivsFiner} + 1; c = c + 1) minf = 1/(1 + {exp {-(x - mvhalf + mshift)/mslope}}) hinf = 1/(1 + {exp {(x - hvhalf + hshift)/hslope}}) taum = {getfield CaV32_taum table->table[{c}]}/qfactor tauh = {getfield CaV32_tauh table->table[{c}]}/qfactor if ({usingSingleGate}==1) setfield {path} X_A->table[{c}] {taum*1e-3} else setfield {path} X_A->table[{c}] {2*taum*1e-3} // use m^2, the taum should X2, ref: Katja Hoehn, et,al. 1993 end setfield {path} X_B->table[{c}] {minf} setfield {path} Y_A->table[{c}] {tauh*1e-3} setfield {path} Y_B->table[{c}] {hinf} x = x + increment end /* fill the tables with the values of tau and minf/hinf * calculated from tau and minf/hinf */ tweaktau {path} X tweaktau {path} Y create ghk {path}GHK setfield {path}GHK Cout {Cout} // Carter & Sabatini 2004 uses 2mM, // Wolf 5mM setfield {path}GHK valency 2.0 setfield {path}GHK T {TEMPERATURE} setfield {path} Gbar {gMax} addmsg {path} {path}GHK PERMEABILITY Gk end