<?xml version="1.0"?>
<!-- FILE : hodgkin_huxley_squid_axon_1952.xml
CREATED : 26th March 2002
LAST MODIFIED : 19th July 2002
AUTHOR : Catherine Lloyd
Bioengineering Institute
The University of Auckland
MODEL STATUS : This model conforms to the CellML 1.0 Specification released on
10th August 2001, and the 16/01/2002 CellML Metadata 1.0 Specification.
DESCRIPTION : This file contains a CellML description of the classic Hodgkin-Huxley 1952 model of the squid axon.
CHANGES:
19/07/2002 - CML - Added more metadata.
-->
<model name="hodgkin_huxley_squid_axon_1952" cmeta:id="hodgkin_huxley_squid_axon_1952" xmlns="http://www.cellml.org/cellml/1.0#" xmlns:cellml="http://www.cellml.org/cellml/1.0#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqs="http://www.cellml.org/bqs/1.0#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
<!--
The following RDF block contains metadata that applies to this document
as a whole, as indicated by the empty about attribute on the
<rdf:Description> element.
-->
<rdf:Description rdf:about="">
<!--
The Model Builder Metadata. The Dublin Core "creator" element is used
to indicate the person who translated the model into CellML.
-->
<dc:creator rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Lloyd</vCard:Family>
<vCard:Given>Catherine</vCard:Given>
<vCard:Other>May</vCard:Other>
</vCard:N>
<vCard:EMAIL rdf:parseType="Resource">
<rdf:value>c.lloyd@auckland.ac.nz</rdf:value>
<rdf:type rdf:resource="http://imc.org/vCard/3.0#internet" />
</vCard:EMAIL>
<vCard:ORG rdf:parseType="Resource">
<vCard:Orgname>The University of Auckland</vCard:Orgname>
<vCard:Orgunit>The Bioengineering Institute</vCard:Orgunit>
</vCard:ORG>
</dc:creator>
<!--
The Creation Date metadata. This is the date on which the model
was translated into CellML.
-->
<dcterms:created rdf:parseType="Resource">
<dcterms:W3CDTF>2002-03-26</dcterms:W3CDTF>
</dcterms:created>
<!--
The Modification History metadata. This lists the changes that have been
made to the document, who made the changes, and when they were made.
-->
<cmeta:modification rdf:parseType="Resource">
<rdf:value>
Correcting the equation for dv/dt.
</rdf:value>
<cmeta:modifier rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Nickerson</vCard:Family>
<vCard:Given>David</vCard:Given>
</vCard:N>
</cmeta:modifier>
<dcterms:modified rdf:parseType="Resource">
<dcterms:W3CDTF>2002-11-20</dcterms:W3CDTF>
</dcterms:modified>
</cmeta:modification>
<cmeta:modification rdf:parseType="Resource">
<rdf:value>
Added more metadata.
</rdf:value>
<cmeta:modifier rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Lloyd</vCard:Family>
<vCard:Given>Catherine</vCard:Given>
<vCard:Other>May</vCard:Other>
</vCard:N>
</cmeta:modifier>
<dcterms:modified rdf:parseType="Resource">
<dcterms:W3CDTF>2002-07-19</dcterms:W3CDTF>
</dcterms:modified>
</cmeta:modification>
<!-- The Publisher metadata. -->
<dc:publisher>
The University of Auckland, Bioengineering Institute
</dc:publisher>
</rdf:Description>
<!--
The following metadata refers to the model itself, as indicated by the
reference to the ID "hodgkin_huxley_squid_axon_1952", which is
declared on the <model> element.
-->
<rdf:Description rdf:about="#hodgkin_huxley_squid_axon_1952">
<!-- A human readable name for the model. -->
<dc:title>
The Classic Hodgkin-Huxley 1952 Model of A Squid Axon.
</dc:title>
<!-- A comment regarding the model. -->
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
This is the CellML description of Hodgkin and Huxley's inspirational
work on a mathematical description of currents through the membrane
of a nerve fibre (axon) in a giant squid, and their application
to the modelling of excitation in the nerve. It is generally regarded
as the first example of a mathematical model of biology.
</rdf:value>
<!-- The creator of the comment -->
<dc:creator rdf:parseType="Resource">
<vCard:FN>Warren Hedley</vCard:FN>
</dc:creator>
</cmeta:comment>
<cmeta:species>Squid</cmeta:species>
<cmeta:bio_entity>Neuron</cmeta:bio_entity>
<!-- Keyword(s) -->
<bqs:reference rdf:parseType="Resource">
<dc:subject rdf:parseType="Resource">
<bqs:subject_type>keyword</bqs:subject_type>
<rdf:value>
<rdf:Bag>
<rdf:li>Neuron</rdf:li>
<rdf:li>giant axon</rdf:li>
<rdf:li>electrophysiology</rdf:li>
</rdf:Bag>
</rdf:value>
</dc:subject>
</bqs:reference>
<!--
The CellML Metadata Specification recommends that bibliographic metadata
is used to provide information about the original model reference. The
"identifier" attribute on the "BibliographicReference" class provides an
elegant way to identify a cited reference using a database identifier
such as Pubmed. All associated data such as author, journal title,
date, etc can be looked up on the database.
-->
<bqs:reference rdf:parseType="Resource">
<bqs:Pubmed_id>2185861</bqs:Pubmed_id>
<bqs:JournalArticle rdf:parseType="Resource">
<dc:creator>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Hodgkin</vCard:Family>
<vCard:Given>A</vCard:Given>
<vCard:Other>L</vCard:Other>
</vCard:N>
</bqs:Person>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Huxley</vCard:Family>
<vCard:Given>A</vCard:Given>
<vCard:Other>F</vCard:Other>
</vCard:N>
</bqs:Person>
</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:title>
A quantitative description of membrane current and its application
to conductance and excitation in nerve
</dc:title>
<dcterms:issued rdf:parseType="Resource">
<dcterms:W3CDTF>1952</dcterms:W3CDTF>
</dcterms:issued>
<bqs:Journal rdf:parseType="Resource">
<dc:title>Journal of Physiology</dc:title>
</bqs:Journal>
<bqs:volume>117</bqs:volume>
<bqs:first_page>500</bqs:first_page>
<bqs:last_page>544</bqs:last_page>
</bqs:JournalArticle>
</bqs:reference>
</rdf:Description>
</rdf:RDF>
<!--
Below, we define some additional units for association with variables and
constants within the model. The identifiers are fairly self-explanatory.
-->
<units name="millisecond">
<unit prefix="milli" units="second" />
</units>
<units name="per_millisecond">
<unit prefix="milli" units="second" exponent="-1" />
</units>
<units name="millivolt">
<unit prefix="milli" units="volt" />
</units>
<units name="milliS_per_cm2">
<unit prefix="milli" units="siemens" />
<unit prefix="centi" units="metre" exponent="-2" />
</units>
<units name="microF_per_cm2">
<unit prefix="micro" units="farad" />
<unit prefix="centi" units="metre" exponent="-2" />
</units>
<units name="microA_per_cm2">
<unit prefix="micro" units="ampere" />
<unit prefix="centi" units="metre" exponent="-2" />
</units>
<!--
The "environment" component is used to declare variables that are used by
all or most of the other components, in this case just "time".
-->
<component name="environment">
<variable name="time" public_interface="out" units="millisecond" />
</component>
<component name="membrane">
<!-- these variables are defined here and used in other components -->
<variable name="V" public_interface="out" initial_value="-75.0" units="millivolt" />
<variable name="E_R" public_interface="out" initial_value="-60.0" units="millivolt" />
<!-- these variables are defined here and only used internally -->
<variable name="Cm" initial_value="1.0" units="microF_per_cm2" />
<variable name="I" initial_value="0.0" units="microA_per_cm2" />
<!-- these variables are imported from other components -->
<variable name="time" public_interface="in" units="millisecond" />
<variable name="i_Na" public_interface="in" units="microA_per_cm2" />
<variable name="i_K" public_interface="in" units="microA_per_cm2" />
<variable name="i_L" public_interface="in" units="microA_per_cm2" />
<!--
The membrane voltage (V) is calculated as an ordinary
differential equation in terms of the currents.
-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="V_diff_calculation"><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> V </ci>
</apply>
<apply><divide />
<apply><minus />
<ci> I </ci>
<apply><plus />
<ci> i_Na </ci>
<ci> i_K </ci>
<ci> i_L </ci>
</apply>
</apply>
<ci> Cm </ci>
</apply>
</apply>
</math>
</component>
<component name="sodium_channel">
<!-- this variable is defined here and used in other components -->
<variable name="i_Na" public_interface="out" units="microA_per_cm2" />
<!-- these variables are defined here and only used internally -->
<variable name="g_Na" initial_value="120.0" units="milliS_per_cm2" />
<variable name="E_Na" units="millivolt" />
<!-- these variables are imported from parent and sibling components -->
<variable name="time" public_interface="in" private_interface="out" units="millisecond" />
<variable name="V" public_interface="in" private_interface="out" units="millivolt" />
<variable name="E_R" public_interface="in" units="millivolt" />
<!-- these variables are imported from encapsulated components -->
<variable name="m" private_interface="in" units="dimensionless" />
<variable name="h" private_interface="in" units="dimensionless" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<!--
The following equation determines the reversal potential of the
sodium channel in terms of the membrane resting potential.
-->
<apply id="E_Na_calculation"><eq />
<ci> E_Na </ci>
<apply><plus />
<ci> E_R </ci>
<cn cellml:units="millivolt"> 115.0 </cn>
</apply>
</apply>
<!--
The following equation calculates the sodium current in terms
of the conductance, the membrane voltage, and the gate variables.
-->
<apply id="i_Na_calculation"><eq />
<ci> i_Na </ci>
<apply><times />
<ci> g_Na </ci>
<apply><power />
<ci> m </ci>
<cn cellml:units="dimensionless"> 3.0 </cn>
</apply>
<ci> h </ci>
<apply><minus />
<ci> V </ci>
<ci> E_Na </ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="sodium_channel_m_gate">
<!-- this variable is defined here and used in other components -->
<variable name="m" public_interface="out" initial_value="0.05" units="dimensionless" />
<!-- these variables are defined here and only used internally -->
<variable name="alpha_m" units="per_millisecond" />
<variable name="beta_m" units="per_millisecond" />
<!-- these variables are imported from parent and sibling components -->
<variable name="V" public_interface="in" units="millivolt" />
<variable name="time" public_interface="in" units="millisecond" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<!--
The rate constants on the m and h gates are functions
of membrane voltage
-->
<apply id="alpha_m_calculation"><eq />
<ci> alpha_m </ci>
<apply><divide />
<apply><times />
<cn cellml:units="per_millisecond"> 0.1 </cn>
<apply><plus />
<ci> V </ci>
<cn cellml:units="millivolt"> 25.0 </cn>
</apply>
</apply>
<apply><minus />
<apply><exp />
<apply><times />
<cn cellml:units="dimensionless"> 0.1 </cn>
<apply><plus />
<ci> V </ci>
<cn cellml:units="millivolt"> 25.0 </cn>
</apply>
</apply>
</apply>
<cn cellml:units="dimensionless"> 1.0 </cn>
</apply>
</apply>
</apply>
<apply id="beta_m_calculation"><eq />
<ci> beta_m </ci>
<apply><times />
<cn cellml:units="per_millisecond"> 4.0 </cn>
<apply><exp />
<apply><divide />
<ci> V </ci>
<cn cellml:units="millivolt"> 18.0 </cn>
</apply>
</apply>
</apply>
</apply>
<apply id="dm_dt"><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> m </ci>
</apply>
<apply><minus />
<apply><times />
<ci> alpha_m </ci>
<apply><minus />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> m </ci>
</apply>
</apply>
<apply><times />
<ci> beta_m </ci>
<ci> m </ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="sodium_channel_h_gate">
<variable name="h" public_interface="out" initial_value="0.6" units="dimensionless" />
<variable name="alpha_h" units="per_millisecond" />
<variable name="beta_h" units="per_millisecond" />
<variable name="V" public_interface="in" units="millivolt" />
<variable name="time" public_interface="in" units="millisecond" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="alpha_h_calculation"><eq />
<ci> alpha_h </ci>
<apply><times />
<cn cellml:units="per_millisecond"> 0.07 </cn>
<apply><exp />
<apply><divide />
<ci> V </ci>
<cn cellml:units="millivolt"> 20.0 </cn>
</apply>
</apply>
</apply>
</apply>
<apply id="beta_h_calculation"><eq />
<ci> beta_h </ci>
<apply><divide />
<cn cellml:units="per_millisecond"> 1.0 </cn>
<apply><plus />
<apply><exp />
<apply><times />
<cn cellml:units="dimensionless"> 0.1 </cn>
<apply><plus />
<ci> V </ci>
<cn cellml:units="millivolt"> 30.0 </cn>
</apply>
</apply>
</apply>
<cn cellml:units="dimensionless"> 1.0 </cn>
</apply>
</apply>
</apply>
<apply id="dh_dt"><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> h </ci>
</apply>
<apply><minus />
<apply><times />
<ci> alpha_h </ci>
<apply><minus />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> h </ci>
</apply>
</apply>
<apply><times />
<ci> beta_h </ci>
<ci> h </ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="potassium_channel">
<variable name="i_K" public_interface="out" units="microA_per_cm2" />
<variable name="g_K" initial_value="36.0" units="milliS_per_cm2" />
<variable name="E_K" units="millivolt" />
<variable name="time" public_interface="in" private_interface="out" units="millisecond" />
<variable name="V" public_interface="in" private_interface="out" units="millivolt" />
<variable name="E_R" public_interface="in" units="millivolt" />
<variable name="n" private_interface="in" units="dimensionless" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="E_K_calculation"><eq />
<ci> E_K </ci>
<apply><minus />
<ci> E_R </ci>
<cn cellml:units="millivolt"> 12.0 </cn>
</apply>
</apply>
<apply id="i_K_calculation"><eq />
<ci> i_K </ci>
<apply><times />
<ci> g_K </ci>
<apply><power />
<ci> n </ci>
<cn cellml:units="dimensionless"> 4.0 </cn>
</apply>
<apply><minus />
<ci> V </ci>
<ci> E_K </ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="potassium_channel_n_gate">
<variable name="n" public_interface="out" initial_value="0.325" units="dimensionless" />
<variable name="alpha_n" units="per_millisecond" />
<variable name="beta_n" units="per_millisecond" />
<variable name="V" public_interface="in" units="millivolt" />
<variable name="time" public_interface="in" units="millisecond" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="alpha_n_calculation"><eq />
<ci> alpha_n </ci>
<apply><divide />
<apply><times />
<cn cellml:units="per_millisecond"> 0.01 </cn>
<apply><plus />
<ci> V </ci>
<cn cellml:units="millivolt"> 10.0 </cn>
</apply>
</apply>
<apply><minus />
<apply><exp />
<apply><times />
<cn cellml:units="dimensionless"> 0.1 </cn>
<apply><plus />
<ci> V </ci>
<cn cellml:units="millivolt"> 10.0 </cn>
</apply>
</apply>
</apply>
<cn cellml:units="dimensionless"> 1.0 </cn>
</apply>
</apply>
</apply>
<apply id="beta_n_calculation"><eq />
<ci> beta_n </ci>
<apply><times />
<cn cellml:units="per_millisecond"> 0.125 </cn>
<apply><exp />
<apply><divide />
<ci> V </ci>
<cn cellml:units="millivolt"> 80.0 </cn>
</apply>
</apply>
</apply>
</apply>
<apply id="dn_dt"><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> n </ci>
</apply>
<apply><minus />
<apply><times />
<ci> alpha_n </ci>
<apply><minus />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> n </ci>
</apply>
</apply>
<apply><times />
<ci> beta_n </ci>
<ci> n </ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="leakage_current">
<variable name="i_L" public_interface="out" units="microA_per_cm2" />
<variable name="g_L" initial_value="0.3" units="milliS_per_cm2" />
<variable name="E_L" units="millivolt" />
<variable name="time" public_interface="in" units="millisecond" />
<variable name="V" public_interface="in" units="millivolt" />
<variable name="E_R" public_interface="in" units="millivolt" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="E_L_calculation"><eq />
<ci> E_L </ci>
<apply><plus />
<ci> E_R </ci>
<cn cellml:units="millivolt"> 10.613 </cn>
</apply>
</apply>
<apply id="i_L_calculation"><eq />
<ci> i_L </ci>
<apply><times />
<ci> g_L </ci>
<apply><minus />
<ci> V </ci>
<ci> E_L </ci>
</apply>
</apply>
</apply>
</math>
</component>
<group>
<relationship_ref relationship="containment" />
<component_ref component="membrane">
<component_ref component="sodium_channel">
<component_ref component="sodium_channel_m_gate" />
<component_ref component="sodium_channel_h_gate" />
</component_ref>
<component_ref component="potassium_channel">
<component_ref component="potassium_channel_n_gate" />
</component_ref>
<component_ref component="leakage_current" />
</component_ref>
</group>
<group>
<relationship_ref relationship="encapsulation" />
<component_ref component="sodium_channel">
<component_ref component="sodium_channel_m_gate" />
<component_ref component="sodium_channel_h_gate" />
</component_ref>
<component_ref component="potassium_channel">
<component_ref component="potassium_channel_n_gate" />
</component_ref>
</group>
<connection>
<map_components component_1="membrane" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="sodium_channel" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="potassium_channel" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="leakage_current" component_2="environment" />
<map_variables