Location: A review of cardiac cellular electrophysiology models @ 3d4e6bf98dd9 / models / 1996_aliev / model.xml

Author:
David Nickerson <nickerso@users.sourceforge.net>
Date:
2009-07-08 07:08:43+12:00
Desc:
adding generated content for the current version of the IUPS tutorial description
Permanent Source URI:
https://models.fieldml.org/workspace/a1/rawfile/3d4e6bf98dd9bad94b65a1d1001cd4d0e779b8f4/models/1996_aliev/model.xml

<?xml version="1.0" encoding="iso-8859-1"?>

<model
    name="Aliev_Panfilov_1996"
    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#"
    cmeta:id="1996_aliev_panfilov">
    
  <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="#1996_aliev_panfilov">
      <cmeta:comment rdf:parseType="Resource">
        <rdf:value>
          This is a CellML version of the modified FitzHugh-Nagumo model, 
          published by Aliev and Panfilov in 1996. While the
          original two-variable model described a non-dimensional activation 
          variable (u) and a non-dimensional recovery variable (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">
            <rdf:Seq>
              <rdf:li rdf:parseType="Resource">
                <bqs:Person rdf:parseType="Resource">
                  <vCard:N rdf:parseType="Resource">
                    <vCard:Family>Aliev</vCard:Family>
                    <vCard:Given>R</vCard:Given>
                    <vCard:Other>R</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>Panfilov</vCard:Family>
                    <vCard:Given>A</vCard:Given>
                    <vCard:Other>V</vCard:Other>
                  </vCard:N>
                </bqs:Person>
              </rdf:li>
            </rdf:Seq>
          </dc:creator>
          <dc:title>
            A Simple Two-variable Model of Cardiac Excitation
          </dc:title>
          <dcterms:issued rdf:parseType="Resource">
            <dcterms:W3CDTF>1996</dcterms:W3CDTF>
          </dcterms:issued>
          <bqs:Journal rdf:parseType="Resource">
            <dc:title>Chaos, Solitons &amp; Fractals 
            </dc:title>
          </bqs:Journal>
          <bqs:volume>7</bqs:volume>
          <bqs:first_page>293</bqs:first_page>
          <bqs:last_page>301</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="8.0"/>
    <variable name="b" units="pms" private_interface="out" initial_value="0.000155"/>
    <variable name="d" units="pms" private_interface="out" initial_value="0.0155"/>
    <variable name="mu2" units="dimensionless" private_interface="out" initial_value="0.3"/>
    <variable name="Istim" units="uApmmsq" public_interface="in" private_interface="out"/>
    
    <!-- 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. One modification of Aliev and Panfilov is
            in this equation, with the additional multiplication of the recovery 
            variable with the normalised potential and removal of the scalar
            multiplier.
          </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="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>u</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. The kinetics
            of the recovery variable have been reworked by Aliev and Panfilov to
            provide more realistic restitution properties.
          </rdf:value>
        </cmeta:comment>
      </rdf:Description>
    </rdf:RDF>

    <!-- Inputs -->
    <variable name="t" units="ms" public_interface="in"/>
    <variable name="c1" units="uApmmsq" public_interface="in"/>
    <variable name="b" units="pms" public_interface="in"/>
    <variable name="d" units="pms" public_interface="in"/>
    <variable name="u" units="dimensionless" public_interface="in"/>
    <variable name="mu2" units="dimensionless" public_interface="in"/>
    <variable name="Vr" units="mV" public_interface="in"/>
    <variable name="Vp" units="mV" public_interface="in"/>
    <variable name="Vth" units="mV" public_interface="in"/>
    <variable name="Vm" units="mV" public_interface="in"/>

    <!-- Outputs computed here -->
    <variable name="v" units="dimensionless" public_interface="out" private_interface="out" initial_value="0.0"/>
    
    <!-- Local variables -->
    <units name="uApmmsqpmVsq">
      <unit units="uApmmsq"/>
      <unit units="mV" exponent="-2"/>
    </units>
    <variable name="eps" units="pms"/>
    <variable name="vstar" units="mV"/>
    <variable name="rate" units="uApmmsqpmVsq"/>
    
    <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>eps</ci>
          <apply><minus/>
            <apply><minus/>
              <ci>v</ci>
            </apply>
            <apply><times/>
              <ci>rate</ci>
              <ci>vstar</ci>
              <apply><minus/>
                <ci>Vm</ci>
                <ci>Vr</ci>
              </apply>
            </apply>
          </apply>
        </apply>
      </apply>
    </math>
    <math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="eps_calculation_eq">
      <apply id="eps_calculation"><eq/>
        <ci>eps</ci>
        <apply><plus/>
          <ci>b</ci>
          <apply><divide/>
            <apply><times/>
              <ci>d</ci>
              <ci>v</ci>
            </apply>
            <apply><plus/>
              <ci>u</ci>
              <ci>mu2</ci>
            </apply>
          </apply>
        </apply>
      </apply>
    </math>
    <math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="rate_calculation_eq">
      <apply id="rate_calculation"><eq/>
        <ci>rate</ci>
        <apply><divide/>
          <ci>c1</ci>
          <apply><power/>
            <apply><minus/>
              <ci>Vp</ci>
              <ci>Vr</ci>
            </apply>
            <cn cellml:units="dimensionless">2.0</cn>
          </apply>
        </apply>
      </apply>
    </math>
    <math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="vstar_calculation_eq">
      <apply id="vstar_calculation"><eq/>
        <ci>vstar</ci>
        <apply><plus/>
          <ci>Vm</ci>
          <apply><minus/>
            <apply><minus/>
              <ci>Vr</ci>
              <ci>Vp</ci>
            </apply>
            <ci>Vth</ci>
          </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="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="c1" variable_2="c1"/>
    <map_variables variable_1="b" variable_2="b"/>
    <map_variables variable_1="d" variable_2="d"/>
    <map_variables variable_1="v" variable_2="v"/>
    <map_variables variable_1="mu2" variable_2="mu2"/>
    <map_variables variable_1="Vr" variable_2="Vr"/>
    <map_variables variable_1="Vp" variable_2="Vp"/>
    <map_variables variable_1="Vth" variable_2="Vth"/>
  </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"/>
    <map_variables variable_1="Vm" variable_2="Vm"/>
  </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>