Location: A review of cardiac cellular electrophysiology models @ ae7a0b93f4ee / models / 1994_rogers / model.xml

Author:
David Nickerson <david.nickerson@gmail.com>
Date:
2021-09-16 01:20:40+12:00
Desc:
Upadte jupyter notebook with MNT and DFN comparison figure
Permanent Source URI:
https://models.fieldml.org/workspace/a1/rawfile/ae7a0b93f4ee5fda3d81ba97eb459f958b2819c9/models/1994_rogers/model.xml

<?xml version='1.0' encoding='UTF-8'?>
<model cmeta:id="rogers_mcculloch" name="Rogers_McCulloch_1994" 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#">
    <!--
    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 prefix="milli" units="volt"/>
    </units>
    <units name="uApmmsq">
        <unit prefix="micro" units="ampere"/>
        <unit exponent="-2" prefix="milli" units="metre"/>
    </units>
    <units name="uFpmmsq">
        <unit prefix="micro" units="farad"/>
        <unit exponent="-2" prefix="milli" units="metre"/>
    </units>
    <units name="ms">
        <unit prefix="milli" units="second"/>
    </units>
    <units name="pms">
        <unit exponent="-1" prefix="milli" units="second"/>
    </units>
    <component cmeta:id="interface" name="interface">
        <!-- Variables we expect to be set/controlled externally -->
        <variable name="t" private_interface="out" public_interface="in" units="ms"/>
        <variable initial_value="0.01" name="Cm" private_interface="out" units="uFpmmsq"/>
        <variable initial_value="-85.0" name="Vr" private_interface="out" units="mV"/>
        <variable initial_value="-75.0" name="Vth" private_interface="out" units="mV"/>
        <variable initial_value="15.0" name="Vp" private_interface="out" units="mV"/>
        <variable initial_value="0.26" name="c1" private_interface="out" units="uApmmsq"/>
        <variable initial_value="0.1" name="c2" private_interface="out" units="uApmmsq"/>
        <variable initial_value="0.013" name="b" private_interface="out" units="pms"/>
        <variable initial_value="0.8" name="d" private_interface="out" units="dimensionless"/>
        <variable name="Istim" private_interface="out" public_interface="in" units="uApmmsq"/>
        <!-- Variables we want to make available externally -->
        <variable cmeta:id="Vm" name="Vm" private_interface="in" public_interface="out" units="mV"/>
        <variable name="v" private_interface="in" public_interface="out" units="dimensionless"/>
        <variable name="Iion" private_interface="in" public_interface="out" units="uApmmsq"/>
    </component>
    <!--interface-->
    <component cmeta:id="membrane_potential" name="membrane_potential">
        <!-- Inputs -->
        <variable name="t" public_interface="in" units="ms"/>
        <variable name="Cm" public_interface="in" units="uFpmmsq"/>
        <variable name="Vr" public_interface="in" units="mV"/>
        <variable name="Vth" public_interface="in" units="mV"/>
        <variable name="Vp" public_interface="in" units="mV"/>
        <variable name="Istim" public_interface="in" units="uApmmsq"/>
        <variable name="Iion" public_interface="in" units="uApmmsq"/>
        <!-- Outputs computed here -->
        <variable initial_value="-85" name="Vm" private_interface="out" public_interface="out" units="mV"/>
        <variable name="u" public_interface="out" units="dimensionless"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <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>
            <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 cmeta:id="ionic_current" name="ionic_current">
        <!-- Inputs -->
        <variable name="Vr" public_interface="in" units="mV"/>
        <variable name="Vth" public_interface="in" units="mV"/>
        <variable name="Vp" public_interface="in" units="mV"/>
        <variable name="c1" public_interface="in" units="uApmmsq"/>
        <variable name="c2" public_interface="in" units="uApmmsq"/>
        <variable name="v" public_interface="in" units="dimensionless"/>
        <variable name="u" public_interface="in" units="dimensionless"/>
        <!-- Outputs computed here -->
        <variable name="Iion" private_interface="out" public_interface="out" units="uApmmsq"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <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>u</ci>
                        <ci>v</ci>
                    </apply>
                </apply>
            </apply>
        </math>
    </component>
    <!--ionic_current-->
    <component cmeta:id="recovery_variable" name="recovery_variable">
        <!-- Inputs -->
        <variable name="t" public_interface="in" units="ms"/>
        <variable name="b" public_interface="in" units="pms"/>
        <variable name="d" public_interface="in" units="dimensionless"/>
        <variable name="u" public_interface="in" units="dimensionless"/>
        <!-- Outputs computed here -->
        <variable initial_value="0.0" name="v" private_interface="out" public_interface="out" units="dimensionless"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <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>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <!-- metadata about the CellML document itself -->
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="">
            <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <vCard:N xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                    <vCard:Family xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">Nickerson</vCard:Family>
                    <vCard:Given xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">David</vCard:Given>
                </vCard:N>
                <vCard:EMAIL xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                    <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">d.nickerson@auckland.ac.nz</rdf:value>
                    <rdf:type xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:resource="http://imc.org/vCard/3.0#internet"/>
                </vCard:EMAIL>
                <vCard:ORG xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                    <vCard:Orgname xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">The University of Auckland</vCard:Orgname>
                    <vCard:Orgunit xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">The Bioengineering Institute</vCard:Orgunit>
                </vCard:ORG>
            </dc:creator>
            <dcterms:created xmlns:dcterms="http://purl.org/dc/terms/" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <dcterms:W3CDTF xmlns:dcterms="http://purl.org/dc/terms/">2003-06-10</dcterms:W3CDTF>
            </dcterms:created>
        </rdf:Description>
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#1994_rogers_mcculloch">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
          This is a CellML version of the modified FitzHugh-Nagumo model, &#xd;
          published by Rogers and McCulloch in 1994. While the&#xd;
          original two-variable model described a non-dimensional activation &#xd;
          variable (u) and a non-dimensional recovery variable (v), &#xd;
          here we formulate the model in terms of the `real' action potential&#xd;
          given by the time course of the transmembrane potential (Vm). In so&#xd;
          doing, the time rate of change of the activation variable describes&#xd;
          the total `ionic current' through the membrane with the original&#xd;
          model parameters adjusted to give the correct dimensionality.&#xd;
        </rdf:value>
            </cmeta:comment>
            <bqs:reference xmlns:bqs="http://www.cellml.org/bqs/1.0#">
                <bqs:Pubmed_id xmlns:bqs="http://www.cellml.org/bqs/1.0#">7927397</bqs:Pubmed_id>
                <bqs:JournalArticle xmlns:bqs="http://www.cellml.org/bqs/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                    <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                        <rdf:Seq xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                            <rdf:li xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:parseType="Resource">
                                <bqs:Person xmlns:bqs="http://www.cellml.org/bqs/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                                    <vCard:N xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                                        <vCard:Family xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">Rogers</vCard:Family>
                                        <vCard:Given xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">J</vCard:Given>
                                        <vCard:Other xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">M</vCard:Other>
                                    </vCard:N>
                                </bqs:Person>
                            </rdf:li>
                            <rdf:li xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:parseType="Resource">
                                <bqs:Person xmlns:bqs="http://www.cellml.org/bqs/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                                    <vCard:N xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                                        <vCard:Family xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">McCulloch</vCard:Family>
                                        <vCard:Given xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">A</vCard:Given>
                                        <vCard:Other xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">D</vCard:Other>
                                    </vCard:N>
                                </bqs:Person>
                            </rdf:li>
                        </rdf:Seq>
                    </dc:creator>
                    <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">&#xd;
             A collocation--Galerkin finite element model of cardiac &#xd;
             action potential propagation&#xd;
          </dc:title>
                    <dcterms:issued xmlns:dcterms="http://purl.org/dc/terms/" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                        <dcterms:W3CDTF xmlns:dcterms="http://purl.org/dc/terms/">1994</dcterms:W3CDTF>
                    </dcterms:issued>
                    <bqs:Journal xmlns:bqs="http://www.cellml.org/bqs/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">IEEE Transactions on Biomedical Engineering &#xd;
            </dc:title>
                    </bqs:Journal>
                    <bqs:volume xmlns:bqs="http://www.cellml.org/bqs/1.0#">41</bqs:volume>
                    <bqs:first_page xmlns:bqs="http://www.cellml.org/bqs/1.0#">743</bqs:first_page>
                    <bqs:last_page xmlns:bqs="http://www.cellml.org/bqs/1.0#">757</bqs:last_page>
                </bqs:JournalArticle>
            </bqs:reference>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#interface">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            We'll use this component as the "interface" to the model, all &#xd;
            other components are hidden via encapsulation in this component.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#membrane_potential">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            The component which defines the kinetics of the transmembrane potential.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#Vm_diff_calculation_eq">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            This equation describes the kinetics of the transmembrane,&#xd;
            potential - the action potential.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#u_calculation_eq">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            The non-dimensional and scaled potential value.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#ionic_current">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            Here we define the total ionic current through the cellular&#xd;
            membrane - equivalent to the temporal derivative of the original&#xd;
            activation variable. The modification of Rogers and McCulloch is&#xd;
            in this equation, with the additional multiplication of recovery &#xd;
            variable with the normalised potential.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#Iion_calculation_eq">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            The calcuation of the total ionic current.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#recovery_variable">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            Here we define the non-dimensional recovery variable, v.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="#v_diff_eq">
            <cmeta:comment xmlns:cmeta="http://www.cellml.org/metadata/1.0#" rdf:parseType="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <rdf:value xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">&#xd;
            The kinetics of the recovery variable.&#xd;
          </rdf:value>
            </cmeta:comment>
        </rdf:Description>
    </rdf:RDF>
</model>