Location: Nash, Panfilov, 2004 @ 466b6dac112d / 2004_nash_panfilov.xml

Author:
David Nickerson <nickerso@users.sourceforge.net>
Date:
2015-11-24 12:48:57+13:00
Desc:
adding a copy of the Nash Panfilov model from my PhD thesis
Permanent Source URI:
https://models.fieldml.org/workspace/nash_panfilov_2004/rawfile/466b6dac112daee9e9181f9d12612a9561c41725/2004_nash_panfilov.xml

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

<model
    name="Nash_Panfilov_2004"
    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="2004_nash_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>2004-07-15</dcterms:W3CDTF>
      </dcterms:created>

    </rdf:Description>

    <rdf:Description rdf:about="#2004_nash_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.
          This model has been further modified by Nash and Panfilov 2004 to
          include active tension development.
        </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>Nash</vCard:Family>
                    <vCard:Given>M</vCard:Given>
                    <vCard:Other>P</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>
            Electromechanical model of excitable tissue to study reentrant
            cardiac arrhythmias
          </dc:title>
          <dcterms:issued rdf:parseType="Resource">
            <dcterms:W3CDTF>2004</dcterms:W3CDTF>
          </dcterms:issued>
          <bqs:Journal rdf:parseType="Resource">
            <dc:title>Prog. Biophys. Molec. Biol.
            </dc:title>
          </bqs:Journal>
          <bqs:volume>85</bqs:volume>
          <bqs:first_page>501</bqs:first_page>
          <bqs:last_page>522</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>
  <units name="kPa">
    <unit units="pascal" prefix="kilo"/>
  </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" 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="e0" units="dimensionless" private_interface="out" initial_value="1.0"/>
    <variable name="kTa" units="kPa" private_interface="out" initial_value="47.9"/>
    <variable name="Istim" units="uApmmsq" 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"/>
    <variable name="Ta" units="kPa" public_interface="out" private_interface="in"/>
    
    <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="#IStim_for_cmiss_eq">
        <cmeta:comment rdf:parseType="Resource">
          <rdf:value>
            This is a dummy equation that we simply use to make grabbing the
            value in CMISS much easier.
          </rdf:value>
        </cmeta:comment>
      </rdf:Description>
    </rdf:RDF>
    <variable name="IStimC" units="uApmmsq" public_interface="out"/>
    <math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="IStim_for_cmiss_eq">
      <apply id="IStim_for_cmiss"><eq/>
        <ci>IStimC</ci>
        <ci>Istim</ci>
      </apply>
    </math>
    
  </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" 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-->

  <component name="active_tension" cmeta:id="active_tension">
  
    <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="#active_tension">
        <cmeta:comment rdf:parseType="Resource">
          <rdf:value>
            This is the active tension relation from the Nash and Panfilov
            article.
          </rdf:value>
        </cmeta:comment>
      </rdf:Description>
    </rdf:RDF>

    <!-- Inputs -->
    <variable name="t" units="ms" public_interface="in"/>
    <variable name="u" units="dimensionless" public_interface="in"/>
    <variable name="e0" units="dimensionless" public_interface="in"/>
    <variable name="kTa" units="kPa" public_interface="in"/>

    <!-- Outputs computed here -->
    <variable name="Ta" units="kPa" public_interface="out"
    private_interface="out" initial_value="0.0"/>
    
    <!-- Local variables -->
    <variable name="e" units="dimensionless"/>
    
    <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="#Ta_diff_eq">
        <cmeta:comment rdf:parseType="Resource">
          <rdf:value>
            The kinetics of the active tension.
          </rdf:value>
        </cmeta:comment>
      </rdf:Description>
    </rdf:RDF>
    <math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="Ta_diff_eq">
      <apply id="Ta_diff"><eq/>
        <apply><diff/>
          <bvar><ci>t</ci></bvar>
          <ci>Ta</ci>
        </apply>
        <apply><times/>
          <ci>e</ci>
          <apply><minus/>
            <apply><times/>
              <ci>kTa</ci>
              <ci>u</ci>
            </apply>
            <ci>Ta</ci>
          </apply>
        </apply>
      </apply>
    </math>
    <math xmlns="http://www.w3.org/1998/Math/MathML"
    cmeta:id="e_calculation_eq">
      <apply id="e_calculation"><eq/>
        <ci>e</ci>
        <piecewise>
          <piece>
            <apply><times/>
              <cn cellml:units="dimensionless">100.0</cn>
              <ci>e0</ci>
            </apply>
            <apply><lt/>
              <ci>u</ci>
              <cn cellml:units="dimensionless">0.05</cn>
            </apply>
          </piece>
          <otherwise>
            <apply><times/>
              <cn cellml:units="dimensionless">10.0</cn>
              <ci>e0</ci>
            </apply>
          </otherwise>
        </piecewise>
      </apply>
    </math>
  </component><!--active_tension-->

  <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="interface" component_2="active_tension"/>
    <map_variables variable_1="t" variable_2="t"/>
    <map_variables variable_1="e0" variable_2="e0"/>
    <map_variables variable_1="kTa" variable_2="kTa"/>
    <map_variables variable_1="Ta" variable_2="Ta"/>
  </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>

  <connection>
    <map_components component_1="membrane_potential" component_2="active_tension"/>
    <map_variables variable_1="u" variable_2="u"/>
  </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 component="active_tension"/>
    </component_ref>
  </group>

</model>