Hodgkin & Huxley (1952) ‘A Quantitative Description of Membrane Current and its Application to Conduction and Excitation in Nerve’, J. Physiol. 117: 500-544.
The Hodgkin & Huxley (1952) (HH) model is one of the foundational models of cellular electrophysiology. It defined the “standard” gating kinetics still used in many models today! The model includes potassium, sodium, and ‘leakage’ currents as well and the transmembrane electrical potential. The HH model was originally developed to investigate flow of electric charge in giant nerve axons in squid, but has been applied to a wide range of physiology over the years. The image below shows a graphical view of the elements described in the HH model.
This example follows the material prepared for the VPH-MIP standardisation and ontologies module.
When encoding a model into CellML it is important to first get a good overview of the mathematical equations in the model. A summary for the HH model is shown below. For this model, it is fairly easy to get a good idea of the model structure and begin thinking about how to encode the model in CellML. But this is not always the case, particularly for modern models consisting of many tens of state variables - so often you will need to iterate when developing the CellML encoding of a model. Another reason why it is good practice to make use of a good version control system :)
CellML divides the mathematical model into distinct components, which are able to be re-used. So we want to divide the mathematical model into meaningful blocks (CellML component). In the HH model, these would be:
CellML uses MathML (http://www.w3.org/Math) to encode the mathematical equations in a model. Specifically, CellML 1.0 and CellML 1.1 use MathML 2.0. Using MathML, the equation:
would be encoded in MathML like this:
similar to what you can see in the CellML model: gating-variable.xml; in the hh_gating_variable_dynamic
component.
The equations encoded in MathML define the relationships between variable's in the CellML model. All variables in CellML must be defined, and must be assigned units, with some examples shown below.
In the above example:
X_initial
defines the initial value for the state variable X
(initial_value="X_initial"
)public_interface="in"
means the variable will be defined elsewhere in the modelpublic_interface="out"
means the variable will be available for use elsewhere in the modelThe mathematics and associated variables are grouped into CellML components, which form the reusable building blocks for a model. Continuing the gating variable example above, the skeleton component is shown below. Component's themselves are just a named container that groups the variable definitions with the mathematical expressions in which they are used.
The model, in this case, simply provides the wrapper around the component where we import standard unit definitions for use in the variable declarations and math and then define the component. Note the units dimensionless
are defined in the CellML standard and therefore do not need to be defined in the model, we just need to define the "non-standard" units that we want to use.
Everything in the model can, and should, be annotated using RDF/XML – left out here for brevity.
The actual HH gating variable model can be found here: gating-variable.xml. This model consists of both the dynamic and steady-state versions of the HH gating variable equations.