Next: Bibliography Up: Hsolve as a Virtual Previous: Solution of The Cable Contents

## Solution of Conductance Equations.

The solution of conductance equations is done by looping over the byte-code in an array called `ops`. The number of entries in this array can be found by inspecting the field `nops`:

        genesis > showfield solve nops
        [ /Purkinje/solve ]
        nops                 = 127132

The byte-code in the `ops` array walks over the conductance equations for all compartments. For the purposes of efficiency, the conductance equations are grouped per compartment and these groups are put in the same order as the compartments in the `funcs` array. Every time a new group is encountered, the next membrane potential is fetched from the `vm` array. The groups are separated with `COMPT_OP` operations (and sometimes other operations with a resembling name). Disassembling the opcodes gives something like the following output:

        genesis > printops solve 0 25
        00000 :: 101                        FCOMPT_OP
        00001 :: 3001                       CHAN_EK_OP
        00002 :: 4101    0   -1   1   0     SYN3_OP    0   -1   1   0
        00007 :: 100                        COMPT_OP
        00008 :: 100                        COMPT_OP
        00009 :: 5100                       NEWVOLT_OP
        00010 :: 3001                       CHAN_EK_OP
        00011 :: 4001    4    1             IPOL1V_OP    4    1
        00014 :: 3200                       ADD_CURR_OP
        00015 :: 1000    0                  CONC_VAL_OP    0
        00017 :: 5110                       NEWCONC1_OP
        00018 :: 3000                       CHAN_OP
        00019 :: 4001    6    1             IPOL1V_OP    6    1
        00022 :: 4002    0    2             IPOL1C_OP    0    2
        00025 :: 3200                       ADD_CURR_OP

The first opcode `FCOMPT_OP` simply loads the first membrane potential from the `vm` array. Then we encounter a compartment that contains a single synaptic channel (`SYN3_OP` opcode). Then we encounter two consecutive `COMPT_OP` opcodes, indicating the presence of a passive compartment : if you inspect the Purkinje cell tutorial, you see that there are lots of spines consisting of a spine head that contains a synaptic channel and a spine neck that is a passive compartment. The way hines numbering is implemented in `hsolve` forces the computations for the dendritic tips to be done first. In the Purkinje cell tutorial all dendritic tips are spines which explains why we encounter a compartment with a single synaptic channel followed by a passive compartment.

Next we encounter a `NEWVOLT_OP`. This operation loads a pointer to a table that contains an entry for each tabulated channel type in the model and that corresponds to the membrane potential of the current compartment. The `CHAN_EK_OP` loads the maximal conductance and the reversal potential (that come from the current entries in the `chip` array). Then the `IPOL1V_OP` computes a gate factor from a one-dimensional table (the table type is , the exponent is ). The next operation, `ADD_CURR_OP`, computes the current contribution for the channel. After this we see opcodes encoding an analog scenario for a concentration dependent conductance.

The emulation of this byte-code is done in the source file `hines_chip.c`.

NOTE: The `printfuncs` and `printops` commands are not available in release 2.2 of Genesis.

Next: Bibliography Up: Hsolve as a Virtual Previous: Solution of The Cable Contents