- Author:
- David Nickerson <david.nickerson@gmail.com>
- Date:
- 2021-09-16 00:41:19+12:00
- Desc:
- Updating Noble 1962 model:
* Exposing the membrane potential to the top-level model;
* adding SED-ML for the paced and pacemaker variants of the model.
Using OpenCOR Snapshot release 2021-09-14.
- Permanent Source URI:
- https://models.fieldml.org/workspace/a1/rawfile/f954e59183314cd37f86c8832dc81317d01c8ec5/models/1961_fitzhugh/model.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<model
name="FitzHugh_Nagumo_1961"
xmlns="http://www.cellml.org/cellml/1.1#"
xmlns:cellml="http://www.cellml.org/cellml/1.1#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#"
cmeta:id="1961_fitzhugh_nagumo">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#"
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#">
<!-- metadata about the CellML document itself -->
<rdf:Description rdf:about="">
<dc:creator rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Nickerson</vCard:Family>
<vCard:Given>David</vCard:Given>
</vCard:N>
<vCard:EMAIL rdf:parseType="Resource">
<rdf:value>d.nickerson@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>
<dcterms:created rdf:parseType="Resource">
<dcterms:W3CDTF>2003-06-10</dcterms:W3CDTF>
</dcterms:created>
</rdf:Description>
<rdf:Description rdf:about="#1961_fitzhugh_nagumo">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
This is a CellML version of the FitzHugh-Nagumo model, published
separately by FitzHugh in 1961 and Nagumo et. al. in 1962. While the
original two-variable model described a non-dimensional activation
variable (x or u) and a non-dimensional recovery variable (y or v),
here we formulate the model in terms of the `real' action potential
given by the time course of the transmembrane potential (Vm). In so
doing, the time rate of change of the activation variable describes
the total `ionic current' through the membrane with the original
model parameters adjusted to give the correct dimensionality.
</rdf:value>
</cmeta:comment>
<bqs:reference>
<bqs:JournalArticle rdf:parseType="Resource">
<dc:creator rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Fitzhugh</vCard:Family>
<vCard:Given>R</vCard:Given>
<vCard:Other>A</vCard:Other>
</vCard:N>
</bqs:Person>
</dc:creator>
<dc:title>
Impulses and physiological states in theoretical models of nerve
membrane
</dc:title>
<dcterms:issued rdf:parseType="Resource">
<dcterms:W3CDTF>1961</dcterms:W3CDTF>
</dcterms:issued>
<bqs:Journal rdf:parseType="Resource">
<dc:title>Biophysical Journal</dc:title>
</bqs:Journal>
<bqs:volume>1</bqs:volume>
<bqs:first_page>445</bqs:first_page>
<bqs:last_page>466</bqs:last_page>
</bqs:JournalArticle>
</bqs:reference>
<bqs:reference>
<bqs:JournalArticle rdf:parseType="Resource">
<dc:creator rdf:parseType="Resource">
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Nagumo</vCard:Family>
<vCard:Given>J</vCard:Given>
</vCard:N>
</bqs:Person>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Animoto</vCard:Family>
<vCard:Given>S</vCard:Given>
</vCard:N>
</bqs:Person>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<bqs:Person rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Yoshizawa</vCard:Family>
<vCard:Given>S</vCard:Given>
</vCard:N>
</bqs:Person>
</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:title>
An active pulse transmission line simulating nerve axon
</dc:title>
<dcterms:issued rdf:parseType="Resource">
<dcterms:W3CDTF>1962</dcterms:W3CDTF>
</dcterms:issued>
<bqs:Journal rdf:parseType="Resource">
<dc:title>Proceedings of the Institute of Radio Engineers
</dc:title>
</bqs:Journal>
<bqs:volume>50</bqs:volume>
<bqs:first_page>2061</bqs:first_page>
<bqs:last_page>2070</bqs:last_page>
</bqs:JournalArticle>
</bqs:reference>
</rdf:Description>
</rdf:RDF>
<!--
Generally, we want to move away from initial/default values being
stored in the model directly. But until we are using CellML 1.1
it is probably quite useful to include the values in the model.
-->
<!-- Global units -->
<units name="mV">
<unit units="volt" prefix="milli"/>
</units>
<units name="uApmmsq">
<unit units="ampere" prefix="micro"/>
<unit units="metre" prefix="milli" exponent="-2"/>
</units>
<units name="uFpmmsq">
<unit units="farad" prefix="micro"/>
<unit units="metre" prefix="milli" exponent="-2"/>
</units>
<units name="ms">
<unit units="second" prefix="milli"/>
</units>
<units name="pms">
<unit units="second" prefix="milli" exponent="-1"/>
</units>
<component name="interface" cmeta:id="interface">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#interface">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
We'll use this component as the "interface" to the model, all
other components are hidden via encapsulation in this component.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<!-- Variables we expect to be set/controlled externally -->
<variable name="t" units="ms" public_interface="in" private_interface="out"/>
<variable name="Cm" units="uFpmmsq" private_interface="out" initial_value="0.01"/>
<variable name="Vr" units="mV" private_interface="out" initial_value="-85.0"/>
<variable name="Vth" units="mV" private_interface="out" initial_value="-75.0"/>
<variable name="Vp" units="mV" private_interface="out" initial_value="15.0"/>
<variable name="c1" units="uApmmsq" private_interface="out" initial_value="0.175"/>
<variable name="c2" units="uApmmsq" private_interface="out" initial_value="0.03"/>
<variable name="b" units="pms" private_interface="out" initial_value="0.011"/>
<variable name="d" units="dimensionless" private_interface="out" initial_value="0.55"/>
<variable name="Istim" units="uApmmsq" private_interface="out" public_interface="in"/>
<!-- Variables we want to make available externally -->
<variable name="Vm" units="mV" public_interface="out" private_interface="in"/>
<variable name="v" units="dimensionless" public_interface="out" private_interface="in"/>
<variable name="Iion" units="uApmmsq" public_interface="out" private_interface="in"/>
</component> <!--interface-->
<component name="membrane_potential" cmeta:id="membrane_potential">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#membrane_potential">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
The component which defines the kinetics of the transmembrane potential.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<!-- Inputs -->
<variable name="t" units="ms" public_interface="in"/>
<variable name="Cm" units="uFpmmsq" public_interface="in"/>
<variable name="Vr" units="mV" public_interface="in"/>
<variable name="Vth" units="mV" public_interface="in"/>
<variable name="Vp" units="mV" public_interface="in"/>
<variable name="Istim" units="uApmmsq" public_interface="in"/>
<variable name="Iion" units="uApmmsq" public_interface="in"/>
<!-- Outputs computed here -->
<variable name="Vm" cmeta:id="Vm" units="mV" public_interface="out" private_interface="out" initial_value="-85"/>
<variable name="u" units="dimensionless" public_interface="out"/>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#Vm_diff_calculation_eq">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
This equation describes the kinetics of the transmembrane,
potential - the action potential.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="Vm_diff_calculation_eq">
<apply id="Vm_diff_calculation"><eq/>
<apply><diff/>
<bvar><ci>t</ci></bvar>
<ci>Vm</ci>
</apply>
<apply><divide/>
<apply><minus/>
<ci>Istim</ci>
<ci>Iion</ci>
</apply>
<ci>Cm</ci>
</apply>
</apply>
</math>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#u_calculation_eq">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
The non-dimensional and scaled potential value.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="u_calculation_eq">
<apply id="u_calculation"><eq/>
<ci>u</ci>
<apply><divide/>
<apply><minus/>
<ci>Vm</ci>
<ci>Vr</ci>
</apply>
<apply><minus/>
<ci>Vp</ci>
<ci>Vr</ci>
</apply>
</apply>
</apply>
</math>
</component><!--membrane_potential-->
<component name="ionic_current" cmeta:id="ionic_current">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#ionic_current">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
Here we define the total ionic current through the cellular
membrane - equivalent to the temporal derivative of the original
activation variable.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<!-- Inputs -->
<variable name="Vr" units="mV" public_interface="in"/>
<variable name="Vth" units="mV" public_interface="in"/>
<variable name="Vp" units="mV" public_interface="in"/>
<variable name="c1" units="uApmmsq" public_interface="in"/>
<variable name="c2" units="uApmmsq" public_interface="in"/>
<variable name="v" units="dimensionless" public_interface="in"/>
<variable name="u" units="dimensionless" public_interface="in"/>
<!-- Outputs computed here -->
<variable name="Iion" units="uApmmsq" public_interface="out" private_interface="out"/>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#Iion_calculation_eq">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
The calcuation of the total ionic current.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="Iion_calculation_eq">
<apply id="Iion_calculation"><eq/>
<ci>Iion</ci>
<apply><plus/>
<apply><times/>
<ci>c1</ci>
<ci>u</ci>
<apply><minus/>
<ci>u</ci>
<apply><divide/>
<apply><minus/>
<ci>Vth</ci>
<ci>Vr</ci>
</apply>
<apply><minus/>
<ci>Vp</ci>
<ci>Vr</ci>
</apply>
</apply>
</apply>
<apply><minus/>
<ci>u</ci>
<cn cellml:units="dimensionless">1.0</cn>
</apply>
</apply>
<apply><times/>
<ci>c2</ci>
<ci>v</ci>
</apply>
</apply>
</apply>
</math>
</component><!--ionic_current-->
<component name="recovery_variable" cmeta:id="recovery_variable">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#recovery_variable">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
Here we define the non-dimensional recovery variable, v.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<!-- Inputs -->
<variable name="t" units="ms" public_interface="in"/>
<variable name="b" units="pms" public_interface="in"/>
<variable name="d" units="dimensionless" public_interface="in"/>
<variable name="u" units="dimensionless" public_interface="in"/>
<!-- Outputs computed here -->
<variable name="v" units="dimensionless" public_interface="out" private_interface="out" initial_value="0.0"/>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:Description rdf:about="#v_diff_eq">
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
The kinetics of the recovery variable.
</rdf:value>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="v_diff_eq">
<apply id="v_diff"><eq/>
<apply><diff/>
<bvar><ci>t</ci></bvar>
<ci>v</ci>
</apply>
<apply><times/>
<ci>b</ci>
<apply><minus/>
<ci>u</ci>
<apply><times/>
<ci>d</ci>
<ci>v</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component><!--ionic_current-->
<connection>
<map_components component_1="interface" component_2="membrane_potential"/>
<map_variables variable_1="t" variable_2="t"/>
<map_variables variable_1="Cm" variable_2="Cm"/>
<map_variables variable_1="Vr" variable_2="Vr"/>
<map_variables variable_1="Vth" variable_2="Vth"/>
<map_variables variable_1="Vp" variable_2="Vp"/>
<map_variables variable_1="Vm" variable_2="Vm"/>
<map_variables variable_1="Istim" variable_2="Istim"/>
</connection>
<connection>
<map_components component_1="interface" component_2="ionic_current"/>
<map_variables variable_1="Vr" variable_2="Vr"/>
<map_variables variable_1="Vth" variable_2="Vth"/>
<map_variables variable_1="Vp" variable_2="Vp"/>
<map_variables variable_1="c1" variable_2="c1"/>
<map_variables variable_1="c2" variable_2="c2"/>
<map_variables variable_1="Iion" variable_2="Iion"/>
</connection>
<connection>
<map_components component_1="interface" component_2="recovery_variable"/>
<map_variables variable_1="t" variable_2="t"/>
<map_variables variable_1="b" variable_2="b"/>
<map_variables variable_1="d" variable_2="d"/>
<map_variables variable_1="v" variable_2="v"/>
</connection>
<connection>
<map_components component_1="membrane_potential" component_2="ionic_current"/>
<map_variables variable_1="u" variable_2="u"/>
<map_variables variable_1="Iion" variable_2="Iion"/>
</connection>
<connection>
<map_components component_1="membrane_potential" component_2="recovery_variable"/>
<map_variables variable_1="u" variable_2="u"/>
</connection>
<connection>
<map_components component_1="ionic_current" component_2="recovery_variable"/>
<map_variables variable_1="v" variable_2="v"/>
</connection>
<group>
<relationship_ref relationship="encapsulation"/>
<component_ref component="interface">
<component_ref component="membrane_potential"/>
<component_ref component="ionic_current"/>
<component_ref component="recovery_variable"/>
</component_ref>
</group>
</model>