//================= ACTIVE CHANNELS NGU MODEL ========================// // Parameters determined by Phil Ulinski, University of Chicago // // This file contains the functions for making the active channels // //====================================================================// include ../lib/global_constants.g int EXPONENTIAL = 1 // Exponential form of voltage-dependent rate int SIGMOID = 2 // Sigmoidal form of voltage-dependent rate int LINOID = 3 // Linoidal form of voltage-dependent rate /* ****************************************************************** make_calcium_channel Creates a hh-type calcium channel {parent_path}/calcium_channel Parameters: parent_path parent location for channel object gmax (maximum channel conductance)/area revpot channel reversal potential area area of containing compartment in m^2 ****************************************************************** */ function make_calcium_channel (parent_path, gmax, revpot, area) str parent_path float gmax, revpot, area str channel_path = {parent_path}@"/calcium_channel" // full path to channel create hh_channel {channel_path} setfield ^ \ Ek {revpot} \ // V Gbar {gmax * area} \ // S Xpower 2.0 \ Ypower 1.0 \ X_alpha_FORM {LINOID} \ X_alpha_A -0.075e6 \ // 1/V-sec X_alpha_B -7.500e-3 \ // V X_alpha_V0 -20.00e-3 \ // V X_beta_FORM {LINOID} \ X_beta_A 0.0101e6 \ // 1/sec X_beta_B 4.4e-3 \ // V X_beta_V0 -21.00e-3 \ // V Y_alpha_FORM {LINOID} \ Y_alpha_A 0.000344e6 \ // 1/sec Y_alpha_B 4.45e-3 \ // V Y_alpha_V0 -54.00e-3 \ // V Y_beta_FORM {LINOID} \ Y_beta_A -0.0003093e6 \ // 1/sec Y_beta_B -4.00e-3 \ // V Y_beta_V0 -60.00e-3 // V addmsg {channel_path} {parent_path} CHANNEL Gk Ek addmsg {parent_path} {channel_path} VOLTAGE Vm end /* ****************************************************************** make_calcium_conc Creates single shell model of calcium concentration at {parent_path}/Ca_conc with resting or base level of 0 Parameters: parent_path parent location for concentration object tau time constant of decay b value of 1/(ion_charge*Faraday*volume) ****************************************************************** */ function make_calcium_conc (parent_path, tau, b) float tau, b str parent_path // where to place the channel str channel_path = {parent_path}@"/Ca_conc" // full path to channel create Ca_concen {channel_path} setfield ^ tau {tau} B {b} Ca_base 0.0 end /* ****************************************************************** make_calcium_dep_K_AHP Creates a tabulated Ca-dependent K AHP channel at {parent_path}/K_AHP Parameters: parent_path parent location for channel object gkmax potassium (maximum channel conductance)/area gcmax potassium (maximum channel conductance)/area krevpot potassium channel reversal potential crevpot calcium channel reversal potential tau time constant of decay for calcium concentration b value of 1/(ion_charge*Faraday*volume) area area of containing compartment in m^2 This is a tabchannel that gets the calcium concentration from Ca_conc in order to calculate the activation of its Z gate. It is set up much like the Ca channel, except that the A and B tables have values which are functions of concentration, instead of voltage. This function creates a calcium channel and a calcium concentration with the same parent as itself. ****************************************************************** */ function make_calcium_dep_K_AHP (parent_path, gkmax, gcmax, krevpot, crevpot, area, tau, b) str parent_path float gkmax, gcmax, krevpot, crevpot, area, tau, b str channel_path = {parent_path}@"/K_AHP" // full path to K_AHP channel str calcium_path = {parent_path}@"/calcium_channel" // full path to calcium channel str caconc_path = {parent_path}@"/Ca_conc" // full path to calcium concentration // Create a calcium channel make_calcium_channel {parent_path} {gcmax} {crevpot} {area} // Create a mechanism for getting calcium from calcium channel make_calcium_conc {parent_path} {tau} {b} addmsg {calcium_path} {caconc_path} I_Ca Ik create tabchannel {channel_path} setfield ^ Ek {krevpot} Gbar {gkmax * area} Ik 0 Gk 0 setfield ^ Xpower 0 Ypower 0 Zpower 1 // Allocate space in the Z gate A and B tables, covering a concentration // range from xmin = 0 to xmax = 1000, with 50 divisions float xmin = 0.0 float xmax = 1000.0 int xdivs = 50 call {channel_path} 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) if (x < 500.0) y = 0.02*x else y = 10.0 end setfield {channel_path} Z_A->table[{i}] {y} setfield {channel_path} Z_B->table[{i}] {1.0} x = x + dx end setfield {channel_path} Z_A->calc_mode 0 Z_B->calc_mode 0 call {channel_path} TABFILL Z 3000 0 addmsg {channel_path} {parent_path} CHANNEL Gk Ek addmsg {parent_path} {channel_path} VOLTAGE Vm addmsg {caconc_path} {channel_path} CONCEN Ca end /* ****************************************************************** make_potassium_channel Creates a hh-type potassium channel {parent_path}/potassium_channel Parameters: parent_path parent location for channel object gmax (maximum channel conductance)/area revpot channel reversal potential area area of containing compartment in m^2 ****************************************************************** */ function make_potassium_channel(parent_path, gmax, revpot, area) str parent_path float gmax, revpot, area str channel_path = {parent_path}@"/potassium_channel" // full path to channel create hh_channel {channel_path} setfield ^ \ Ek {revpot} \ // V Gbar {gmax * area} \ // S Xpower 4.0 \ Ypower 0.0 \ X_alpha_FORM {LINOID} \ X_alpha_A -0.032e6 \ // 1/V-sec X_alpha_B -3.5e-3 \ // V X_alpha_V0 -36.00e-3 \ // V X_beta_FORM {EXPONENTIAL} \ X_beta_A 0.50e3 \ // 1/sec X_beta_B -40.0e-3 \ // V X_beta_V0 -41.00e-3 // V addmsg {channel_path} {parent_path} CHANNEL Gk Ek addmsg {parent_path} {channel_path} VOLTAGE Vm end /* ****************************************************************** make_sodium_channel Creates a hh-type fast sodium channel {parent_path}/sodium_channel Parameters: parent_path parent location for channel object gmax (maximum channel conductance)/area revpot channel reversal potential area area of containing compartment in m^2 ****************************************************************** */ function make_sodium_channel (parent_path, gmax, revpot, area) str parent_path float gmax, revpot, area str channel_path = {parent_path}@"/sodium_channel" // full path to channel create hh_channel {channel_path} setfield ^ \ Ek {revpot} \ // V Gbar {gmax * area} \ // S Xpower 3.0 \ Ypower 1.0 \ X_alpha_FORM {LINOID} \ X_alpha_A -0.32e6 \ // 1/V-sec X_alpha_B -4.00e-3 \ // V X_alpha_V0 -34.67e-3 \ // V X_beta_FORM {LINOID} \ X_beta_A 0.28e6 \ // 1/sec X_beta_B 5.00e-3 \ // V X_beta_V0 -6.67e-3 \ // V Y_alpha_FORM {EXPONENTIAL} \ Y_alpha_A 0.128e3 \ // 1/sec Y_alpha_B -18.00e-3 \ // V Y_alpha_V0 -34.00e-3 \ // V Y_beta_FORM {SIGMOID} \ Y_beta_A 4.00e3 \ // 1/sec Y_beta_B -5.00e-3 \ // V Y_beta_V0 -11.00e-3 // V addmsg {channel_path} {parent_path} CHANNEL Gk Ek addmsg {parent_path} {channel_path} VOLTAGE Vm end