Views
Reconstruction of the action potential of ventricular myocardial fibres
The CellML code.
<!-- FILE : beeler_reuter_mammalian_ventricle_1977.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 16/01/2002 CellML Metadata 1.0 Specification.
DESCRIPTION : This file contains a CellML description of the mammalian
ventricular action potential, based on the Beeler-Reuter model, 1977.
CHANGES:
19/10/2001 - CML - Removed document type definition as this is declared as
optional according to the WC3 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.
07/12/2001 - CML - Changed some equations after using the MathML validator.
21/01/2002 - AAC - Updated metadata to conform to the 16/01/02 CellML Metadata
1.0 Specification.
28/02/2002 - CML - Corrected the membrane voltage differential equation.
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:ns7="http://www.cellml.org/metadata/simulation/1.0#" 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="beeler_reuter_1977_version04" name="beeler_reuter_1977_version04">
<!--
Below, we define some additional units for association with variables and
constants within the model. The identifiers are fairly self-explanatory.
-->
<documentation xmlns="http://cellml.org/tmp-documentation">
<article>
<articleinfo>
<title>Beeler-Reuter Mammalian Ventricular Model 1977</title>
<author>
<firstname>Catherine</firstname>
<surname>Lloyd</surname>
<affiliation>
<shortaffil>Bioengineering Institute, University of Auckland</shortaffil>
</affiliation>
</author>
</articleinfo>
<section id="sec_status">
<title>Model Status</title>
<para>
This model has been curated and is known to run and reproduce the published results in PCEnv and COR. A PCEnv session file is also associated with this model.
</para>
</section>
<sect1 id="sec_structure">
<title>Model Structure</title>
<para>
In contrast to the earlier Purkinje fibre ionic current models of <ulink url="${HTML_EXMPL_N_MODEL}">D. Noble (1962)</ulink> and <ulink url="${HTML_EXMPL_MNT_MODEL}">R.E. McAllister, D. Noble and R.W. Tsien (1975)</ulink>, the G.W. Beeler and H. Reuter 1977 model was developed to describe the mammalian ventricular action potential. Not all the ionic currents of the Purkinje fibre model are present in ventricular tissue; therefore, this model is simpler than the MNT model. The total ionic flux is divided into only four discrete, individual ionic currents (see <xref linkend="fig_cell_diagram" /> below). The main additional feature of the Beeler-Reuter ionic current model is a representation of the intracellular calcium ion concentration.
</para>
<para>
The complete original paper reference is cited below:
</para>
<para>
Reconstruction of the action potential of ventricular myocardial fibres, Beeler, G.W. and Reuter, H. 1977 <ulink url="http://www.jphysiol.org/">
<emphasis>Journal of Physiology</emphasis>
</ulink>, 268, 177-210. <ulink url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=874889&dopt=Abstract">PubMed ID: 874889</ulink>
</para>
<informalfigure float="0" id="fig_cell_diagram">
<mediaobject>
<imageobject>
<objectinfo>
<title>cell diagram of the Beeler-Reuter model showing ionic currents across the cell surface membrane</title>
</objectinfo>
<imagedata fileref="../images/BR_model_1977/beeler_reuter_1977.png" />
</imageobject>
</mediaobject>
<caption>A schematic diagram describing the current flows across the cell membrane that are captured in the BR model.</caption>
</informalfigure>
<informalfigure float="0" id="fig_cellml_rendering">
<mediaobject>
<imageobject>
<objectinfo>
<title>the cellml rendering of the Beeler-Reuter model</title>
</objectinfo>
<imagedata fileref="../images/BR_model_1977/cellml_rendering.gif" />
</imageobject>
</mediaobject>
<caption>The network defined in the CellML description of the Beeler-Reuter model. A key describing the significance of the shapes of the components and the colours of the connections between them is in the <ulink url="http://www.cellml.org/tutorial/notation/?searchterm=notation%20guide">notation guide</ulink>. For simplicity, not all the variables are shown.</caption>
</informalfigure>
<para>
The membrane physically contains the currents as indicated by the blue arrows in <xref linkend="fig_cellml_rendering" />. The currents act independently and are not connected to each other. Several of the channels encapsulate <emphasis>and</emphasis> contain further components which represent activation and inactivation gates. The addition of an encapsulation relationship informs modellers and processing software that the gates are important parts of the current model. It also prevents any other components that aren't also encapsulated by the parent component from connecting to its gates, effectively hiding them from the rest of the model.
</para>
<para>
The breakdown of the model into components and the definition of encapsulation and containment relationships between them is somewhat arbitrary. When considering how a model should be broken into components, modellers are encouraged to consider which parts of a model might be re-used and how the physiological elements of the system being modelled are naturally bounded. Containment relationships should be used to provide simple rendering information for processing software (ideally, this will correspond to the layout of the physical system), and encapsulation should be used to group sets of components into sub-models.
</para>
</sect1>
</article>
</documentation>
<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>
<units name="per_concentration_units">
<unit units="concentration_units" exponent="-1" />
</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" cmeta:id="environment_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" cmeta:id="membrane_V" name="V" initial_value="-84.624" />
<!-- This variable is defined here and only used internally. -->
<variable units="uF_per_mm2" cmeta:id="membrane_C" name="C" initial_value="0.01" />
<!-- 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_s" />
<variable units="uA_per_mm2" public_interface="in" name="i_x1" />
<variable units="uA_per_mm2" public_interface="in" name="i_K1" />
<variable units="uA_per_mm2" public_interface="in" name="Istim" />
<!--
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>Istim</ci>
<apply>
<plus />
<ci> i_Na </ci>
<ci> i_s </ci>
<ci> i_x1 </ci>
<ci> i_K1 </ci>
</apply>
</apply>
<ci>C</ci>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current" component contains the differential equations
governing the influx of sodium ions through the cell surface membrane into
the cell. This sodium current is primarily responsible for the rapid
upstroke of the action potential during membrane depolarisation.
Note that no initial values are needed on many variables as they are
all directly dependent on the membrane voltage.
-->
<component name="sodium_current" cmeta:id="sodium_current">
<!-- This variable is defined here and used in other components. -->
<variable units="uA_per_mm2" public_interface="out" name="i_Na" cmeta:id="sodium_current_i_Na" />
<!-- These variables are defined here and only used internally. -->
<variable units="mS_per_mm2" cmeta:id="sodium_current_g_Na" name="g_Na" initial_value="4.0e-2" />
<variable units="mV" cmeta:id="sodium_current_E_Na" name="E_Na" initial_value="50.0" />
<variable units="mS_per_mm2" cmeta:id="sodium_current_g_Nac" name="g_Nac" initial_value="3.0e-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" />
<variable units="dimensionless" private_interface="in" name="j" />
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_Na_calculation_eq">
<!--
The following equation calculates the sodium current in terms
of the conductance, the membrane voltage, and the gate variables.
-->
<apply id="i_Na_calculation">
<eq />
<ci> i_Na </ci>
<apply>
<times />
<apply>
<plus />
<apply>
<times />
<ci> g_Na </ci>
<apply>
<power />
<ci> m </ci>
<cn cellml:units="dimensionless"> 3.0 </cn>
</apply>
<ci> h </ci>
<ci> j </ci>
</apply>
<ci> g_Nac </ci>
</apply>
<apply>
<minus />
<ci> V </ci>
<ci> E_Na </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current_m_gate" is the m gate encapsulated inside the sodium
current
-->
<component name="sodium_current_m_gate" cmeta:id="sodium_current_m_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_m_gate_m" name="m" initial_value="0.011" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_m" cmeta:id="sodium_current_m_gate_alpha_m" />
<variable units="per_ms" name="beta_m" cmeta:id="sodium_current_m_gate_beta_m" />
<!-- 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_m_calculation_eq">
<!--
The rate constants on the m and h gates are functions
of membrane voltage.
-->
<apply id="alpha_m_calculation">
<eq />
<ci> alpha_m </ci>
<apply>
<divide />
<apply>
<times />
<cn cellml:units="per_mV_ms"> -1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 47.0 </cn>
</apply>
</apply>
<apply>
<minus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 47.0 </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="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>
<times />
<cn cellml:units="per_mV"> -0.056 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 72.0 </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="per_mV"> 1.0 </cn>
<ci> m </ci>
</apply>
</apply>
<apply>
<times />
<ci> beta_m </ci>
<ci> m </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current_h_gate" component is the h gate encapsulated in
the sodium current.
-->
<component name="sodium_current_h_gate" cmeta:id="sodium_current_h_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_h_gate_h" name="h" initial_value="0.988" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_h" cmeta:id="sodium_current_h_gate_alpha_h" />
<variable units="per_ms" name="beta_h" cmeta:id="sodium_current_h_gate_beta_h" />
<!-- 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_h_calculation_eq">
<apply id="alpha_h_calculation">
<eq />
<ci> alpha_h </ci>
<apply>
<times />
<cn cellml:units="per_ms"> 0.126 </cn>
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.25 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 77.0 </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"> 1.7 </cn>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.082 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 22.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="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>
<!--
The "sodium_current_j_gate" component is the j gate encapsulated in
the sodium current.
-->
<component name="sodium_current_j_gate" cmeta:id="sodium_current_j_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_j_gate_j" name="j" initial_value="0.975" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_j" cmeta:id="sodium_current_j_gate_alpha_j" />
<variable units="per_ms" name="beta_j" cmeta:id="sodium_current_j_gate_beta_j" />
<!-- 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_j_calculation_eq">
<apply id="alpha_j_calculation">
<eq />
<ci> alpha_j </ci>
<apply>
<divide />
<apply>
<times />
<cn cellml:units="per_ms"> 0.055 </cn>
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.25 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 78.0 </cn>
</apply>
</apply>
</apply>
</apply>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.2 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 78.0 </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="beta_j_calculation_eq">
<apply id="beta_j_calculation">
<eq />
<ci> beta_j </ci>
<apply>
<divide />
<cn cellml:units="per_ms"> 0.3 </cn>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 32.0 </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="dj_dt_eq">
<apply id="dj_dt">
<eq />
<apply>
<diff />
<bvar>
<ci> time </ci>
</bvar>
<ci> j </ci>
</apply>
<apply>
<minus />
<apply>
<times />
<ci> alpha_j </ci>
<apply>
<minus />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> j </ci>
</apply>
</apply>
<apply>
<times />
<ci> beta_j </ci>
<ci> j </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!-- The "slow_inward_current " component contains the differential
equations governing the transient inward ionic current. This current is
predominately carried by calcium ions and it is largely responsible for
maintaining the plateau of the action potential. -->
<component name="slow_inward_current" cmeta:id="slow_inward_current">
<!-- This variable is defined here and used in other components. -->
<variable units="uA_per_mm2" public_interface="out" name="i_s" cmeta:id="slow_inward_current_i_s" />
<!-- These variables are defined here and only used internally. -->
<variable units="mS_per_mm2" cmeta:id="slow_inward_current_g_s" name="g_s" initial_value="9.0e-4" />
<variable units="mV" name="E_s" cmeta:id="slow_inward_current_E_s" />
<variable units="concentration_units" cmeta:id="slow_inward_current_Cai" name="Cai" initial_value="1.0e-4" />
<!-- These variables are imported from parent and sibling 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="d" />
<variable units="dimensionless" private_interface="in" name="f" />
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="E_s_calculation_eq">
<!--
The following equation determines the reversal potential of the
slow inward current.
-->
<apply id="E_s_calculation">
<eq />
<ci> E_s </ci>
<apply>
<minus />
<cn cellml:units="mV"> -82.3 </cn>
<apply>
<times />
<cn cellml:units="mV"> 13.0287 </cn>
<apply>
<ln />
<apply>
<times />
<ci> Cai </ci>
<cn cellml:units="per_concentration_units">0.001</cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_s_calculation_eq">
<!--
The following equation calculates the slow inward current in terms of
the conductance, the membrane voltage and the gate variables.
-->
<apply id="i_s_calculation">
<eq />
<ci> i_s </ci>
<apply>
<times />
<ci> g_s </ci>
<ci> d </ci>
<ci> f </ci>
<apply>
<minus />
<ci> V </ci>
<ci> E_s </ci>
</apply>
</apply>
</apply>
</math>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dCai_dt_eq">
<!-- Change in {Ca}i (intracellular calcium concentration) is given in
terms of the slow inward current as: -->
<apply id="dCai_dt">
<eq />
<apply>
<diff />
<bvar>
<ci> time </ci>
</bvar>
<ci> Cai </ci>
</apply>
<apply>
<plus />
<apply>
<times />
<cn cellml:units="dimensionless"> -0.01 </cn>
<ci> i_s </ci>
</apply>
<apply>
<times />
<cn cellml:units="dimensionless"> 0.07 </cn>
<apply>
<minus />
<
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 16/01/2002 CellML Metadata 1.0 Specification.
DESCRIPTION : This file contains a CellML description of the mammalian
ventricular action potential, based on the Beeler-Reuter model, 1977.
CHANGES:
19/10/2001 - CML - Removed document type definition as this is declared as
optional according to the WC3 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.
07/12/2001 - CML - Changed some equations after using the MathML validator.
21/01/2002 - AAC - Updated metadata to conform to the 16/01/02 CellML Metadata
1.0 Specification.
28/02/2002 - CML - Corrected the membrane voltage differential equation.
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:ns7="http://www.cellml.org/metadata/simulation/1.0#" 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="beeler_reuter_1977_version04" name="beeler_reuter_1977_version04">
<!--
Below, we define some additional units for association with variables and
constants within the model. The identifiers are fairly self-explanatory.
-->
<documentation xmlns="http://cellml.org/tmp-documentation">
<article>
<articleinfo>
<title>Beeler-Reuter Mammalian Ventricular Model 1977</title>
<author>
<firstname>Catherine</firstname>
<surname>Lloyd</surname>
<affiliation>
<shortaffil>Bioengineering Institute, University of Auckland</shortaffil>
</affiliation>
</author>
</articleinfo>
<section id="sec_status">
<title>Model Status</title>
<para>
This model has been curated and is known to run and reproduce the published results in PCEnv and COR. A PCEnv session file is also associated with this model.
</para>
</section>
<sect1 id="sec_structure">
<title>Model Structure</title>
<para>
In contrast to the earlier Purkinje fibre ionic current models of <ulink url="${HTML_EXMPL_N_MODEL}">D. Noble (1962)</ulink> and <ulink url="${HTML_EXMPL_MNT_MODEL}">R.E. McAllister, D. Noble and R.W. Tsien (1975)</ulink>, the G.W. Beeler and H. Reuter 1977 model was developed to describe the mammalian ventricular action potential. Not all the ionic currents of the Purkinje fibre model are present in ventricular tissue; therefore, this model is simpler than the MNT model. The total ionic flux is divided into only four discrete, individual ionic currents (see <xref linkend="fig_cell_diagram" /> below). The main additional feature of the Beeler-Reuter ionic current model is a representation of the intracellular calcium ion concentration.
</para>
<para>
The complete original paper reference is cited below:
</para>
<para>
Reconstruction of the action potential of ventricular myocardial fibres, Beeler, G.W. and Reuter, H. 1977 <ulink url="http://www.jphysiol.org/">
<emphasis>Journal of Physiology</emphasis>
</ulink>, 268, 177-210. <ulink url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=874889&dopt=Abstract">PubMed ID: 874889</ulink>
</para>
<informalfigure float="0" id="fig_cell_diagram">
<mediaobject>
<imageobject>
<objectinfo>
<title>cell diagram of the Beeler-Reuter model showing ionic currents across the cell surface membrane</title>
</objectinfo>
<imagedata fileref="../images/BR_model_1977/beeler_reuter_1977.png" />
</imageobject>
</mediaobject>
<caption>A schematic diagram describing the current flows across the cell membrane that are captured in the BR model.</caption>
</informalfigure>
<informalfigure float="0" id="fig_cellml_rendering">
<mediaobject>
<imageobject>
<objectinfo>
<title>the cellml rendering of the Beeler-Reuter model</title>
</objectinfo>
<imagedata fileref="../images/BR_model_1977/cellml_rendering.gif" />
</imageobject>
</mediaobject>
<caption>The network defined in the CellML description of the Beeler-Reuter model. A key describing the significance of the shapes of the components and the colours of the connections between them is in the <ulink url="http://www.cellml.org/tutorial/notation/?searchterm=notation%20guide">notation guide</ulink>. For simplicity, not all the variables are shown.</caption>
</informalfigure>
<para>
The membrane physically contains the currents as indicated by the blue arrows in <xref linkend="fig_cellml_rendering" />. The currents act independently and are not connected to each other. Several of the channels encapsulate <emphasis>and</emphasis> contain further components which represent activation and inactivation gates. The addition of an encapsulation relationship informs modellers and processing software that the gates are important parts of the current model. It also prevents any other components that aren't also encapsulated by the parent component from connecting to its gates, effectively hiding them from the rest of the model.
</para>
<para>
The breakdown of the model into components and the definition of encapsulation and containment relationships between them is somewhat arbitrary. When considering how a model should be broken into components, modellers are encouraged to consider which parts of a model might be re-used and how the physiological elements of the system being modelled are naturally bounded. Containment relationships should be used to provide simple rendering information for processing software (ideally, this will correspond to the layout of the physical system), and encapsulation should be used to group sets of components into sub-models.
</para>
</sect1>
</article>
</documentation>
<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>
<units name="per_concentration_units">
<unit units="concentration_units" exponent="-1" />
</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" cmeta:id="environment_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" cmeta:id="membrane_V" name="V" initial_value="-84.624" />
<!-- This variable is defined here and only used internally. -->
<variable units="uF_per_mm2" cmeta:id="membrane_C" name="C" initial_value="0.01" />
<!-- 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_s" />
<variable units="uA_per_mm2" public_interface="in" name="i_x1" />
<variable units="uA_per_mm2" public_interface="in" name="i_K1" />
<variable units="uA_per_mm2" public_interface="in" name="Istim" />
<!--
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>Istim</ci>
<apply>
<plus />
<ci> i_Na </ci>
<ci> i_s </ci>
<ci> i_x1 </ci>
<ci> i_K1 </ci>
</apply>
</apply>
<ci>C</ci>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current" component contains the differential equations
governing the influx of sodium ions through the cell surface membrane into
the cell. This sodium current is primarily responsible for the rapid
upstroke of the action potential during membrane depolarisation.
Note that no initial values are needed on many variables as they are
all directly dependent on the membrane voltage.
-->
<component name="sodium_current" cmeta:id="sodium_current">
<!-- This variable is defined here and used in other components. -->
<variable units="uA_per_mm2" public_interface="out" name="i_Na" cmeta:id="sodium_current_i_Na" />
<!-- These variables are defined here and only used internally. -->
<variable units="mS_per_mm2" cmeta:id="sodium_current_g_Na" name="g_Na" initial_value="4.0e-2" />
<variable units="mV" cmeta:id="sodium_current_E_Na" name="E_Na" initial_value="50.0" />
<variable units="mS_per_mm2" cmeta:id="sodium_current_g_Nac" name="g_Nac" initial_value="3.0e-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" />
<variable units="dimensionless" private_interface="in" name="j" />
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_Na_calculation_eq">
<!--
The following equation calculates the sodium current in terms
of the conductance, the membrane voltage, and the gate variables.
-->
<apply id="i_Na_calculation">
<eq />
<ci> i_Na </ci>
<apply>
<times />
<apply>
<plus />
<apply>
<times />
<ci> g_Na </ci>
<apply>
<power />
<ci> m </ci>
<cn cellml:units="dimensionless"> 3.0 </cn>
</apply>
<ci> h </ci>
<ci> j </ci>
</apply>
<ci> g_Nac </ci>
</apply>
<apply>
<minus />
<ci> V </ci>
<ci> E_Na </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current_m_gate" is the m gate encapsulated inside the sodium
current
-->
<component name="sodium_current_m_gate" cmeta:id="sodium_current_m_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_m_gate_m" name="m" initial_value="0.011" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_m" cmeta:id="sodium_current_m_gate_alpha_m" />
<variable units="per_ms" name="beta_m" cmeta:id="sodium_current_m_gate_beta_m" />
<!-- 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_m_calculation_eq">
<!--
The rate constants on the m and h gates are functions
of membrane voltage.
-->
<apply id="alpha_m_calculation">
<eq />
<ci> alpha_m </ci>
<apply>
<divide />
<apply>
<times />
<cn cellml:units="per_mV_ms"> -1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 47.0 </cn>
</apply>
</apply>
<apply>
<minus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 47.0 </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="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>
<times />
<cn cellml:units="per_mV"> -0.056 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 72.0 </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="per_mV"> 1.0 </cn>
<ci> m </ci>
</apply>
</apply>
<apply>
<times />
<ci> beta_m </ci>
<ci> m </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!--
The "sodium_current_h_gate" component is the h gate encapsulated in
the sodium current.
-->
<component name="sodium_current_h_gate" cmeta:id="sodium_current_h_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_h_gate_h" name="h" initial_value="0.988" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_h" cmeta:id="sodium_current_h_gate_alpha_h" />
<variable units="per_ms" name="beta_h" cmeta:id="sodium_current_h_gate_beta_h" />
<!-- 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_h_calculation_eq">
<apply id="alpha_h_calculation">
<eq />
<ci> alpha_h </ci>
<apply>
<times />
<cn cellml:units="per_ms"> 0.126 </cn>
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.25 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 77.0 </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"> 1.7 </cn>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.082 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 22.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="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>
<!--
The "sodium_current_j_gate" component is the j gate encapsulated in
the sodium current.
-->
<component name="sodium_current_j_gate" cmeta:id="sodium_current_j_gate">
<!-- This variable is defined here and used in other components. -->
<variable units="dimensionless" public_interface="out" cmeta:id="sodium_current_j_gate_j" name="j" initial_value="0.975" />
<!-- These variables are defined here and only used internally. -->
<variable units="per_ms" name="alpha_j" cmeta:id="sodium_current_j_gate_alpha_j" />
<variable units="per_ms" name="beta_j" cmeta:id="sodium_current_j_gate_beta_j" />
<!-- 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_j_calculation_eq">
<apply id="alpha_j_calculation">
<eq />
<ci> alpha_j </ci>
<apply>
<divide />
<apply>
<times />
<cn cellml:units="per_ms"> 0.055 </cn>
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.25 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 78.0 </cn>
</apply>
</apply>
</apply>
</apply>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.2 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 78.0 </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="beta_j_calculation_eq">
<apply id="beta_j_calculation">
<eq />
<ci> beta_j </ci>
<apply>
<divide />
<cn cellml:units="per_ms"> 0.3 </cn>
<apply>
<plus />
<apply>
<exp />
<apply>
<times />
<cn cellml:units="per_mV"> -0.1 </cn>
<apply>
<plus />
<ci> V </ci>
<cn cellml:units="mV"> 32.0 </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="dj_dt_eq">
<apply id="dj_dt">
<eq />
<apply>
<diff />
<bvar>
<ci> time </ci>
</bvar>
<ci> j </ci>
</apply>
<apply>
<minus />
<apply>
<times />
<ci> alpha_j </ci>
<apply>
<minus />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> j </ci>
</apply>
</apply>
<apply>
<times />
<ci> beta_j </ci>
<ci> j </ci>
</apply>
</apply>
</apply>
</math>
</component>
<!-- The "slow_inward_current " component contains the differential
equations governing the transient inward ionic current. This current is
predominately carried by calcium ions and it is largely responsible for
maintaining the plateau of the action potential. -->
<component name="slow_inward_current" cmeta:id="slow_inward_current">
<!-- This variable is defined here and used in other components. -->
<variable units="uA_per_mm2" public_interface="out" name="i_s" cmeta:id="slow_inward_current_i_s" />
<!-- These variables are defined here and only used internally. -->
<variable units="mS_per_mm2" cmeta:id="slow_inward_current_g_s" name="g_s" initial_value="9.0e-4" />
<variable units="mV" name="E_s" cmeta:id="slow_inward_current_E_s" />
<variable units="concentration_units" cmeta:id="slow_inward_current_Cai" name="Cai" initial_value="1.0e-4" />
<!-- These variables are imported from parent and sibling 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="d" />
<variable units="dimensionless" private_interface="in" name="f" />
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="E_s_calculation_eq">
<!--
The following equation determines the reversal potential of the
slow inward current.
-->
<apply id="E_s_calculation">
<eq />
<ci> E_s </ci>
<apply>
<minus />
<cn cellml:units="mV"> -82.3 </cn>
<apply>
<times />
<cn cellml:units="mV"> 13.0287 </cn>
<apply>
<ln />
<apply>
<times />
<ci> Cai </ci>
<cn cellml:units="per_concentration_units">0.001</cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="i_s_calculation_eq">
<!--
The following equation calculates the slow inward current in terms of
the conductance, the membrane voltage and the gate variables.
-->
<apply id="i_s_calculation">
<eq />
<ci> i_s </ci>
<apply>
<times />
<ci> g_s </ci>
<ci> d </ci>
<ci> f </ci>
<apply>
<minus />
<ci> V </ci>
<ci> E_s </ci>
</apply>
</apply>
</apply>
</math>
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dCai_dt_eq">
<!-- Change in {Ca}i (intracellular calcium concentration) is given in
terms of the slow inward current as: -->
<apply id="dCai_dt">
<eq />
<apply>
<diff />
<bvar>
<ci> time </ci>
</bvar>
<ci> Cai </ci>
</apply>
<apply>
<plus />
<apply>
<times />
<cn cellml:units="dimensionless"> -0.01 </cn>
<ci> i_s </ci>
</apply>
<apply>
<times />
<cn cellml:units="dimensionless"> 0.07 </cn>
<apply>
<minus />
<
