Personal tools
You are here: Home Model Repository
 
Views

Reconstruction of the electrical activity of cardiac purkinje fibres

The CellML code.

XML source view

<!-- FILE : MNT_purkinje_fibre_model_1975.xml

CREATED : September 2001

LAST MODIFIED : 5th April 2003

AUTHOR : Catherine Lloyd
         Department of Engineering Science
         The University of Auckland
         
MODEL STATUS : This model conforms to the CellML 1.0 Specification released on
10th August 2001, and the CellML Metadata 1.0 Specification released on 16 
January 2002.

DESCRIPTION : This file contains a CellML description of cardiac action
potentials in purkinje fibres, based on the McAllister-Noble-Tsien model, 1975. 

CHANGES: 
  19/10/2001 - CML - Removed document type definition as this is declared as  
                     optional according to the W3C recommendation.  
  24/10/2001 - CML - Made changes to some of the metadata, bringing them up to
                     date with the most recent working draft (26th September) of
                     the Metadata specification. 
  10/12/2001 - CML - Changed equations after checking with the mathml validator.
  03/01/2002 - CML - Altered parent-child relationships as x1 and x2 were made
                     to be gates of the plateau potassium currents.
  20/01/2002 - AAC - Updated metadata to conform to the 16/01/2002 CellML
                     Metadata Specification.
  28/02/2002 - CML - Corrected units.
  19/07/2002 - CML - Added more metadata.
  05/04/2003 - AAC - Changed the model name so the model loads in the database 
                     easier.
-->
<model xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cellml="http://www.cellml.org/cellml/1.0#" xmlns:bqs="http://www.cellml.org/bqs/1.0#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cmeta="http://www.cellml.org/metadata/1.0#" xmlns="http://www.cellml.org/cellml/1.0#" cmeta:id="MNT_purkinje_fibre_model_1975" name="mcallister_noble_tsien_1975_version02">
  
  
  
<!--
    Below, are defined some additional units for association with variables and
    constants within the model. The identifiers are fairly self-explanatory.
  
-->
  
<units name="ms">
    
<unit units="second" prefix="milli" />
  
</units>
  
  
<units name="per_ms">

    
<unit units="second" prefix="milli" exponent="-1" />
  
</units>

  
<units name="mV">
    
<unit units="volt" prefix="milli" />
  
</units>

  
<units name="per_mV">
    
<unit units="volt" prefix="milli" exponent="-1" />
  
</units>

  
  
<units name="per_mV_ms">
    
<unit units="mV" exponent="-1" />
    
<unit units="ms" exponent="-1" />
  
</units>
  
  
<units name="mS_per_mm2">
    
<unit units="siemens" prefix="milli" />
    
<unit units="metre" prefix="milli" exponent="-2" />
  
</units>

  
<units name="uF_per_mm2">
    
<unit units="farad" prefix="micro" />
    
<unit units="metre" prefix="milli" exponent="-2" />
  
</units>

  
<units name="uA_per_mm2">
    
<unit units="ampere" prefix="micro" />
    
<unit units="metre" prefix="milli" exponent="-2" />
  
</units>

  
  
<units name="concentration_units">
    
<unit units="mole" prefix="nano" />
    
<unit units="metre" prefix="milli" exponent="-3" />
  
</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" cmeta:id="environment">
    
<variable units="ms" public_interface="out" name="time" />
  
</component>

  
<!--
    The "membrane" component is really the `root' node of our model.
    It defines the action potential variable "V" among other things.
  
-->
  
<component name="membrane" cmeta:id="membrane">
    

    
<!-- These variables are defined here and used in other components. -->
    
<variable units="mV" public_interface="out" name="V" initial_value="-80.0" />
    
    
<!-- These variables are defined here and only used internally. -->
    
<variable units="uF_per_mm2" name="C" initial_value="0.1" />
    
    
<!-- These variables are imported from other components. -->
    
<variable units="ms" public_interface="in" name="time" />

    
<variable units="uA_per_mm2" public_interface="in" name="i_Na" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_si" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_K2" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_x1" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_x2" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_qr" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_K1" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_Na_b" />
    
<variable units="uA_per_mm2" public_interface="in" name="i_Cl_b" />

    
<variable units="uA_per_mm2" name="I_stim" />
    
    
<!--
      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" cmeta:id="membrane_voltage_diff_eq">
      
<apply id="membrane_voltage_diff_eq">
        
<eq />
        
<apply>
          
<diff />
          
<bvar>
            
<ci> time </ci>
          
</bvar>
          
<ci> V </ci>

        
</apply>
        
<apply>
          
<divide />
          
<apply>
            
<minus />
            
<ci>I_stim</ci>
            
<apply>
              
<plus />
              
<ci> i_Na </ci>
              
<ci> i_si </ci>

              
<ci> i_K2 </ci>
              
<ci> i_x1 </ci>
              
<ci> i_x2 </ci>
              
<ci> i_qr </ci>
              
<ci> i_K1 </ci>

              
<ci> i_Na_b </ci>
              
<ci> i_Cl_b </ci>
            
</apply>
          
</apply>
          
<ci> C </ci>
        
</apply>

      
</apply>
    
</math>
    
    
    
<variable units="uA_per_mm2" public_interface="out" name="IStimC" />
    
<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>I_stim</ci>
      
</apply>

    
</math>
  
</component>
  
  
<!--  
    The "fast_sodium_current" component contains the differential equations     
    governing the influx of sodium ions through the cell surface membrane       
    into the cell. 
  
-->
  
<component name="fast_sodium_current" cmeta:id="fast_sodium_current">
    

    
<!-- These variables are defined here and used in other components. -->
    
<variable units="uA_per_mm2" public_interface="out" name="i_Na" />
    
<variable units="mV" public_interface="out" name="E_Na" initial_value="40.0" />

    
<!-- This variable is defined here and only used internally. -->
    
<variable units="mS_per_mm2" name="g_Na" initial_value="1.5" />

    
    
<!-- 
      Time is imported from the "environment", and membrane potential is        
      imported from the "membrane" component.  These variables are used in the  
      "sodium_current" parent component, which also acts as an interface,       
      passing the variables to its encapsulated gate components. 
    
-->
    
<variable units="ms" public_interface="in" private_interface="out" name="time" />
    
<variable units="mV" public_interface="in" private_interface="out" name="V" />
    
    
<!-- These variables are imported from encapsulated components. -->
    
<variable units="dimensionless" private_interface="in" name="m" />
    
<variable units="dimensionless" private_interface="in" name="h" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_Na_calculation_eq">
      
<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>
  
  
<!--
    The "fast_sodium_current_m_gate" is the activation m gate encapsulated      
    inside the "fast sodium current" component. 
  
-->
  
<component name="fast_sodium_current_m_gate" cmeta:id="fast_sodium_current_m_gate">
    

    
<!-- This variable is defined here and used in other components. -->
    
<variable units="dimensionless" public_interface="out" name="m" initial_value="0.019" />
        
    
<!-- These variables are defined here and only used internally. -->
    
<variable units="per_ms" name="alpha_m" />

    
<variable units="per_ms" name="beta_m" />

    
<!-- 
      These variables are imported from the "environment" and the "membrane" via
      the "fast_sodium_current" component.
    
-->
    
<variable units="mV" public_interface="in" name="V" />
    
<variable units="ms" public_interface="in" name="time" />
   
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_m_calculation_eq">
      
<apply id="alpha_m_calculation">
        
<eq />
        
<ci> alpha_m </ci>

        
<apply>
          
<divide />
          
<apply>
            
<plus />
            
<ci> V </ci>
            
<cn cellml:units="mV"> 47.0 </cn>
          
</apply>
          
<apply>
            
<minus />
            
<cn cellml:units="dimensionless"> 1.0 </cn>

            
<apply>
              
<exp />
              
<apply>
                
<minus />
                
<apply>
                  
<divide />
                  
<apply>
                    
<plus />
                    
<ci> V </ci>
                    
<cn cellml:units="mV"> 47.0 </cn>
                  
</apply>

                  
<cn cellml:units="mV"> 10.0 </cn>
                
</apply>
              
</apply>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>

      
    

    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="beta_m_calculation_eq">
      
<apply id="beta_m_calculation">
        
<eq />
        
<ci> beta_m </ci>
        
<apply>
          
<times />
          
<cn cellml:units="per_ms"> 40.0 </cn>
          
<apply>
            
<exp />
            
<apply>
              
<minus />

              
<apply>
                
<divide />
                
<apply>
                  
<plus />
                  
<ci> V </ci>
                  
<cn cellml:units="mV"> 72.0 </cn>
                
</apply>
                
<cn cellml:units="mV"> 17.86 </cn>

              
</apply>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dm_dt_eq">
      
<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>
  
  
<!--
    The "fast_sodium_current_h_gate" component is the inactivation h gate       
    encapsulated in the "fast sodium current" component.
  
-->
  
<component name="fast_sodium_current_h_gate" cmeta:id="fast_sodium_current_h_gate">

    

    
<!-- This variable is defined here and used in other components. -->
    
<variable units="dimensionless" public_interface="out" name="h" initial_value="0.863" />
        
    
<!-- These variables are defined here and only used internally. -->
    
<variable units="per_ms" name="alpha_h" />
    
<variable units="per_ms" name="beta_h" />

    
<!-- 
      These variables are imported from the "environment" and the "membrane" via
      the "fast_sodium_current" component.  
    
-->
    
<variable units="mV" public_interface="in" name="V" />
    
<variable units="ms" public_interface="in" name="time" />

    
    

    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_h_calculation_eq">
      
<apply id="alpha_h_calculation">
        
<eq />
        
<ci> alpha_h </ci>
        
<apply>
          
<times />
          
<cn cellml:units="per_ms"> 0.0085 </cn>
          
<apply>
            
<exp />
            
<apply>
              
<minus />

              
<apply>
                
<divide />
                
<apply>
                  
<plus />
                  
<ci> V </ci>
                  
<cn cellml:units="mV"> 71.0 </cn>
                
</apply>
                
<cn cellml:units="mV"> 5.435 </cn>

              
</apply>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="beta_h_calculation_eq">
      
<apply id="beta_h_calculation">
        
<eq />
        
<ci> beta_h </ci>

        
<apply>
          
<divide />
        
<cn cellml:units="per_ms"> 2.5 </cn>
          
<apply>
            
<plus />
            
<apply>
              
<exp />
              
<apply>
                
<minus />
                
<apply>
                  
<divide />
                  
<apply>
                    
<plus />
                    
<ci> V </ci>

                    
<cn cellml:units="mV"> 10.0 </cn>
                  
</apply>
                  
<cn cellml:units="mV"> 12.2 </cn>
                
</apply>
              
</apply>
            
</apply>
            
<cn cellml:units="dimensionless"> 1.0 </cn>

          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dh_dt_eq">
      
<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="secondary_inward_current" cmeta:id="secondary_inward_current">
    

    
<!-- This variable is defined here and used in other components. -->
    
<variable units="uA_per_mm2" public_interface="out" name="i_si" />
 
    
<!-- These variables are defined here and only used internally. -->
    
<variable units="mS_per_mm2" name="g_si" initial_value="0.008" />
    
<variable units="mS_per_mm2" name="g_si_" initial_value="0.0004" />

    
<variable units="mV" name="E_si" initial_value="70.0" />
    
    
<!-- 
      Time is imported from the "environment", and membrane potential is        
      imported from the "membrane" component.  These variables are used in the  
      "secondary_inward_current" parent component, which also acts as an        
      interface, passing the variables to its encapsulated gate component.
    
-->
    
<variable units="ms" public_interface="in" private_interface="out" name="time" />
    
<variable units="mV" public_interface="in" private_interface="out" name="V" />
    
    
<!-- These variables are imported from encapsulated components. -->
    
<variable units="dimensionless" private_interface="in" name="d" />
    
<variable units="dimensionless" private_interface="in" name="f" />
    
<variable units="dimensionless" private_interface="in" name="d1" />
             
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_si_calculation_eq">

      
<apply id="i_si_calculation">
        
<eq />
        
<ci> i_si </ci>
        
<apply>
          
<plus />
          
<apply>
            
<times />
            
<ci> g_si </ci>
            
<ci> d </ci>

            
<ci> f </ci>
            
<apply>
              
<minus />
              
<ci> V </ci>
              
<ci> E_si </ci>
            
</apply>
          
</apply>

          
<apply>
            
<times />
            
<ci> g_si_ </ci>
            
<ci> d1 </ci>
            
<apply>
              
<minus />
              
<ci> V </ci>
              
<ci> E_si </ci>

            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
  
<!--
    The "secondary_inward_current_d_gate" component is the d gate encapsulated  
    in the "secondary inward current" component.
  
-->
  
<component name="secondary_inward_current_d_gate" cmeta:id="secondary_inward_current_d_gate">
    

    
<!-- This variable is defined here and used in other components. -->

    
<variable units="dimensionless" public_interface="out" name="d" initial_value="0.002" /> 

    
<!-- These variables are defined here and only used internally. -->
    
<variable units="per_ms" name="alpha_d" />
    
<variable units="per_ms" name="beta_d" />
    
    
<!-- 
      These variables are imported from the "environment" and the "membrane" via
      the "slow_inward_current" component.  
    
-->
    
<variable units="mV" public_interface="in" name="V" />
    
<variable units="ms" public_interface="in" name="time" />

    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_d_calculation_eq">
      
<apply id="alpha_d_calculation">
        
<eq />

        
<ci> alpha_d </ci>
        
<apply>
          
<divide />
          
<apply>
            
<plus />
            
<ci> V </ci>
            
<cn cellml:units="mV"> 40.0 </cn>
          
</apply>

          
<apply>
            
<times />
            
<cn cellml:units="mV"> 500.0 </cn>
            
<apply>
              
<minus />
              
<cn cellml:units="ms"> 1.0 </cn>
              
<apply>
                
<exp />
                
<apply>
                  
<minus />
                  
<apply>
                    
<divide />

                    
<apply>
                      
<plus />
                      
<ci> V </ci>
                      
<cn cellml:units="mV"> 40.0 </cn>
                    
</apply>
                    
<cn cellml:units="mV"> 10.0 </cn>
                  
</apply>

                
</apply>
              
</apply>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="beta_d_calculation_eq">
      
<apply id="beta_d_calculation">
        
<eq />

        
<ci> beta_d </ci>
        
<apply>
          
<times />
          
<cn cellml:units="per_ms"> 0.02 </cn>
          
<apply>
            
<exp />
            
<apply>
              
<minus />
              
<apply>
                
<divide />
                
<apply>
                  
<plus />

                  
<ci> V </ci>
                  
<cn cellml:units="mV"> 40.0 </cn>
                
</apply>
                
<cn cellml:units="mV"> 11.26 </cn>
              
</apply>
            
</apply>

          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dd_dt_eq">
      
<apply id="dd_dt">
        
<eq />
        
<apply>
          
<diff />
          
<bvar>
            
<ci> time </ci>
          
</bvar>
          
<ci> d </ci>

        
</apply>
        
<apply>
          
<minus />
          
<apply>
            
<times />
            
<ci> alpha_d </ci>
            
<apply>
              
<minus />
              
<cn cellml:units="dimensionless"> 1.0 </cn>
              
<ci> d </ci>

            
</apply>
          
</apply>
          
<apply>
            
<times />
            
<ci> beta_d </ci>
            
<ci> d </ci>
          
</apply>
        
</apply>

      
</apply>
    
</math>
  
</component>
  
  
<!--
    The "secondary_inward_current_f_gate" component is the f gate encapsulated  
    in the "secondary inward current" component.
  
-->
  
<component name="secondary_inward_current_f_gate" cmeta:id="secondary_inward_current_f_gate">
    

    
<!-- This variable is defined here and used in other components. -->
    
<variable units="dimensionless" public_interface="out" name="f" initial_value="0.794" /> 

    
<!-- These variables are defined here and only used internally. -->
    
<variable units="per_ms" name="alpha_f" />

    
<variable units="per_ms" name="beta_f" />
    
    
<!-- These variables are imported from parent and sibling components. -->
    
<variable units="mV" public_interface="in" name="V" />
    
<variable units="ms" public_interface="in" name="time" />
     
     
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_f_calculation_eq">
      
<apply id="alpha_f_calculation">
        
<eq />
        
<ci> alpha_f </ci>
        
<apply>
          
<times />
          
<cn cellml:units="per_ms"> 0.000987 </cn>

          
<apply>
            
<exp />
            
<apply>
              
<minus />
              
<apply>
                
<divide />
                
<apply>
                  
<plus />
                  
<ci> V </ci>
                  
<cn cellml:units="mV"> 60.0 </cn>
                
</apply>

                
<cn cellml:units="mV"> 25.0 </cn>
              
</apply>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>
        
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="beta_f_calculation_eq">

      
<apply id="beta_f_calculation">
        
<eq />
        
<ci> beta_f </ci>
        
<apply>
          
<divide />
          
<cn cellml:units="per_ms"> 0.02 </cn>
          
<apply>
            
<plus />
            
<apply>
              
<exp />
              
<apply>
                
<minus />

                
<apply>
                  
<divide />
                  
<apply>
                    
<plus />
                    
<ci> V </ci>
                    
<cn cellml:units="mV"> 26.0 </cn>
                  
</apply>
                  
<cn cellml:units="mV"> 11.5 </cn>

                
</apply>
              
</apply>
            
</apply>
            
<cn cellml:units="dimensionless"> 1.0 </cn>
          
</apply>
        
</apply>
      
</apply>
    
</math>

        
    

    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="df_dt_eq">
      
<apply id="df_dt">
        
<eq />
        
<apply>
          
<diff />
          
<bvar>
            
<ci> time </ci>
          
</bvar>
          
<ci> f </ci>
        
</apply>
        
<apply>
          
<minus />

          
<apply>
            
<times />
            
<ci> alpha_f </ci>
            
<apply>
              
<minus />
              
<cn cellml:units="dimensionless"> 1.0 </cn>
              
<ci> f </ci>
            
</apply>

          
</apply>
          
<apply>
            
<times />
            
<ci> beta_f </ci>
            
<ci> f </ci>
          
</apply>
        
</apply>
      
</apply>

    
</math>
  
</component>
    
  
<!--
    The "secondary_inward_current_d1_gate" component is the d1 gate encapsulated
    in the "secondary inward current" component.
  
-->
  
<component name="secondary_inward_current_d1_gate" cmeta:id="secondary_inward_current_d1_gate">
    

    
<!-- This variable is defined here and used in other components. -->
    
<variable units="dimensionless" public_interface="out" name="d1" /> 

    
<!-- These variables are imported from other components. -->
    
<variable units="mV" public_interface="in" name="V" />
    
<variable units="ms" public_interface="in" name="time" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="d1_calculation_eq">

      
<apply id="d1_calculation">
        
<eq />
        
<ci> d1 </ci>