Object Type: tabchannel Description: Hodgkin-Huxley type voltage activated channel with tabulated equations. Author: E. De Schutter, Caltech (1/91) ----------------------------------------------------------------------------ELEMENT PARAMETERS DataStructure: Size: tab_channel_type [in src/olf/olf_struct.h] 168 bytes Fields: activation Gk Ik Ek Gbar X Y Z channel activation channel conductance channel current channel reversal potential channel maximum conductance value of X gate; optional gate, X=m value of Y gate; optional gate, X=h value of Z gate; optional gate, Z is concentration-dependent X_A table for alpha function for X X_B table for beta function for X X_alloced flag for allocation of X_A and X_B Y_A table for alpha function for Y Y_B table for beta function for Y Y_alloced flag for allocation of Y_A and Y_B Z_A table for alpha function for Z Z_B table for beta function for Z Z_alloced flag for allocation of Z_A and Z_B Xpower power to raise X gate to Ypower power to raise Y gate to Zpower power to raise Z gate to surface compartment surface area used with DOMAINCONC ----------------------------------------------------------------------------SIMULATION PARAMETERS Function: TabChannel [in src/olf/tabchannel.c] Classes: segment channel Actions: CALC_BETA CALC_ALPHA CALC_MINF DUMP RESTORE2 SAVE2 SHOW SET TABDELETE TABFILL TABCREATE CHECK PROCESS RESET INIT Messages: VOLTAGE EK CONCEN voltage Ek concen [membrane voltage of compartment] [reversal potential] [ion concentration sent to channel] DOMAINCONC Ik scale [ion current from another channel, to be multiplied by scale, and divided by ADD_GBAR offset surface field] [increment to be added to Gbar] ----------------------------------------------------------------------------Notes: dependent Tabulated hh-like channel. The standard voltage activation (X) and inactivation (Y) factors are present. For concentration dependent processes a third factor (Z) has added. Z can do a lot of things; the most important is that it gets a different message (CONCEN) than X and Y (VOLTAGE). Standard use for Z is concentration dependent inactivation, using a Zpower > 0. An alternative is to use it for codependent activation; using Zpower<0, Z will equal concen value times v-dependent table-value. The DOMAINCONC message provides a highly simplified model to obtain the ionic concentration directly, using the current sent from another channel, times a scale factor, and dividing by the surface area of the parent compartment. The table for the object is created using a call to the TABCREATE action of the object. For computation efficiency the forward rate factor alpha (A) and 1/tau (B) are tabulated in A-table and B-table. The tabchannel element is very similar to the hh_channel element, except that it uses tables for the voltage and other dependencies. It speeds up computation by using table lookups rather than calculations depending on exponentials. It also provides more flexibility, being able to specify voltage dependencies not falling in the traditional Hodgkin-Huxley forms. The gate obeys the following equations: dX/dt = A_X - B_X*X dY/dt = A_Y - B_Y*Y dZ/dt = A_Z - B_Z*Z Gk = Gbar X^Xpower} Y^Ypower} Z^Zpower} Ik = Gk * (Ek - V) NOTE: These equations are slightly different from the usual Hodgkin-Huxley where: dX/dt = alpha(1 - X) - beta(X) The tables in this element are therefore actually A = alpha, and B = 1/tau = alpha + beta. This change reduces the number of calculations to be made on the table output during the integration. The alpha and beta functions of the X, Y and Z gates are implemented as tables and therefore have to be explicitly allocated using the TABCREATE function. Copies of tabchannel use the original arrays unless new arrays are explicitly allocated. The X and Y gates use the same VOLTAGE message. The Z gate uses the CONCEN message, which can be any field. It allows for dependencies on other parameters. The TABCREATE function TABCREATE here is different from the table and tabgate elements. We only need to specify which gate to set up, and both tables for the gate will be filled. call <element> TABCREATE <X/Y/Z> <xdivs> <xmin> <xmax> This call creates two tables for X, Y, or Z with indices from 0 to xdivs, i.e. xdvivs + 1 entries which span the range xmin to xmax. Values outside this range are linearly extrapolated using the nearest 2 table entries. Entries in these tables are made with statements like setfield Na_chan X_A->table[0] 0.05 There are several alternatives to using a long sequence of setfield commands to fill the tables. The file2tab command can be used to fill the tables from a file of values. If the rate (alpha and beta) or state (tau and minf) variables can be expressed as a mathematical function, a for loop may be used to fill the tables. For functions of the form (A + B * x) / (C + exp((x + D) / F)), the setupalpha or setuptau commands may be used. This is also discussed in Chapter 19 of The Book of GENESIS (2nd ed.) The TABFILL function TABFILL expands the table by using interpolation on the existing table entries. Again, the syntax is different from that for table and tabgate elements, and one just has to call TABFILL once to fill both the arrays corresponding to that gate: call <element> TABFILL <X/Y/Z> <xdivs> <fill_mode> xdivs specifies the number of divisions that the expanded tables should have. fill_mode is one of 0 = B-spline fill (default) 1 = cubic spline fill (not yet implemented) 2 = Linear fill Scaling tables When the fields X_A->sx, X_A->sy, X_A->ox, X_A->oy, and the corresponding fields on X_B, Y_A, Y_B, Z_A, Z_B are set, the tabgate element automatically scales on the entries in the interpol_struct array so as to avoid scaling computations during simulations. Care must be taken since the B table contains 1/tau rather than the beta values. It is recommended, therefore, that both alpha and beta be adjusted simultaneously and identically. Alternatively, the scaletabchan function may be used to scale the two tables in such a way as to scale alpha, beta, tau, or the steady state activation (minf). The CALC_ALPHA, CALC_BETA, and CALC_MINF functions The CALC_ALPHA, CALC_BETA, and CALC_MINF actions are used with calls of the form y = {call <element> CALC_ALPHA <X/Y/Z> <x-value>} in order to access values of alpha, beta or m_inf (the steady state activation, alpha/(alpha + beta)) for the specified gate (X, Y, or Z) and a particular value of the independent variable. This feature is most often used for making plots of these quantities. Note that the activation time constant can be calculated from tau = 1/(alpha + beta). Example: see Scripts/neurokit/prototypes/traub91chan.g See also: Interpol documentation (Tables), scaletabchan, setupalpha, setuptau, tweakalpha, tweaktau, hh_channel, tab2Dchannel