Personal tools
You are here: Home Model Repository
 
Views

A quantitative description of membrane current and its application to conductance and excitation in nerve

The CellML code.

XML source view

<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="1952_hodgkin_huxley" name="hodgkin_huxley_1952_version02">
    
  

  
<!--
    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="uApmmcu">
    
<unit units="ampere" prefix="micro" />
    
<unit units="metre" prefix="milli" exponent="-3" />
  
</units>
  
<units name="uFpmmsq">
    
<unit units="farad" prefix="micro" />
    
<unit units="metre" prefix="milli" exponent="-2" />
  
</units>
  
<units name="mSpmmsq">
    
<unit units="siemens" prefix="milli" />
    
<unit units="metre" prefix="milli" exponent="-2" />
  
</units>
  
<units name="ms">
    
<unit units="second" prefix="milli" />
  
</units>

  
<component cmeta:id="interface" name="interface">
  
    
  
    
<!-- Variables we expect to be set/controlled externally -->
    
<variable units="ms" private_interface="out" name="t" />
    
<variable units="uFpmmsq" private_interface="out" name="Cm" initial_value="0.01" />
    
<variable units="mV" private_interface="out" name="Er" initial_value="-65.0" />
    
<variable units="mSpmmsq" private_interface="out" name="gNa_max" initial_value="120.0e-2" />
    
<variable units="mSpmmsq" private_interface="out" name="gK_max" initial_value="36.0e-2" />
    
<variable units="mSpmmsq" private_interface="out" name="gleak_max" initial_value="0.3e-2" />
    
<variable units="uApmmcu" private_interface="out" name="Istim" />
    
    
<!-- Variables we want to make available externally -->
    
<variable units="mV" public_interface="out" private_interface="in" name="Vm" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="m" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="h" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="n" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="INa" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="IK" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="Ileak" />
    
    

    
<variable units="uApmmcu" 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>Istim</ci>
      
</apply>
    
</math>
    
  
</component> <!--interface-->

  
<component cmeta:id="membrane" name="membrane">
  
    

    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="uFpmmsq" public_interface="in" private_interface="out" name="Cm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gNa_max" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gK_max" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gleak_max" />
    
<variable units="uApmmcu" public_interface="in" private_interface="out" name="Istim" />
    
    
<!-- Outputs computed here -->
    
<variable units="mV" public_interface="out" private_interface="out" name="Vm" initial_value="-65.0" />
    
    
<!-- Outputs coming from encapsulated components -->
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="m" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="h" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="n" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="INa" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="IK" />
    
<variable units="uApmmsq" public_interface="out" private_interface="in" name="Ileak" /> 
    
    
    
<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>
            
<apply>
              
<plus />
              
<ci>INa</ci>
              
<ci>IK</ci>
              
<ci>Ileak</ci>
            
</apply>
          
</apply>
          
<ci>Cm</ci>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--membrane-->
  
  
<component cmeta:id="sodium_channel" name="sodium_channel">

    

    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gNa_max" />
    
    
<!-- Outputs computed here -->
    
<variable units="uApmmsq" public_interface="out" name="INa" />
    
    
<!-- Outputs from encapsulated components -->
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="m_gate" />
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="h" />
    
    
<!-- Local variables -->
    
<variable units="mSpmmsq" name="gNa" />
    
<variable units="mV" name="ENa" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="INa_calculation_eq">
      
<apply id="INa_calculation">
        
<eq />
        
<ci>INa</ci>
        
<apply>
          
<times />
          
<ci>gNa</ci>
          
<apply>
            
<minus />
            
<ci>Vm</ci>
            
<ci>ENa</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="gNa_calculation_eq">
      
<apply id="gNa_calculation">
        
<eq />
        
<ci>gNa</ci>
        
<apply>
          
<times />
          
<ci>gNa_max</ci>
          
<apply>
            
<power />
            
<ci>m_gate</ci>
            
<cn cellml:units="dimensionless">3.0</cn>
          
</apply>
          
<ci>h</ci>
        
</apply>
      
</apply>
      
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="ENa_calculation_eq">
      
<apply id="ENa_calculation">
        
<eq />
        
<ci>ENa</ci>
        
<apply>
          
<plus />
          
<ci>Er</ci>
          
<cn cellml:units="mV">115.0</cn>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--sodium_channel-->
  
  
<component cmeta:id="sodium_channel_m_gate" name="sodium_channel_m_gate">

    

    
<!-- Local units -->
    
<units name="pms">
      
<unit units="ms" exponent="-1" />
    
</units>
    
    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
    
<!-- Outputs computed here -->
    
<variable units="dimensionless" public_interface="out" name="m" initial_value="0.0" />
    
    
<!-- Local variables -->
    
<variable units="pms" name="alpha" />
    
<variable units="pms" name="beta" />
    
<variable units="mV" name="V" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_m_calculation_eq">
      
<apply id="alpha_m_calculation">
        
<eq />
        
<ci>alpha</ci>
        
<apply>
          
<divide />
          
<apply>
            
<times />
            
<cn cellml:units="pms">0.1</cn>
            
<apply>
              
<minus />
              
<cn cellml:units="mV">25.0</cn>
              
<ci>V</ci>
            
</apply>
          
</apply>
          
<apply>
            
<minus />
            
<apply>
              
<exp />
              
<apply>
                
<times />
                
<cn cellml:units="dimensionless"> 0.1 </cn>
                
<apply>
                  
<minus />
                  
<cn cellml:units="mV">25.0</cn>
                  
<ci>V</ci>
                
</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</ci>
        
<apply>
          
<times />
          
<cn cellml:units="pms">4.0</cn>
          
<apply>
            
<exp />
            
<apply>
              
<divide />
              
<apply>
                
<minus />
                
<ci>V</ci>
              
</apply>
              
<cn cellml:units="mV">18.0</cn>
            
</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>t</ci>
          
</bvar>
          
<ci>m</ci>
        
</apply>
        
<apply>
          
<minus />
          
<apply>
            
<times />
            
<ci>alpha</ci>
            
<apply>
              
<minus />
              
<cn cellml:units="dimensionless">1.0</cn>
              
<ci>m</ci>
            
</apply>
          
</apply>
          
<apply>
            
<times />
            
<ci>beta</ci>
            
<ci>m</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>

    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="m_V_eq">
      
<apply id="m_V">
        
<eq />
        
<ci>V</ci>
        
<apply>
          
<minus />
          
<ci>Vm</ci>
          
<ci>Er</ci>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--sodium_channel_m_gate-->
  
  
<component cmeta:id="sodium_channel_h_gate" name="sodium_channel_h_gate">
  
    

    
<!-- Local units -->
    
<units name="pms">
      
<unit units="ms" exponent="-1" />
    
</units>
    
    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
    
<!-- Outputs computed here -->
    
<variable units="dimensionless" public_interface="out" name="h" initial_value="0.6" />
    
    
<!-- Local variables -->
    
<variable units="pms" name="alpha" />
    
<variable units="pms" name="beta" />
    
<variable units="mV" name="V" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="beta_h_calculation_eq">
      
<apply id="beta_h_calculation">
        
<eq />
        
<ci>beta</ci>
        
<apply>
          
<divide />
          
<cn cellml:units="pms">1.0</cn>
          
<apply>
            
<plus />
            
<apply>
              
<exp />
              
<apply>
                
<times />
                
<cn cellml:units="dimensionless">0.1</cn>
                
<apply>
                  
<minus />
                  
<cn cellml:units="mV">30.0</cn>
                  
<ci>V</ci>
                
</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="alpha_h_calculation_eq">
      
<apply id="alpha_h_calculation">
        
<eq />
        
<ci>alpha</ci>
        
<apply>
          
<times />
          
<cn cellml:units="pms">0.07</cn>
          
<apply>
            
<exp />
            
<apply>
              
<divide />
              
<apply>
                
<minus />
                
<ci>V</ci>
              
</apply>
              
<cn cellml:units="mV">20.0</cn>
            
</apply>
          
</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>t</ci>
          
</bvar>
          
<ci>h</ci>
        
</apply>
        
<apply>
          
<minus />
          
<apply>
            
<times />
            
<ci>alpha</ci>
            
<apply>
              
<minus />
              
<cn cellml:units="dimensionless">1.0</cn>
              
<ci>h</ci>
            
</apply>
          
</apply>
          
<apply>
            
<times />
            
<ci>beta</ci>
            
<ci>h</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="h_V_eq">
      
<apply id="h_V">
        
<eq />
        
<ci>V</ci>
        
<apply>
          
<minus />
          
<ci>Vm</ci>
          
<ci>Er</ci>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--sodium_channel_h_gate-->
    
  
<component cmeta:id="potassium_channel" name="potassium_channel">
  
    

    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gK_max" />
    
    
<!-- Outputs computed here -->
    
<variable units="uApmmsq" public_interface="out" name="IK" />
    
    
<!-- Outputs from encapsulated components -->
    
<variable units="dimensionless" public_interface="out" private_interface="in" name="n" />
    
    
<!-- Local variables -->
    
<variable units="mSpmmsq" name="gK" />
    
<variable units="mV" name="EK" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="IK_calculation_eq">
      
<apply id="IK_calculation">
        
<eq />
        
<ci>IK</ci>
        
<apply>
          
<times />
          
<ci>gK</ci>
          
<apply>
            
<minus />
            
<ci>Vm</ci>
            
<ci>EK</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="gK_calculation_eq">
      
<apply id="gK_calculation">
        
<eq />
        
<ci>gK</ci>
        
<apply>
          
<times />
          
<ci>gK_max</ci>
          
<apply>
            
<power />
            
<ci>n</ci>
            
<cn cellml:units="dimensionless">4.0</cn>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="EK_calculation_eq">      
      
<apply id="EK_calculation">
        
<eq />
        
<ci>EK</ci>
        
<apply>
          
<minus />
          
<ci>Er</ci>
          
<cn cellml:units="mV">12.0</cn>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--potassium_channel-->
  
  
<component cmeta:id="potassium_channel_n_gate" name="potassium_channel_n_gate">
  
    

    
<!-- Local units -->
    
<units name="pms">
      
<unit units="ms" exponent="-1" />
    
</units>
    
    
<!-- Inputs -->
    
<variable units="ms" public_interface="in" private_interface="out" name="t" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
    
<!-- Outputs computed here -->
    
<variable units="dimensionless" public_interface="out" name="n" initial_value="0.3" />
    
    
<!-- Local variables -->
    
<variable units="pms" name="alpha" />
    
<variable units="pms" name="beta" />
    
<variable units="mV" name="V" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="alpha_n_calculation_eq">
      
<apply id="alpha_n_calculation">
        
<eq />
        
<ci>alpha</ci>
        
<apply>
          
<divide />
          
<apply>
            
<times />
            
<cn cellml:units="pms">0.01</cn>
            
<apply>
              
<minus />
              
<cn cellml:units="mV">10.0</cn>
              
<ci>V</ci>
            
</apply>
          
</apply>
          
<apply>
            
<minus />
            
<apply>
              
<exp />
              
<apply>
                
<times />
                
<cn cellml:units="dimensionless"> 0.1 </cn>
                
<apply>
                  
<minus />
                  
<cn cellml:units="mV">10.0</cn>
                  
<ci>V</ci>
                
</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_n_calculation_eq">
      
<apply id="beta_n_calculation">
        
<eq />
        
<ci>beta</ci>
        
<apply>
          
<times />
          
<cn cellml:units="pms">0.125</cn>
          
<apply>
            
<exp />
            
<apply>
              
<divide />
              
<apply>
                
<minus />
                
<ci>V</ci>
              
</apply>
              
<cn cellml:units="mV">80.0</cn>
            
</apply>
          
</apply>
        
</apply>
      
</apply>
    
</math>

    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="dn_dt_eq">
      
<apply id="dn_dt">
        
<eq />
        
<apply>
          
<diff />
          
<bvar>
            
<ci>t</ci>
          
</bvar>
          
<ci>n</ci>
        
</apply>
        
<apply>
          
<minus />
          
<apply>
            
<times />
            
<ci>alpha</ci>
            
<apply>
              
<minus />
              
<cn cellml:units="dimensionless">1.0</cn>
              
<ci>n</ci>
            
</apply>
          
</apply>
          
<apply>
            
<times />
            
<ci>beta</ci>
            
<ci>n</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="n_V_eq">
      
<apply id="n_V">
        
<eq />
        
<ci>V</ci>
        
<apply>
          
<minus />
          
<ci>Vm</ci>
          
<ci>Er</ci>
        
</apply>
      
</apply>
    
</math>
  
</component>
  
<!--potassium_channel_n_gate-->
  
  
<component cmeta:id="leak_channel" name="leak_channel">

    
    
    
<!-- Inputs -->
    
<variable units="mV" public_interface="in" private_interface="out" name="Vm" />
    
<variable units="mV" public_interface="in" private_interface="out" name="Er" />
    
<variable units="mSpmmsq" public_interface="in" private_interface="out" name="gleak_max" />
    
    
<!-- Outputs computed here -->
    
<variable units="uApmmsq" public_interface="out" name="Ileak" />
    
    
<!-- Local variables -->
    
<variable units="mV" name="Eleak" />
    
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="Ileak_calculation_eq">
      
<apply id="Ileak_calculation">
        
<eq />
        
<ci>Ileak</ci>
        
<apply>
          
<times />
          
<ci>gleak_max</ci>
          
<apply>
            
<minus />
            
<ci>Vm</ci>
            
<ci>Eleak</ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
      
    
    
<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="Eleak_calculation_eq">
      
<apply id="Eleak_calculation">
        
<eq />
        
<ci>