A quantitative description of membrane current and its application to conductance and excitation in nerve

A quantitative description of membrane current and its application to conductance and excitation in nerve

Model Status

This version has had a stimulus protocol component added to allow the model to simulate multiple action potentials, has been unit checked and curated and is known to run in COR and PCEnv.

Introduction

In a series of papers published in 1952, A.L. Hodgkin and A.F. Huxley presented the results of a series of experiments in which they investigated the flow of electric current through the surface membrane of the giant nerve fibre of a squid. In the summary paper of the Hodgkin and Huxley model, the authors developed a mathematical description of the behaviour of the membrane based upon these experiments, which accounts for the conduction and excitation of the fibre. The form of this description has been used as the basis for almost all other ionic current models of excitable tissues, including Purkinje fibres and cardiac atrial and ventricular muscle.

The summary paper is:

A Quantitative Description of Membrane Current and its Application to Conduction and Excitation in Nerve, A. L. Hodgkin and A. F. Huxley, 1952, J. Physiol, 117, 500-544

Status of the Model and Documentation

The CellML description of the Hodgkin-Huxley model (which can be downloaded in various formats as described in ) and documentation were revised and updated in September 2003 to conform to the 10 August 2001 version of the CellML 1.0 Specification and the 16 January 2002 version of the CellML Metadata 1.0 Specification.

The model description itself is intended to demonstrate the best practices for the definition of electrophysiological models using CellML, as intended by the authors of the CellML Specification.

The metadata included in the CellML description should not be regarded as a demonstration of best practice for metadata. It is neither complete nor final, as the version of the CellML Metadata Specification on which it is based has a status of Research Summary.

Hodgkin Huxley Model Overview

The current flow across the cell membrane depends on the capacitance of the membrane and the resistance of the ion channels. The total ionic current is represented by the sum of the sodium current, potassium current and a small leakage current. The leakage current represents the collective contribution of ions such as chloride and bicarbonate. Hodgkin and Huxley developed an electrical circuit diagram to represent the ion flows in their model. A modified version of this diagram is shown in , where the currents have been reversed to be consistent with the convention proposed by Noble, commonly adopted for cardiac muscle.

A schematic cell diagram describing the current flows across the cell membrane that are captured in the Hodgkin Huxley model.

The current is represented mathematically as the sum of the resistive and capacitive components. The capacitive component Icap is derived from Ohm's law, where Cm and Vm denote the membrane capacitance and trans-membrane voltage, respectively.

The resistive components are characterised in the original model as conductances (g), the reciprocals of the resistances. The currents are dependent on the transmembrane voltage (Vm) and the equilibrium potentials (E) of the individual ions. There are two forces driving the ion flux: the chemical gradient of the ions and the electrical gradient resulting from the different concentrations of charged particles on each side of the membrane. The equilibrium potential or reversal potential arises from equating the electrical and chemical potentials. The difference between the equilibrium potential for an ion and the transmembrane potential is the driving force for the ionic flow. The resistive currents can therefore be written:

The experiments suggested that gNa and gK were time dependent but the conductances of the other ions could be considered to be constant. Depolarisation of the membrane causes a fast transient increase in sodium conductance and a gradual and sustained increase in potassium conductance. The time dependence is represented by a gate variable or activation coefficient x which indicates the probability of a gate in the channel being open. The conductance for a time dependent channel can thus be written in terms of its gate variable x (0 <= x <= 1) and a maximum conductance gion,max as follows:

where x satisfies the differential equation:

and are rate coefficients which are a non-linear functions of voltage and have the units of 1/time.

The activation coefficient can be raised to the power of k if there are k gates in series in one ion channel. Channels can also be given more then one gate variable to describe activation-inactivation behaviour. This gives current equations of the form:

where x is the activation variable and y is the inactivation variable. The rate coefficients for the inactivation variable and are in general much slower than the rate coefficients for the activation variable. An example of this type of channel is the fast sodium channel involved in the depolarisation of the membrane to generate the upstroke of the action potential.

Sodium conductance

The sodium conductance control theory that Hodgkin and Huxley chose to adopt involved two control particles. The first moves out of an inhibitory site when the transmembrane potential reaches a threshold allowing sodium ions to flow though the channel. A second inhibitory particle moves slowly to occupy the inhibitory site and stop the ion flow. These are represented by two variables each governed by a first order differential equation. The conductance is then expressed:

where m is an activation coefficient, h is an inactivation coefficient and gNa,max is the maximum sodium conductance. Both activation and inactivation variables are governed by the differential equations

where the rate constants and are functions of voltage but not of time. Expressions for rate constants were found by fitting curves to experimental data from nerve fibres to give:

The total sodium current is then given by

where ENa is the reversal potential for the sodium channel.

Potassium conductance

The potassium conductance can be modelled similarly, but there are only activation type channels for potassium. The equations are:

where n is the activation coefficient for the potassium channel, gK,max is the maximum conductance of potassium and and are the voltage dependent rate constants.

The total potassium current is then given by

where EK is the reversal potential for the potassium channel.

Leakage current

The full Hodgkin Huxley model also included the leakage current to maintain the constant resting membrane potential in the absence of any depolarisation. The leakage current is given by

where EL is the reversal potential for the leakage current.

Putting it all together

The full Hodgkin Huxley membrane current model is assembled by now combining the capacitive and resistive currents across the membrane into a single equation.

All the equilibrium potentials are related to the resting membrane potential ER. The set of values used in the model are given in the table .

Representing the Model in CellML

In CellML any model is represented by a network of components, typically chosen to reflect the natural physical entities in the system. Information is passed from one component to another through connections. A diagram showing the network defined in the CellML description of the Hodgkin-Huxley model is shown in .

The network defined in the CellML description of the Hodgkin-Huxley model. Where a variable is passed from one component to another along a connection, the name of the variable is shown next to the component in which it is declared with a public or private interface value of out. The environment component discussed in is not included in this diagram. A key describing the significance of the shapes of the components and the colours of the connections between them is in the notation guide.

At the highest level, the model consists of four components with identifiers membrane, sodium_channel, potassium_channel and leakage_current. The membrane physically contains the two channels and the leakage current, as indicated by the blue arrows in . The channels and current act independently and are not connected to each other. Both the sodium and potassium channels encapsulate and contain further components: the sodium channel contains two components representing the m and h gates, and the potassium channel contains a component representing the n gate. The addition of an encapsulation relationship between the sodium channel and the m and h gates informs modellers and processing software that the m and h gates are important parts of the sodium channel model. It also prevents any other components that aren't also encapsulated by the sodium channel component from connecting to the m and h gates, effectively hiding them from the rest of the model.

CellML processing software might choose to use the containment and encapsulation information in the model definition for the rendering of the model. An initial rendering might have the sodium channel, potassium channel, and leakage currents drawn inside the membrane component. Some label might indicate that the sodium and potassium channel components contain hidden detail. When the user double clicks on the sodium channel, they are shown the hidden m and h gate components.

The breakdown of the model into components and the definition of encapsulation and containment relationships between them is somewhat arbitrary. When considering how a model should be broken into components, modellers are encouraged to consider which parts of a model might be re-used, and how the physiological elements of the system being modelled are naturally bounded. Containment relationships should be used to provide simple rendering information for processing software (ideally, this will correspond to the layout of the physical system), and encapsulation should be used to group sets of components into sub-models.

Analysis of the CellML Code

The model element

The root element of the XML document containing the CellML definition of the Hodgkin-Huxley model is the model element shown in . (At this point, those not familiar with XML may want to consult the quick introduction to XML for help with understanding XML terms.) The model element defines a name attribute that allows this model to be unambiguously referenced by other models. For instance, this would be necessary if this model were to be combined with other models or partial models to create a larger model. It also defines an id attribute in the CellML Metadata namespace (which is mapped to the cmeta prefix). This id attribute is of XML type ID and may be used to attach metadata to this element, as discussed in .

The model element also defines two XML namespaces. The first is the CellML namepsace, which is set to the default namespace and also mapped explicitly to the cellml prefix. The default namespace declaration (which looks like an xmlns attribute) means that the model element is itself in the CellML namespace. As such, it can be identified by any namespace-aware XML parser as a CellML element. In addition, any child elements that are not placed in another namespace, or that do not declare a new default namespace, will also be in the CellML namespace. Mapping the CellML namespace to the cellml prefix simplifies the declaration of elements and attributes in the CellML namespace later in the file. For instance, the cellml prefix can be used to place the units attribute on the cn element (which is in the MathML namespace) in the CellML namespace. The declaration of the CellML namespace as both the default namespace and as a namespace mapped to the cellml prefix is recommended practice for any model element.

The model element also defines the CellML Metadata namespace and maps it to the cmeta prefix. This allows the id attribute to be placed in the CellML Metadata namespace.

Declaration of units

The CellML Specification defines a standard dictionary of units that can be used in CellML models without further definition. This dictionary consists of the base SI units (as defined by the Bureau International des Poids et Mesures) and some additional units commonly found in the types of biological models likely to be defined using CellML.

A modeller who wishes to use units not declared in the standard dictionary can define additional units in the CellML model document. The units definitions from the Hodgkin Huxley model are shown in . These units definitions occur immediately within the root model element, giving them document-wide scope.

The units definitions are declared with a set of units elements. Each units element must have a name attribute, which declares an identifier that can then be referenced in the units attribute on variable and cn elements (cn elements enclose bare numbers in MathML).

Each units element may contain one or more unit elements. The units defined by the units element are a combination of the contents of these unit elements. Section 5.2.2 of the CellML Specification explains how the attributes for each unit element contribute to a new units definition. CellML processing software may choose to use these units definitions to verify the consistency of units across connections (inserting scale-factors, if appropriate) and check the dimensions of equations, as described in Section 5.2.6 and Section 5.2.7 of the CellML Specification, respectively.

Model components

The CellML definition of the Hodgkin-Huxley model consists of a total of eight components. Seven of these correspond to physiological entities and were shown in the diagram in . Within each component variables are declared for use within the mathematics that determine the model's function. The interface on each variable declaration determines whether the value of the variable is calculated in the current component and exported, or calculated elsewhere and imported. The last component represents the model's environment. This is a convenient container for variables and constants that are global to the model, and for variables that are not associated with any other component.

In the subsequent sections, the components corresponding to the environment, membrane, sodium channel, and sodium channel activation gate are all examined in detail. The remainder of the components closely resemble one of the components discussed and are not examined here.

The environment component

The first component element defined in the CellML description of the Hodgkin-Huxley model has an identifier of environment. The complete definition is given in . As the name suggests, this component does not correspond to a physical compartment in a cell, but rather is an abstract container used to define variables whose reach or scope could be thought of as global.

In the Hodgkin-Huxley model, the only global variable is the independent variable time. In CellML models no variables are given any kind of precedence or implicitly assumed to exist. This makes the model definition more robust and model components more re-usable. It is therefore necessary to declare variables to represent time and space if they are needed in a model, but it is not necessary to indicate that a variable like time is an independent variable, as this can be determined from analysis of the differential equations. One could theoretically call the variable that represents time A1 and use the names t and time to represent other concepts in your model. It would be unwise to use the names time and t to represent anything other than time, or the names x, y, or z to represent anything other than space. Doing so would make it more difficult for other model authors to re-use your work.

Note that the name environment has no special significance, but is simply a human-readable identifier enabling the modeller to determine the purpose of this component. We expect that software would make use of ontology or metadata information associated with the component to work out that this component would not be rendered in the same way as the membrane component, for example.

The membrane component

The component at the root of the geometric hierarchy defined within the model is a component with an identifier of membrane, the full definition of which is shown in .

The membrane component declares eight variables. The first two of these, V and E_R, correspond to the quantities membrane voltage and membrane equilibrium potential, respectively. Their declarations have public_interface attributes with a value of out, indicating that they are defined in this component, that their values may be set and manipulated in this component and that their values are available to other components in the model. initial_value attributes are used on each of the variable elements to set the value of the variable when the independent variables (in this case just time) have values of 0.0.

The variables Cm and I, which represent membrane capacitance and applied stimulus current, respectively, are declared with no interface, indicating that their values may only be manipulated within the membrane component and are not visible to other components.

The final four variables, time, i_Na, i_K, and i_L represent time, and the sodium, potassium, and leakage currents through the membrane, respectively. They have public_interface attributes with a value of in, indicating that their value is calculated in another component and imported into this one.

After the variable declarations, a block of MathML defines the single differential equation for V shown in . This is the inverse of in . The id attribute on the first apply element allows metadata such as comments or annotations to be associated with the equation itself. This is included for demonstration purposes only, as no metadata is associated with any of the equations in this model.

As E_R and I can only be changed in this component, the lack of any equations modifying the values of these variables indicates that they are constant with respect to the independent variable time.

The sodium_channel component

Following the definition of the membrane component is the definition of a component with an identifier of sodium_channel. This component is physically inside the membrane component, and in turn, contains and encapsulates two components representing the m and h gates within the sodium channel. The full definition of the sodium_channel component is given in .

Three variables are defined in this component: i_Na, g_Na, and E_Na, which correspond to the sodium current, maximum sodium channel conductance, and reversal potential of the sodium channel, respectively. i_Na is available for use by other components (it is imported into the membrane component for instance), whereas g_Na and E_Na are only used internally.

Much of the mathematical functionality of the sodium channel is defined in the encapsulated m and h gate components, so some of the variable elements in this component define a private_interface attribute. The three variables time, V, and E_R correspond to the quantities time, membrane voltage, and membrane reversal potential, respectively. They are each declared with a public_interface attribute value of in, indicating that their value is imported from either a parent or sibling component in the encapsulation hierarchy. (For the proper definition of these terms, see Section 6.2.2 of the CellML Specification.) The time and V variable elements also define a private_interface attribute with a value of out, indicating that their value is available to any encapsulated components. In this sense, the sodium_channel component is acting as an interface between the encapsulated components and the rest of the model, which is not concerned with the inner workings of the sodium channel.

Finally, the two variables m and h correspond to the activation and inactivation coefficients on the sodium channel, respectively. These are declared with a private_interface attribute value of in, indicating that the value of the variable is to be imported from an encapsulated component. The lack of a public_interface attribute ensures that these values are not accessible from outside the sodium_channel component.

The sodium_channel component then defines the two equations depicted in and . The first sets the value of E_Na (the reversal potential of the channel) in terms of the membrane reversal potential. The second calculates the value of i_Na (the sodium current) in terms of the channel conductance, activation and inactivation coefficients, membrane voltage and reversal potential.

The sodium_channel_m_gate component

The Hodgkin-Huxley model of the sodium channel presented in consists of two types of gates labelled m and h, which are arranged in series with three m gates and one h gate as indicated in the sodium current calculation in . The gates are represented mathematically as coefficients in the 0-1 range, where m is an activation coefficient, meaning that the gate opens as the membrane voltage increases, and h is an inactivation coefficient. The value of each coefficient is determined by its own differential equation, depending on its own value as well as two voltage dependent rate constants. As the sodium current calculation only depends on the values of the activation and inactivation coefficients, the calculation of these coefficients can be conveniently moved into their own components. The sodium_channel_m_gate component defines the variables and equations pertaining to the m gate activation coefficient. The full component definition is given in .

The sodium_channel_m_gate component defines five variables. The first, m (the activation coefficient), is declared with a public_interface attribute value of out, making it available to any components in the parent and sibling sets in the encapsulation hierarchy. In this case it is the parent sodium_channel component which makes use of this variable. It also declares an initial_value attribute value of 0.05, which sets the value of m to 0.05 at the point where all independent variables (in this case just time) have a value of 0.0.

The alpha_m and beta_m variables correspond to the rate coefficients for the m gate and are declared with no interface. Finally the V and time variables are declared with a public_interface attribute value of in indicating that their value is imported from a component in the parent or sibling set. In this case the parent sodium_channel component makes those variables available with private_interface attribute values of out.

The equations defined in the subsequent MathML block correspond to , , and from .

Containment and encapsulation relationships

As discussed in , the CellML description of the Hodgkin-Huxley model defines both physical and encapsulation relationships between the components in the model. The geometric relationships might be used by CellML processing software as a rendering guideline, and the encapsulation relationships allow processing software to present different levels of model complexity to the user.

Both containment (i.e., physical) and encapsulation relationships between components are defined in CellML using the group element. Each group element may contain one or more relationship_ref elements, each of which references a type of relationship that will apply to all parent-child component pairs defined within the group element. Parent-child pairs are defined by simply referencing the child component in a component_ref element that is defined inside a component_ref element referencing the parent component. The group elements from the CellML description of the Hodgkin-Huxley model are shown in .

The first group element specifies the entirety of the containment hierarchy. The membrane component is the root of the hierarchy, containing the sodium_channel, potassium_channel, and leakage_current components. In turn the sodium_channel component contains the sodium_channel_m_gate and sodium_channel_h_gate components, and the potassium_channel component contains the potassium_channel_n_gate component. Only the environment component is not referenced in the containment hierarchy.

The second group element specifies all of the encapsulation relationships between components in the model. The definition indicates that the sodium_channel component encapsulates the sodium_channel_m_gate and sodium_channel_h_gate components, and the potassium_channel component encapsulates the potassium_channel_n_gate component. The components that are not referenced in the encapsulation hierarchy are siblings of the sodium_channel and potassium_channel components, both of which have no parent component.

As for many model design issues in CellML, there's more than one way to do it. It would be possible to define each group of parent-child pairs in a separate group element. One could also associate both the containment and encapsulation relationships with, for instance, the grouping of the sodium_channel component and its children. The form shown in is the recommended best practice because it allows someone looking at the XML code directly to see the entirety of each hierarchy in a single glance, rather than having to hunt through the model definition and piece the hierarchy together. This also makes it easier to validate that a given hierarchy does not contain duplicate component references.

Passing variable values with connections

The CellML model description concludes with ten connection elements, which are used to pass the values of the model's variables from one component to another. Each connection element contains a single map_components element, which references the components to be connected, and then one or more map_variables elements, which reference the variables from each component to be mapped together. The connection element used to pass the values of the V, E_R, and i_Na variables between the membrane and sodium_channel components is shown in .

The variable_1 attribute on each map_variables element references a variable in the component referenced by the component_1 attribute on the map_components element. Similarly, the variable_2 attribute on each map_variables element references a variable in the component referenced by the component_2 attribute on the map_components element. Each variable's value is passed from the component where it is declared with an interface value of out to the component where it is declared with an interface value of in, independent of whether a variable's name appears in the variable_1 or variable_2 attributes. In the example shown in , all of the variables referenced have the same name in both the membrane and sodium_channel components, but this need not necessarily be the case.

Model metadata

The CellML description of the Hodgkin-Huxley model also contains some limited metadata, defined within the system described in the metadata framework section of the CellML Specification, and based on the syntax described in the 16 January 2002 draft of the CellML Metadata Specification. This metadata demonstrates a small fraction of the full CellML Metadata data model and has been included for demonstration purposes only. The metadata from the CellML description of the Hodgkin Huxley model is shown in , with the comments removed for brevity.

CellML metadata is classified and associated with CellML documents and CellML elements using the Resource Description Framework (RDF). The RDF specification defines an XML-based syntax for defining metadata. This syntax is suitable for embedding within CellML documents. Within the RDF framework, the CellML Metadata Specification recommends using elements from the Dublin Core for classifying various simple types of metadata as described in the XML Encoding of Simple Dublin Core Metadata specification. Personal information is encoded using the syntax proposed in a W3C note entitled Representing vCard Objects in RDF/XML. Citation information is stored using an XML serialization of the Object Management Group's Bibliographic Query Service specification developed for the CellML Metadata Specification. Finally, the CellML Metadata Specification proposes new elements for several types of metadata for which no XML-based syntax has already been standardised.

In the example in , an rdf:RDF element (an RDF element in the RDF namespace) encloses the metadata block, which defines metadata for two objects. The rdf:RDF element declares all of the namespaces that will be used within the element, redefining the CellML Metadata namespace even though it is declared on the parent model element. This is the recommended best practice as it ensures that the rdf:RDF element and its children form a self-contained and hence portable block of XML. Metadata is associated with a particular object by placing it inside an rdf:Description element that defines an about attribute. The first rdf:Description element has an empty about attribute, indicating that the enclosed metadata refers to the current document. The second rdf:Description element has an about attribute value of #hodgkin_huxley_squid_axon_1952. The hash (#) signifies that the subsequent text is the value of an attribute of type ID within the current document, which in this case is the cmeta:id attribute on the model element, which has this value.

The first rdf:Description element defines some fairly basic information about the CellML document. Firstly, various vCard elements are used to describe a person who is identified as the document author with the Dublin Core dc:creator element. The subsequent blocks of metadata define the creation date and last modified date for the document. Finally the document's publisher is identified as The University of Auckland, Bioengineering Institute.

In the second rdf:Description element, a human readable name for the model is provided using the Dublin Core dc:title element. A comment on the model is provided using CellML Metadata's cmeta:comment element, and the author of the annotation is identified. Finally, a bqs:Pubmed_id element is used to associate a citation with the model. The citation is identified by its Pubmed numeric identifier.