//genesis - this file is obsolete /*********************************************************************** LIBRARY.G : library definition file, neuron builder kit. By U.S.Bhalla, Nov 1990 ************************************************************************ Some conventions in using the HH_CHANNELS and the VDEP_GATES HH_CONVENTIONS ============== Activation state variable is called x for all channels Inactivation state variable is called y for all channels In the traditional hh notations: x=m, y=h for Na channel; x=n for K_channel There are three functional forms for alpha and beta for each state variable: FORM 1: alpha(v) = A exp((v-V0)/B) (EXPONENTIAL) FORM 2: alpha(v) = A / (exp((v-V0)/B) + 1) (SIGMOID) FORM 3: alpha(v) = A (v-V0) / (exp((v-V0)/B) - 1) (LINOID) The same functional forms are used for beta. In the simulator, the FORM, A, B and V0 are designated by: X_alpha_FORM, X_alpha_A, X_alpha_B, X_alpha_V0 alpha function for state var x X_beta_FORM, X_beta_A, X_beta_B, X_beta_V0 beta function for state var x Y_alpha_FORM, Y_alpha_A, Y_alpha_B, Y_alpha_V0 alpha function for state var y Y_beta_FORM, Y_beta_A, Y_beta_B, Y_beta_V0 beta function for state var y The conductance is calculated as g = Gbar*x^Xpower * y^Ypower For a squid axon Na channel: Xpower = 3, Ypower = 1 (m^3 h) K channel: Xpower = 4, Ypower = 0 (n^4) These are linked to the soma by two messages : sendmsg /soma/hh_channel /soma CHANNEL Gk Ek sendmsg /soma /soma/hh_channel VOLTAGE Vm ---------------------------------------------------------------------- For the VDEP Gates, the form of each gate is alpha = (A+B*V)/(C+exp((V+D)/F)) This is related to the above forms as follows : EXPONENTIAL : gate variables Value of gate variable in terms of hh-channel variables A A B 0 C 0 D -V0 F -B SIGMOID : Gate in terms of hh-ch variables A A B 0 C 1 D -V0 F B LINOID : A -A * V0 B A C -1 D -V0 F B These are linked to the soma and the channel proper as follows : sendmsg /soma/channel /soma CHANNEL Gk Ek sendmsg /soma /soma/channel VOLTAGE Vm sendmsg /soma/channel/m /soma/channel {gate_type} m {Power} (eg, senndmsg Na_mitral/m Na_mitral MULTGATE m 3_ sendmsg /soma /soma/channel/gate EREST Vm ********************************************************************* ******/ /* ** VARIABLES USED BY ACTIVE COMPONENTS */ int EXPONENTIAL = 1 int SIGMOID = 2 int LINOID = 3 /* ** VARIABLES ASSUMED DEFINED BY CELL_PARSER */ // Farads/m^2 float CM = 0.01 // Ohms m float RA = 0.5 // Ohms m^2 float RM = 0.2 // Volts float EREST_ACT = -0.070 /*********************************************************************** \ ******/ if (!({exists /library})) create neutral /library end // We dont want the library to try to calculate anything, // so we disable it disable /library // To ensure that all subsequent elements are made in the library ce /library // The only 'permanent' element in the library needs to be the compartment if (!({exists compartment})) create compartment compartment end // F // ohm // V // ohm setfield compartment Cm {CM*1e-9} Ra {RA*1e5} Em {EREST_ACT} \ Rm {RM/1e-9} inject 0.0 function setup_table3(gate, table, xdivs, xmin, xmax, A, B, C, D, F) str gate, table int xdivs float xmin, xmax, A, B, C, D, F int i float x, dx, y dx = xdivs dx = (xmax - xmin)/dx x = xmin for (i = 0; i <= (xdivs); i = i + 1) y = (A + B*x)/(C + ({exp {(x + D)/F}})) setfield {gate} {table}->table[{i}] {y} x = x + dx end end function setup_table2(gate, table, xdivs, xmin, xmax, A, B, C, D, F) str gate, table int xdivs float xmin, xmax, A, B, C, D, F if (xdivs <= 9) echo must have at least 9, preferably over 100 elements \ in table return end call {gate} TABCREATE {table} {xdivs} {xmin} {xmax} setup_table3 {gate} {table} {xdivs} {xmin} {xmax} {A} {B} {C} \ {D} {F} end function setup_table(gate, table, xdivs, A, B, C, D, F) str gate, table int xdivs float A, B, C, D, F setup_table2 {gate} {table} {xdivs} -0.1 0.1 {A} {B} {C} {D} {F} end