Examples (full runnable models)

Note

This documentation is work in progress. Currently, the extension of Documenter.jl in my package MoST.jl is still experimental. As the package evolves further, this documentation will increase in readability.

Interfaces

InaMo.Examples.Interfaces.IVBase

This model can be used as a basis for experiments that capture the current-voltage relationship of a single channel or ion pump. It will use a voltage clamp test pulse protocol with pulse amplitudes starting from v_start and continuously increasing by v_inc with each pulse.

To calculate the correct StopTime needed for the simulation of pulses starting with v_start and ending with v_end, you can use the following formula:

StopTime = ((v_end - v_start) / v_inc + 3) * (d_hold + d_pulse) - d_pulse

The offset of 3 * (d_hold + d_pulse) is required because the first value for vc.is_peak, vc.is_end and vc.is_tail is obtained after 2 * d_hold and the last value is obtained d_hold seconds after the pulse with amplitude v_end.

d_pulse and d_hold should either be chosen according to reference or roughly such that d_pulse > 5 * tau_act and d_hold > 5 * tau_inact where tau_act is the time constant of the activation and tau_inact is the time constant of inactivation of the simulated channel. This ensures that there is enough time to observe the characteristic time course of activation and inactivation and that the channel is close to its steady state at holding potential before the next pulse.

partial model IVBase "base for all experiments for current-voltage relationship"
  extends InaMo.Icons.PartialExample;
  InaMo.ExperimentalMethods.VoltageClamp.VCTestPulsesPeak vc "voltage pulse protocol" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  parameter SI.Voltage v_start = -0.08 "start value for pulse amplitude";
  parameter SI.Voltage v_inc = 0.005 "increment for pulse amplitude";
initial equation
  vc.v_pulse = v_start;
equation
  when vc.pulse_end then
    vc.v_pulse = pre(vc.v_pulse) + v_inc;
  end when;
  annotation(
    Documentation(info = "
    <html>
      <p>This model can be used as a basis for experiments that capture the
      current-voltage relationship of a single channel or ion pump.
      It will use a voltage clamp test pulse protocol with pulse amplitudes
      starting from v_start and continuously increasing by v_inc with each
      pulse.</p>
      <p>To calculate the correct StopTime needed for the simulation of pulses
      starting with v_start and ending with v_end, you can use the following
      formula:</p>
      <code>
        StopTime = ((v_end - v_start) / v_inc + 3) * (d_hold + d_pulse) - d_pulse
      </code>
      <p>The offset of 3 * (d_hold + d_pulse) is required because the first
      value for vc.is_peak, vc.is_end and vc.is_tail is obtained after
      2 * d_hold and the last value is obtained d_hold seconds after the
      pulse with amplitude v_end.</p>
      <p>d_pulse and d_hold should either be chosen according to reference or
      roughly such that d_pulse > 5 * tau_act and d_hold > 5 * tau_inact where
      tau_act is the time constant of the activation and tau_inact is the time
      constant of inactivation of the simulated channel.
      This ensures that there is enough time to observe the characteristic
      time course of activation and inactivation and that the channel is close
      to its steady state at holding potential before the next pulse.</p>
    </html>
  "));
end IVBase;

Full cell examples

InaMo.Examples.FullCell.FullCellCurrentPulses

model FullCellCurrentPulses "base model for full cell simulation with current pulse protocol"
  extends Modelica.Icons.Example;
  replaceable InaMo.Cells.VariableCa.ANCell cell "cell that should be tested" annotation(
    Placement(transformation(extent = {{13, 29}, {47, 63}})));
  // NOTE d_hold = 0.3 was experimentally determined to be closest to Inada 2009, S7
  // other values tried: 0.1, 0.2, 0.25, 0.4, 0.5, 1
  InaMo.ExperimentalMethods.CurrentClamp.CCTestPulses cc(i_hold = 0, i_pulse = -2e-9, d_hold = 0.3, d_pulse = 0.001) "current clamp protocol" annotation(
    Placement(transformation(extent = {{-43, -57}, {-9, -23}})));
equation
  connect(cc.p, cell.p) annotation(
    Line(points = {{-26, -22}, {-26, -22}, {-26, 78}, {22, 78}, {22, 64}, {22, 64}}, color = {0, 0, 255}));
  connect(cc.n, cell.n) annotation(
    Line(points = {{-26, -56}, {-26, -56}, {-26, -66}, {8, -66}, {8, 46}, {22, 46}, {22, 46}}, color = {0, 0, 255}));
end FullCellCurrentPulses;
  1. cell.to.i_ion + cell.na.i_ion + cell.kir.i_ion + cell.l2.i + cell.nak.i + cell.naca.i_ion + cell.kr.i_ion + cell.cal.i_ion + cell.bg.i_ion + cc.i_stim 0.0
  2. cc.n.i +(((((((( cell.na.i_ion cell.to.i_ion ) cell.kir.i_ion ) cell.l2.i ) cell.nak.i ) cell.naca.i_ion ) cell.kr.i_ion ) cell.cal.i_ion ) cell.bg.i_ion ) 0.0
  3. $whenCondition2 cc.pulse_start
  4. $whenCondition1 cc.pulse_end
  5. Within group cc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_stim_n.i) 0.0
    2. _i_stim(_pulse_signal)( -2e-09 _i_hold)+_i_hold
    3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
  6. Within group cell (prefix _ indicates shortened variable name)
    1. _ca.ca_sub.rate+_naca.trans.rate+_cal.trans.rate 0.0
    2. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
    3. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
    4. _l2.v_l2.i/_l2.c
    5. _na.i_openghkFlux(_l2.v,_temp,_na_in,_na.ion_ex,_na.ion_p,_na.ion_z)
    6. _naca.di_c_ca.sub.substance.amount/_naca.k_c_i_v_sub
    7. _naca.di_cn_naca.di_c_na_in/_naca.k_cn_i
    8. Within group ca (prefix _ indicates shortened variable name)
      1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
      2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
      3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
      4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
      5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
      6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
      7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
      8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
      9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
      10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
      11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
      12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
      13. Within group cm_cyto (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_cyto.free.substance.amount cell.ca.cm_cyto.site.rate
          2. cell.ca.cm_cyto.site.rate _k cell.ca.cyto.substance.amount cell.ca.cm_cyto.free.substance.amount _kb cell.ca.cm_cyto.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_cyto.site.rate
          2. _con_substance.amount/_vol
      14. Within group cm_sl (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_sl.free.substance.amount cell.ca.cm_sl.site.rate
          2. cell.ca.cm_sl.site.rate _k cell.ca.sub.substance.amount cell.ca.cm_sl.free.substance.amount _kb cell.ca.cm_sl.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_sl.site.rate
          2. _con_substance.amount/_vol
      15. Within group cm_sub (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_sub.free.substance.amount cell.ca.cm_sub.site.rate
          2. cell.ca.cm_sub.site.rate _k cell.ca.sub.substance.amount cell.ca.cm_sub.free.substance.amount _kb cell.ca.cm_sub.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_sub.site.rate
          2. _con_substance.amount/_vol
      16. Within group cq (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cq.free.substance.amount cell.ca.cq.site.rate
          2. cell.ca.cq.site.rate _k cell.ca.jsr.substance.amount cell.ca.cq.free.substance.amount _kb cell.ca.cq.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cq.site.rate
          2. _con_substance.amount/_vol
      17. Within group cyto (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      18. Within group jsr (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      19. Within group jsr_sub (prefix _ indicates shortened variable name)
        1. _coeff_phillLangmuir( cell.ca.sub.substance.amount /_vol_dst,_ka,_n)
        2. _rate_coeff( cell.ca.jsr.substance.amount /_vol_src cell.ca.sub.substance.amount /_vol_dst)_vol_trans
      20. Within group nsr (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      21. Within group sub (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      22. Within group tc (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.tc.free.substance.amount cell.ca.tc.site.rate
          2. cell.ca.tc.site.rate _k cell.ca.cyto.substance.amount cell.ca.tc.free.substance.amount _kb cell.ca.tc.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tc.site.rate
          2. _con_substance.amount/_vol
      23. Within group tm (prefix _ indicates shortened variable name)
        1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
        2. _site_a.rate_assoc_a.k cell.ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
        3. _site_b.rate_assoc_b.k cell.ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
        4. Within group free (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        5. Within group occupied_a (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tm.site_a.rate
          2. _con_substance.amount/_vol
        6. Within group occupied_b (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tm.site_b.rate
          2. _con_substance.amount/_vol
    9. Within group cal (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _act.n(_act.steady_act.n)/_act.tau
      3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
      4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
      5. _open_ratio_act.n_inact_total
      6. _i_open_g_max( cell.l2.v _v_eq)
      7. _i_ion_open_ratio_i_open
      8. _g_open_ratio_g_max
      9. _act.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
      10. _act.taucal.act.ftau( cell.l2.v , 0.0 )
      11. _inact_slow.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
      12. _inact_slow.tauinact_fast.ftau( cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
      13. _inact_fast.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
      14. _inact_fast.tauinact_fast.ftau( cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
      15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
    10. Within group kir (prefix _ indicates shortened variable name)
      1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
      2. _i_open_g_max( cell.l2.v _v_eq)
      3. _i_ion_open_ratio_i_open
      4. _g_open_ratio_g_max
      5. _voltage_inact.nact.fsteady( cell.l2.v , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
      6. _voltage_act.nact.fsteady( cell.l2.v , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
    11. Within group kr (prefix _ indicates shortened variable name)
      1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
      2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
      3. _inact.n(_inact.steady_inact.n)/_inact.tau
      4. _open_ratio_act_total_inact.n
      5. _i_open_g_max( cell.l2.v _v_eq)
      6. _i_ion_open_ratio_i_open
      7. _g_open_ratio_g_max
      8. _act_fast.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
      9. _act_fast.tauact_fast.ftau( cell.l2.v , 0.0 )
      10. _act_slow.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
      11. _act_slow.tauinact_fast.ftau( cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
      12. _inact.steadyinact.fsteady( cell.l2.v )
      13. _inact.tauinact.ftau( cell.l2.v , 0.0 )
      14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
    12. Within group na (prefix _ indicates shortened variable name)
      1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
      2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
      3. _open_ratio_act.n 3.0 _inact_total
      4. _i_ion_open_ratio_i_open
      5. _act.alphafa( cell.l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
      6. _act.betakr.ftau.falpha( cell.l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
      7. _inact_fast.steadyinact_fast.fsteady( cell.l2.v )
      8. _inact_fast.tauact.fsteady( cell.l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
      9. _inact_slow.steadyinact_fast.fsteady( cell.l2.v )
      10. _inact_slow.tauact.fsteady( cell.l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
      11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
      12. Within group act (prefix _ indicates shortened variable name)
        1. _n_alpha( 1.0 _n)_beta_n
        2. _steady_alpha/(_alpha+_beta)
        3. _tau 1.0 /(_alpha+_beta)
    13. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci cell.l2.v _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co cell.l2.v _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n cell.l2.v _FoRT
    14. Within group to (prefix _ indicates shortened variable name)
      1. _act.n(_act.steady_act.n)/_act.tau
      2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
      3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
      4. _open_ratio_act.n_inact_total
      5. _i_open_g_max( cell.l2.v _v_eq)
      6. _i_ion_open_ratio_i_open
      7. _g_open_ratio_g_max
      8. _act.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
      9. _act.tauto.act.ftau( cell.l2.v , 0.000596 )
      10. _inact_slow.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
      11. _inact_slow.tauinact_fast.ftau( cell.l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
      12. _inact_fast.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
      13. _inact_fast.tauact.fsteady( cell.l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
      14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
cc.pulse_signal0 during holding period, 1 during pulse0
cc.pulse_endsignals end of pulse
cc.pulse_startsignals start of pulse
cc.i_stim"A"input current (needs to be defined externally)
cc.g.p.i"A"Current flowing into the pin
cc.n.i"A"Current flowing into the pin
cell.ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sl.occupied.substance.amount"mol"amount of substance
cell.ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sl.free.substance.amount"mol"amount of substance
cell.ca.cm_sl.site.rate"mol/s"molar flow rate of substance
cell.ca.cq.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cq.occupied.substance.amount"mol"amount of substance
cell.ca.cq.free.con"mol/m3"concentration of substance in compartment
cell.ca.cq.free.substance.amount"mol"amount of substance
cell.ca.cq.site.rate"mol/s"molar flow rate of substance
cell.ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sub.occupied.substance.amount"mol"amount of substance
cell.ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sub.free.substance.amount"mol"amount of substance
cell.ca.cm_sub.site.rate"mol/s"molar flow rate of substance
cell.ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_cyto.occupied.substance.amount"mol"amount of substance
cell.ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_cyto.free.substance.amount"mol"amount of substance
cell.ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
cell.ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
cell.ca.tm.occupied_b.substance.amount"mol"amount of substance
cell.ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
cell.ca.tm.occupied_a.substance.amount"mol"amount of substance
cell.ca.tm.free.con"mol/m3"concentration of substance in compartment
cell.ca.tm.free.substance.rate"mol/s"molar flow rate of substance
cell.ca.tm.free.substance.amount"mol"amount of substance
cell.ca.tm.site_b.rate"mol/s"molar flow rate of substance
cell.ca.tm.site_a.rate"mol/s"molar flow rate of substance
cell.ca.tc.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.tc.occupied.substance.amount"mol"amount of substance
cell.ca.tc.free.con"mol/m3"concentration of substance in compartment
cell.ca.tc.free.substance.amount"mol"amount of substance
cell.ca.tc.site.rate"mol/s"molar flow rate of substance
cell.ca.jsr_sub.coeff"1/s"coefficient of transport
cell.ca.jsr_sub.rate"mol/s"rate of change in substance amount
cell.ca.nsr_jsr.rate"mol/s"rate of change in substance amount
cell.ca.cyto_nsr.rate"mol/s"rate of change in substance amount
cell.ca.sub_cyto.rate"mol/s"rate of change in substance amount
cell.ca.nsr.con"mol/m3"concentration of substance in compartment
cell.ca.nsr.substance.rate"mol/s"molar flow rate of substance
cell.ca.nsr.substance.amount"mol"amount of substance
cell.ca.jsr.con"mol/m3"concentration of substance in compartment
cell.ca.jsr.substance.rate"mol/s"molar flow rate of substance
cell.ca.jsr.substance.amount"mol"amount of substance
cell.ca.cyto.con"mol/m3"concentration of substance in compartment
cell.ca.cyto.substance.rate"mol/s"molar flow rate of substance
cell.ca.cyto.substance.amount"mol"amount of substance
cell.ca.sub.con"mol/m3"concentration of substance in compartment
cell.ca.sub.substance.rate"mol/s"molar flow rate of substance
cell.ca.sub.substance.amount"mol"amount of substance
cell.ca.ca_sub.rate"mol/s"molar flow rate of substance
cell.to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
cell.to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.to.inact_fast.steadyvalue that n would reach if v_gate was held constant
cell.to.inact_fast.nratio of molecules in open conformation0.8734
cell.to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.to.inact_slow.steadyvalue that n would reach if v_gate was held constant
cell.to.inact_slow.nratio of molecules in open conformation0.1503
cell.to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.to.act.steadyvalue that n would reach if v_gate was held constant
cell.to.act.nratio of molecules in open conformation0.008857
cell.to.g"S"ion conductance
cell.to.i_open"A"i if open_ratio = 1
cell.to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.to.i_ion"A"current used for ion flux
cell.na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
cell.na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.na.inact_slow.steadyvalue that n would reach if v_gate was held constant
cell.na.inact_slow.nratio of molecules in open conformation0.6162
cell.na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.na.inact_fast.steadyvalue that n would reach if v_gate was held constant
cell.na.inact_fast.nratio of molecules in open conformation0.717
cell.na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.na.act.steady"1"steady state achieved if current voltage is held constant
cell.na.act.beta"1"rate of transfer from open to closed conformation
cell.na.act.alpha"1"rate of transfer from closed to open conformation
cell.na.act.nratio of molecules in open conformation0.01227
cell.na.i_openi if open_ratio = 1
cell.na.open_ratioratio between 0 (fully closed) and 1 (fully open)
cell.na.i_ion"A"current used for ion flux
cell.kir.voltage_act.nratio of molecules in open conformation
cell.kir.voltage_inact.nratio of molecules in open conformation
cell.kir.g"S"ion conductance
cell.kir.i_open"A"i if open_ratio = 1
cell.kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.kir.i_ion"A"current used for ion flux
cell.l2.i"A"Current flowing from pin p to pin n
cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
cell.nak.i"A"Current flowing from pin p to pin n
cell.naca.e4"1"ratio of exchanger molecules in state e4
cell.naca.e3"1"ratio of exchanger molecules in state e3
cell.naca.e2"1"ratio of exchanger molecules in state e2
cell.naca.e1"1"ratio of exchanger molecules in state e1
cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
cell.naca.x4"1"relative frequancy of E4 states
cell.naca.x3"1"relative frequency of E3 states
cell.naca.x2"1"relative frequency of E2 states
cell.naca.x1"1"relative frequency of E1 states
cell.naca.k_14"1"rate constant for transition from E1 to E4
cell.naca.k_41"1"rate constant for transition from E4 to E1
cell.naca.k_32"1"rate constant for transition from E3 to E2
cell.naca.k_23"1"rate constant for transition from E2 to E3
cell.naca.k_21"1"rate constant for transition from E2 to E1
cell.naca.k_12"1"rate constant for transition from E1 to E2
cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
cell.naca.i_ion"A"current used for TransmembraneCaFlow
cell.naca.trans.rate"mol/s"rate of change in substance amount
cell.kr.act_totaltotal activation due to slow and fast activation terms
cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
cell.kr.inact.nratio of molecules in open conformation0.9866
cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
cell.kr.act_slow.nratio of molecules in open conformation0.0484
cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
cell.kr.act_fast.nratio of molecules in open conformation0.07106999999999999
cell.kr.g"S"ion conductance
cell.kr.i_open"A"i if open_ratio = 1
cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.kr.i_ion"A"current used for ion flux
cell.cal.inact_total
cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cell.cal.inact_fast.nratio of molecules in open conformation0.9985000000000001
cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cell.cal.inact_slow.nratio of molecules in open conformation0.9875
cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.act.steadyvalue that n would reach if v_gate was held constant
cell.cal.act.nratio of molecules in open conformation4.069e-05
cell.cal.trans.rate"mol/s"rate of change in substance amount
cell.cal.g"S"ion conductance
cell.cal.i_open"A"i if open_ratio = 1
cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.cal.i_ion"A"current used for ion flux
cell.bg.i_ion"A"current used for ion flux
$whenCondition2cc.pulse_start
$whenCondition1cc.pulse_end
cell.cal.con.substance.amount"mol"amount of substancecell.cal.con.c_const * cell.cal.con.vol
cell.naca.con.substance.amount"mol"amount of substancecell.naca.con.c_const * cell.naca.con.vol
cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+cell.naca.di_2n * cell.na_in / cell.naca.k_3n_i
cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+cell.naca.do_2n * cell.na_ex / cell.naca.k_3n_o
cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+cell.naca.do_1n * cell.na_ex / cell.naca.k_2n_o
cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+cell.naca.di_1n * cell.na_in / cell.naca.k_2n_i
cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
cell.ca.mg.substance.amount"mol"amount of substancecell.ca.mg.c_const * cell.ca.mg.vol
cell.ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / cell.ca.sub_cyto.tau
cell.ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / cell.ca.nsr_jsr.tau
cc.g.p.v"V"Potential at the pin0.0
cell.cal.ach_factor1.0
cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+cell.na_in / cell.naca.k_1n_i
cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedcell.ca_ex / cell.naca.k_c_o
cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+cell.na_ex / cell.naca.k_1n_o
cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(cell.na_ex, cell.naca.k_3n_o)
cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(cell.na_in, cell.naca.k_3n_i)
cell.kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(cell.k_ex, 0.59)
cc.i_pulse"A"current during pulse (must be defined externally)-2e-09
cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
cell.na_in"mol/m3"intracellular sodium concentration8.0
cell.na_ex"mol/m3"extracellular sodium concentration140.0
cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, cell.na_ex, 1, cell.temp)
cell.k_in"mol/m3"intracellular potassium concentration140.0
cell.k_ex"mol/m3"extracellular potassium concentration5.4
cell.ca_ex"mol/m3"extracellular calcium concentration2.0
cell.temp"K"cell medium temperature288.15
cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.FullCellCurrentPulses.cell.c_to_v(cell.l2.c, 2.19911e-15, 7.147123e-15)
cell.v_cyto"m3"volume of cytosol0.46 * cell.v_cell - cell.v_sub
cell.v_sub"m3"volume of subspace0.01 * cell.v_cell
cell.v_jsr"m3"volume of junctional SR0.0012 * cell.v_cell
cell.v_nsr"m3"volume of network SR0.0116 * cell.v_cell
cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(cell.k_in, cell.k_ex, 1, cell.temp)
cell.bg.v_eq"V"equilibrium potential-0.0525
cell.bg.g_max"S"maximum conductance1.8e-09
cell.bg.current_name"I_b"
cell.cal.v_eq"V"equilibrium potential0.0621
cell.cal.g_max"S"maximum conductance1.85e-08
cell.cal.trans.n"1"stoichiometric ratio of ion transportcell.cal.n_ca
cell.cal.trans.zvalence of ion2
cell.cal.con.c_const"mol/m3"fixed concentrationcell.ca_ex
cell.cal.con.vol"m3"volume of the compartment1.0
cell.cal.n_ca"1"stoichiometric ratio of transport1.0
cell.cal.current_name"I_Ca,L"
cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
cell.kr.v_eq"V"equilibrium potentialcell.v_k
cell.kr.g_max"S"maximum conductance1.5e-09
cell.kr.current_name"I_K,r"
cell.naca.trans.n"1"stoichiometric ratio of ion transportcell.naca.n_ca
cell.naca.trans.zvalence of ion2
cell.naca.con.c_const"mol/m3"fixed concentrationcell.ca_ex
cell.naca.con.vol"m3"volume of the compartment1.0
cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
cell.naca.current_name"I_NaCa"
cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
cell.naca.FoRThelper variable to simplify equations11604.52214706721 / cell.temp
cell.nak.current_name"I_NaK"
cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.46e-11
cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
cell.l2.c"F"membrane capacitance4e-11
cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
cell.l2.use_initdetermines whether initial value for v is usedtrue
cell.kir.v_eq"V"equilibrium potentialcell.v_k
cell.kir.g_max"S"maximum conductance1.25e-08
cell.kir.current_name"I_K1"
cell.kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (cell.temp * 8.3144598)
cell.kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
cell.na.ion_ex"mol/m3"extracellular concentration of ioncell.na_ex
cell.na.ion_p"m3/(s.m2)"permeability of ioncell.na_p
cell.na.ion_zvalence of ion1
cell.na.current_name"I_Na"
cell.to.v_eq"V"equilibrium potentialcell.v_k
cell.to.g_max"S"maximum conductance2e-08
cell.to.current_name"I_to"
cell.cell_type"AN"
cell.ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
cell.ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
cell.ca.cm_tot"mol/m3"total concentration of calmodulin0.045
cell.ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
cell.ca.mg.c_const"mol/m3"fixed concentration2.5
cell.ca.mg.vol"m3"volume of the compartmentcell.v_cyto
cell.ca.sub.vol"m3"volume of the compartmentcell.v_sub
cell.ca.sub.c_start"mol/m3"initial value of concentration6.397e-05
cell.ca.cyto.vol"m3"volume of the compartmentcell.v_cyto
cell.ca.cyto.c_start"mol/m3"initial value of concentration0.0001206
cell.ca.jsr.vol"m3"volume of the compartmentcell.v_jsr
cell.ca.jsr.c_start"mol/m3"initial value of concentration0.4273
cell.ca.nsr.vol"m3"volume of the compartmentcell.v_nsr
cell.ca.nsr.c_start"mol/m3"initial value of concentration1.068
cell.ca.sub_cyto.vol_src"m3"volume of source compartmentcell.ca.sub.vol
cell.ca.sub_cyto.vol_dst"m3"volume of destination compartmentcell.ca.cyto.vol
cell.ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.sub_cyto.vol_src, cell.ca.sub_cyto.vol_dst)
cell.ca.sub_cyto.tau"s"time constant of diffusion4e-05
cell.ca.cyto_nsr.current_name"SERCA"
cell.ca.cyto_nsr.vol_src"m3"volume of source compartmentcell.ca.cyto.vol
cell.ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * cell.v_nsr
cell.ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
cell.ca.nsr_jsr.vol_src"m3"volume of source compartmentcell.ca.nsr.vol
cell.ca.nsr_jsr.vol_dst"m3"volume of destination compartmentcell.ca.jsr.vol
cell.ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.nsr_jsr.vol_src, cell.ca.nsr_jsr.vol_dst)
cell.ca.nsr_jsr.tau"s"time constant of diffusion0.06
cell.ca.jsr_sub.vol_src"m3"volume of source compartmentcell.ca.jsr.vol
cell.ca.jsr_sub.vol_dst"m3"volume of destination compartmentcell.ca.sub.vol
cell.ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.jsr_sub.vol_src, cell.ca.jsr_sub.vol_dst)
cell.ca.jsr_sub.current_name"RyR"
cell.ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1805.6
cell.ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
cell.ca.jsr_sub.n"1"Hill coefficient2.0
cell.ca.tc.n_tot"mol"total amount of buffercell.ca.tc_tot * cell.v_cyto
cell.ca.tc.f_start"1"initial value for f0.02359
cell.ca.tc.k"mol-1s-1"association constant88800.0 / cell.v_cyto
cell.ca.tc.kb"s-1"dissociation constant446.0
cell.ca.tc.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.tc.assoc.k"mol-1s-1"association constantcell.ca.tc.k
cell.ca.tc.assoc.kb"s-1"dissociation constantcell.ca.tc.kb
cell.ca.tc.free.vol"m3"volume of the compartmentcell.ca.tc.vol
cell.ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.tc.f_start) * cell.ca.tc.n_tot / cell.ca.tc.vol
cell.ca.tc.occupied.vol"m3"volume of the compartmentcell.ca.tc.vol
cell.ca.tc.occupied.c_start"mol/m3"initial value of concentrationcell.ca.tc.f_start * cell.ca.tc.n_tot / cell.ca.tc.vol
cell.ca.tm.n_tot"mol"total amount of buffercell.ca.tmc_tot * cell.v_cyto
cell.ca.tm.f_a_start"1"initial value for f0.3667
cell.ca.tm.f_b_start"1"initial value for f0.5594
cell.ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / cell.v_cyto
cell.ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / cell.v_cyto
cell.ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
cell.ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
cell.ca.tm.vol"m3"volume of compartment in which buffer residescell.v_cyto
cell.ca.tm.assoc_a.k"mol-1s-1"association constantcell.ca.tm.k_a
cell.ca.tm.assoc_a.kb"s-1"dissociation constantcell.ca.tm.kb_a
cell.ca.tm.assoc_b.k"mol-1s-1"association constantcell.ca.tm.k_b
cell.ca.tm.assoc_b.kb"s-1"dissociation constantcell.ca.tm.kb_b
cell.ca.tm.free.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (cell.ca.tm.f_a_start + cell.ca.tm.f_b_start)) * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.tm.occupied_a.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationcell.ca.tm.f_a_start * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.tm.occupied_b.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationcell.ca.tm.f_b_start * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.cm_cyto.n_tot"mol"total amount of buffercell.ca.cm_tot * cell.v_cyto
cell.ca.cm_cyto.f_start"1"initial value for f0.04845
cell.ca.cm_cyto.k"mol-1s-1"association constant227700.0 / cell.v_cyto
cell.ca.cm_cyto.kb"s-1"dissociation constant542.0
cell.ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_cyto.assoc.k"mol-1s-1"association constantcell.ca.cm_cyto.k
cell.ca.cm_cyto.assoc.kb"s-1"dissociation constantcell.ca.cm_cyto.kb
cell.ca.cm_cyto.free.vol"m3"volume of the compartmentcell.ca.cm_cyto.vol
cell.ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_cyto.f_start) * cell.ca.cm_cyto.n_tot / cell.ca.cm_cyto.vol
cell.ca.cm_cyto.occupied.vol"m3"volume of the compartmentcell.ca.cm_cyto.vol
cell.ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_cyto.f_start * cell.ca.cm_cyto.n_tot / cell.ca.cm_cyto.vol
cell.ca.cm_sub.n_tot"mol"total amount of buffercell.ca.cm_tot * cell.v_sub
cell.ca.cm_sub.f_start"1"initial value for f0.02626
cell.ca.cm_sub.k"mol-1s-1"association constantcell.ca.cm_cyto.k * cell.v_cyto / cell.v_sub
cell.ca.cm_sub.kb"s-1"dissociation constantcell.ca.cm_cyto.kb
cell.ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_sub.assoc.k"mol-1s-1"association constantcell.ca.cm_sub.k
cell.ca.cm_sub.assoc.kb"s-1"dissociation constantcell.ca.cm_sub.kb
cell.ca.cm_sub.free.vol"m3"volume of the compartmentcell.ca.cm_sub.vol
cell.ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_sub.f_start) * cell.ca.cm_sub.n_tot / cell.ca.cm_sub.vol
cell.ca.cm_sub.occupied.vol"m3"volume of the compartmentcell.ca.cm_sub.vol
cell.ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_sub.f_start * cell.ca.cm_sub.n_tot / cell.ca.cm_sub.vol
cell.ca.cq.n_tot"mol"total amount of buffercell.ca.cq_tot * cell.v_jsr
cell.ca.cq.f_start"1"initial value for f0.3379
cell.ca.cq.k"mol-1s-1"association constant534.0 / cell.v_jsr
cell.ca.cq.kb"s-1"dissociation constant445.0
cell.ca.cq.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cq.assoc.k"mol-1s-1"association constantcell.ca.cq.k
cell.ca.cq.assoc.kb"s-1"dissociation constantcell.ca.cq.kb
cell.ca.cq.free.vol"m3"volume of the compartmentcell.ca.cq.vol
cell.ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cq.f_start) * cell.ca.cq.n_tot / cell.ca.cq.vol
cell.ca.cq.occupied.vol"m3"volume of the compartmentcell.ca.cq.vol
cell.ca.cq.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cq.f_start * cell.ca.cq.n_tot / cell.ca.cq.vol
cell.ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
cell.ca.cm_sl.n_tot"mol"total amount of buffercell.ca.cm_sl_tot * cell.v_sub
cell.ca.cm_sl.f_start"1"initial value for f3.936e-05
cell.ca.cm_sl.k"mol-1s-1"association constant115.0 / cell.v_sub
cell.ca.cm_sl.kb"s-1"dissociation constant1000.0
cell.ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_sl.assoc.k"mol-1s-1"association constantcell.ca.cm_sl.k
cell.ca.cm_sl.assoc.kb"s-1"dissociation constantcell.ca.cm_sl.kb
cell.ca.cm_sl.free.vol"m3"volume of the compartmentcell.ca.cm_sl.vol
cell.ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_sl.f_start) * cell.ca.cm_sl.n_tot / cell.ca.cm_sl.vol
cell.ca.cm_sl.occupied.vol"m3"volume of the compartmentcell.ca.cm_sl.vol
cell.ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_sl.f_start * cell.ca.cm_sl.n_tot / cell.ca.cm_sl.vol
cc.d_hold"s"holding period0.3
cc.d_pulse"s"pulse period0.001
cc.i_hold"A"current during holding period0.0
cell.na.ion_in"mol/m3"intracellular concentration of ioncell.na_in
cell.bg.g"S"ion conductancecell.bg.g_max

InaMo.Examples.FullCell.FullCellSpon

model FullCellSpon "base model for full cell simulation without stimulation"
  extends Modelica.Icons.Example;
  replaceable InaMo.Cells.VariableCa.NCell cell "cell that should be tested" annotation(
    Placement(transformation(extent = {{13, 29}, {47, 63}})));
  Modelica.Electrical.Analog.Basic.Ground g "electrical ground to provide reference potential" annotation(
    Placement(transformation(extent = {{-43, -57}, {-9, -23}})));
equation
  connect(cell.n, g.p) annotation(
    Line(points = {{-26, -22}, {-26, -22}, {-26, 46}, {22, 46}, {22, 46}}, color = {0, 0, 255}));
end FullCellSpon;
  1. g.p.i +((((((( cell.hcn.i_ion cell.st.i_ion ) cell.l2.i ) cell.nak.i ) cell.naca.i_ion ) cell.kr.i_ion ) cell.cal.i_ion ) cell.bg.i_ion ) 0.0
  2. Within group cell (prefix _ indicates shortened variable name)
    1. _ca.ca_sub.rate+_naca.trans.rate+_cal.trans.rate 0.0
    2. _st.i_ion+_hcn.i_ion+_l2.i+_nak.i+_naca.i_ion+_kr.i_ion+_cal.i_ion+_bg.i_ion 0.0
    3. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
    4. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
    5. _l2.v_l2.i/_l2.c
    6. _naca.di_c_ca.sub.substance.amount/_naca.k_c_i_v_sub
    7. _naca.di_cn_naca.di_c_na_in/_naca.k_cn_i
    8. Within group ca (prefix _ indicates shortened variable name)
      1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
      2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
      3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
      4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
      5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
      6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
      7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
      8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
      9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
      10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
      11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
      12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
      13. Within group cm_cyto (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_cyto.free.substance.amount cell.ca.cm_cyto.site.rate
          2. cell.ca.cm_cyto.site.rate _k cell.ca.cyto.substance.amount cell.ca.cm_cyto.free.substance.amount _kb cell.ca.cm_cyto.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_cyto.site.rate
          2. _con_substance.amount/_vol
      14. Within group cm_sl (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_sl.free.substance.amount cell.ca.cm_sl.site.rate
          2. cell.ca.cm_sl.site.rate _k cell.ca.sub.substance.amount cell.ca.cm_sl.free.substance.amount _kb cell.ca.cm_sl.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_sl.site.rate
          2. _con_substance.amount/_vol
      15. Within group cm_sub (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cm_sub.free.substance.amount cell.ca.cm_sub.site.rate
          2. cell.ca.cm_sub.site.rate _k cell.ca.sub.substance.amount cell.ca.cm_sub.free.substance.amount _kb cell.ca.cm_sub.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cm_sub.site.rate
          2. _con_substance.amount/_vol
      16. Within group cq (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.cq.free.substance.amount cell.ca.cq.site.rate
          2. cell.ca.cq.site.rate _k cell.ca.jsr.substance.amount cell.ca.cq.free.substance.amount _kb cell.ca.cq.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.cq.site.rate
          2. _con_substance.amount/_vol
      17. Within group cyto (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      18. Within group jsr (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      19. Within group jsr_sub (prefix _ indicates shortened variable name)
        1. _coeff_phillLangmuir( cell.ca.sub.substance.amount /_vol_dst,_ka,_n)
        2. _rate_coeff( cell.ca.jsr.substance.amount /_vol_src cell.ca.sub.substance.amount /_vol_dst)_vol_trans
      20. Within group nsr (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      21. Within group sub (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      22. Within group tc (prefix _ indicates shortened variable name)
        1. Within group assoc (prefix _ indicates shortened variable name)
          1. cell.ca.tc.free.substance.amount cell.ca.tc.site.rate
          2. cell.ca.tc.site.rate _k cell.ca.cyto.substance.amount cell.ca.tc.free.substance.amount _kb cell.ca.tc.occupied.substance.amount
        2. Within group occupied (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tc.site.rate
          2. _con_substance.amount/_vol
      23. Within group tm (prefix _ indicates shortened variable name)
        1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
        2. _site_a.rate_assoc_a.k cell.ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
        3. _site_b.rate_assoc_b.k cell.ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
        4. Within group free (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        5. Within group occupied_a (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tm.site_a.rate
          2. _con_substance.amount/_vol
        6. Within group occupied_b (prefix _ indicates shortened variable name)
          1. _substance.amount cell.ca.tm.site_b.rate
          2. _con_substance.amount/_vol
    9. Within group cal (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _act.n(_act.steady_act.n)/_act.tau
      3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
      4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
      5. _open_ratio_act.n_inact_total
      6. _i_open_g_max( cell.l2.v _v_eq)
      7. _i_ion_open_ratio_i_open
      8. _g_open_ratio_g_max
      9. _act.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
      10. _act.taucal.act.ftau( cell.l2.v , 0.0 )
      11. _inact_slow.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
      12. _inact_slow.tauinact_fast.ftau( cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
      13. _inact_fast.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
      14. _inact_fast.tauinact_fast.ftau( cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
      15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
    10. Within group hcn (prefix _ indicates shortened variable name)
      1. _act.n(_act.steady_act.n)/_act.tau
      2. _i_open_g_max( cell.l2.v _v_eq)
      3. _i_ion_act.n_i_open
      4. _g_act.n_g_max
      5. _act.steadyact.fsteady( cell.l2.v _act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
      6. _act.tauinact_fast.ftau( cell.l2.v , 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
    11. Within group kr (prefix _ indicates shortened variable name)
      1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
      2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
      3. _inact.n(_inact.steady_inact.n)/_inact.tau
      4. _open_ratio_act_total_inact.n
      5. _i_open_g_max( cell.l2.v _v_eq)
      6. _i_ion_open_ratio_i_open
      7. _g_open_ratio_g_max
      8. _act_fast.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
      9. _act_fast.tauact_fast.ftau( cell.l2.v , 0.0 )
      10. _act_slow.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
      11. _act_slow.tauinact_fast.ftau( cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
      12. _inact.steadyinact.fsteady( cell.l2.v )
      13. _inact.tauinact.ftau( cell.l2.v , 0.0 )
      14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
    12. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci cell.l2.v _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co cell.l2.v _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n cell.l2.v _FoRT
    13. Within group st (prefix _ indicates shortened variable name)
      1. _act.n(_act.steady_act.n)/_act.tau
      2. _open_ratio_act.n_inact.n
      3. _i_open_g_max( cell.l2.v _v_eq)
      4. _i_ion_open_ratio_i_open
      5. _g_open_ratio_g_max
      6. _act.steadyact.fsteady( cell.l2.v , 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
      7. _act.taust.act.ftau( cell.l2.v , 0.0 )
      8. _inact.alphainact.falpha( cell.l2.v , 0.0 )
      9. _inact.betainact.fbeta( cell.l2.v )
      10. Within group inact (prefix _ indicates shortened variable name)
        1. _n_alpha( 1.0 _n)_beta_n
        2. _steady_alpha/(_alpha+_beta)
        3. _tau 1.0 /(_alpha+_beta)

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0182 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function fbeta.fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fbeta.fa;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function st.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (st.ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end st.act.ftau;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + kr.ftau.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function st.ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end st.ftau.falpha;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fbeta.fa(x, 0.0) + act.fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
function falpha.fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha.fa;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := falpha.fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + falpha.fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + kr.ftau.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + falpha.fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
g.p.i"A"Current flowing into the pin
cell.ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sl.occupied.substance.amount"mol"amount of substance
cell.ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sl.free.substance.amount"mol"amount of substance
cell.ca.cm_sl.site.rate"mol/s"molar flow rate of substance
cell.ca.cq.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cq.occupied.substance.amount"mol"amount of substance
cell.ca.cq.free.con"mol/m3"concentration of substance in compartment
cell.ca.cq.free.substance.amount"mol"amount of substance
cell.ca.cq.site.rate"mol/s"molar flow rate of substance
cell.ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sub.occupied.substance.amount"mol"amount of substance
cell.ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_sub.free.substance.amount"mol"amount of substance
cell.ca.cm_sub.site.rate"mol/s"molar flow rate of substance
cell.ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.cm_cyto.occupied.substance.amount"mol"amount of substance
cell.ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
cell.ca.cm_cyto.free.substance.amount"mol"amount of substance
cell.ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
cell.ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
cell.ca.tm.occupied_b.substance.amount"mol"amount of substance
cell.ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
cell.ca.tm.occupied_a.substance.amount"mol"amount of substance
cell.ca.tm.free.con"mol/m3"concentration of substance in compartment
cell.ca.tm.free.substance.rate"mol/s"molar flow rate of substance
cell.ca.tm.free.substance.amount"mol"amount of substance
cell.ca.tm.site_b.rate"mol/s"molar flow rate of substance
cell.ca.tm.site_a.rate"mol/s"molar flow rate of substance
cell.ca.tc.occupied.con"mol/m3"concentration of substance in compartment
cell.ca.tc.occupied.substance.amount"mol"amount of substance
cell.ca.tc.free.con"mol/m3"concentration of substance in compartment
cell.ca.tc.free.substance.amount"mol"amount of substance
cell.ca.tc.site.rate"mol/s"molar flow rate of substance
cell.ca.jsr_sub.coeff"1/s"coefficient of transport
cell.ca.jsr_sub.rate"mol/s"rate of change in substance amount
cell.ca.nsr_jsr.rate"mol/s"rate of change in substance amount
cell.ca.cyto_nsr.rate"mol/s"rate of change in substance amount
cell.ca.sub_cyto.rate"mol/s"rate of change in substance amount
cell.ca.nsr.con"mol/m3"concentration of substance in compartment
cell.ca.nsr.substance.rate"mol/s"molar flow rate of substance
cell.ca.nsr.substance.amount"mol"amount of substance
cell.ca.jsr.con"mol/m3"concentration of substance in compartment
cell.ca.jsr.substance.rate"mol/s"molar flow rate of substance
cell.ca.jsr.substance.amount"mol"amount of substance
cell.ca.cyto.con"mol/m3"concentration of substance in compartment
cell.ca.cyto.substance.rate"mol/s"molar flow rate of substance
cell.ca.cyto.substance.amount"mol"amount of substance
cell.ca.sub.con"mol/m3"concentration of substance in compartment
cell.ca.sub.substance.rate"mol/s"molar flow rate of substance
cell.ca.sub.substance.amount"mol"amount of substance
cell.ca.ca_sub.rate"mol/s"molar flow rate of substance
cell.st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.st.inact.steady"1"steady state achieved if current voltage is held constant
cell.st.inact.beta"1"rate of transfer from open to closed conformation
cell.st.inact.alpha"1"rate of transfer from closed to open conformation
cell.st.inact.nratio of molecules in open conformation0.4886
cell.st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.st.act.steadyvalue that n would reach if v_gate was held constant
cell.st.act.nratio of molecules in open conformation0.1933
cell.st.g"S"ion conductance
cell.st.i_open"A"i if open_ratio = 1
cell.st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.st.i_ion"A"current used for ion flux
cell.hcn.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.hcn.act.steadyvalue that n would reach if v_gate was held constant
cell.hcn.act.n"1"ratio of molecules in open conformation0.03825
cell.hcn.g"S"ion conductance
cell.hcn.i_open"A"i if open_ratio = 1
cell.hcn.i_ion"A"current used for ion flux
cell.l2.i"A"Current flowing from pin p to pin n
cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
cell.nak.i"A"Current flowing from pin p to pin n
cell.naca.e4"1"ratio of exchanger molecules in state e4
cell.naca.e3"1"ratio of exchanger molecules in state e3
cell.naca.e2"1"ratio of exchanger molecules in state e2
cell.naca.e1"1"ratio of exchanger molecules in state e1
cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
cell.naca.x4"1"relative frequancy of E4 states
cell.naca.x3"1"relative frequency of E3 states
cell.naca.x2"1"relative frequency of E2 states
cell.naca.x1"1"relative frequency of E1 states
cell.naca.k_14"1"rate constant for transition from E1 to E4
cell.naca.k_41"1"rate constant for transition from E4 to E1
cell.naca.k_32"1"rate constant for transition from E3 to E2
cell.naca.k_23"1"rate constant for transition from E2 to E3
cell.naca.k_21"1"rate constant for transition from E2 to E1
cell.naca.k_12"1"rate constant for transition from E1 to E2
cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
cell.naca.i_ion"A"current used for TransmembraneCaFlow
cell.naca.trans.rate"mol/s"rate of change in substance amount
cell.kr.act_totaltotal activation due to slow and fast activation terms
cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
cell.kr.inact.nratio of molecules in open conformation0.9775
cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
cell.kr.act_slow.nratio of molecules in open conformation0.1287
cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
cell.kr.act_fast.nratio of molecules in open conformation0.6067
cell.kr.g"S"ion conductance
cell.kr.i_open"A"i if open_ratio = 1
cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.kr.i_ion"A"current used for ion flux
cell.cal.inact_total
cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cell.cal.inact_fast.nratio of molecules in open conformation0.6861
cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cell.cal.inact_slow.nratio of molecules in open conformation0.4441
cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cell.cal.act.steadyvalue that n would reach if v_gate was held constant
cell.cal.act.nratio of molecules in open conformation0.0001533
cell.cal.trans.rate"mol/s"rate of change in substance amount
cell.cal.g"S"ion conductance
cell.cal.i_open"A"i if open_ratio = 1
cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cell.cal.i_ion"A"current used for ion flux
cell.bg.i_ion"A"current used for ion flux
cell.cal.con.substance.amount"mol"amount of substancecell.cal.con.c_const * cell.cal.con.vol
cell.naca.con.substance.amount"mol"amount of substancecell.naca.con.c_const * cell.naca.con.vol
cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+cell.naca.di_2n * cell.na_in / cell.naca.k_3n_i
cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+cell.naca.do_2n * cell.na_ex / cell.naca.k_3n_o
cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+cell.naca.do_1n * cell.na_ex / cell.naca.k_2n_o
cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+cell.naca.di_1n * cell.na_in / cell.naca.k_2n_i
cell.p.i"A"Current flowing into the pin0.0
cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
cell.ca.mg.substance.amount"mol"amount of substancecell.ca.mg.c_const * cell.ca.mg.vol
cell.ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / cell.ca.sub_cyto.tau
cell.ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / cell.ca.nsr_jsr.tau
g.p.v"V"Potential at the pin0.0
cell.cal.ach_factor1.0
cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+cell.na_in / cell.naca.k_1n_i
cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedcell.ca_ex / cell.naca.k_c_o
cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+cell.na_ex / cell.naca.k_1n_o
cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(cell.na_ex, cell.naca.k_3n_o)
cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(cell.na_in, cell.naca.k_3n_i)
cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
cell.na_in"mol/m3"intracellular sodium concentration8.0
cell.na_ex"mol/m3"extracellular sodium concentration140.0
cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, cell.na_ex, 1, cell.temp)
cell.k_in"mol/m3"intracellular potassium concentration140.0
cell.k_ex"mol/m3"extracellular potassium concentration5.4
cell.ca_ex"mol/m3"extracellular calcium concentration2.0
cell.temp"K"cell medium temperature288.15
cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.FullCellSpon.cell.c_to_v(cell.l2.c, 2.19911e-15, 7.147123e-15)
cell.v_cyto"m3"volume of cytosol0.46 * cell.v_cell - cell.v_sub
cell.v_sub"m3"volume of subspace0.01 * cell.v_cell
cell.v_jsr"m3"volume of junctional SR0.0012 * cell.v_cell
cell.v_nsr"m3"volume of network SR0.0116 * cell.v_cell
cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(cell.k_in, cell.k_ex, 1, cell.temp)
cell.bg.v_eq"V"equilibrium potential-0.0225
cell.bg.g_max"S"maximum conductance1.2e-09
cell.bg.current_name"I_b"
cell.cal.v_eq"V"equilibrium potential0.0621
cell.cal.g_max"S"maximum conductance9e-09
cell.cal.trans.n"1"stoichiometric ratio of ion transportcell.cal.n_ca
cell.cal.trans.zvalence of ion2
cell.cal.con.c_const"mol/m3"fixed concentrationcell.ca_ex
cell.cal.con.vol"m3"volume of the compartment1.0
cell.cal.n_ca"1"stoichiometric ratio of transport1.0
cell.cal.current_name"I_Ca,L"
cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
cell.kr.v_eq"V"equilibrium potentialcell.v_k
cell.kr.g_max"S"maximum conductance3.5e-09
cell.kr.current_name"I_K,r"
cell.naca.trans.n"1"stoichiometric ratio of ion transportcell.naca.n_ca
cell.naca.trans.zvalence of ion2
cell.naca.con.c_const"mol/m3"fixed concentrationcell.ca_ex
cell.naca.con.vol"m3"volume of the compartment1.0
cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
cell.naca.current_name"I_NaCa"
cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
cell.naca.FoRThelper variable to simplify equations11604.52214706721 / cell.temp
cell.nak.current_name"I_NaK"
cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.43e-10
cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
cell.l2.c"F"membrane capacitance2.9e-11
cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
cell.l2.use_initdetermines whether initial value for v is usedtrue
cell.hcn.v_eq"V"equilibrium potential-0.03
cell.hcn.g_max"S"maximum conductance1e-09
cell.hcn.current_name"I_f"
cell.hcn.act_shift"V"0.0
cell.hcn.act.shift"V"cell.hcn.act_shift
cell.st.v_eq"V"equilibrium potential0.0374
cell.st.g_max"S"maximum conductance1e-10
cell.st.current_name"I_st"
cell.cell_type"N"
cell.ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
cell.ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
cell.ca.cm_tot"mol/m3"total concentration of calmodulin0.045
cell.ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
cell.ca.mg.c_const"mol/m3"fixed concentration2.5
cell.ca.mg.vol"m3"volume of the compartmentcell.v_cyto
cell.ca.sub.vol"m3"volume of the compartmentcell.v_sub
cell.ca.sub.c_start"mol/m3"initial value of concentration0.0002294
cell.ca.cyto.vol"m3"volume of the compartmentcell.v_cyto
cell.ca.cyto.c_start"mol/m3"initial value of concentration0.0003623
cell.ca.jsr.vol"m3"volume of the compartmentcell.v_jsr
cell.ca.jsr.c_start"mol/m3"initial value of concentration0.08227
cell.ca.nsr.vol"m3"volume of the compartmentcell.v_nsr
cell.ca.nsr.c_start"mol/m3"initial value of concentration1.146
cell.ca.sub_cyto.vol_src"m3"volume of source compartmentcell.ca.sub.vol
cell.ca.sub_cyto.vol_dst"m3"volume of destination compartmentcell.ca.cyto.vol
cell.ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.sub_cyto.vol_src, cell.ca.sub_cyto.vol_dst)
cell.ca.sub_cyto.tau"s"time constant of diffusion4e-05
cell.ca.cyto_nsr.current_name"SERCA"
cell.ca.cyto_nsr.vol_src"m3"volume of source compartmentcell.ca.cyto.vol
cell.ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * cell.v_nsr
cell.ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
cell.ca.nsr_jsr.vol_src"m3"volume of source compartmentcell.ca.nsr.vol
cell.ca.nsr_jsr.vol_dst"m3"volume of destination compartmentcell.ca.jsr.vol
cell.ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.nsr_jsr.vol_src, cell.ca.nsr_jsr.vol_dst)
cell.ca.nsr_jsr.tau"s"time constant of diffusion0.06
cell.ca.jsr_sub.vol_src"m3"volume of source compartmentcell.ca.jsr.vol
cell.ca.jsr_sub.vol_dst"m3"volume of destination compartmentcell.ca.sub.vol
cell.ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(cell.ca.jsr_sub.vol_src, cell.ca.jsr_sub.vol_dst)
cell.ca.jsr_sub.current_name"RyR"
cell.ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1500.0
cell.ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
cell.ca.jsr_sub.n"1"Hill coefficient2.0
cell.ca.tc.n_tot"mol"total amount of buffercell.ca.tc_tot * cell.v_cyto
cell.ca.tc.f_start"1"initial value for f0.6838
cell.ca.tc.k"mol-1s-1"association constant88800.0 / cell.v_cyto
cell.ca.tc.kb"s-1"dissociation constant446.0
cell.ca.tc.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.tc.assoc.k"mol-1s-1"association constantcell.ca.tc.k
cell.ca.tc.assoc.kb"s-1"dissociation constantcell.ca.tc.kb
cell.ca.tc.free.vol"m3"volume of the compartmentcell.ca.tc.vol
cell.ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.tc.f_start) * cell.ca.tc.n_tot / cell.ca.tc.vol
cell.ca.tc.occupied.vol"m3"volume of the compartmentcell.ca.tc.vol
cell.ca.tc.occupied.c_start"mol/m3"initial value of concentrationcell.ca.tc.f_start * cell.ca.tc.n_tot / cell.ca.tc.vol
cell.ca.tm.n_tot"mol"total amount of buffercell.ca.tmc_tot * cell.v_cyto
cell.ca.tm.f_a_start"1"initial value for f0.6192
cell.ca.tm.f_b_start"1"initial value for f0.3363
cell.ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / cell.v_cyto
cell.ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / cell.v_cyto
cell.ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
cell.ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
cell.ca.tm.vol"m3"volume of compartment in which buffer residescell.v_cyto
cell.ca.tm.assoc_a.k"mol-1s-1"association constantcell.ca.tm.k_a
cell.ca.tm.assoc_a.kb"s-1"dissociation constantcell.ca.tm.kb_a
cell.ca.tm.assoc_b.k"mol-1s-1"association constantcell.ca.tm.k_b
cell.ca.tm.assoc_b.kb"s-1"dissociation constantcell.ca.tm.kb_b
cell.ca.tm.free.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (cell.ca.tm.f_a_start + cell.ca.tm.f_b_start)) * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.tm.occupied_a.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationcell.ca.tm.f_a_start * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.tm.occupied_b.vol"m3"volume of the compartmentcell.ca.tm.vol
cell.ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationcell.ca.tm.f_b_start * cell.ca.tm.n_tot / cell.ca.tm.vol
cell.ca.cm_cyto.n_tot"mol"total amount of buffercell.ca.cm_tot * cell.v_cyto
cell.ca.cm_cyto.f_start"1"initial value for f0.1336
cell.ca.cm_cyto.k"mol-1s-1"association constant227700.0 / cell.v_cyto
cell.ca.cm_cyto.kb"s-1"dissociation constant542.0
cell.ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_cyto.assoc.k"mol-1s-1"association constantcell.ca.cm_cyto.k
cell.ca.cm_cyto.assoc.kb"s-1"dissociation constantcell.ca.cm_cyto.kb
cell.ca.cm_cyto.free.vol"m3"volume of the compartmentcell.ca.cm_cyto.vol
cell.ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_cyto.f_start) * cell.ca.cm_cyto.n_tot / cell.ca.cm_cyto.vol
cell.ca.cm_cyto.occupied.vol"m3"volume of the compartmentcell.ca.cm_cyto.vol
cell.ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_cyto.f_start * cell.ca.cm_cyto.n_tot / cell.ca.cm_cyto.vol
cell.ca.cm_sub.n_tot"mol"total amount of buffercell.ca.cm_tot * cell.v_sub
cell.ca.cm_sub.f_start"1"initial value for f0.08894000000000001
cell.ca.cm_sub.k"mol-1s-1"association constantcell.ca.cm_cyto.k * cell.v_cyto / cell.v_sub
cell.ca.cm_sub.kb"s-1"dissociation constantcell.ca.cm_cyto.kb
cell.ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_sub.assoc.k"mol-1s-1"association constantcell.ca.cm_sub.k
cell.ca.cm_sub.assoc.kb"s-1"dissociation constantcell.ca.cm_sub.kb
cell.ca.cm_sub.free.vol"m3"volume of the compartmentcell.ca.cm_sub.vol
cell.ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_sub.f_start) * cell.ca.cm_sub.n_tot / cell.ca.cm_sub.vol
cell.ca.cm_sub.occupied.vol"m3"volume of the compartmentcell.ca.cm_sub.vol
cell.ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_sub.f_start * cell.ca.cm_sub.n_tot / cell.ca.cm_sub.vol
cell.ca.cq.n_tot"mol"total amount of buffercell.ca.cq_tot * cell.v_jsr
cell.ca.cq.f_start"1"initial value for f0.08735999999999999
cell.ca.cq.k"mol-1s-1"association constant534.0 / cell.v_jsr
cell.ca.cq.kb"s-1"dissociation constant445.0
cell.ca.cq.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cq.assoc.k"mol-1s-1"association constantcell.ca.cq.k
cell.ca.cq.assoc.kb"s-1"dissociation constantcell.ca.cq.kb
cell.ca.cq.free.vol"m3"volume of the compartmentcell.ca.cq.vol
cell.ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cq.f_start) * cell.ca.cq.n_tot / cell.ca.cq.vol
cell.ca.cq.occupied.vol"m3"volume of the compartmentcell.ca.cq.vol
cell.ca.cq.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cq.f_start * cell.ca.cq.n_tot / cell.ca.cq.vol
cell.ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
cell.ca.cm_sl.n_tot"mol"total amount of buffercell.ca.cm_sl_tot * cell.v_sub
cell.ca.cm_sl.f_start"1"initial value for f4.764e-05
cell.ca.cm_sl.k"mol-1s-1"association constant115.0 / cell.v_sub
cell.ca.cm_sl.kb"s-1"dissociation constant1000.0
cell.ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
cell.ca.cm_sl.assoc.k"mol-1s-1"association constantcell.ca.cm_sl.k
cell.ca.cm_sl.assoc.kb"s-1"dissociation constantcell.ca.cm_sl.kb
cell.ca.cm_sl.free.vol"m3"volume of the compartmentcell.ca.cm_sl.vol
cell.ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - cell.ca.cm_sl.f_start) * cell.ca.cm_sl.n_tot / cell.ca.cm_sl.vol
cell.ca.cm_sl.occupied.vol"m3"volume of the compartmentcell.ca.cm_sl.vol
cell.ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationcell.ca.cm_sl.f_start * cell.ca.cm_sl.n_tot / cell.ca.cm_sl.vol
cell.bg.g"S"ion conductancecell.bg.g_max

InaMo.Examples.FullCell.AllCells

To reproduce the upper part of Figure S7 from Inada 2009, plot an.cell.v, n.cell.v and nh.cell.v against time. To reproduce the lower part, plot an.cell.ca.cyto.substance.amount, n.cell.ca.cyto.substance.amount, and nh.cell.ca.cyto.substance.amount against time. As time period for each cell type choose the first pulse that occurs after one second has passed.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow to see more than one action potential
  • Tolerance: default value
  • Interval: small enough to follow time course of current during peak
  • {an, nh}.cc.i_hold: assumed as zero (not given explicitly in Inada 2009)
  • {an, nh}.cc.i_pulse: manually chosen to obtain best fit for plots
  • {an, nh}.cc.d_pulse: according to the description of Figure 1 in Inada 2009
  • {an, nh}.cc.d_hold: manually chosen to obtain best fit for plot (300 ms instead of 350 ms as according to Figure 1 in Inada 2009)
  • {an, nh}.cell.use_ach: set to false, because the acetylcholine concentration {an, nh, n}.cell.ach is not given in the C++ code and the CellML code sets it to 0, effectively disabling the channel.

NOTE: Inada et al. do not specify the experiment protocol used for figure S7. We assume that it is the same or similar to the experiment protocol used for figure 1. However, even for this figure in the main article, the value for i_stim is only given as "k x Threshold" with some numeric value for k and no clear definition of what the threshold value is. d_hold is given as 350 ms, but we obtained a better fit with d_hold = 300 ms. i_hold is not given, but can be assumed to be zero.

NOTE: For AN and NH cells the voltage plot shows a lower resting potential and a slightly narrower AP with respect to figure S7. For N cells, the internal Ca2+ concentration is significantly lower than in figure S7.

model AllCells "simulation of all cell types with variable intracellular Ca2+"
  FullCellCurrentPulses an(redeclare InaMo.Cells.VariableCa.ANCell cell, cc.i_pulse = -1.2e-9) "AN cell experiment";
  FullCellSpon n(redeclare InaMo.Cells.VariableCa.NCell cell) "N cell experiment";
  FullCellCurrentPulses nh(redeclare InaMo.Cells.VariableCa.NHCell cell, cc.i_pulse = -0.95e-9) "NH Cell experiment";
  extends Modelica.Icons.Example;
  annotation(
    experiment(StartTime = 0, StopTime = 2.5, Tolerance = 1e-6, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "(an|n|nh)\\.cell\\.(v|ca\\.(sub|cyto)\\.con)"),
    Documentation(info = "
    <html>
      <p>To reproduce the upper part of Figure S7 from Inada 2009, plot
      an.cell.v, n.cell.v and nh.cell.v against time.
      To reproduce the lower part, plot an.cell.ca.cyto.substance.amount,
      n.cell.ca.cyto.substance.amount, and nh.cell.ca.cyto.substance.amount against time.
      As time period for each cell type choose the first pulse that occurs
      after one second has passed.</p>

      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow to see more than one action potential</li>
        <li>Tolerance: default value</li>
        <li>Interval: small enough to follow time course of current during peak</li>
        <li>{an, nh}.cc.i_hold: assumed as zero (not given explicitly in Inada 2009)</li>
        <li>{an, nh}.cc.i_pulse: manually chosen to obtain best fit for plots</li>
        <li>{an, nh}.cc.d_pulse: according to the description of Figure 1 in Inada 2009</li>
        <li>{an, nh}.cc.d_hold: manually chosen to obtain best fit for plot (300 ms instead of 350 ms as according to Figure 1 in Inada 2009)</li>
        <li>
          {an, nh}.cell.use_ach: set to false, because the acetylcholine
          concentration {an, nh, n}.cell.ach is not given in the C++ code and
          the CellML code sets it to 0, effectively disabling the channel.
        </li>
      </ul>
      <p>NOTE: Inada et al. do not specify the experiment protocol used for
      figure S7. We assume that it is the same or similar to the experiment
      protocol used for figure 1.
      However, even for this figure in the main article, the value for i_stim
      is only given as &quot;k x Threshold&quot; with some numeric value for k
      and no clear definition of what the threshold value is.
      d_hold is given as 350 ms, but we obtained a better fit with d_hold =
      300 ms.
      i_hold is not given, but can be assumed to be zero.</p>
      <p>NOTE: For AN and NH cells the voltage plot shows a lower resting
      potential and a slightly narrower AP with respect to figure S7.
      For N cells, the internal Ca2+ concentration is significantly lower than
      in figure S7.</p>
    </html>
  "));
end AllCells;
  1. $whenCondition4 an.cc.pulse_start
  2. $whenCondition3 an.cc.pulse_end
  3. $whenCondition2 nh.cc.pulse_start
  4. $whenCondition1 nh.cc.pulse_end
  5. n.g.p.i +((((((( n.cell.hcn.i_ion n.cell.st.i_ion ) n.cell.l2.i ) n.cell.nak.i ) n.cell.naca.i_ion ) n.cell.kr.i_ion ) n.cell.cal.i_ion ) n.cell.bg.i_ion ) 0.0
  6. Within group an (prefix _ indicates shortened variable name)
    1. _cell.to.i_ion+_cell.na.i_ion+_cell.kir.i_ion+_cell.l2.i+_cell.nak.i+_cell.naca.i_ion+_cell.kr.i_ion+_cell.cal.i_ion+_cell.bg.i_ion+_cc.i_stim 0.0
    2. _cc.n.i+((((((((_cell.na.i_ion_cell.to.i_ion)_cell.kir.i_ion)_cell.l2.i)_cell.nak.i)_cell.naca.i_ion)_cell.kr.i_ion)_cell.cal.i_ion)_cell.bg.i_ion) 0.0
    3. Within group cc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_stim_n.i) 0.0
      2. _i_stim(_pulse_signal)( -1.2e-09 _i_hold)+_i_hold
      3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
      4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    4. Within group cell (prefix _ indicates shortened variable name)
      1. _ca.ca_sub.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      3. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      4. _l2.v_l2.i/_l2.c
      5. _na.i_openghkFlux(_l2.v,_temp,_na_in,_na.ion_ex,_na.ion_p,_na.ion_z)
      6. _naca.di_c_ca.sub.substance.amount/_naca.k_c_i_v_sub
      7. _naca.di_cn_naca.di_c_na_in/_naca.k_cn_i
      8. Within group ca (prefix _ indicates shortened variable name)
        1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
        2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
        3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
        4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
        5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
        6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
        7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
        8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
        9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
        10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
        11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
        12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
        13. Within group cm_cyto (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. an.cell.ca.cm_cyto.free.substance.amount an.cell.ca.cm_cyto.site.rate
            2. an.cell.ca.cm_cyto.site.rate _k an.cell.ca.cyto.substance.amount an.cell.ca.cm_cyto.free.substance.amount _kb an.cell.ca.cm_cyto.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.cm_cyto.site.rate
            2. _con_substance.amount/_vol
        14. Within group cm_sl (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. an.cell.ca.cm_sl.free.substance.amount an.cell.ca.cm_sl.site.rate
            2. an.cell.ca.cm_sl.site.rate _k an.cell.ca.sub.substance.amount an.cell.ca.cm_sl.free.substance.amount _kb an.cell.ca.cm_sl.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.cm_sl.site.rate
            2. _con_substance.amount/_vol
        15. Within group cm_sub (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. an.cell.ca.cm_sub.free.substance.amount an.cell.ca.cm_sub.site.rate
            2. an.cell.ca.cm_sub.site.rate _k an.cell.ca.sub.substance.amount an.cell.ca.cm_sub.free.substance.amount _kb an.cell.ca.cm_sub.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.cm_sub.site.rate
            2. _con_substance.amount/_vol
        16. Within group cq (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. an.cell.ca.cq.free.substance.amount an.cell.ca.cq.site.rate
            2. an.cell.ca.cq.site.rate _k an.cell.ca.jsr.substance.amount an.cell.ca.cq.free.substance.amount _kb an.cell.ca.cq.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.cq.site.rate
            2. _con_substance.amount/_vol
        17. Within group cyto (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        18. Within group jsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        19. Within group jsr_sub (prefix _ indicates shortened variable name)
          1. _coeff_phillLangmuir( an.cell.ca.sub.substance.amount /_vol_dst,_ka,_n)
          2. _rate_coeff( an.cell.ca.jsr.substance.amount /_vol_src an.cell.ca.sub.substance.amount /_vol_dst)_vol_trans
        20. Within group nsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        21. Within group sub (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        22. Within group tc (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. an.cell.ca.tc.free.substance.amount an.cell.ca.tc.site.rate
            2. an.cell.ca.tc.site.rate _k an.cell.ca.cyto.substance.amount an.cell.ca.tc.free.substance.amount _kb an.cell.ca.tc.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.tc.site.rate
            2. _con_substance.amount/_vol
        23. Within group tm (prefix _ indicates shortened variable name)
          1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
          2. _site_a.rate_assoc_a.k an.cell.ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
          3. _site_b.rate_assoc_b.k an.cell.ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
          4. Within group free (prefix _ indicates shortened variable name)
            1. _substance.amount_substance.rate
            2. _con_substance.amount/_vol
          5. Within group occupied_a (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.tm.site_a.rate
            2. _con_substance.amount/_vol
          6. Within group occupied_b (prefix _ indicates shortened variable name)
            1. _substance.amount an.cell.ca.tm.site_b.rate
            2. _con_substance.amount/_vol
      9. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( an.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( an.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( an.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( an.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      10. Within group kir (prefix _ indicates shortened variable name)
        1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
        2. _i_open_g_max( an.cell.l2.v _v_eq)
        3. _i_ion_open_ratio_i_open
        4. _g_open_ratio_g_max
        5. _voltage_inact.nact.fsteady( an.cell.l2.v , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
        6. _voltage_act.nact.fsteady( an.cell.l2.v , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
      11. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( an.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( an.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( an.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( an.cell.l2.v )
        13. _inact.tauinact.ftau( an.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      12. Within group na (prefix _ indicates shortened variable name)
        1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _open_ratio_act.n 3.0 _inact_total
        4. _i_ion_open_ratio_i_open
        5. _act.alphafalpha.fa( an.cell.l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
        6. _act.betakr.ftau.falpha( an.cell.l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
        7. _inact_fast.steadyinact_fast.fsteady( an.cell.l2.v )
        8. _inact_fast.tauact.fsteady( an.cell.l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
        9. _inact_slow.steadyinact_fast.fsteady( an.cell.l2.v )
        10. _inact_slow.tauact.fsteady( an.cell.l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
        11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
        12. Within group act (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
      13. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci an.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co an.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n an.cell.l2.v _FoRT
      14. Within group to (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        4. _open_ratio_act.n_inact_total
        5. _i_open_g_max( an.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
        9. _act.tauto.act.ftau( an.cell.l2.v , 0.000596 )
        10. _inact_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        11. _inact_slow.tauinact_fast.ftau( an.cell.l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
        12. _inact_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        13. _inact_fast.tauact.fsteady( an.cell.l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
        14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n
  7. Within group n (prefix _ indicates shortened variable name)
    1. Within group cell (prefix _ indicates shortened variable name)
      1. _ca.ca_sub.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _st.i_ion+_hcn.i_ion+_l2.i+_nak.i+_naca.i_ion+_kr.i_ion+_cal.i_ion+_bg.i_ion 0.0
      3. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      4. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      5. _l2.v_l2.i/_l2.c
      6. _naca.di_c_ca.sub.substance.amount/_naca.k_c_i_v_sub
      7. _naca.di_cn_naca.di_c_na_in/_naca.k_cn_i
      8. Within group ca (prefix _ indicates shortened variable name)
        1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
        2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
        3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
        4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
        5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
        6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
        7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
        8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
        9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
        10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
        11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
        12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
        13. Within group cm_cyto (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. n.cell.ca.cm_cyto.free.substance.amount n.cell.ca.cm_cyto.site.rate
            2. n.cell.ca.cm_cyto.site.rate _k n.cell.ca.cyto.substance.amount n.cell.ca.cm_cyto.free.substance.amount _kb n.cell.ca.cm_cyto.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.cm_cyto.site.rate
            2. _con_substance.amount/_vol
        14. Within group cm_sl (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. n.cell.ca.cm_sl.free.substance.amount n.cell.ca.cm_sl.site.rate
            2. n.cell.ca.cm_sl.site.rate _k n.cell.ca.sub.substance.amount n.cell.ca.cm_sl.free.substance.amount _kb n.cell.ca.cm_sl.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.cm_sl.site.rate
            2. _con_substance.amount/_vol
        15. Within group cm_sub (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. n.cell.ca.cm_sub.free.substance.amount n.cell.ca.cm_sub.site.rate
            2. n.cell.ca.cm_sub.site.rate _k n.cell.ca.sub.substance.amount n.cell.ca.cm_sub.free.substance.amount _kb n.cell.ca.cm_sub.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.cm_sub.site.rate
            2. _con_substance.amount/_vol
        16. Within group cq (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. n.cell.ca.cq.free.substance.amount n.cell.ca.cq.site.rate
            2. n.cell.ca.cq.site.rate _k n.cell.ca.jsr.substance.amount n.cell.ca.cq.free.substance.amount _kb n.cell.ca.cq.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.cq.site.rate
            2. _con_substance.amount/_vol
        17. Within group cyto (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        18. Within group jsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        19. Within group jsr_sub (prefix _ indicates shortened variable name)
          1. _coeff_phillLangmuir( n.cell.ca.sub.substance.amount /_vol_dst,_ka,_n)
          2. _rate_coeff( n.cell.ca.jsr.substance.amount /_vol_src n.cell.ca.sub.substance.amount /_vol_dst)_vol_trans
        20. Within group nsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        21. Within group sub (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        22. Within group tc (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. n.cell.ca.tc.free.substance.amount n.cell.ca.tc.site.rate
            2. n.cell.ca.tc.site.rate _k n.cell.ca.cyto.substance.amount n.cell.ca.tc.free.substance.amount _kb n.cell.ca.tc.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.tc.site.rate
            2. _con_substance.amount/_vol
        23. Within group tm (prefix _ indicates shortened variable name)
          1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
          2. _site_a.rate_assoc_a.k n.cell.ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
          3. _site_b.rate_assoc_b.k n.cell.ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
          4. Within group free (prefix _ indicates shortened variable name)
            1. _substance.amount_substance.rate
            2. _con_substance.amount/_vol
          5. Within group occupied_a (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.tm.site_a.rate
            2. _con_substance.amount/_vol
          6. Within group occupied_b (prefix _ indicates shortened variable name)
            1. _substance.amount n.cell.ca.tm.site_b.rate
            2. _con_substance.amount/_vol
      9. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( n.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( n.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( n.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( n.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      10. Within group hcn (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _i_open_g_max( n.cell.l2.v _v_eq)
        3. _i_ion_act.n_i_open
        4. _g_act.n_g_max
        5. _act.steadyact.fsteady( n.cell.l2.v _act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
        6. _act.tauinact_fast.ftau( n.cell.l2.v , 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
      11. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( n.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( n.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( n.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( n.cell.l2.v )
        13. _inact.tauinact.ftau( n.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      12. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci n.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co n.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n n.cell.l2.v _FoRT
      13. Within group st (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _open_ratio_act.n_inact.n
        3. _i_open_g_max( n.cell.l2.v _v_eq)
        4. _i_ion_open_ratio_i_open
        5. _g_open_ratio_g_max
        6. _act.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
        7. _act.taust.act.ftau( n.cell.l2.v , 0.0 )
        8. _inact.alphainact.falpha( n.cell.l2.v , 0.0 )
        9. _inact.betainact.fbeta( n.cell.l2.v )
        10. Within group inact (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
  8. Within group nh (prefix _ indicates shortened variable name)
    1. _cell.to.i_ion+_cell.na.i_ion+_cell.kir.i_ion+_cell.l2.i+_cell.nak.i+_cell.naca.i_ion+_cell.kr.i_ion+_cell.cal.i_ion+_cell.bg.i_ion+_cc.i_stim 0.0
    2. _cc.n.i+((((((((_cell.na.i_ion_cell.to.i_ion)_cell.kir.i_ion)_cell.l2.i)_cell.nak.i)_cell.naca.i_ion)_cell.kr.i_ion)_cell.cal.i_ion)_cell.bg.i_ion) 0.0
    3. Within group cc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_stim_n.i) 0.0
      2. _i_stim(_pulse_signal)( -9.5e-10 _i_hold)+_i_hold
      3. _pulse_start( 3 ,_d_hold,_d_hold+_d_pulse)
      4. _pulse_end( 4 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    4. Within group cell (prefix _ indicates shortened variable name)
      1. _ca.ca_sub.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      3. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      4. _l2.v_l2.i/_l2.c
      5. _na.i_openghkFlux(_l2.v,_temp,_na_in,_na.ion_ex,_na.ion_p,_na.ion_z)
      6. _naca.di_c_ca.sub.substance.amount/_naca.k_c_i_v_sub
      7. _naca.di_cn_naca.di_c_na_in/_naca.k_cn_i
      8. Within group ca (prefix _ indicates shortened variable name)
        1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
        2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
        3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
        4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
        5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
        6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
        7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
        8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
        9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
        10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
        11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
        12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
        13. Within group cm_cyto (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. nh.cell.ca.cm_cyto.free.substance.amount nh.cell.ca.cm_cyto.site.rate
            2. nh.cell.ca.cm_cyto.site.rate _k nh.cell.ca.cyto.substance.amount nh.cell.ca.cm_cyto.free.substance.amount _kb nh.cell.ca.cm_cyto.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.cm_cyto.site.rate
            2. _con_substance.amount/_vol
        14. Within group cm_sl (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. nh.cell.ca.cm_sl.free.substance.amount nh.cell.ca.cm_sl.site.rate
            2. nh.cell.ca.cm_sl.site.rate _k nh.cell.ca.sub.substance.amount nh.cell.ca.cm_sl.free.substance.amount _kb nh.cell.ca.cm_sl.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.cm_sl.site.rate
            2. _con_substance.amount/_vol
        15. Within group cm_sub (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. nh.cell.ca.cm_sub.free.substance.amount nh.cell.ca.cm_sub.site.rate
            2. nh.cell.ca.cm_sub.site.rate _k nh.cell.ca.sub.substance.amount nh.cell.ca.cm_sub.free.substance.amount _kb nh.cell.ca.cm_sub.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.cm_sub.site.rate
            2. _con_substance.amount/_vol
        16. Within group cq (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. nh.cell.ca.cq.free.substance.amount nh.cell.ca.cq.site.rate
            2. nh.cell.ca.cq.site.rate _k nh.cell.ca.jsr.substance.amount nh.cell.ca.cq.free.substance.amount _kb nh.cell.ca.cq.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.cq.site.rate
            2. _con_substance.amount/_vol
        17. Within group cyto (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        18. Within group jsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        19. Within group jsr_sub (prefix _ indicates shortened variable name)
          1. _coeff_phillLangmuir( nh.cell.ca.sub.substance.amount /_vol_dst,_ka,_n)
          2. _rate_coeff( nh.cell.ca.jsr.substance.amount /_vol_src nh.cell.ca.sub.substance.amount /_vol_dst)_vol_trans
        20. Within group nsr (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        21. Within group sub (prefix _ indicates shortened variable name)
          1. _substance.amount_substance.rate
          2. _con_substance.amount/_vol
        22. Within group tc (prefix _ indicates shortened variable name)
          1. Within group assoc (prefix _ indicates shortened variable name)
            1. nh.cell.ca.tc.free.substance.amount nh.cell.ca.tc.site.rate
            2. nh.cell.ca.tc.site.rate _k nh.cell.ca.cyto.substance.amount nh.cell.ca.tc.free.substance.amount _kb nh.cell.ca.tc.occupied.substance.amount
          2. Within group occupied (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.tc.site.rate
            2. _con_substance.amount/_vol
        23. Within group tm (prefix _ indicates shortened variable name)
          1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
          2. _site_a.rate_assoc_a.k nh.cell.ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
          3. _site_b.rate_assoc_b.k nh.cell.ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
          4. Within group free (prefix _ indicates shortened variable name)
            1. _substance.amount_substance.rate
            2. _con_substance.amount/_vol
          5. Within group occupied_a (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.tm.site_a.rate
            2. _con_substance.amount/_vol
          6. Within group occupied_b (prefix _ indicates shortened variable name)
            1. _substance.amount nh.cell.ca.tm.site_b.rate
            2. _con_substance.amount/_vol
      9. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( nh.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( nh.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( nh.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      10. Within group kir (prefix _ indicates shortened variable name)
        1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
        2. _i_open_g_max( nh.cell.l2.v _v_eq)
        3. _i_ion_open_ratio_i_open
        4. _g_open_ratio_g_max
        5. _voltage_inact.nact.fsteady( nh.cell.l2.v , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
        6. _voltage_act.nact.fsteady( nh.cell.l2.v , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
      11. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( nh.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( nh.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( nh.cell.l2.v )
        13. _inact.tauinact.ftau( nh.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      12. Within group na (prefix _ indicates shortened variable name)
        1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _open_ratio_act.n 3.0 _inact_total
        4. _i_ion_open_ratio_i_open
        5. _act.alphafalpha.fa( nh.cell.l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
        6. _act.betakr.ftau.falpha( nh.cell.l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
        7. _inact_fast.steadyinact_fast.fsteady( nh.cell.l2.v )
        8. _inact_fast.tauact.fsteady( nh.cell.l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
        9. _inact_slow.steadyinact_fast.fsteady( nh.cell.l2.v )
        10. _inact_slow.tauact.fsteady( nh.cell.l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
        11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
        12. Within group act (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
      13. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci nh.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co nh.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n nh.cell.l2.v _FoRT
      14. Within group to (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        4. _open_ratio_act.n_inact_total
        5. _i_open_g_max( nh.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
        9. _act.tauto.act.ftau( nh.cell.l2.v , 0.000596 )
        10. _inact_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        11. _inact_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
        12. _inact_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        13. _inact_fast.tauact.fsteady( nh.cell.l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
        14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function st.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (st.ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end st.act.ftau;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := falpha.fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + falpha.fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fbeta.fa(x, 0.0) + act.fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + falpha.fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function fbeta.fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fbeta.fa;
function st.ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end st.ftau.falpha;
function falpha.fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha.fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + kr.ftau.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + kr.ftau.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
an.cc.pulse_signal0 during holding period, 1 during pulse0
an.cc.pulse_endsignals end of pulse
an.cc.pulse_startsignals start of pulse
an.cc.i_stim"A"input current (needs to be defined externally)
an.cc.g.p.i"A"Current flowing into the pin
an.cc.n.i"A"Current flowing into the pin
an.cell.ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_sl.occupied.substance.amount"mol"amount of substance
an.cell.ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_sl.free.substance.amount"mol"amount of substance
an.cell.ca.cm_sl.site.rate"mol/s"molar flow rate of substance
an.cell.ca.cq.occupied.con"mol/m3"concentration of substance in compartment
an.cell.ca.cq.occupied.substance.amount"mol"amount of substance
an.cell.ca.cq.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.cq.free.substance.amount"mol"amount of substance
an.cell.ca.cq.site.rate"mol/s"molar flow rate of substance
an.cell.ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_sub.occupied.substance.amount"mol"amount of substance
an.cell.ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_sub.free.substance.amount"mol"amount of substance
an.cell.ca.cm_sub.site.rate"mol/s"molar flow rate of substance
an.cell.ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_cyto.occupied.substance.amount"mol"amount of substance
an.cell.ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.cm_cyto.free.substance.amount"mol"amount of substance
an.cell.ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
an.cell.ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
an.cell.ca.tm.occupied_b.substance.amount"mol"amount of substance
an.cell.ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
an.cell.ca.tm.occupied_a.substance.amount"mol"amount of substance
an.cell.ca.tm.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.tm.free.substance.rate"mol/s"molar flow rate of substance
an.cell.ca.tm.free.substance.amount"mol"amount of substance
an.cell.ca.tm.site_b.rate"mol/s"molar flow rate of substance
an.cell.ca.tm.site_a.rate"mol/s"molar flow rate of substance
an.cell.ca.tc.occupied.con"mol/m3"concentration of substance in compartment
an.cell.ca.tc.occupied.substance.amount"mol"amount of substance
an.cell.ca.tc.free.con"mol/m3"concentration of substance in compartment
an.cell.ca.tc.free.substance.amount"mol"amount of substance
an.cell.ca.tc.site.rate"mol/s"molar flow rate of substance
an.cell.ca.jsr_sub.coeff"1/s"coefficient of transport
an.cell.ca.jsr_sub.rate"mol/s"rate of change in substance amount
an.cell.ca.nsr_jsr.rate"mol/s"rate of change in substance amount
an.cell.ca.cyto_nsr.rate"mol/s"rate of change in substance amount
an.cell.ca.sub_cyto.rate"mol/s"rate of change in substance amount
an.cell.ca.nsr.con"mol/m3"concentration of substance in compartment
an.cell.ca.nsr.substance.rate"mol/s"molar flow rate of substance
an.cell.ca.nsr.substance.amount"mol"amount of substance
an.cell.ca.jsr.con"mol/m3"concentration of substance in compartment
an.cell.ca.jsr.substance.rate"mol/s"molar flow rate of substance
an.cell.ca.jsr.substance.amount"mol"amount of substance
an.cell.ca.cyto.con"mol/m3"concentration of substance in compartment
an.cell.ca.cyto.substance.rate"mol/s"molar flow rate of substance
an.cell.ca.cyto.substance.amount"mol"amount of substance
an.cell.ca.sub.con"mol/m3"concentration of substance in compartment
an.cell.ca.sub.substance.rate"mol/s"molar flow rate of substance
an.cell.ca.sub.substance.amount"mol"amount of substance
an.cell.ca.ca_sub.rate"mol/s"molar flow rate of substance
an.cell.to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
an.cell.to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.to.inact_fast.nratio of molecules in open conformation0.8734
an.cell.to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.to.inact_slow.nratio of molecules in open conformation0.1503
an.cell.to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.act.steadyvalue that n would reach if v_gate was held constant
an.cell.to.act.nratio of molecules in open conformation0.008857
an.cell.to.g"S"ion conductance
an.cell.to.i_open"A"i if open_ratio = 1
an.cell.to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.to.i_ion"A"current used for ion flux
an.cell.na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
an.cell.na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.na.inact_slow.nratio of molecules in open conformation0.6162
an.cell.na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.na.inact_fast.nratio of molecules in open conformation0.717
an.cell.na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.act.steady"1"steady state achieved if current voltage is held constant
an.cell.na.act.beta"1"rate of transfer from open to closed conformation
an.cell.na.act.alpha"1"rate of transfer from closed to open conformation
an.cell.na.act.nratio of molecules in open conformation0.01227
an.cell.na.i_openi if open_ratio = 1
an.cell.na.open_ratioratio between 0 (fully closed) and 1 (fully open)
an.cell.na.i_ion"A"current used for ion flux
an.cell.kir.voltage_act.nratio of molecules in open conformation
an.cell.kir.voltage_inact.nratio of molecules in open conformation
an.cell.kir.g"S"ion conductance
an.cell.kir.i_open"A"i if open_ratio = 1
an.cell.kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.kir.i_ion"A"current used for ion flux
an.cell.l2.i"A"Current flowing from pin p to pin n
an.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
an.cell.nak.i"A"Current flowing from pin p to pin n
an.cell.naca.e4"1"ratio of exchanger molecules in state e4
an.cell.naca.e3"1"ratio of exchanger molecules in state e3
an.cell.naca.e2"1"ratio of exchanger molecules in state e2
an.cell.naca.e1"1"ratio of exchanger molecules in state e1
an.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
an.cell.naca.x4"1"relative frequancy of E4 states
an.cell.naca.x3"1"relative frequency of E3 states
an.cell.naca.x2"1"relative frequency of E2 states
an.cell.naca.x1"1"relative frequency of E1 states
an.cell.naca.k_14"1"rate constant for transition from E1 to E4
an.cell.naca.k_41"1"rate constant for transition from E4 to E1
an.cell.naca.k_32"1"rate constant for transition from E3 to E2
an.cell.naca.k_23"1"rate constant for transition from E2 to E3
an.cell.naca.k_21"1"rate constant for transition from E2 to E1
an.cell.naca.k_12"1"rate constant for transition from E1 to E2
an.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
an.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
an.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
an.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
an.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
an.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
an.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
an.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
an.cell.naca.i_ion"A"current used for TransmembraneCaFlow
an.cell.naca.trans.rate"mol/s"rate of change in substance amount
an.cell.kr.act_totaltotal activation due to slow and fast activation terms
an.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.inact.nratio of molecules in open conformation0.9866
an.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.act_slow.nratio of molecules in open conformation0.0484
an.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.act_fast.nratio of molecules in open conformation0.07106999999999999
an.cell.kr.g"S"ion conductance
an.cell.kr.i_open"A"i if open_ratio = 1
an.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.kr.i_ion"A"current used for ion flux
an.cell.cal.inact_total
an.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.inact_fast.nratio of molecules in open conformation0.9985000000000001
an.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.inact_slow.nratio of molecules in open conformation0.9875
an.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.act.nratio of molecules in open conformation4.069e-05
an.cell.cal.trans.rate"mol/s"rate of change in substance amount
an.cell.cal.g"S"ion conductance
an.cell.cal.i_open"A"i if open_ratio = 1
an.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.cal.i_ion"A"current used for ion flux
an.cell.bg.i_ion"A"current used for ion flux
$whenCondition4an.cc.pulse_start
$whenCondition3an.cc.pulse_end
nh.cc.pulse_signal0 during holding period, 1 during pulse0
nh.cc.pulse_endsignals end of pulse
nh.cc.pulse_startsignals start of pulse
nh.cc.i_stim"A"input current (needs to be defined externally)
nh.cc.g.p.i"A"Current flowing into the pin
nh.cc.n.i"A"Current flowing into the pin
nh.cell.ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_sl.occupied.substance.amount"mol"amount of substance
nh.cell.ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_sl.free.substance.amount"mol"amount of substance
nh.cell.ca.cm_sl.site.rate"mol/s"molar flow rate of substance
nh.cell.ca.cq.occupied.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cq.occupied.substance.amount"mol"amount of substance
nh.cell.ca.cq.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cq.free.substance.amount"mol"amount of substance
nh.cell.ca.cq.site.rate"mol/s"molar flow rate of substance
nh.cell.ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_sub.occupied.substance.amount"mol"amount of substance
nh.cell.ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_sub.free.substance.amount"mol"amount of substance
nh.cell.ca.cm_sub.site.rate"mol/s"molar flow rate of substance
nh.cell.ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_cyto.occupied.substance.amount"mol"amount of substance
nh.cell.ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cm_cyto.free.substance.amount"mol"amount of substance
nh.cell.ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
nh.cell.ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
nh.cell.ca.tm.occupied_b.substance.amount"mol"amount of substance
nh.cell.ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
nh.cell.ca.tm.occupied_a.substance.amount"mol"amount of substance
nh.cell.ca.tm.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.tm.free.substance.rate"mol/s"molar flow rate of substance
nh.cell.ca.tm.free.substance.amount"mol"amount of substance
nh.cell.ca.tm.site_b.rate"mol/s"molar flow rate of substance
nh.cell.ca.tm.site_a.rate"mol/s"molar flow rate of substance
nh.cell.ca.tc.occupied.con"mol/m3"concentration of substance in compartment
nh.cell.ca.tc.occupied.substance.amount"mol"amount of substance
nh.cell.ca.tc.free.con"mol/m3"concentration of substance in compartment
nh.cell.ca.tc.free.substance.amount"mol"amount of substance
nh.cell.ca.tc.site.rate"mol/s"molar flow rate of substance
nh.cell.ca.jsr_sub.coeff"1/s"coefficient of transport
nh.cell.ca.jsr_sub.rate"mol/s"rate of change in substance amount
nh.cell.ca.nsr_jsr.rate"mol/s"rate of change in substance amount
nh.cell.ca.cyto_nsr.rate"mol/s"rate of change in substance amount
nh.cell.ca.sub_cyto.rate"mol/s"rate of change in substance amount
nh.cell.ca.nsr.con"mol/m3"concentration of substance in compartment
nh.cell.ca.nsr.substance.rate"mol/s"molar flow rate of substance
nh.cell.ca.nsr.substance.amount"mol"amount of substance
nh.cell.ca.jsr.con"mol/m3"concentration of substance in compartment
nh.cell.ca.jsr.substance.rate"mol/s"molar flow rate of substance
nh.cell.ca.jsr.substance.amount"mol"amount of substance
nh.cell.ca.cyto.con"mol/m3"concentration of substance in compartment
nh.cell.ca.cyto.substance.rate"mol/s"molar flow rate of substance
nh.cell.ca.cyto.substance.amount"mol"amount of substance
nh.cell.ca.sub.con"mol/m3"concentration of substance in compartment
nh.cell.ca.sub.substance.rate"mol/s"molar flow rate of substance
nh.cell.ca.sub.substance.amount"mol"amount of substance
nh.cell.ca.ca_sub.rate"mol/s"molar flow rate of substance
nh.cell.to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
nh.cell.to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.inact_fast.nratio of molecules in open conformation0.864
nh.cell.to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.inact_slow.nratio of molecules in open conformation0.1297
nh.cell.to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.act.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.act.nratio of molecules in open conformation0.009580999999999999
nh.cell.to.g"S"ion conductance
nh.cell.to.i_open"A"i if open_ratio = 1
nh.cell.to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.to.i_ion"A"current used for ion flux
nh.cell.na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
nh.cell.na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.na.inact_slow.nratio of molecules in open conformation0.5552
nh.cell.na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.na.inact_fast.nratio of molecules in open conformation0.6438
nh.cell.na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.act.steady"1"steady state achieved if current voltage is held constant
nh.cell.na.act.beta"1"rate of transfer from open to closed conformation
nh.cell.na.act.alpha"1"rate of transfer from closed to open conformation
nh.cell.na.act.nratio of molecules in open conformation0.01529
nh.cell.na.i_openi if open_ratio = 1
nh.cell.na.open_ratioratio between 0 (fully closed) and 1 (fully open)
nh.cell.na.i_ion"A"current used for ion flux
nh.cell.kir.voltage_act.nratio of molecules in open conformation
nh.cell.kir.voltage_inact.nratio of molecules in open conformation
nh.cell.kir.g"S"ion conductance
nh.cell.kir.i_open"A"i if open_ratio = 1
nh.cell.kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.kir.i_ion"A"current used for ion flux
nh.cell.l2.i"A"Current flowing from pin p to pin n
nh.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nh.cell.nak.i"A"Current flowing from pin p to pin n
nh.cell.naca.e4"1"ratio of exchanger molecules in state e4
nh.cell.naca.e3"1"ratio of exchanger molecules in state e3
nh.cell.naca.e2"1"ratio of exchanger molecules in state e2
nh.cell.naca.e1"1"ratio of exchanger molecules in state e1
nh.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
nh.cell.naca.x4"1"relative frequancy of E4 states
nh.cell.naca.x3"1"relative frequency of E3 states
nh.cell.naca.x2"1"relative frequency of E2 states
nh.cell.naca.x1"1"relative frequency of E1 states
nh.cell.naca.k_14"1"rate constant for transition from E1 to E4
nh.cell.naca.k_41"1"rate constant for transition from E4 to E1
nh.cell.naca.k_32"1"rate constant for transition from E3 to E2
nh.cell.naca.k_23"1"rate constant for transition from E2 to E3
nh.cell.naca.k_21"1"rate constant for transition from E2 to E1
nh.cell.naca.k_12"1"rate constant for transition from E1 to E2
nh.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
nh.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
nh.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
nh.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
nh.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
nh.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
nh.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
nh.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
nh.cell.naca.i_ion"A"current used for TransmembraneCaFlow
nh.cell.naca.trans.rate"mol/s"rate of change in substance amount
nh.cell.kr.act_totaltotal activation due to slow and fast activation terms
nh.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.inact.nratio of molecules in open conformation0.9853
nh.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.act_slow.nratio of molecules in open conformation0.07024
nh.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.act_fast.nratio of molecules in open conformation0.09949
nh.cell.kr.g"S"ion conductance
nh.cell.kr.i_open"A"i if open_ratio = 1
nh.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.kr.i_ion"A"current used for ion flux
nh.cell.cal.inact_total
nh.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.inact_fast.nratio of molecules in open conformation0.9981
nh.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.inact_slow.nratio of molecules in open conformation0.9831
nh.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.act.nratio of molecules in open conformation5.025e-05
nh.cell.cal.trans.rate"mol/s"rate of change in substance amount
nh.cell.cal.g"S"ion conductance
nh.cell.cal.i_open"A"i if open_ratio = 1
nh.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.cal.i_ion"A"current used for ion flux
nh.cell.bg.i_ion"A"current used for ion flux
$whenCondition2nh.cc.pulse_start
$whenCondition1nh.cc.pulse_end
n.g.p.i"A"Current flowing into the pin
n.cell.ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_sl.occupied.substance.amount"mol"amount of substance
n.cell.ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_sl.free.substance.amount"mol"amount of substance
n.cell.ca.cm_sl.site.rate"mol/s"molar flow rate of substance
n.cell.ca.cq.occupied.con"mol/m3"concentration of substance in compartment
n.cell.ca.cq.occupied.substance.amount"mol"amount of substance
n.cell.ca.cq.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.cq.free.substance.amount"mol"amount of substance
n.cell.ca.cq.site.rate"mol/s"molar flow rate of substance
n.cell.ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_sub.occupied.substance.amount"mol"amount of substance
n.cell.ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_sub.free.substance.amount"mol"amount of substance
n.cell.ca.cm_sub.site.rate"mol/s"molar flow rate of substance
n.cell.ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_cyto.occupied.substance.amount"mol"amount of substance
n.cell.ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.cm_cyto.free.substance.amount"mol"amount of substance
n.cell.ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
n.cell.ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
n.cell.ca.tm.occupied_b.substance.amount"mol"amount of substance
n.cell.ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
n.cell.ca.tm.occupied_a.substance.amount"mol"amount of substance
n.cell.ca.tm.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.tm.free.substance.rate"mol/s"molar flow rate of substance
n.cell.ca.tm.free.substance.amount"mol"amount of substance
n.cell.ca.tm.site_b.rate"mol/s"molar flow rate of substance
n.cell.ca.tm.site_a.rate"mol/s"molar flow rate of substance
n.cell.ca.tc.occupied.con"mol/m3"concentration of substance in compartment
n.cell.ca.tc.occupied.substance.amount"mol"amount of substance
n.cell.ca.tc.free.con"mol/m3"concentration of substance in compartment
n.cell.ca.tc.free.substance.amount"mol"amount of substance
n.cell.ca.tc.site.rate"mol/s"molar flow rate of substance
n.cell.ca.jsr_sub.coeff"1/s"coefficient of transport
n.cell.ca.jsr_sub.rate"mol/s"rate of change in substance amount
n.cell.ca.nsr_jsr.rate"mol/s"rate of change in substance amount
n.cell.ca.cyto_nsr.rate"mol/s"rate of change in substance amount
n.cell.ca.sub_cyto.rate"mol/s"rate of change in substance amount
n.cell.ca.nsr.con"mol/m3"concentration of substance in compartment
n.cell.ca.nsr.substance.rate"mol/s"molar flow rate of substance
n.cell.ca.nsr.substance.amount"mol"amount of substance
n.cell.ca.jsr.con"mol/m3"concentration of substance in compartment
n.cell.ca.jsr.substance.rate"mol/s"molar flow rate of substance
n.cell.ca.jsr.substance.amount"mol"amount of substance
n.cell.ca.cyto.con"mol/m3"concentration of substance in compartment
n.cell.ca.cyto.substance.rate"mol/s"molar flow rate of substance
n.cell.ca.cyto.substance.amount"mol"amount of substance
n.cell.ca.sub.con"mol/m3"concentration of substance in compartment
n.cell.ca.sub.substance.rate"mol/s"molar flow rate of substance
n.cell.ca.sub.substance.amount"mol"amount of substance
n.cell.ca.ca_sub.rate"mol/s"molar flow rate of substance
n.cell.st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.st.inact.steady"1"steady state achieved if current voltage is held constant
n.cell.st.inact.beta"1"rate of transfer from open to closed conformation
n.cell.st.inact.alpha"1"rate of transfer from closed to open conformation
n.cell.st.inact.nratio of molecules in open conformation0.4886
n.cell.st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.st.act.steadyvalue that n would reach if v_gate was held constant
n.cell.st.act.nratio of molecules in open conformation0.1933
n.cell.st.g"S"ion conductance
n.cell.st.i_open"A"i if open_ratio = 1
n.cell.st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.st.i_ion"A"current used for ion flux
n.cell.hcn.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.hcn.act.steadyvalue that n would reach if v_gate was held constant
n.cell.hcn.act.n"1"ratio of molecules in open conformation0.03825
n.cell.hcn.g"S"ion conductance
n.cell.hcn.i_open"A"i if open_ratio = 1
n.cell.hcn.i_ion"A"current used for ion flux
n.cell.l2.i"A"Current flowing from pin p to pin n
n.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
n.cell.nak.i"A"Current flowing from pin p to pin n
n.cell.naca.e4"1"ratio of exchanger molecules in state e4
n.cell.naca.e3"1"ratio of exchanger molecules in state e3
n.cell.naca.e2"1"ratio of exchanger molecules in state e2
n.cell.naca.e1"1"ratio of exchanger molecules in state e1
n.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
n.cell.naca.x4"1"relative frequancy of E4 states
n.cell.naca.x3"1"relative frequency of E3 states
n.cell.naca.x2"1"relative frequency of E2 states
n.cell.naca.x1"1"relative frequency of E1 states
n.cell.naca.k_14"1"rate constant for transition from E1 to E4
n.cell.naca.k_41"1"rate constant for transition from E4 to E1
n.cell.naca.k_32"1"rate constant for transition from E3 to E2
n.cell.naca.k_23"1"rate constant for transition from E2 to E3
n.cell.naca.k_21"1"rate constant for transition from E2 to E1
n.cell.naca.k_12"1"rate constant for transition from E1 to E2
n.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
n.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
n.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
n.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
n.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
n.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
n.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
n.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
n.cell.naca.i_ion"A"current used for TransmembraneCaFlow
n.cell.naca.trans.rate"mol/s"rate of change in substance amount
n.cell.kr.act_totaltotal activation due to slow and fast activation terms
n.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.inact.nratio of molecules in open conformation0.9775
n.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.act_slow.nratio of molecules in open conformation0.1287
n.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.act_fast.nratio of molecules in open conformation0.6067
n.cell.kr.g"S"ion conductance
n.cell.kr.i_open"A"i if open_ratio = 1
n.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.kr.i_ion"A"current used for ion flux
n.cell.cal.inact_total
n.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.inact_fast.nratio of molecules in open conformation0.6861
n.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.inact_slow.nratio of molecules in open conformation0.4441
n.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.act.nratio of molecules in open conformation0.0001533
n.cell.cal.trans.rate"mol/s"rate of change in substance amount
n.cell.cal.g"S"ion conductance
n.cell.cal.i_open"A"i if open_ratio = 1
n.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.cal.i_ion"A"current used for ion flux
n.cell.bg.i_ion"A"current used for ion flux
an.cell.cal.con.substance.amount"mol"amount of substancean.cell.cal.con.c_const * an.cell.cal.con.vol
an.cell.naca.con.substance.amount"mol"amount of substancean.cell.naca.con.c_const * an.cell.naca.con.vol
n.cell.cal.con.substance.amount"mol"amount of substancen.cell.cal.con.c_const * n.cell.cal.con.vol
n.cell.naca.con.substance.amount"mol"amount of substancen.cell.naca.con.c_const * n.cell.naca.con.vol
nh.cell.cal.con.substance.amount"mol"amount of substancenh.cell.cal.con.c_const * nh.cell.cal.con.vol
nh.cell.naca.con.substance.amount"mol"amount of substancenh.cell.naca.con.c_const * nh.cell.naca.con.vol
n.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+n.cell.naca.di_2n * n.cell.na_in / n.cell.naca.k_3n_i
n.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+n.cell.naca.do_2n * n.cell.na_ex / n.cell.naca.k_3n_o
n.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+n.cell.naca.do_1n * n.cell.na_ex / n.cell.naca.k_2n_o
n.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+n.cell.naca.di_1n * n.cell.na_in / n.cell.naca.k_2n_i
n.cell.p.i"A"Current flowing into the pin0.0
n.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
n.cell.ca.mg.substance.amount"mol"amount of substancen.cell.ca.mg.c_const * n.cell.ca.mg.vol
n.cell.ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / n.cell.ca.sub_cyto.tau
n.cell.ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / n.cell.ca.nsr_jsr.tau
n.g.p.v"V"Potential at the pin0.0
n.cell.cal.ach_factor1.0
n.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+n.cell.na_in / n.cell.naca.k_1n_i
n.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedn.cell.ca_ex / n.cell.naca.k_c_o
n.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+n.cell.na_ex / n.cell.naca.k_1n_o
n.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.cell.na_ex, n.cell.naca.k_3n_o)
n.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.cell.na_in, n.cell.naca.k_3n_i)
nh.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+nh.cell.naca.di_2n * nh.cell.na_in / nh.cell.naca.k_3n_i
nh.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+nh.cell.naca.do_2n * nh.cell.na_ex / nh.cell.naca.k_3n_o
nh.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+nh.cell.naca.do_1n * nh.cell.na_ex / nh.cell.naca.k_2n_o
nh.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+nh.cell.naca.di_1n * nh.cell.na_in / nh.cell.naca.k_2n_i
nh.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
nh.cell.ca.mg.substance.amount"mol"amount of substancenh.cell.ca.mg.c_const * nh.cell.ca.mg.vol
nh.cell.ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / nh.cell.ca.sub_cyto.tau
nh.cell.ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / nh.cell.ca.nsr_jsr.tau
nh.cc.g.p.v"V"Potential at the pin0.0
nh.cell.cal.ach_factor1.0
nh.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+nh.cell.na_in / nh.cell.naca.k_1n_i
nh.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludednh.cell.ca_ex / nh.cell.naca.k_c_o
nh.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+nh.cell.na_ex / nh.cell.naca.k_1n_o
nh.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(nh.cell.na_ex, nh.cell.naca.k_3n_o)
nh.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(nh.cell.na_in, nh.cell.naca.k_3n_i)
nh.cell.kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(nh.cell.k_ex, 0.59)
nh.cc.i_pulse"A"current during pulse (must be defined externally)-9.5e-10
an.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+an.cell.naca.di_2n * an.cell.na_in / an.cell.naca.k_3n_i
an.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+an.cell.naca.do_2n * an.cell.na_ex / an.cell.naca.k_3n_o
an.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+an.cell.naca.do_1n * an.cell.na_ex / an.cell.naca.k_2n_o
an.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+an.cell.naca.di_1n * an.cell.na_in / an.cell.naca.k_2n_i
an.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
an.cell.ca.mg.substance.amount"mol"amount of substancean.cell.ca.mg.c_const * an.cell.ca.mg.vol
an.cell.ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / an.cell.ca.sub_cyto.tau
an.cell.ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / an.cell.ca.nsr_jsr.tau
an.cc.g.p.v"V"Potential at the pin0.0
an.cell.cal.ach_factor1.0
an.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+an.cell.na_in / an.cell.naca.k_1n_i
an.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedan.cell.ca_ex / an.cell.naca.k_c_o
an.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+an.cell.na_ex / an.cell.naca.k_1n_o
an.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an.cell.na_ex, an.cell.naca.k_3n_o)
an.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an.cell.na_in, an.cell.naca.k_3n_i)
an.cell.kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(an.cell.k_ex, 0.59)
an.cc.i_pulse"A"current during pulse (must be defined externally)-1.2e-09
an.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
an.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
an.cell.na_in"mol/m3"intracellular sodium concentration8.0
an.cell.na_ex"mol/m3"extracellular sodium concentration140.0
an.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, an.cell.na_ex, 1, an.cell.temp)
an.cell.k_in"mol/m3"intracellular potassium concentration140.0
an.cell.k_ex"mol/m3"extracellular potassium concentration5.4
an.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
an.cell.temp"K"cell medium temperature288.15
an.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCells.an.cell.c_to_v(an.cell.l2.c, 2.19911e-15, 7.147123e-15)
an.cell.v_cyto"m3"volume of cytosol0.46 * an.cell.v_cell - an.cell.v_sub
an.cell.v_sub"m3"volume of subspace0.01 * an.cell.v_cell
an.cell.v_jsr"m3"volume of junctional SR0.0012 * an.cell.v_cell
an.cell.v_nsr"m3"volume of network SR0.0116 * an.cell.v_cell
an.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(an.cell.k_in, an.cell.k_ex, 1, an.cell.temp)
an.cell.bg.v_eq"V"equilibrium potential-0.0525
an.cell.bg.g_max"S"maximum conductance1.8e-09
an.cell.bg.current_name"I_b"
an.cell.cal.v_eq"V"equilibrium potential0.0621
an.cell.cal.g_max"S"maximum conductance1.85e-08
an.cell.cal.trans.n"1"stoichiometric ratio of ion transportan.cell.cal.n_ca
an.cell.cal.trans.zvalence of ion2
an.cell.cal.con.c_const"mol/m3"fixed concentrationan.cell.ca_ex
an.cell.cal.con.vol"m3"volume of the compartment1.0
an.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
an.cell.cal.current_name"I_Ca,L"
an.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
an.cell.kr.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.kr.g_max"S"maximum conductance1.5e-09
an.cell.kr.current_name"I_K,r"
an.cell.naca.trans.n"1"stoichiometric ratio of ion transportan.cell.naca.n_ca
an.cell.naca.trans.zvalence of ion2
an.cell.naca.con.c_const"mol/m3"fixed concentrationan.cell.ca_ex
an.cell.naca.con.vol"m3"volume of the compartment1.0
an.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
an.cell.naca.current_name"I_NaCa"
an.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
an.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
an.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
an.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
an.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
an.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
an.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
an.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
an.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
an.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
an.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
an.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
an.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
an.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / an.cell.temp
an.cell.nak.current_name"I_NaK"
an.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.46e-11
an.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
an.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
an.cell.l2.c"F"membrane capacitance4e-11
an.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
an.cell.l2.use_initdetermines whether initial value for v is usedtrue
an.cell.kir.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.kir.g_max"S"maximum conductance1.25e-08
an.cell.kir.current_name"I_K1"
an.cell.kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (an.cell.temp * 8.3144598)
an.cell.kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
an.cell.na.ion_ex"mol/m3"extracellular concentration of ionan.cell.na_ex
an.cell.na.ion_p"m3/(s.m2)"permeability of ionan.cell.na_p
an.cell.na.ion_zvalence of ion1
an.cell.na.current_name"I_Na"
an.cell.to.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.to.g_max"S"maximum conductance2e-08
an.cell.to.current_name"I_to"
an.cell.cell_type"AN"
an.cell.ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
an.cell.ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
an.cell.ca.cm_tot"mol/m3"total concentration of calmodulin0.045
an.cell.ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
an.cell.ca.mg.c_const"mol/m3"fixed concentration2.5
an.cell.ca.mg.vol"m3"volume of the compartmentan.cell.v_cyto
an.cell.ca.sub.vol"m3"volume of the compartmentan.cell.v_sub
an.cell.ca.sub.c_start"mol/m3"initial value of concentration6.397e-05
an.cell.ca.cyto.vol"m3"volume of the compartmentan.cell.v_cyto
an.cell.ca.cyto.c_start"mol/m3"initial value of concentration0.0001206
an.cell.ca.jsr.vol"m3"volume of the compartmentan.cell.v_jsr
an.cell.ca.jsr.c_start"mol/m3"initial value of concentration0.4273
an.cell.ca.nsr.vol"m3"volume of the compartmentan.cell.v_nsr
an.cell.ca.nsr.c_start"mol/m3"initial value of concentration1.068
an.cell.ca.sub_cyto.vol_src"m3"volume of source compartmentan.cell.ca.sub.vol
an.cell.ca.sub_cyto.vol_dst"m3"volume of destination compartmentan.cell.ca.cyto.vol
an.cell.ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(an.cell.ca.sub_cyto.vol_src, an.cell.ca.sub_cyto.vol_dst)
an.cell.ca.sub_cyto.tau"s"time constant of diffusion4e-05
an.cell.ca.cyto_nsr.current_name"SERCA"
an.cell.ca.cyto_nsr.vol_src"m3"volume of source compartmentan.cell.ca.cyto.vol
an.cell.ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * an.cell.v_nsr
an.cell.ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
an.cell.ca.nsr_jsr.vol_src"m3"volume of source compartmentan.cell.ca.nsr.vol
an.cell.ca.nsr_jsr.vol_dst"m3"volume of destination compartmentan.cell.ca.jsr.vol
an.cell.ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(an.cell.ca.nsr_jsr.vol_src, an.cell.ca.nsr_jsr.vol_dst)
an.cell.ca.nsr_jsr.tau"s"time constant of diffusion0.06
an.cell.ca.jsr_sub.vol_src"m3"volume of source compartmentan.cell.ca.jsr.vol
an.cell.ca.jsr_sub.vol_dst"m3"volume of destination compartmentan.cell.ca.sub.vol
an.cell.ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(an.cell.ca.jsr_sub.vol_src, an.cell.ca.jsr_sub.vol_dst)
an.cell.ca.jsr_sub.current_name"RyR"
an.cell.ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1805.6
an.cell.ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
an.cell.ca.jsr_sub.n"1"Hill coefficient2.0
an.cell.ca.tc.n_tot"mol"total amount of bufferan.cell.ca.tc_tot * an.cell.v_cyto
an.cell.ca.tc.f_start"1"initial value for f0.02359
an.cell.ca.tc.k"mol-1s-1"association constant88800.0 / an.cell.v_cyto
an.cell.ca.tc.kb"s-1"dissociation constant446.0
an.cell.ca.tc.vol"m3"volume of compartment in which buffer resides1.0
an.cell.ca.tc.assoc.k"mol-1s-1"association constantan.cell.ca.tc.k
an.cell.ca.tc.assoc.kb"s-1"dissociation constantan.cell.ca.tc.kb
an.cell.ca.tc.free.vol"m3"volume of the compartmentan.cell.ca.tc.vol
an.cell.ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - an.cell.ca.tc.f_start) * an.cell.ca.tc.n_tot / an.cell.ca.tc.vol
an.cell.ca.tc.occupied.vol"m3"volume of the compartmentan.cell.ca.tc.vol
an.cell.ca.tc.occupied.c_start"mol/m3"initial value of concentrationan.cell.ca.tc.f_start * an.cell.ca.tc.n_tot / an.cell.ca.tc.vol
an.cell.ca.tm.n_tot"mol"total amount of bufferan.cell.ca.tmc_tot * an.cell.v_cyto
an.cell.ca.tm.f_a_start"1"initial value for f0.3667
an.cell.ca.tm.f_b_start"1"initial value for f0.5594
an.cell.ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / an.cell.v_cyto
an.cell.ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / an.cell.v_cyto
an.cell.ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
an.cell.ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
an.cell.ca.tm.vol"m3"volume of compartment in which buffer residesan.cell.v_cyto
an.cell.ca.tm.assoc_a.k"mol-1s-1"association constantan.cell.ca.tm.k_a
an.cell.ca.tm.assoc_a.kb"s-1"dissociation constantan.cell.ca.tm.kb_a
an.cell.ca.tm.assoc_b.k"mol-1s-1"association constantan.cell.ca.tm.k_b
an.cell.ca.tm.assoc_b.kb"s-1"dissociation constantan.cell.ca.tm.kb_b
an.cell.ca.tm.free.vol"m3"volume of the compartmentan.cell.ca.tm.vol
an.cell.ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (an.cell.ca.tm.f_a_start + an.cell.ca.tm.f_b_start)) * an.cell.ca.tm.n_tot / an.cell.ca.tm.vol
an.cell.ca.tm.occupied_a.vol"m3"volume of the compartmentan.cell.ca.tm.vol
an.cell.ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationan.cell.ca.tm.f_a_start * an.cell.ca.tm.n_tot / an.cell.ca.tm.vol
an.cell.ca.tm.occupied_b.vol"m3"volume of the compartmentan.cell.ca.tm.vol
an.cell.ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationan.cell.ca.tm.f_b_start * an.cell.ca.tm.n_tot / an.cell.ca.tm.vol
an.cell.ca.cm_cyto.n_tot"mol"total amount of bufferan.cell.ca.cm_tot * an.cell.v_cyto
an.cell.ca.cm_cyto.f_start"1"initial value for f0.04845
an.cell.ca.cm_cyto.k"mol-1s-1"association constant227700.0 / an.cell.v_cyto
an.cell.ca.cm_cyto.kb"s-1"dissociation constant542.0
an.cell.ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
an.cell.ca.cm_cyto.assoc.k"mol-1s-1"association constantan.cell.ca.cm_cyto.k
an.cell.ca.cm_cyto.assoc.kb"s-1"dissociation constantan.cell.ca.cm_cyto.kb
an.cell.ca.cm_cyto.free.vol"m3"volume of the compartmentan.cell.ca.cm_cyto.vol
an.cell.ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - an.cell.ca.cm_cyto.f_start) * an.cell.ca.cm_cyto.n_tot / an.cell.ca.cm_cyto.vol
an.cell.ca.cm_cyto.occupied.vol"m3"volume of the compartmentan.cell.ca.cm_cyto.vol
an.cell.ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationan.cell.ca.cm_cyto.f_start * an.cell.ca.cm_cyto.n_tot / an.cell.ca.cm_cyto.vol
an.cell.ca.cm_sub.n_tot"mol"total amount of bufferan.cell.ca.cm_tot * an.cell.v_sub
an.cell.ca.cm_sub.f_start"1"initial value for f0.02626
an.cell.ca.cm_sub.k"mol-1s-1"association constantan.cell.ca.cm_cyto.k * an.cell.v_cyto / an.cell.v_sub
an.cell.ca.cm_sub.kb"s-1"dissociation constantan.cell.ca.cm_cyto.kb
an.cell.ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
an.cell.ca.cm_sub.assoc.k"mol-1s-1"association constantan.cell.ca.cm_sub.k
an.cell.ca.cm_sub.assoc.kb"s-1"dissociation constantan.cell.ca.cm_sub.kb
an.cell.ca.cm_sub.free.vol"m3"volume of the compartmentan.cell.ca.cm_sub.vol
an.cell.ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - an.cell.ca.cm_sub.f_start) * an.cell.ca.cm_sub.n_tot / an.cell.ca.cm_sub.vol
an.cell.ca.cm_sub.occupied.vol"m3"volume of the compartmentan.cell.ca.cm_sub.vol
an.cell.ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationan.cell.ca.cm_sub.f_start * an.cell.ca.cm_sub.n_tot / an.cell.ca.cm_sub.vol
an.cell.ca.cq.n_tot"mol"total amount of bufferan.cell.ca.cq_tot * an.cell.v_jsr
an.cell.ca.cq.f_start"1"initial value for f0.3379
an.cell.ca.cq.k"mol-1s-1"association constant534.0 / an.cell.v_jsr
an.cell.ca.cq.kb"s-1"dissociation constant445.0
an.cell.ca.cq.vol"m3"volume of compartment in which buffer resides1.0
an.cell.ca.cq.assoc.k"mol-1s-1"association constantan.cell.ca.cq.k
an.cell.ca.cq.assoc.kb"s-1"dissociation constantan.cell.ca.cq.kb
an.cell.ca.cq.free.vol"m3"volume of the compartmentan.cell.ca.cq.vol
an.cell.ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - an.cell.ca.cq.f_start) * an.cell.ca.cq.n_tot / an.cell.ca.cq.vol
an.cell.ca.cq.occupied.vol"m3"volume of the compartmentan.cell.ca.cq.vol
an.cell.ca.cq.occupied.c_start"mol/m3"initial value of concentrationan.cell.ca.cq.f_start * an.cell.ca.cq.n_tot / an.cell.ca.cq.vol
an.cell.ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
an.cell.ca.cm_sl.n_tot"mol"total amount of bufferan.cell.ca.cm_sl_tot * an.cell.v_sub
an.cell.ca.cm_sl.f_start"1"initial value for f3.936e-05
an.cell.ca.cm_sl.k"mol-1s-1"association constant115.0 / an.cell.v_sub
an.cell.ca.cm_sl.kb"s-1"dissociation constant1000.0
an.cell.ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
an.cell.ca.cm_sl.assoc.k"mol-1s-1"association constantan.cell.ca.cm_sl.k
an.cell.ca.cm_sl.assoc.kb"s-1"dissociation constantan.cell.ca.cm_sl.kb
an.cell.ca.cm_sl.free.vol"m3"volume of the compartmentan.cell.ca.cm_sl.vol
an.cell.ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - an.cell.ca.cm_sl.f_start) * an.cell.ca.cm_sl.n_tot / an.cell.ca.cm_sl.vol
an.cell.ca.cm_sl.occupied.vol"m3"volume of the compartmentan.cell.ca.cm_sl.vol
an.cell.ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationan.cell.ca.cm_sl.f_start * an.cell.ca.cm_sl.n_tot / an.cell.ca.cm_sl.vol
an.cc.d_hold"s"holding period0.3
an.cc.d_pulse"s"pulse period0.001
an.cc.i_hold"A"current during holding period0.0
n.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
n.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
n.cell.na_in"mol/m3"intracellular sodium concentration8.0
n.cell.na_ex"mol/m3"extracellular sodium concentration140.0
n.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, n.cell.na_ex, 1, n.cell.temp)
n.cell.k_in"mol/m3"intracellular potassium concentration140.0
n.cell.k_ex"mol/m3"extracellular potassium concentration5.4
n.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
n.cell.temp"K"cell medium temperature288.15
n.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCells.n.cell.c_to_v(n.cell.l2.c, 2.19911e-15, 7.147123e-15)
n.cell.v_cyto"m3"volume of cytosol0.46 * n.cell.v_cell - n.cell.v_sub
n.cell.v_sub"m3"volume of subspace0.01 * n.cell.v_cell
n.cell.v_jsr"m3"volume of junctional SR0.0012 * n.cell.v_cell
n.cell.v_nsr"m3"volume of network SR0.0116 * n.cell.v_cell
n.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(n.cell.k_in, n.cell.k_ex, 1, n.cell.temp)
n.cell.bg.v_eq"V"equilibrium potential-0.0225
n.cell.bg.g_max"S"maximum conductance1.2e-09
n.cell.bg.current_name"I_b"
n.cell.cal.v_eq"V"equilibrium potential0.0621
n.cell.cal.g_max"S"maximum conductance9e-09
n.cell.cal.trans.n"1"stoichiometric ratio of ion transportn.cell.cal.n_ca
n.cell.cal.trans.zvalence of ion2
n.cell.cal.con.c_const"mol/m3"fixed concentrationn.cell.ca_ex
n.cell.cal.con.vol"m3"volume of the compartment1.0
n.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
n.cell.cal.current_name"I_Ca,L"
n.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
n.cell.kr.v_eq"V"equilibrium potentialn.cell.v_k
n.cell.kr.g_max"S"maximum conductance3.5e-09
n.cell.kr.current_name"I_K,r"
n.cell.naca.trans.n"1"stoichiometric ratio of ion transportn.cell.naca.n_ca
n.cell.naca.trans.zvalence of ion2
n.cell.naca.con.c_const"mol/m3"fixed concentrationn.cell.ca_ex
n.cell.naca.con.vol"m3"volume of the compartment1.0
n.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
n.cell.naca.current_name"I_NaCa"
n.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
n.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
n.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
n.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
n.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
n.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
n.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
n.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
n.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
n.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
n.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
n.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
n.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
n.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / n.cell.temp
n.cell.nak.current_name"I_NaK"
n.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.43e-10
n.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
n.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
n.cell.l2.c"F"membrane capacitance2.9e-11
n.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
n.cell.l2.use_initdetermines whether initial value for v is usedtrue
n.cell.hcn.v_eq"V"equilibrium potential-0.03
n.cell.hcn.g_max"S"maximum conductance1e-09
n.cell.hcn.current_name"I_f"
n.cell.hcn.act_shift"V"0.0
n.cell.hcn.act.shift"V"n.cell.hcn.act_shift
n.cell.st.v_eq"V"equilibrium potential0.0374
n.cell.st.g_max"S"maximum conductance1e-10
n.cell.st.current_name"I_st"
n.cell.cell_type"N"
n.cell.ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
n.cell.ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
n.cell.ca.cm_tot"mol/m3"total concentration of calmodulin0.045
n.cell.ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
n.cell.ca.mg.c_const"mol/m3"fixed concentration2.5
n.cell.ca.mg.vol"m3"volume of the compartmentn.cell.v_cyto
n.cell.ca.sub.vol"m3"volume of the compartmentn.cell.v_sub
n.cell.ca.sub.c_start"mol/m3"initial value of concentration0.0002294
n.cell.ca.cyto.vol"m3"volume of the compartmentn.cell.v_cyto
n.cell.ca.cyto.c_start"mol/m3"initial value of concentration0.0003623
n.cell.ca.jsr.vol"m3"volume of the compartmentn.cell.v_jsr
n.cell.ca.jsr.c_start"mol/m3"initial value of concentration0.08227
n.cell.ca.nsr.vol"m3"volume of the compartmentn.cell.v_nsr
n.cell.ca.nsr.c_start"mol/m3"initial value of concentration1.146
n.cell.ca.sub_cyto.vol_src"m3"volume of source compartmentn.cell.ca.sub.vol
n.cell.ca.sub_cyto.vol_dst"m3"volume of destination compartmentn.cell.ca.cyto.vol
n.cell.ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(n.cell.ca.sub_cyto.vol_src, n.cell.ca.sub_cyto.vol_dst)
n.cell.ca.sub_cyto.tau"s"time constant of diffusion4e-05
n.cell.ca.cyto_nsr.current_name"SERCA"
n.cell.ca.cyto_nsr.vol_src"m3"volume of source compartmentn.cell.ca.cyto.vol
n.cell.ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * n.cell.v_nsr
n.cell.ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
n.cell.ca.nsr_jsr.vol_src"m3"volume of source compartmentn.cell.ca.nsr.vol
n.cell.ca.nsr_jsr.vol_dst"m3"volume of destination compartmentn.cell.ca.jsr.vol
n.cell.ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(n.cell.ca.nsr_jsr.vol_src, n.cell.ca.nsr_jsr.vol_dst)
n.cell.ca.nsr_jsr.tau"s"time constant of diffusion0.06
n.cell.ca.jsr_sub.vol_src"m3"volume of source compartmentn.cell.ca.jsr.vol
n.cell.ca.jsr_sub.vol_dst"m3"volume of destination compartmentn.cell.ca.sub.vol
n.cell.ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(n.cell.ca.jsr_sub.vol_src, n.cell.ca.jsr_sub.vol_dst)
n.cell.ca.jsr_sub.current_name"RyR"
n.cell.ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1500.0
n.cell.ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
n.cell.ca.jsr_sub.n"1"Hill coefficient2.0
n.cell.ca.tc.n_tot"mol"total amount of buffern.cell.ca.tc_tot * n.cell.v_cyto
n.cell.ca.tc.f_start"1"initial value for f0.6838
n.cell.ca.tc.k"mol-1s-1"association constant88800.0 / n.cell.v_cyto
n.cell.ca.tc.kb"s-1"dissociation constant446.0
n.cell.ca.tc.vol"m3"volume of compartment in which buffer resides1.0
n.cell.ca.tc.assoc.k"mol-1s-1"association constantn.cell.ca.tc.k
n.cell.ca.tc.assoc.kb"s-1"dissociation constantn.cell.ca.tc.kb
n.cell.ca.tc.free.vol"m3"volume of the compartmentn.cell.ca.tc.vol
n.cell.ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - n.cell.ca.tc.f_start) * n.cell.ca.tc.n_tot / n.cell.ca.tc.vol
n.cell.ca.tc.occupied.vol"m3"volume of the compartmentn.cell.ca.tc.vol
n.cell.ca.tc.occupied.c_start"mol/m3"initial value of concentrationn.cell.ca.tc.f_start * n.cell.ca.tc.n_tot / n.cell.ca.tc.vol
n.cell.ca.tm.n_tot"mol"total amount of buffern.cell.ca.tmc_tot * n.cell.v_cyto
n.cell.ca.tm.f_a_start"1"initial value for f0.6192
n.cell.ca.tm.f_b_start"1"initial value for f0.3363
n.cell.ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / n.cell.v_cyto
n.cell.ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / n.cell.v_cyto
n.cell.ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
n.cell.ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
n.cell.ca.tm.vol"m3"volume of compartment in which buffer residesn.cell.v_cyto
n.cell.ca.tm.assoc_a.k"mol-1s-1"association constantn.cell.ca.tm.k_a
n.cell.ca.tm.assoc_a.kb"s-1"dissociation constantn.cell.ca.tm.kb_a
n.cell.ca.tm.assoc_b.k"mol-1s-1"association constantn.cell.ca.tm.k_b
n.cell.ca.tm.assoc_b.kb"s-1"dissociation constantn.cell.ca.tm.kb_b
n.cell.ca.tm.free.vol"m3"volume of the compartmentn.cell.ca.tm.vol
n.cell.ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (n.cell.ca.tm.f_a_start + n.cell.ca.tm.f_b_start)) * n.cell.ca.tm.n_tot / n.cell.ca.tm.vol
n.cell.ca.tm.occupied_a.vol"m3"volume of the compartmentn.cell.ca.tm.vol
n.cell.ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationn.cell.ca.tm.f_a_start * n.cell.ca.tm.n_tot / n.cell.ca.tm.vol
n.cell.ca.tm.occupied_b.vol"m3"volume of the compartmentn.cell.ca.tm.vol
n.cell.ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationn.cell.ca.tm.f_b_start * n.cell.ca.tm.n_tot / n.cell.ca.tm.vol
n.cell.ca.cm_cyto.n_tot"mol"total amount of buffern.cell.ca.cm_tot * n.cell.v_cyto
n.cell.ca.cm_cyto.f_start"1"initial value for f0.1336
n.cell.ca.cm_cyto.k"mol-1s-1"association constant227700.0 / n.cell.v_cyto
n.cell.ca.cm_cyto.kb"s-1"dissociation constant542.0
n.cell.ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
n.cell.ca.cm_cyto.assoc.k"mol-1s-1"association constantn.cell.ca.cm_cyto.k
n.cell.ca.cm_cyto.assoc.kb"s-1"dissociation constantn.cell.ca.cm_cyto.kb
n.cell.ca.cm_cyto.free.vol"m3"volume of the compartmentn.cell.ca.cm_cyto.vol
n.cell.ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - n.cell.ca.cm_cyto.f_start) * n.cell.ca.cm_cyto.n_tot / n.cell.ca.cm_cyto.vol
n.cell.ca.cm_cyto.occupied.vol"m3"volume of the compartmentn.cell.ca.cm_cyto.vol
n.cell.ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationn.cell.ca.cm_cyto.f_start * n.cell.ca.cm_cyto.n_tot / n.cell.ca.cm_cyto.vol
n.cell.ca.cm_sub.n_tot"mol"total amount of buffern.cell.ca.cm_tot * n.cell.v_sub
n.cell.ca.cm_sub.f_start"1"initial value for f0.08894000000000001
n.cell.ca.cm_sub.k"mol-1s-1"association constantn.cell.ca.cm_cyto.k * n.cell.v_cyto / n.cell.v_sub
n.cell.ca.cm_sub.kb"s-1"dissociation constantn.cell.ca.cm_cyto.kb
n.cell.ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
n.cell.ca.cm_sub.assoc.k"mol-1s-1"association constantn.cell.ca.cm_sub.k
n.cell.ca.cm_sub.assoc.kb"s-1"dissociation constantn.cell.ca.cm_sub.kb
n.cell.ca.cm_sub.free.vol"m3"volume of the compartmentn.cell.ca.cm_sub.vol
n.cell.ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - n.cell.ca.cm_sub.f_start) * n.cell.ca.cm_sub.n_tot / n.cell.ca.cm_sub.vol
n.cell.ca.cm_sub.occupied.vol"m3"volume of the compartmentn.cell.ca.cm_sub.vol
n.cell.ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationn.cell.ca.cm_sub.f_start * n.cell.ca.cm_sub.n_tot / n.cell.ca.cm_sub.vol
n.cell.ca.cq.n_tot"mol"total amount of buffern.cell.ca.cq_tot * n.cell.v_jsr
n.cell.ca.cq.f_start"1"initial value for f0.08735999999999999
n.cell.ca.cq.k"mol-1s-1"association constant534.0 / n.cell.v_jsr
n.cell.ca.cq.kb"s-1"dissociation constant445.0
n.cell.ca.cq.vol"m3"volume of compartment in which buffer resides1.0
n.cell.ca.cq.assoc.k"mol-1s-1"association constantn.cell.ca.cq.k
n.cell.ca.cq.assoc.kb"s-1"dissociation constantn.cell.ca.cq.kb
n.cell.ca.cq.free.vol"m3"volume of the compartmentn.cell.ca.cq.vol
n.cell.ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - n.cell.ca.cq.f_start) * n.cell.ca.cq.n_tot / n.cell.ca.cq.vol
n.cell.ca.cq.occupied.vol"m3"volume of the compartmentn.cell.ca.cq.vol
n.cell.ca.cq.occupied.c_start"mol/m3"initial value of concentrationn.cell.ca.cq.f_start * n.cell.ca.cq.n_tot / n.cell.ca.cq.vol
n.cell.ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
n.cell.ca.cm_sl.n_tot"mol"total amount of buffern.cell.ca.cm_sl_tot * n.cell.v_sub
n.cell.ca.cm_sl.f_start"1"initial value for f4.764e-05
n.cell.ca.cm_sl.k"mol-1s-1"association constant115.0 / n.cell.v_sub
n.cell.ca.cm_sl.kb"s-1"dissociation constant1000.0
n.cell.ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
n.cell.ca.cm_sl.assoc.k"mol-1s-1"association constantn.cell.ca.cm_sl.k
n.cell.ca.cm_sl.assoc.kb"s-1"dissociation constantn.cell.ca.cm_sl.kb
n.cell.ca.cm_sl.free.vol"m3"volume of the compartmentn.cell.ca.cm_sl.vol
n.cell.ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - n.cell.ca.cm_sl.f_start) * n.cell.ca.cm_sl.n_tot / n.cell.ca.cm_sl.vol
n.cell.ca.cm_sl.occupied.vol"m3"volume of the compartmentn.cell.ca.cm_sl.vol
n.cell.ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationn.cell.ca.cm_sl.f_start * n.cell.ca.cm_sl.n_tot / n.cell.ca.cm_sl.vol
nh.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
nh.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
nh.cell.na_in"mol/m3"intracellular sodium concentration8.0
nh.cell.na_ex"mol/m3"extracellular sodium concentration140.0
nh.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, nh.cell.na_ex, 1, nh.cell.temp)
nh.cell.k_in"mol/m3"intracellular potassium concentration140.0
nh.cell.k_ex"mol/m3"extracellular potassium concentration5.4
nh.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
nh.cell.temp"K"cell medium temperature288.15
nh.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCells.nh.cell.c_to_v(nh.cell.l2.c, 2.19911e-15, 7.147123e-15)
nh.cell.v_cyto"m3"volume of cytosol0.46 * nh.cell.v_cell - nh.cell.v_sub
nh.cell.v_sub"m3"volume of subspace0.01 * nh.cell.v_cell
nh.cell.v_jsr"m3"volume of junctional SR0.0012 * nh.cell.v_cell
nh.cell.v_nsr"m3"volume of network SR0.0116 * nh.cell.v_cell
nh.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(nh.cell.k_in, nh.cell.k_ex, 1, nh.cell.temp)
nh.cell.bg.v_eq"V"equilibrium potential-0.04
nh.cell.bg.g_max"S"maximum conductance2e-09
nh.cell.bg.current_name"I_b"
nh.cell.cal.v_eq"V"equilibrium potential0.0621
nh.cell.cal.g_max"S"maximum conductance2.1e-08
nh.cell.cal.trans.n"1"stoichiometric ratio of ion transportnh.cell.cal.n_ca
nh.cell.cal.trans.zvalence of ion2
nh.cell.cal.con.c_const"mol/m3"fixed concentrationnh.cell.ca_ex
nh.cell.cal.con.vol"m3"volume of the compartment1.0
nh.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
nh.cell.cal.current_name"I_Ca,L"
nh.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
nh.cell.kr.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.kr.g_max"S"maximum conductance2e-09
nh.cell.kr.current_name"I_K,r"
nh.cell.naca.trans.n"1"stoichiometric ratio of ion transportnh.cell.naca.n_ca
nh.cell.naca.trans.zvalence of ion2
nh.cell.naca.con.c_const"mol/m3"fixed concentrationnh.cell.ca_ex
nh.cell.naca.con.vol"m3"volume of the compartment1.0
nh.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
nh.cell.naca.current_name"I_NaCa"
nh.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
nh.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
nh.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
nh.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
nh.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
nh.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
nh.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
nh.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
nh.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
nh.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
nh.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
nh.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
nh.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
nh.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / nh.cell.temp
nh.cell.nak.current_name"I_NaK"
nh.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.97e-10
nh.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nh.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
nh.cell.l2.c"F"membrane capacitance4e-11
nh.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
nh.cell.l2.use_initdetermines whether initial value for v is usedtrue
nh.cell.kir.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.kir.g_max"S"maximum conductance1.5e-08
nh.cell.kir.current_name"I_K1"
nh.cell.kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (nh.cell.temp * 8.3144598)
nh.cell.kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
nh.cell.na.ion_ex"mol/m3"extracellular concentration of ionnh.cell.na_ex
nh.cell.na.ion_p"m3/(s.m2)"permeability of ionnh.cell.na_p
nh.cell.na.ion_zvalence of ion1
nh.cell.na.current_name"I_Na"
nh.cell.to.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.to.g_max"S"maximum conductance1.4e-08
nh.cell.to.current_name"I_to"
nh.cell.cell_type"NH"
nh.cell.ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
nh.cell.ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
nh.cell.ca.cm_tot"mol/m3"total concentration of calmodulin0.045
nh.cell.ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
nh.cell.ca.mg.c_const"mol/m3"fixed concentration2.5
nh.cell.ca.mg.vol"m3"volume of the compartmentnh.cell.v_cyto
nh.cell.ca.sub.vol"m3"volume of the compartmentnh.cell.v_sub
nh.cell.ca.sub.c_start"mol/m3"initial value of concentration7.313999999999999e-05
nh.cell.ca.cyto.vol"m3"volume of the compartmentnh.cell.v_cyto
nh.cell.ca.cyto.c_start"mol/m3"initial value of concentration0.0001386
nh.cell.ca.jsr.vol"m3"volume of the compartmentnh.cell.v_jsr
nh.cell.ca.jsr.c_start"mol/m3"initial value of concentration0.4438
nh.cell.ca.nsr.vol"m3"volume of the compartmentnh.cell.v_nsr
nh.cell.ca.nsr.c_start"mol/m3"initial value of concentration1.187
nh.cell.ca.sub_cyto.vol_src"m3"volume of source compartmentnh.cell.ca.sub.vol
nh.cell.ca.sub_cyto.vol_dst"m3"volume of destination compartmentnh.cell.ca.cyto.vol
nh.cell.ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(nh.cell.ca.sub_cyto.vol_src, nh.cell.ca.sub_cyto.vol_dst)
nh.cell.ca.sub_cyto.tau"s"time constant of diffusion4e-05
nh.cell.ca.cyto_nsr.current_name"SERCA"
nh.cell.ca.cyto_nsr.vol_src"m3"volume of source compartmentnh.cell.ca.cyto.vol
nh.cell.ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * nh.cell.v_nsr
nh.cell.ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
nh.cell.ca.nsr_jsr.vol_src"m3"volume of source compartmentnh.cell.ca.nsr.vol
nh.cell.ca.nsr_jsr.vol_dst"m3"volume of destination compartmentnh.cell.ca.jsr.vol
nh.cell.ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(nh.cell.ca.nsr_jsr.vol_src, nh.cell.ca.nsr_jsr.vol_dst)
nh.cell.ca.nsr_jsr.tau"s"time constant of diffusion0.06
nh.cell.ca.jsr_sub.vol_src"m3"volume of source compartmentnh.cell.ca.jsr.vol
nh.cell.ca.jsr_sub.vol_dst"m3"volume of destination compartmentnh.cell.ca.sub.vol
nh.cell.ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(nh.cell.ca.jsr_sub.vol_src, nh.cell.ca.jsr_sub.vol_dst)
nh.cell.ca.jsr_sub.current_name"RyR"
nh.cell.ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1805.6
nh.cell.ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
nh.cell.ca.jsr_sub.n"1"Hill coefficient2.0
nh.cell.ca.tc.n_tot"mol"total amount of buffernh.cell.ca.tc_tot * nh.cell.v_cyto
nh.cell.ca.tc.f_start"1"initial value for f0.02703
nh.cell.ca.tc.k"mol-1s-1"association constant88800.0 / nh.cell.v_cyto
nh.cell.ca.tc.kb"s-1"dissociation constant446.0
nh.cell.ca.tc.vol"m3"volume of compartment in which buffer resides1.0
nh.cell.ca.tc.assoc.k"mol-1s-1"association constantnh.cell.ca.tc.k
nh.cell.ca.tc.assoc.kb"s-1"dissociation constantnh.cell.ca.tc.kb
nh.cell.ca.tc.free.vol"m3"volume of the compartmentnh.cell.ca.tc.vol
nh.cell.ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - nh.cell.ca.tc.f_start) * nh.cell.ca.tc.n_tot / nh.cell.ca.tc.vol
nh.cell.ca.tc.occupied.vol"m3"volume of the compartmentnh.cell.ca.tc.vol
nh.cell.ca.tc.occupied.c_start"mol/m3"initial value of concentrationnh.cell.ca.tc.f_start * nh.cell.ca.tc.n_tot / nh.cell.ca.tc.vol
nh.cell.ca.tm.n_tot"mol"total amount of buffernh.cell.ca.tmc_tot * nh.cell.v_cyto
nh.cell.ca.tm.f_a_start"1"initial value for f0.402
nh.cell.ca.tm.f_b_start"1"initial value for f0.5282
nh.cell.ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / nh.cell.v_cyto
nh.cell.ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / nh.cell.v_cyto
nh.cell.ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
nh.cell.ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
nh.cell.ca.tm.vol"m3"volume of compartment in which buffer residesnh.cell.v_cyto
nh.cell.ca.tm.assoc_a.k"mol-1s-1"association constantnh.cell.ca.tm.k_a
nh.cell.ca.tm.assoc_a.kb"s-1"dissociation constantnh.cell.ca.tm.kb_a
nh.cell.ca.tm.assoc_b.k"mol-1s-1"association constantnh.cell.ca.tm.k_b
nh.cell.ca.tm.assoc_b.kb"s-1"dissociation constantnh.cell.ca.tm.kb_b
nh.cell.ca.tm.free.vol"m3"volume of the compartmentnh.cell.ca.tm.vol
nh.cell.ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (nh.cell.ca.tm.f_a_start + nh.cell.ca.tm.f_b_start)) * nh.cell.ca.tm.n_tot / nh.cell.ca.tm.vol
nh.cell.ca.tm.occupied_a.vol"m3"volume of the compartmentnh.cell.ca.tm.vol
nh.cell.ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationnh.cell.ca.tm.f_a_start * nh.cell.ca.tm.n_tot / nh.cell.ca.tm.vol
nh.cell.ca.tm.occupied_b.vol"m3"volume of the compartmentnh.cell.ca.tm.vol
nh.cell.ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationnh.cell.ca.tm.f_b_start * nh.cell.ca.tm.n_tot / nh.cell.ca.tm.vol
nh.cell.ca.cm_cyto.n_tot"mol"total amount of buffernh.cell.ca.cm_tot * nh.cell.v_cyto
nh.cell.ca.cm_cyto.f_start"1"initial value for f0.0553
nh.cell.ca.cm_cyto.k"mol-1s-1"association constant227700.0 / nh.cell.v_cyto
nh.cell.ca.cm_cyto.kb"s-1"dissociation constant542.0
nh.cell.ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
nh.cell.ca.cm_cyto.assoc.k"mol-1s-1"association constantnh.cell.ca.cm_cyto.k
nh.cell.ca.cm_cyto.assoc.kb"s-1"dissociation constantnh.cell.ca.cm_cyto.kb
nh.cell.ca.cm_cyto.free.vol"m3"volume of the compartmentnh.cell.ca.cm_cyto.vol
nh.cell.ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - nh.cell.ca.cm_cyto.f_start) * nh.cell.ca.cm_cyto.n_tot / nh.cell.ca.cm_cyto.vol
nh.cell.ca.cm_cyto.occupied.vol"m3"volume of the compartmentnh.cell.ca.cm_cyto.vol
nh.cell.ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationnh.cell.ca.cm_cyto.f_start * nh.cell.ca.cm_cyto.n_tot / nh.cell.ca.cm_cyto.vol
nh.cell.ca.cm_sub.n_tot"mol"total amount of buffernh.cell.ca.cm_tot * nh.cell.v_sub
nh.cell.ca.cm_sub.f_start"1"initial value for f0.02992
nh.cell.ca.cm_sub.k"mol-1s-1"association constantnh.cell.ca.cm_cyto.k * nh.cell.v_cyto / nh.cell.v_sub
nh.cell.ca.cm_sub.kb"s-1"dissociation constantnh.cell.ca.cm_cyto.kb
nh.cell.ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
nh.cell.ca.cm_sub.assoc.k"mol-1s-1"association constantnh.cell.ca.cm_sub.k
nh.cell.ca.cm_sub.assoc.kb"s-1"dissociation constantnh.cell.ca.cm_sub.kb
nh.cell.ca.cm_sub.free.vol"m3"volume of the compartmentnh.cell.ca.cm_sub.vol
nh.cell.ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - nh.cell.ca.cm_sub.f_start) * nh.cell.ca.cm_sub.n_tot / nh.cell.ca.cm_sub.vol
nh.cell.ca.cm_sub.occupied.vol"m3"volume of the compartmentnh.cell.ca.cm_sub.vol
nh.cell.ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationnh.cell.ca.cm_sub.f_start * nh.cell.ca.cm_sub.n_tot / nh.cell.ca.cm_sub.vol
nh.cell.ca.cq.n_tot"mol"total amount of buffernh.cell.ca.cq_tot * nh.cell.v_jsr
nh.cell.ca.cq.f_start"1"initial value for f0.3463
nh.cell.ca.cq.k"mol-1s-1"association constant534.0 / nh.cell.v_jsr
nh.cell.ca.cq.kb"s-1"dissociation constant445.0
nh.cell.ca.cq.vol"m3"volume of compartment in which buffer resides1.0
nh.cell.ca.cq.assoc.k"mol-1s-1"association constantnh.cell.ca.cq.k
nh.cell.ca.cq.assoc.kb"s-1"dissociation constantnh.cell.ca.cq.kb
nh.cell.ca.cq.free.vol"m3"volume of the compartmentnh.cell.ca.cq.vol
nh.cell.ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - nh.cell.ca.cq.f_start) * nh.cell.ca.cq.n_tot / nh.cell.ca.cq.vol
nh.cell.ca.cq.occupied.vol"m3"volume of the compartmentnh.cell.ca.cq.vol
nh.cell.ca.cq.occupied.c_start"mol/m3"initial value of concentrationnh.cell.ca.cq.f_start * nh.cell.ca.cq.n_tot / nh.cell.ca.cq.vol
nh.cell.ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
nh.cell.ca.cm_sl.n_tot"mol"total amount of buffernh.cell.ca.cm_sl_tot * nh.cell.v_sub
nh.cell.ca.cm_sl.f_start"1"initial value for f4.843e-05
nh.cell.ca.cm_sl.k"mol-1s-1"association constant115.0 / nh.cell.v_sub
nh.cell.ca.cm_sl.kb"s-1"dissociation constant1000.0
nh.cell.ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
nh.cell.ca.cm_sl.assoc.k"mol-1s-1"association constantnh.cell.ca.cm_sl.k
nh.cell.ca.cm_sl.assoc.kb"s-1"dissociation constantnh.cell.ca.cm_sl.kb
nh.cell.ca.cm_sl.free.vol"m3"volume of the compartmentnh.cell.ca.cm_sl.vol
nh.cell.ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - nh.cell.ca.cm_sl.f_start) * nh.cell.ca.cm_sl.n_tot / nh.cell.ca.cm_sl.vol
nh.cell.ca.cm_sl.occupied.vol"m3"volume of the compartmentnh.cell.ca.cm_sl.vol
nh.cell.ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationnh.cell.ca.cm_sl.f_start * nh.cell.ca.cm_sl.n_tot / nh.cell.ca.cm_sl.vol
nh.cc.d_hold"s"holding period0.3
nh.cc.d_pulse"s"pulse period0.001
nh.cc.i_hold"A"current during holding period0.0
an.cell.na.ion_in"mol/m3"intracellular concentration of ionan.cell.na_in
an.cell.bg.g"S"ion conductancean.cell.bg.g_max
nh.cell.na.ion_in"mol/m3"intracellular concentration of ionnh.cell.na_in
nh.cell.bg.g"S"ion conductancenh.cell.bg.g_max
n.cell.bg.g"S"ion conductancen.cell.bg.g_max

InaMo.Examples.FullCell.AllCellsC

model AllCellsC "simulation of all cell types with constant intracellular Ca2+"
  extends Modelica.Icons.Example;
  FullCellCurrentPulses an(redeclare InaMo.Cells.ConstantCa.ANCellConst cell) "AN cell experiment";
  FullCellSpon n(redeclare InaMo.Cells.ConstantCa.NCellConst cell) "N cell experiment";
  FullCellCurrentPulses nh(redeclare InaMo.Cells.ConstantCa.NHCellConst cell) "NH cell experiment";
  annotation(
    experiment(StartTime = 0, StopTime = 2.5, Tolerance = 1e-6, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "(an|n|nh)\\.cell\\.v"));
end AllCellsC;
  1. $whenCondition4 an.cc.pulse_start
  2. $whenCondition3 an.cc.pulse_end
  3. $whenCondition2 nh.cc.pulse_start
  4. $whenCondition1 nh.cc.pulse_end
  5. n.g.p.i +((((((( n.cell.hcn.i_ion n.cell.st.i_ion ) n.cell.l2.i ) n.cell.nak.i ) n.cell.naca.i_ion ) n.cell.kr.i_ion ) n.cell.cal.i_ion ) n.cell.bg.i_ion ) 0.0
  6. Within group an (prefix _ indicates shortened variable name)
    1. _cell.to.i_ion+_cell.na.i_ion+_cell.kir.i_ion+_cell.l2.i+_cell.nak.i+_cell.naca.i_ion+_cell.kr.i_ion+_cell.cal.i_ion+_cell.bg.i_ion+_cc.i_stim 0.0
    2. _cc.n.i+((((((((_cell.na.i_ion_cell.to.i_ion)_cell.kir.i_ion)_cell.l2.i)_cell.nak.i)_cell.naca.i_ion)_cell.kr.i_ion)_cell.cal.i_ion)_cell.bg.i_ion) 0.0
    3. Within group cc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_stim_n.i) 0.0
      2. _i_stim(_pulse_signal)( -2e-09 _i_hold)+_i_hold
      3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
      4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    4. Within group cell (prefix _ indicates shortened variable name)
      1. _ca_sub.substance.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      3. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      4. _l2.v_l2.i/_l2.c
      5. _na.i_openghkFlux(_l2.v,_temp,_na_in,_na.ion_ex,_na.ion_p,_na.ion_z)
      6. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( an.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( an.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( an.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( an.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      7. Within group kir (prefix _ indicates shortened variable name)
        1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
        2. _i_open_g_max( an.cell.l2.v _v_eq)
        3. _i_ion_open_ratio_i_open
        4. _g_open_ratio_g_max
        5. _voltage_inact.nact.fsteady( an.cell.l2.v , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
        6. _voltage_act.nact.fsteady( an.cell.l2.v , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
      8. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( an.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( an.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( an.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( an.cell.l2.v )
        13. _inact.tauinact.ftau( an.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      9. Within group na (prefix _ indicates shortened variable name)
        1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _open_ratio_act.n 3.0 _inact_total
        4. _i_ion_open_ratio_i_open
        5. _act.alphafalpha.fa( an.cell.l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
        6. _act.betakr.ftau.falpha( an.cell.l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
        7. _inact_fast.steadyinact_fast.fsteady( an.cell.l2.v )
        8. _inact_fast.tauact.fsteady( an.cell.l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
        9. _inact_slow.steadyinact_fast.fsteady( an.cell.l2.v )
        10. _inact_slow.tauact.fsteady( an.cell.l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
        11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
        12. Within group act (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
      10. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci an.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co an.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n an.cell.l2.v _FoRT
      11. Within group to (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        4. _open_ratio_act.n_inact_total
        5. _i_open_g_max( an.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
        9. _act.tauto.act.ftau( an.cell.l2.v , 0.000596 )
        10. _inact_slow.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        11. _inact_slow.tauinact_fast.ftau( an.cell.l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
        12. _inact_fast.steadyact.fsteady( an.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        13. _inact_fast.tauact.fsteady( an.cell.l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
        14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n
  7. Within group n (prefix _ indicates shortened variable name)
    1. Within group cell (prefix _ indicates shortened variable name)
      1. _ca_sub.substance.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _st.i_ion+_hcn.i_ion+_l2.i+_nak.i+_naca.i_ion+_kr.i_ion+_cal.i_ion+_bg.i_ion 0.0
      3. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      4. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      5. _l2.v_l2.i/_l2.c
      6. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( n.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( n.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( n.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( n.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      7. Within group hcn (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _i_open_g_max( n.cell.l2.v _v_eq)
        3. _i_ion_act.n_i_open
        4. _g_act.n_g_max
        5. _act.steadyact.fsteady( n.cell.l2.v _act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
        6. _act.tauinact_fast.ftau( n.cell.l2.v , 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
      8. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( n.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( n.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( n.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( n.cell.l2.v )
        13. _inact.tauinact.ftau( n.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      9. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci n.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co n.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n n.cell.l2.v _FoRT
      10. Within group st (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _open_ratio_act.n_inact.n
        3. _i_open_g_max( n.cell.l2.v _v_eq)
        4. _i_ion_open_ratio_i_open
        5. _g_open_ratio_g_max
        6. _act.steadyact.fsteady( n.cell.l2.v , 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
        7. _act.taust.act.ftau( n.cell.l2.v , 0.0 )
        8. _inact.alphainact.falpha( n.cell.l2.v , 0.0 )
        9. _inact.betainact.fbeta( n.cell.l2.v )
        10. Within group inact (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
  8. Within group nh (prefix _ indicates shortened variable name)
    1. _cell.to.i_ion+_cell.na.i_ion+_cell.kir.i_ion+_cell.l2.i+_cell.nak.i+_cell.naca.i_ion+_cell.kr.i_ion+_cell.cal.i_ion+_cell.bg.i_ion+_cc.i_stim 0.0
    2. _cc.n.i+((((((((_cell.na.i_ion_cell.to.i_ion)_cell.kir.i_ion)_cell.l2.i)_cell.nak.i)_cell.naca.i_ion)_cell.kr.i_ion)_cell.cal.i_ion)_cell.bg.i_ion) 0.0
    3. Within group cc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_stim_n.i) 0.0
      2. _i_stim(_pulse_signal)( -2e-09 _i_hold)+_i_hold
      3. _pulse_start( 3 ,_d_hold,_d_hold+_d_pulse)
      4. _pulse_end( 4 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    4. Within group cell (prefix _ indicates shortened variable name)
      1. _ca_sub.substance.rate+_naca.trans.rate+_cal.trans.rate 0.0
      2. _bg.i_ion_bg.g_max(_l2.v_bg.v_eq)
      3. _nak.i_nak.i_maxmichaelisMenten(_na_in,_nak.k_m_Na) 3.0 michaelisMenten(_k_ex,_nak.k_m_K) 2.0 act.fsteady(_l2.v, 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
      4. _l2.v_l2.i/_l2.c
      5. _na.i_openghkFlux(_l2.v,_temp,_na_in,_na.ion_ex,_na.ion_p,_na.ion_z)
      6. Within group cal (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _act.n(_act.steady_act.n)/_act.tau
        3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        5. _open_ratio_act.n_inact_total
        6. _i_open_g_max( nh.cell.l2.v _v_eq)
        7. _i_ion_open_ratio_i_open
        8. _g_open_ratio_g_max
        9. _act.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
        10. _act.taucal.act.ftau( nh.cell.l2.v , 0.0 )
        11. _inact_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        12. _inact_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
        13. _inact_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
        14. _inact_fast.tauinact_fast.ftau( nh.cell.l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
        15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
      7. Within group kir (prefix _ indicates shortened variable name)
        1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
        2. _i_open_g_max( nh.cell.l2.v _v_eq)
        3. _i_ion_open_ratio_i_open
        4. _g_open_ratio_g_max
        5. _voltage_inact.nact.fsteady( nh.cell.l2.v , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
        6. _voltage_act.nact.fsteady( nh.cell.l2.v , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
      8. Within group kr (prefix _ indicates shortened variable name)
        1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
        2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
        3. _inact.n(_inact.steady_inact.n)/_inact.tau
        4. _open_ratio_act_total_inact.n
        5. _i_open_g_max( nh.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        9. _act_fast.tauact_fast.ftau( nh.cell.l2.v , 0.0 )
        10. _act_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
        11. _act_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
        12. _inact.steadyinact.fsteady( nh.cell.l2.v )
        13. _inact.tauinact.ftau( nh.cell.l2.v , 0.0 )
        14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
      9. Within group na (prefix _ indicates shortened variable name)
        1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _open_ratio_act.n 3.0 _inact_total
        4. _i_ion_open_ratio_i_open
        5. _act.alphafalpha.fa( nh.cell.l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
        6. _act.betakr.ftau.falpha( nh.cell.l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
        7. _inact_fast.steadyinact_fast.fsteady( nh.cell.l2.v )
        8. _inact_fast.tauact.fsteady( nh.cell.l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
        9. _inact_slow.steadyinact_fast.fsteady( nh.cell.l2.v )
        10. _inact_slow.tauact.fsteady( nh.cell.l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
        11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
        12. Within group act (prefix _ indicates shortened variable name)
          1. _n_alpha( 1.0 _n)_beta_n
          2. _steady_alpha/(_alpha+_beta)
          3. _tau 1.0 /(_alpha+_beta)
      10. Within group naca (prefix _ indicates shortened variable name)
        1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
        2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
        3. _di_cv_di_ce_q_ci nh.cell.l2.v _FoRT
        4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
        5. _do_cv_do_ce_q_co nh.cell.l2.v _FoRT
        6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
        7. _k_12_di_cv/_di
        8. _f1_2n_i(_di_2n+_di_3n)/_di
        9. _k_21_do_cv/_do
        10. _f1_2n_o(_do_2n+_do_3n)/_do
        11. _k_23_f1_2n_o/_k_32
        12. _k_41 1.0 /_k_32
        13. _k_14_f1_2n_i_k_32
        14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
        15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
        16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
        17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
        18. _d_x1+_x2+_x3+_x4
        19. _e1_x1/_d
        20. _e2_x2/_d
        21. _e3_x3/_d
        22. _e4_x4/_d
        23. _k_32e 0.5 _q_n nh.cell.l2.v _FoRT
      11. Within group to (prefix _ indicates shortened variable name)
        1. _act.n(_act.steady_act.n)/_act.tau
        2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
        3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
        4. _open_ratio_act.n_inact_total
        5. _i_open_g_max( nh.cell.l2.v _v_eq)
        6. _i_ion_open_ratio_i_open
        7. _g_open_ratio_g_max
        8. _act.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
        9. _act.tauto.act.ftau( nh.cell.l2.v , 0.000596 )
        10. _inact_slow.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        11. _inact_slow.tauinact_fast.ftau( nh.cell.l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
        12. _inact_fast.steadyact.fsteady( nh.cell.l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
        13. _inact_fast.tauact.fsteady( nh.cell.l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
        14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + kr.ftau.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + kr.ftau.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := falpha.fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + falpha.fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + falpha.fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function st.ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end st.ftau.falpha;
function falpha.fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha.fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function st.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (st.ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end st.act.ftau;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function fbeta.fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fbeta.fa;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fbeta.fa(x, 0.0) + act.fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
nameunitlabelvalue
an.cc.pulse_signal0 during holding period, 1 during pulse0
an.cc.pulse_endsignals end of pulse
an.cc.pulse_startsignals start of pulse
an.cc.i_stim"A"input current (needs to be defined externally)
an.cc.g.p.i"A"Current flowing into the pin
an.cc.n.i"A"Current flowing into the pin
an.cell.ca_sub.substance.rate"mol/s"molar flow rate of substance
an.cell.to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
an.cell.to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.to.inact_fast.nratio of molecules in open conformation0.8734
an.cell.to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.to.inact_slow.nratio of molecules in open conformation0.1503
an.cell.to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.to.act.steadyvalue that n would reach if v_gate was held constant
an.cell.to.act.nratio of molecules in open conformation0.008857
an.cell.to.g"S"ion conductance
an.cell.to.i_open"A"i if open_ratio = 1
an.cell.to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.to.i_ion"A"current used for ion flux
an.cell.na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
an.cell.na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.na.inact_slow.nratio of molecules in open conformation0.6162
an.cell.na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.na.inact_fast.nratio of molecules in open conformation0.717
an.cell.na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.na.act.steady"1"steady state achieved if current voltage is held constant
an.cell.na.act.beta"1"rate of transfer from open to closed conformation
an.cell.na.act.alpha"1"rate of transfer from closed to open conformation
an.cell.na.act.nratio of molecules in open conformation0.01227
an.cell.na.i_openi if open_ratio = 1
an.cell.na.open_ratioratio between 0 (fully closed) and 1 (fully open)
an.cell.na.i_ion"A"current used for ion flux
an.cell.kir.voltage_act.nratio of molecules in open conformation
an.cell.kir.voltage_inact.nratio of molecules in open conformation
an.cell.kir.g"S"ion conductance
an.cell.kir.i_open"A"i if open_ratio = 1
an.cell.kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.kir.i_ion"A"current used for ion flux
an.cell.l2.i"A"Current flowing from pin p to pin n
an.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
an.cell.nak.i"A"Current flowing from pin p to pin n
an.cell.naca.e4"1"ratio of exchanger molecules in state e4
an.cell.naca.e3"1"ratio of exchanger molecules in state e3
an.cell.naca.e2"1"ratio of exchanger molecules in state e2
an.cell.naca.e1"1"ratio of exchanger molecules in state e1
an.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
an.cell.naca.x4"1"relative frequancy of E4 states
an.cell.naca.x3"1"relative frequency of E3 states
an.cell.naca.x2"1"relative frequency of E2 states
an.cell.naca.x1"1"relative frequency of E1 states
an.cell.naca.k_14"1"rate constant for transition from E1 to E4
an.cell.naca.k_41"1"rate constant for transition from E4 to E1
an.cell.naca.k_32"1"rate constant for transition from E3 to E2
an.cell.naca.k_23"1"rate constant for transition from E2 to E3
an.cell.naca.k_21"1"rate constant for transition from E2 to E1
an.cell.naca.k_12"1"rate constant for transition from E1 to E2
an.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
an.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
an.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
an.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
an.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
an.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
an.cell.naca.i_ion"A"current used for TransmembraneCaFlow
an.cell.naca.trans.rate"mol/s"rate of change in substance amount
an.cell.kr.act_totaltotal activation due to slow and fast activation terms
an.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.inact.nratio of molecules in open conformation0.9866
an.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.act_slow.nratio of molecules in open conformation0.0484
an.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.kr.act_fast.nratio of molecules in open conformation0.07106999999999999
an.cell.kr.g"S"ion conductance
an.cell.kr.i_open"A"i if open_ratio = 1
an.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.kr.i_ion"A"current used for ion flux
an.cell.cal.inact_total
an.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.inact_fast.nratio of molecules in open conformation0.9985000000000001
an.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.inact_slow.nratio of molecules in open conformation0.9875
an.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
an.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
an.cell.cal.act.nratio of molecules in open conformation4.069e-05
an.cell.cal.trans.rate"mol/s"rate of change in substance amount
an.cell.cal.g"S"ion conductance
an.cell.cal.i_open"A"i if open_ratio = 1
an.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
an.cell.cal.i_ion"A"current used for ion flux
an.cell.bg.i_ion"A"current used for ion flux
$whenCondition4an.cc.pulse_start
$whenCondition3an.cc.pulse_end
nh.cc.pulse_signal0 during holding period, 1 during pulse0
nh.cc.pulse_endsignals end of pulse
nh.cc.pulse_startsignals start of pulse
nh.cc.i_stim"A"input current (needs to be defined externally)
nh.cc.g.p.i"A"Current flowing into the pin
nh.cc.n.i"A"Current flowing into the pin
nh.cell.ca_sub.substance.rate"mol/s"molar flow rate of substance
nh.cell.to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
nh.cell.to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.inact_fast.nratio of molecules in open conformation0.864
nh.cell.to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.inact_slow.nratio of molecules in open conformation0.1297
nh.cell.to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.to.act.steadyvalue that n would reach if v_gate was held constant
nh.cell.to.act.nratio of molecules in open conformation0.009580999999999999
nh.cell.to.g"S"ion conductance
nh.cell.to.i_open"A"i if open_ratio = 1
nh.cell.to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.to.i_ion"A"current used for ion flux
nh.cell.na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
nh.cell.na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.na.inact_slow.nratio of molecules in open conformation0.5552
nh.cell.na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.na.inact_fast.nratio of molecules in open conformation0.6438
nh.cell.na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.na.act.steady"1"steady state achieved if current voltage is held constant
nh.cell.na.act.beta"1"rate of transfer from open to closed conformation
nh.cell.na.act.alpha"1"rate of transfer from closed to open conformation
nh.cell.na.act.nratio of molecules in open conformation0.01529
nh.cell.na.i_openi if open_ratio = 1
nh.cell.na.open_ratioratio between 0 (fully closed) and 1 (fully open)
nh.cell.na.i_ion"A"current used for ion flux
nh.cell.kir.voltage_act.nratio of molecules in open conformation
nh.cell.kir.voltage_inact.nratio of molecules in open conformation
nh.cell.kir.g"S"ion conductance
nh.cell.kir.i_open"A"i if open_ratio = 1
nh.cell.kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.kir.i_ion"A"current used for ion flux
nh.cell.l2.i"A"Current flowing from pin p to pin n
nh.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nh.cell.nak.i"A"Current flowing from pin p to pin n
nh.cell.naca.e4"1"ratio of exchanger molecules in state e4
nh.cell.naca.e3"1"ratio of exchanger molecules in state e3
nh.cell.naca.e2"1"ratio of exchanger molecules in state e2
nh.cell.naca.e1"1"ratio of exchanger molecules in state e1
nh.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
nh.cell.naca.x4"1"relative frequancy of E4 states
nh.cell.naca.x3"1"relative frequency of E3 states
nh.cell.naca.x2"1"relative frequency of E2 states
nh.cell.naca.x1"1"relative frequency of E1 states
nh.cell.naca.k_14"1"rate constant for transition from E1 to E4
nh.cell.naca.k_41"1"rate constant for transition from E4 to E1
nh.cell.naca.k_32"1"rate constant for transition from E3 to E2
nh.cell.naca.k_23"1"rate constant for transition from E2 to E3
nh.cell.naca.k_21"1"rate constant for transition from E2 to E1
nh.cell.naca.k_12"1"rate constant for transition from E1 to E2
nh.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
nh.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
nh.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
nh.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
nh.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
nh.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
nh.cell.naca.i_ion"A"current used for TransmembraneCaFlow
nh.cell.naca.trans.rate"mol/s"rate of change in substance amount
nh.cell.kr.act_totaltotal activation due to slow and fast activation terms
nh.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.inact.nratio of molecules in open conformation0.9853
nh.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.act_slow.nratio of molecules in open conformation0.07024
nh.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.kr.act_fast.nratio of molecules in open conformation0.09949
nh.cell.kr.g"S"ion conductance
nh.cell.kr.i_open"A"i if open_ratio = 1
nh.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.kr.i_ion"A"current used for ion flux
nh.cell.cal.inact_total
nh.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.inact_fast.nratio of molecules in open conformation0.9981
nh.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.inact_slow.nratio of molecules in open conformation0.9831
nh.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
nh.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
nh.cell.cal.act.nratio of molecules in open conformation5.025e-05
nh.cell.cal.trans.rate"mol/s"rate of change in substance amount
nh.cell.cal.g"S"ion conductance
nh.cell.cal.i_open"A"i if open_ratio = 1
nh.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
nh.cell.cal.i_ion"A"current used for ion flux
nh.cell.bg.i_ion"A"current used for ion flux
$whenCondition2nh.cc.pulse_start
$whenCondition1nh.cc.pulse_end
n.g.p.i"A"Current flowing into the pin
n.cell.ca_sub.substance.rate"mol/s"molar flow rate of substance
n.cell.st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.st.inact.steady"1"steady state achieved if current voltage is held constant
n.cell.st.inact.beta"1"rate of transfer from open to closed conformation
n.cell.st.inact.alpha"1"rate of transfer from closed to open conformation
n.cell.st.inact.nratio of molecules in open conformation0.4886
n.cell.st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.st.act.steadyvalue that n would reach if v_gate was held constant
n.cell.st.act.nratio of molecules in open conformation0.1933
n.cell.st.g"S"ion conductance
n.cell.st.i_open"A"i if open_ratio = 1
n.cell.st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.st.i_ion"A"current used for ion flux
n.cell.hcn.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.hcn.act.steadyvalue that n would reach if v_gate was held constant
n.cell.hcn.act.n"1"ratio of molecules in open conformation0.03825
n.cell.hcn.g"S"ion conductance
n.cell.hcn.i_open"A"i if open_ratio = 1
n.cell.hcn.i_ion"A"current used for ion flux
n.cell.l2.i"A"Current flowing from pin p to pin n
n.cell.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
n.cell.nak.i"A"Current flowing from pin p to pin n
n.cell.naca.e4"1"ratio of exchanger molecules in state e4
n.cell.naca.e3"1"ratio of exchanger molecules in state e3
n.cell.naca.e2"1"ratio of exchanger molecules in state e2
n.cell.naca.e1"1"ratio of exchanger molecules in state e1
n.cell.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
n.cell.naca.x4"1"relative frequancy of E4 states
n.cell.naca.x3"1"relative frequency of E3 states
n.cell.naca.x2"1"relative frequency of E2 states
n.cell.naca.x1"1"relative frequency of E1 states
n.cell.naca.k_14"1"rate constant for transition from E1 to E4
n.cell.naca.k_41"1"rate constant for transition from E4 to E1
n.cell.naca.k_32"1"rate constant for transition from E3 to E2
n.cell.naca.k_23"1"rate constant for transition from E2 to E3
n.cell.naca.k_21"1"rate constant for transition from E2 to E1
n.cell.naca.k_12"1"rate constant for transition from E1 to E2
n.cell.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
n.cell.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
n.cell.naca.do"1"common denominator summing relative frequencies for all E2 substates
n.cell.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
n.cell.naca.di"1"common denominator summing relative frequencies for all E1 substates
n.cell.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
n.cell.naca.i_ion"A"current used for TransmembraneCaFlow
n.cell.naca.trans.rate"mol/s"rate of change in substance amount
n.cell.kr.act_totaltotal activation due to slow and fast activation terms
n.cell.kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.inact.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.inact.nratio of molecules in open conformation0.9775
n.cell.kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.act_slow.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.act_slow.nratio of molecules in open conformation0.1287
n.cell.kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.kr.act_fast.steadyvalue that n would reach if v_gate was held constant
n.cell.kr.act_fast.nratio of molecules in open conformation0.6067
n.cell.kr.g"S"ion conductance
n.cell.kr.i_open"A"i if open_ratio = 1
n.cell.kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.kr.i_ion"A"current used for ion flux
n.cell.cal.inact_total
n.cell.cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.inact_fast.nratio of molecules in open conformation0.6861
n.cell.cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.inact_slow.nratio of molecules in open conformation0.4441
n.cell.cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
n.cell.cal.act.steadyvalue that n would reach if v_gate was held constant
n.cell.cal.act.nratio of molecules in open conformation0.0001533
n.cell.cal.trans.rate"mol/s"rate of change in substance amount
n.cell.cal.g"S"ion conductance
n.cell.cal.i_open"A"i if open_ratio = 1
n.cell.cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
n.cell.cal.i_ion"A"current used for ion flux
n.cell.bg.i_ion"A"current used for ion flux
an.cell.cal.con.substance.amount"mol"amount of substancean.cell.cal.con.c_const * an.cell.cal.con.vol
an.cell.naca.con.substance.amount"mol"amount of substancean.cell.naca.con.c_const * an.cell.naca.con.vol
n.cell.cal.con.substance.amount"mol"amount of substancen.cell.cal.con.c_const * n.cell.cal.con.vol
n.cell.naca.con.substance.amount"mol"amount of substancen.cell.naca.con.c_const * n.cell.naca.con.vol
nh.cell.cal.con.substance.amount"mol"amount of substancenh.cell.cal.con.c_const * nh.cell.cal.con.vol
nh.cell.naca.con.substance.amount"mol"amount of substancenh.cell.naca.con.c_const * nh.cell.naca.con.vol
n.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+n.cell.naca.di_c * n.cell.na_in / n.cell.naca.k_cn_i
n.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+n.cell.naca.di_2n * n.cell.na_in / n.cell.naca.k_3n_i
n.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+n.cell.naca.do_2n * n.cell.na_ex / n.cell.naca.k_3n_o
n.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+n.cell.naca.do_1n * n.cell.na_ex / n.cell.naca.k_2n_o
n.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+n.cell.naca.di_1n * n.cell.na_in / n.cell.naca.k_2n_i
n.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedn.cell.ca_sub.substance.amount / (n.cell.naca.k_c_i * n.cell.v_sub)
n.cell.p.i"A"Current flowing into the pin0.0
n.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
n.cell.ca_sub.substance.amount"mol"amount of substancen.cell.ca_sub.c_const * n.cell.ca_sub.vol
n.g.p.v"V"Potential at the pin0.0
n.cell.cal.ach_factor1.0
n.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+n.cell.na_in / n.cell.naca.k_1n_i
n.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedn.cell.ca_ex / n.cell.naca.k_c_o
n.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+n.cell.na_ex / n.cell.naca.k_1n_o
n.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.cell.na_ex, n.cell.naca.k_3n_o)
n.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.cell.na_in, n.cell.naca.k_3n_i)
nh.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+nh.cell.naca.di_c * nh.cell.na_in / nh.cell.naca.k_cn_i
nh.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+nh.cell.naca.di_2n * nh.cell.na_in / nh.cell.naca.k_3n_i
nh.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+nh.cell.naca.do_2n * nh.cell.na_ex / nh.cell.naca.k_3n_o
nh.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+nh.cell.naca.do_1n * nh.cell.na_ex / nh.cell.naca.k_2n_o
nh.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+nh.cell.naca.di_1n * nh.cell.na_in / nh.cell.naca.k_2n_i
nh.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludednh.cell.ca_sub.substance.amount / (nh.cell.naca.k_c_i * nh.cell.v_sub)
nh.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
nh.cell.ca_sub.substance.amount"mol"amount of substancenh.cell.ca_sub.c_const * nh.cell.ca_sub.vol
nh.cc.g.p.v"V"Potential at the pin0.0
nh.cell.cal.ach_factor1.0
nh.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+nh.cell.na_in / nh.cell.naca.k_1n_i
nh.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludednh.cell.ca_ex / nh.cell.naca.k_c_o
nh.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+nh.cell.na_ex / nh.cell.naca.k_1n_o
nh.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(nh.cell.na_ex, nh.cell.naca.k_3n_o)
nh.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(nh.cell.na_in, nh.cell.naca.k_3n_i)
nh.cell.kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(nh.cell.k_ex, 0.59)
nh.cc.i_pulse"A"current during pulse (must be defined externally)-2e-09
an.cell.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+an.cell.naca.di_c * an.cell.na_in / an.cell.naca.k_cn_i
an.cell.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+an.cell.naca.di_2n * an.cell.na_in / an.cell.naca.k_3n_i
an.cell.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+an.cell.naca.do_2n * an.cell.na_ex / an.cell.naca.k_3n_o
an.cell.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+an.cell.naca.do_1n * an.cell.na_ex / an.cell.naca.k_2n_o
an.cell.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+an.cell.naca.di_1n * an.cell.na_in / an.cell.naca.k_2n_i
an.cell.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedan.cell.ca_sub.substance.amount / (an.cell.naca.k_c_i * an.cell.v_sub)
an.cell.bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
an.cell.ca_sub.substance.amount"mol"amount of substancean.cell.ca_sub.c_const * an.cell.ca_sub.vol
an.cc.g.p.v"V"Potential at the pin0.0
an.cell.cal.ach_factor1.0
an.cell.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+an.cell.na_in / an.cell.naca.k_1n_i
an.cell.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedan.cell.ca_ex / an.cell.naca.k_c_o
an.cell.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+an.cell.na_ex / an.cell.naca.k_1n_o
an.cell.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an.cell.na_ex, an.cell.naca.k_3n_o)
an.cell.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an.cell.na_in, an.cell.naca.k_3n_i)
an.cell.kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(an.cell.k_ex, 0.59)
an.cc.i_pulse"A"current during pulse (must be defined externally)-2e-09
an.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
an.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
an.cell.na_in"mol/m3"intracellular sodium concentration8.0
an.cell.na_ex"mol/m3"extracellular sodium concentration140.0
an.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, an.cell.na_ex, 1, an.cell.temp)
an.cell.k_in"mol/m3"intracellular potassium concentration140.0
an.cell.k_ex"mol/m3"extracellular potassium concentration5.4
an.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
an.cell.temp"K"cell medium temperature288.15
an.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCellsC.an.cell.c_to_v(an.cell.l2.c, 2.19911e-15, 7.147123e-15)
an.cell.v_cyto"m3"volume of cytosol0.46 * an.cell.v_cell - an.cell.v_sub
an.cell.v_sub"m3"volume of subspace0.01 * an.cell.v_cell
an.cell.v_jsr"m3"volume of junctional SR0.0012 * an.cell.v_cell
an.cell.v_nsr"m3"volume of network SR0.0116 * an.cell.v_cell
an.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(an.cell.k_in, an.cell.k_ex, 1, an.cell.temp)
an.cell.bg.v_eq"V"equilibrium potential-0.0525
an.cell.bg.g_max"S"maximum conductance1.8e-09
an.cell.bg.current_name"I_b"
an.cell.cal.v_eq"V"equilibrium potential0.0621
an.cell.cal.g_max"S"maximum conductance1.85e-08
an.cell.cal.trans.n"1"stoichiometric ratio of ion transportan.cell.cal.n_ca
an.cell.cal.trans.zvalence of ion2
an.cell.cal.con.c_const"mol/m3"fixed concentrationan.cell.ca_ex
an.cell.cal.con.vol"m3"volume of the compartment1.0
an.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
an.cell.cal.current_name"I_Ca,L"
an.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
an.cell.kr.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.kr.g_max"S"maximum conductance1.5e-09
an.cell.kr.current_name"I_K,r"
an.cell.naca.trans.n"1"stoichiometric ratio of ion transportan.cell.naca.n_ca
an.cell.naca.trans.zvalence of ion2
an.cell.naca.con.c_const"mol/m3"fixed concentrationan.cell.ca_ex
an.cell.naca.con.vol"m3"volume of the compartment1.0
an.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
an.cell.naca.current_name"I_NaCa"
an.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
an.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
an.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
an.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
an.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
an.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
an.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
an.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
an.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
an.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
an.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
an.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
an.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
an.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / an.cell.temp
an.cell.nak.current_name"I_NaK"
an.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.46e-11
an.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
an.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
an.cell.l2.c"F"membrane capacitance4e-11
an.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
an.cell.l2.use_initdetermines whether initial value for v is usedtrue
an.cell.kir.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.kir.g_max"S"maximum conductance1.25e-08
an.cell.kir.current_name"I_K1"
an.cell.kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (an.cell.temp * 8.3144598)
an.cell.kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
an.cell.na.ion_ex"mol/m3"extracellular concentration of ionan.cell.na_ex
an.cell.na.ion_p"m3/(s.m2)"permeability of ionan.cell.na_p
an.cell.na.ion_zvalence of ion1
an.cell.na.current_name"I_Na"
an.cell.to.v_eq"V"equilibrium potentialan.cell.v_k
an.cell.to.g_max"S"maximum conductance2e-08
an.cell.to.current_name"I_to"
an.cell.cell_type"AN"
an.cell.ca_sub.c_const"mol/m3"fixed concentration0.0001
an.cell.ca_sub.vol"m3"volume of the compartmentan.cell.v_sub
an.cc.d_hold"s"holding period0.3
an.cc.d_pulse"s"pulse period0.001
an.cc.i_hold"A"current during holding period0.0
n.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
n.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
n.cell.na_in"mol/m3"intracellular sodium concentration8.0
n.cell.na_ex"mol/m3"extracellular sodium concentration140.0
n.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, n.cell.na_ex, 1, n.cell.temp)
n.cell.k_in"mol/m3"intracellular potassium concentration140.0
n.cell.k_ex"mol/m3"extracellular potassium concentration5.4
n.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
n.cell.temp"K"cell medium temperature288.15
n.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCellsC.n.cell.c_to_v(n.cell.l2.c, 2.19911e-15, 7.147123e-15)
n.cell.v_cyto"m3"volume of cytosol0.46 * n.cell.v_cell - n.cell.v_sub
n.cell.v_sub"m3"volume of subspace0.01 * n.cell.v_cell
n.cell.v_jsr"m3"volume of junctional SR0.0012 * n.cell.v_cell
n.cell.v_nsr"m3"volume of network SR0.0116 * n.cell.v_cell
n.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(n.cell.k_in, n.cell.k_ex, 1, n.cell.temp)
n.cell.bg.v_eq"V"equilibrium potential-0.0225
n.cell.bg.g_max"S"maximum conductance1.2e-09
n.cell.bg.current_name"I_b"
n.cell.cal.v_eq"V"equilibrium potential0.0621
n.cell.cal.g_max"S"maximum conductance9e-09
n.cell.cal.trans.n"1"stoichiometric ratio of ion transportn.cell.cal.n_ca
n.cell.cal.trans.zvalence of ion2
n.cell.cal.con.c_const"mol/m3"fixed concentrationn.cell.ca_ex
n.cell.cal.con.vol"m3"volume of the compartment1.0
n.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
n.cell.cal.current_name"I_Ca,L"
n.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
n.cell.kr.v_eq"V"equilibrium potentialn.cell.v_k
n.cell.kr.g_max"S"maximum conductance3.5e-09
n.cell.kr.current_name"I_K,r"
n.cell.naca.trans.n"1"stoichiometric ratio of ion transportn.cell.naca.n_ca
n.cell.naca.trans.zvalence of ion2
n.cell.naca.con.c_const"mol/m3"fixed concentrationn.cell.ca_ex
n.cell.naca.con.vol"m3"volume of the compartment1.0
n.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
n.cell.naca.current_name"I_NaCa"
n.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
n.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
n.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
n.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
n.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
n.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
n.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
n.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
n.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
n.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
n.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
n.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
n.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
n.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / n.cell.temp
n.cell.nak.current_name"I_NaK"
n.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.43e-10
n.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
n.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
n.cell.l2.c"F"membrane capacitance2.9e-11
n.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
n.cell.l2.use_initdetermines whether initial value for v is usedtrue
n.cell.hcn.v_eq"V"equilibrium potential-0.03
n.cell.hcn.g_max"S"maximum conductance1e-09
n.cell.hcn.current_name"I_f"
n.cell.hcn.act_shift"V"0.0
n.cell.hcn.act.shift"V"n.cell.hcn.act_shift
n.cell.st.v_eq"V"equilibrium potential0.0374
n.cell.st.g_max"S"maximum conductance1e-10
n.cell.st.current_name"I_st"
n.cell.cell_type"N"
n.cell.ca_sub.c_const"mol/m3"fixed concentration0.0001
n.cell.ca_sub.vol"m3"volume of the compartmentn.cell.v_sub
nh.cell.use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
nh.cell.ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
nh.cell.na_in"mol/m3"intracellular sodium concentration8.0
nh.cell.na_ex"mol/m3"extracellular sodium concentration140.0
nh.cell.na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, nh.cell.na_ex, 1, nh.cell.temp)
nh.cell.k_in"mol/m3"intracellular potassium concentration140.0
nh.cell.k_ex"mol/m3"extracellular potassium concentration5.4
nh.cell.ca_ex"mol/m3"extracellular calcium concentration2.0
nh.cell.temp"K"cell medium temperature288.15
nh.cell.v_cell"m3"total cell volumeInaMo.Examples.FullCell.AllCellsC.nh.cell.c_to_v(nh.cell.l2.c, 2.19911e-15, 7.147123e-15)
nh.cell.v_cyto"m3"volume of cytosol0.46 * nh.cell.v_cell - nh.cell.v_sub
nh.cell.v_sub"m3"volume of subspace0.01 * nh.cell.v_cell
nh.cell.v_jsr"m3"volume of junctional SR0.0012 * nh.cell.v_cell
nh.cell.v_nsr"m3"volume of network SR0.0116 * nh.cell.v_cell
nh.cell.v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(nh.cell.k_in, nh.cell.k_ex, 1, nh.cell.temp)
nh.cell.bg.v_eq"V"equilibrium potential-0.04
nh.cell.bg.g_max"S"maximum conductance2e-09
nh.cell.bg.current_name"I_b"
nh.cell.cal.v_eq"V"equilibrium potential0.0621
nh.cell.cal.g_max"S"maximum conductance2.1e-08
nh.cell.cal.trans.n"1"stoichiometric ratio of ion transportnh.cell.cal.n_ca
nh.cell.cal.trans.zvalence of ion2
nh.cell.cal.con.c_const"mol/m3"fixed concentrationnh.cell.ca_ex
nh.cell.cal.con.vol"m3"volume of the compartment1.0
nh.cell.cal.n_ca"1"stoichiometric ratio of transport1.0
nh.cell.cal.current_name"I_Ca,L"
nh.cell.cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
nh.cell.kr.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.kr.g_max"S"maximum conductance2e-09
nh.cell.kr.current_name"I_K,r"
nh.cell.naca.trans.n"1"stoichiometric ratio of ion transportnh.cell.naca.n_ca
nh.cell.naca.trans.zvalence of ion2
nh.cell.naca.con.c_const"mol/m3"fixed concentrationnh.cell.ca_ex
nh.cell.naca.con.vol"m3"volume of the compartment1.0
nh.cell.naca.n_ca"1"stoichiometric ratio of transport-2.0
nh.cell.naca.current_name"I_NaCa"
nh.cell.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
nh.cell.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
nh.cell.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
nh.cell.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
nh.cell.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
nh.cell.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
nh.cell.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
nh.cell.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
nh.cell.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
nh.cell.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
nh.cell.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
nh.cell.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
nh.cell.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
nh.cell.naca.FoRThelper variable to simplify equations11604.52214706721 / nh.cell.temp
nh.cell.nak.current_name"I_NaK"
nh.cell.nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.97e-10
nh.cell.nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nh.cell.nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
nh.cell.l2.c"F"membrane capacitance4e-11
nh.cell.l2.v_init"V"initial potential (from short initial stimulation)-0.09
nh.cell.l2.use_initdetermines whether initial value for v is usedtrue
nh.cell.kir.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.kir.g_max"S"maximum conductance1.5e-08
nh.cell.kir.current_name"I_K1"
nh.cell.kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (nh.cell.temp * 8.3144598)
nh.cell.kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
nh.cell.na.ion_ex"mol/m3"extracellular concentration of ionnh.cell.na_ex
nh.cell.na.ion_p"m3/(s.m2)"permeability of ionnh.cell.na_p
nh.cell.na.ion_zvalence of ion1
nh.cell.na.current_name"I_Na"
nh.cell.to.v_eq"V"equilibrium potentialnh.cell.v_k
nh.cell.to.g_max"S"maximum conductance1.4e-08
nh.cell.to.current_name"I_to"
nh.cell.cell_type"NH"
nh.cell.ca_sub.c_const"mol/m3"fixed concentration0.0001
nh.cell.ca_sub.vol"m3"volume of the compartmentnh.cell.v_sub
nh.cc.d_hold"s"holding period0.3
nh.cc.d_pulse"s"pulse period0.001
nh.cc.i_hold"A"current during holding period0.0
an.cell.na.ion_in"mol/m3"intracellular concentration of ionan.cell.na_in
an.cell.bg.g"S"ion conductancean.cell.bg.g_max
nh.cell.na.ion_in"mol/m3"intracellular concentration of ionnh.cell.na_in
nh.cell.bg.g"S"ion conductancenh.cell.bg.g_max
n.cell.bg.g"S"ion conductancen.cell.bg.g_max

Tests for Ca2+ handling

InaMo.Examples.ComponentTests.CaBuffer

NOTE: This model does not represent any meaningful experiment, but is only used to find errors and unexpected changes in the simulation output of the tested component.

To produce unit test figure, plot ca_cyto.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: just large enough to see some change in variables
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaBuffer "unit test for buffer model"
  // uses values for TC in AN cell from InaMo
  extends Modelica.Icons.Example;
  InaMo.Concentrations.Basic.Buffer tc(f_start = 0.02359, n_tot = 0.031 * v_cyto, k = 88.8e3 / v_cyto, kb = 0.446e3, vol = v_cyto) "troponin-Ca";
  InaMo.Concentrations.Basic.Compartment ca_cyto(c_start = 0.1206e-3, vol = v_cyto) "Ca2+ in cytosol";
  parameter SI.Volume v_cyto = 1.9792021E-15 "volume of cytosol (value for AN cell)";
equation
  connect(tc.site, ca_cyto.substance);
  annotation(
    Documentation(info = "<html>
    <p>NOTE: This model does not represent any meaningful experiment, but is
    only used to find errors and unexpected changes in the simulation output
    of the tested component.</p>
    <p>To produce unit test figure, plot <code>ca_cyto.con</code> against
    time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: just large enough to see some change in variables</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"),
    experiment(StartTime = 0, StopTime = 0.5, Tolerance = 1e-6, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "ca_cyto\\.con"));
end CaBuffer;
  1. ca_cyto.con ca_cyto.substance.amount / ca_cyto.vol
  2. tc.free.con tc.free.substance.amount / tc.free.vol
  3. Within group tc (prefix _ indicates shortened variable name)
    1. Within group assoc (prefix _ indicates shortened variable name)
      1. tc.site.rate _k ca_cyto.substance.amount tc.free.substance.amount _kb tc.occupied.substance.amount
      2. ca_cyto.substance.amount tc.site.rate
      3. tc.free.substance.amount tc.site.rate
    2. Within group occupied (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount tc.site.rate

Functions:

nameunitlabelvalue
ca_cyto.con"mol/m3"concentration of substance in compartment
ca_cyto.substance.amount"mol"amount of substance
tc.occupied.con"mol/m3"concentration of substance in compartment
tc.occupied.substance.amount"mol"amount of substance
tc.free.con"mol/m3"concentration of substance in compartment
tc.free.substance.amount"mol"amount of substance
tc.site.rate"mol/s"molar flow rate of substance
tc.n_tot"mol"total amount of buffer0.031 * v_cyto
tc.f_start"1"initial value for f0.02359
tc.k"mol-1s-1"association constant88800.0 / v_cyto
tc.kb"s-1"dissociation constant446.0
tc.vol"m3"volume of compartment in which buffer residesv_cyto
tc.assoc.k"mol-1s-1"association constanttc.k
tc.assoc.kb"s-1"dissociation constanttc.kb
tc.free.vol"m3"volume of the compartmenttc.vol
tc.free.c_start"mol/m3"initial value of concentration(1.0 - tc.f_start) * tc.n_tot / tc.vol
tc.occupied.vol"m3"volume of the compartmenttc.vol
tc.occupied.c_start"mol/m3"initial value of concentrationtc.f_start * tc.n_tot / tc.vol
ca_cyto.vol"m3"volume of the compartmentv_cyto
ca_cyto.c_start"mol/m3"initial value of concentration0.0001206
v_cyto"m3"volume of cytosol (value for AN cell)1.9792021e-15

InaMo.Examples.ComponentTests.CaBuffer2

NOTE: This model does not represent any meaningful experiment, but is only used to find errors and unexpected changes in the simulation output of the tested component.

To produce unit test figure, plot ca_cyto.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: just large enough to see some change in variables
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaBuffer2 "unit test for Buffer2"
  // uses values for TMC and TMM in AN cell from InaMo
  extends Modelica.Icons.Example;
  InaMo.Concentrations.Basic.Buffer2 tm(n_tot = 0.062 * v_cyto, vol = v_cyto, f_a_start = 0.3667, k_a = 227.7e3 / v_cyto, kb_a = 0.00751e3, f_b_start = 0.5594, k_b = 2.277e3 / v_cyto, kb_b = 0.751e3) "Troponin-Mg";
  InaMo.Concentrations.Basic.Compartment ca_cyto(c_start = 0.1206e-3, vol = v_cyto) "Ca2+ in cytosol";
  InaMo.Concentrations.Basic.ConstantConcentration mg(c_const = 2.5, vol = v_cyto) "Mg2+ in cytosol";
  parameter SI.Volume v_cyto = 1.9792021E-15 "volume of cytosol (value for AN cell)";
equation
  connect(tm.site_a, ca_cyto.substance);
  connect(tm.site_b, mg.substance);
  annotation(
    Documentation(info = "<html>
    <p>NOTE: This model does not represent any meaningful experiment, but is
    only used to find errors and unexpected changes in the simulation output
    of the tested component.</p>
    <p>To produce unit test figure, plot <code>ca_cyto.con</code> against
    time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: just large enough to see some change in variables</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"),
    experiment(StartTime = 0, StopTime = 0.5, Tolerance = 1e-6, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "ca_cyto\\.con"));
end CaBuffer2;
  1. ca_cyto.con ca_cyto.substance.amount / ca_cyto.vol
  2. Within group tm (prefix _ indicates shortened variable name)
    1. _site_b.rate_assoc_b.k mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
    2. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
    3. Within group assoc_a (prefix _ indicates shortened variable name)
      1. tm.site_a.rate _k ca_cyto.substance.amount tm.free.substance.amount _kb tm.occupied_a.substance.amount
      2. ca_cyto.substance.amount tm.site_a.rate
    4. Within group free (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount_substance.rate
    5. Within group occupied_a (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount tm.site_a.rate
    6. Within group occupied_b (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount tm.site_b.rate

Functions:

nameunitlabelvalue
ca_cyto.con"mol/m3"concentration of substance in compartment
ca_cyto.substance.amount"mol"amount of substance
tm.occupied_b.con"mol/m3"concentration of substance in compartment
tm.occupied_b.substance.amount"mol"amount of substance
tm.occupied_a.con"mol/m3"concentration of substance in compartment
tm.occupied_a.substance.amount"mol"amount of substance
tm.free.con"mol/m3"concentration of substance in compartment
tm.free.substance.rate"mol/s"molar flow rate of substance
tm.free.substance.amount"mol"amount of substance
tm.site_b.rate"mol/s"molar flow rate of substance
tm.site_a.rate"mol/s"molar flow rate of substance
mg.substance.amount"mol"amount of substancemg.c_const * mg.vol
tm.n_tot"mol"total amount of buffer0.062 * v_cyto
tm.f_a_start"1"initial value for f0.3667
tm.f_b_start"1"initial value for f0.5594
tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / v_cyto
tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / v_cyto
tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
tm.vol"m3"volume of compartment in which buffer residesv_cyto
tm.assoc_a.k"mol-1s-1"association constanttm.k_a
tm.assoc_a.kb"s-1"dissociation constanttm.kb_a
tm.assoc_b.k"mol-1s-1"association constanttm.k_b
tm.assoc_b.kb"s-1"dissociation constanttm.kb_b
tm.free.vol"m3"volume of the compartmenttm.vol
tm.free.c_start"mol/m3"initial value of concentration(1.0 - (tm.f_a_start + tm.f_b_start)) * tm.n_tot / tm.vol
tm.occupied_a.vol"m3"volume of the compartmenttm.vol
tm.occupied_a.c_start"mol/m3"initial value of concentrationtm.f_a_start * tm.n_tot / tm.vol
tm.occupied_b.vol"m3"volume of the compartmenttm.vol
tm.occupied_b.c_start"mol/m3"initial value of concentrationtm.f_b_start * tm.n_tot / tm.vol
ca_cyto.vol"m3"volume of the compartmentv_cyto
ca_cyto.c_start"mol/m3"initial value of concentration0.0001206
mg.c_const"mol/m3"fixed concentration2.5
mg.vol"m3"volume of the compartmentv_cyto
v_cyto"m3"volume of cytosol (value for AN cell)1.9792021e-15

InaMo.Examples.ComponentTests.CaDiffusion

NOTE: This model does not represent any meaningful experiment, but is only used to find errors and unexpected changes in the simulation output of the tested component.

To produce unit test figure, plot ca_cyto.con and ca_sub.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: just large enough to see some change in variables
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaDiffusion "unit test for Diffusion"
  // uses values for sub_cyto in AN cell
  extends Modelica.Icons.Example;
  InaMo.Concentrations.Basic.Diffusion sub_cyto(vol_src = v_sub, vol_dst = v_cyto, tau = 0.04e-3) "diffusion from subspace into cytosol";
  InaMo.Concentrations.Basic.Compartment ca_sub(c_start = 0.06397e-3, vol = v_sub) "Ca2+ in \"fuzzy\" subspace";
  InaMo.Concentrations.Basic.Compartment ca_cyto(c_start = 0.1206e-3, vol = v_cyto) "Ca2+ in cytosol";
  parameter SI.Volume v_sub = 4.398227E-17 "volume of \"fuzzy\" subspace (value for AN cell)";
  parameter SI.Volume v_cyto = 1.9792021E-15 "volume of cytosol (value for AN cell)";
equation
  connect(ca_sub.substance, sub_cyto.src);
  connect(sub_cyto.dst, ca_cyto.substance);
  annotation(
    experiment(StartTime = 0, StopTime = 0.005, Tolerance = 1e-6, Interval = 1e-6),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "ca_(cyto|sub)\\.con"),
    Documentation(info = "<html>
    <p>NOTE: This model does not represent any meaningful experiment, but is
    only used to find errors and unexpected changes in the simulation output
    of the tested component.</p>
    <p>To produce unit test figure, plot <code>ca_cyto.con</code> and
    <code>ca_sub.con</code> against time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: just large enough to see some change in variables</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"));
end CaDiffusion;
  1. ca_sub.con ca_sub.substance.amount / ca_sub.vol
  2. Within group ca_cyto (prefix _ indicates shortened variable name)
    1. _con_substance.amount/_vol
    2. _substance.amount sub_cyto.rate
  3. Within group sub_cyto (prefix _ indicates shortened variable name)
    1. ca_sub.substance.amount _rate
    2. _rate_coeff( ca_sub.substance.amount /_vol_src ca_cyto.substance.amount /_vol_dst)_vol_trans

Functions:

nameunitlabelvalue
ca_cyto.con"mol/m3"concentration of substance in compartment
ca_cyto.substance.amount"mol"amount of substance
ca_sub.con"mol/m3"concentration of substance in compartment
ca_sub.substance.amount"mol"amount of substance
sub_cyto.rate"mol/s"rate of change in substance amount
sub_cyto.coeff"1/s"coefficient of transport1.0 / sub_cyto.tau
sub_cyto.vol_src"m3"volume of source compartmentv_sub
sub_cyto.vol_dst"m3"volume of destination compartmentv_cyto
sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(sub_cyto.vol_src, sub_cyto.vol_dst)
sub_cyto.tau"s"time constant of diffusion4e-05
ca_sub.vol"m3"volume of the compartmentv_sub
ca_sub.c_start"mol/m3"initial value of concentration6.397e-05
ca_cyto.vol"m3"volume of the compartmentv_cyto
ca_cyto.c_start"mol/m3"initial value of concentration0.0001206
v_sub"m3"volume of "fuzzy" subspace (value for AN cell)4.398227e-17
v_cyto"m3"volume of cytosol (value for AN cell)1.9792021e-15

InaMo.Examples.ComponentTests.CaHandlingApprox

This experiment approximates the behavior of the Ca2+ concentration in InaMo.Cells.Atrioventricular.NCell during a spontaneous action potential.

In order to examine the behavior of InaMo.Concentrations.Atrioventricular.CaHandling in isolation, dummy currents are defined as a rough approximation of I_Ca,L and I_NaCa during a spontaneous AP.

To produce unit test figure, plot ca.sub.con, ca.cyto.con, ca.jsr.con and ca.nsr.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: large enough to observe response to approximated action potential
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaHandlingApprox "unit test for CaHandling with approximated currents"
  extends Modelica.Icons.Example;
  import InaMo.Functions.Fitting.gaussianAmp;

  model DummyCaL "dummy model replacing I_Ca,L"
    extends InaMo.Concentrations.Interfaces.TransmembraneCaFlow(n_ca = 1);
    SI.Current i = gaussianAmp(time, y_min = 0, y_max = -3e-10, x0 = 0.2, sigma = 3.54e-3) + gaussianAmp(time, y_min = 0, y_max = -1e-10, x0 = 0.23, sigma = 23.6e-3) + gaussianAmp(time, y_min = 0, y_max = -1e-10, x0 = -0.1, sigma = 118e-3);
    inner SI.Current i_ion = i;
  end DummyCaL;

  model DummyNaCa "dummy model replacing I_NaCa"
    extends InaMo.Concentrations.Interfaces.TransmembraneCaFlow(n_ca = -2);
    SI.Current i = gaussianAmp(time, y_min = -0.5e-11, y_max = -4e-11, x0 = 0.2, sigma = 3.54e-3) + gaussianAmp(time, y_min = -0.5e-11, y_max = 0.3e-11, x0 = 0.23, sigma = 14.1e-3) + gaussianAmp(time, y_min = 0, y_max = -0.5e-10, x0 = -0.1, sigma = 118e-3);
    inner SI.Current i_ion = i;
  end DummyNaCa;

  DummyCaL cal "replacement for I_Ca,L" annotation(
    Placement(transformation(extent = {{-17, 31}, {17, 65}})));
  DummyNaCa naca "replacement for I_NaCa" annotation(
    Placement(transformation(extent = {{-65, 31}, {-31, 65}})));
  InaMo.Concentrations.Atrioventricular.CaHandling ca(cyto.c_start = 0.3623e-3, sub.c_start = 0.2294e-3, jsr.c_start = 0.08227, nsr.c_start = 1.146, tc.f_start = 0.6838, tm.f_a_start = 0.6192, tm.f_b_start = 0.3363, cm_cyto.f_start = 0.1336, cm_sub.f_start = 0.08894, cq.f_start = 0.08736, cm_sl.f_start = 4.764e-5, jsr_sub.p = 1500) "Ca2+ handling with same parameter settings as in NCell" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  inner parameter SI.Volume v_sub = 3.1887126E-17 "volume of \"fuzzy\" subspace (value from C++ for N-cell)";
  inner parameter SI.Volume v_cyto = 1.43492067E-15 "volume of cytosol (value from C++ for N-cell)";
  inner parameter SI.Volume v_nsr = 3.698906616E-17 "volume of network SR (value from C++ for N-cell)";
  inner parameter SI.Volume v_jsr = 3.82645512E-18 "volume of junctional SR (value from C++ for N-cell)";
  inner parameter SI.Concentration ca_ex = 0 "extracellular Ca2+ concentration (value not used in this simulation)";
equation
  connect(cal.ca, ca.ca_sub) annotation(
    Line(points = {{6, 32}, {6, 32}, {6, 0}, {18, 0}, {18, 0}}));
  connect(naca.ca, ca.ca_sub) annotation(
    Line(points = {{-42, 32}, {-42, 32}, {-42, 0}, {18, 0}, {18, 0}}));
  annotation(
    experiment(StartTime = 0, StopTime = 0.5, Tolerance = 1e-7, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "(cal|naca)\\.i|ca\\.(sub|cyto|jsr|nsr)\\.con"),
    Documentation(info = "<html>
    <p>This experiment approximates the behavior of the Ca2+ concentration in
    InaMo.Cells.Atrioventricular.NCell during a spontaneous action potential.
    </p>
    <p>In order to examine the behavior of
    InaMo.Concentrations.Atrioventricular.CaHandling in isolation, dummy
    currents are defined as a rough approximation of I_Ca,L and I_NaCa during
    a spontaneous AP.</p>
    <p>To produce unit test figure, plot <code>ca.sub.con</code>,
    <code>ca.cyto.con</code>, <code>ca.jsr.con</code> and
    <code>ca.nsr.con</code> against time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: large enough to observe response to approximated action potential</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"));
end CaHandlingApprox;
  1. naca.i_ion gaussianAmp( time , -5e-12 , -4e-11 , 0.2 , 0.00354 )+gaussianAmp( time , -5e-12 , 3e-12 , 0.23 , 0.0141 )+gaussianAmp( time , 0.0 , -5e-11 , -0.1 , 0.118 )
  2. cal.i_ion gaussianAmp( time , 0.0 , -3e-10 , 0.2 , 0.00354 )+gaussianAmp( time , 0.0 , -1e-10 , 0.23 , 0.0236 )+gaussianAmp( time , 0.0 , -1e-10 , -0.1 , 0.118 )
  3. naca.trans.rate 1.03642695739058e-05 naca.trans.n naca.i_ion /( naca.trans.z )
  4. cal.trans.rate 1.03642695739058e-05 cal.trans.n cal.i_ion /( cal.trans.z )
  5. ca.ca_sub.rate + naca.trans.rate + cal.trans.rate 0.0
  6. Within group ca (prefix _ indicates shortened variable name)
    1. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
    2. _cq.free.con_cq.free.substance.amount/_cq.free.vol
    3. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
    4. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
    5. _tc.free.con_tc.free.substance.amount/_tc.free.vol
    6. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
    7. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
    8. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
    9. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
    10. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
    11. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
    12. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
    13. Within group cm_cyto (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_cyto.site.rate _k ca.cyto.substance.amount ca.cm_cyto.free.substance.amount _kb ca.cm_cyto.occupied.substance.amount
        2. ca.cm_cyto.free.substance.amount ca.cm_cyto.site.rate
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.cm_cyto.site.rate
    14. Within group cm_sl (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sl.site.rate _k ca.sub.substance.amount ca.cm_sl.free.substance.amount _kb ca.cm_sl.occupied.substance.amount
        2. ca.cm_sl.free.substance.amount ca.cm_sl.site.rate
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.cm_sl.site.rate
    15. Within group cm_sub (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sub.site.rate _k ca.sub.substance.amount ca.cm_sub.free.substance.amount _kb ca.cm_sub.occupied.substance.amount
        2. ca.cm_sub.free.substance.amount ca.cm_sub.site.rate
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.cm_sub.site.rate
    16. Within group cq (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cq.site.rate _k ca.jsr.substance.amount ca.cq.free.substance.amount _kb ca.cq.occupied.substance.amount
        2. ca.cq.free.substance.amount ca.cq.site.rate
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.cq.site.rate
    17. Within group cyto (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount_substance.rate
    18. Within group jsr (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount_substance.rate
    19. Within group jsr_sub (prefix _ indicates shortened variable name)
      1. _rate_coeff( ca.jsr.substance.amount /_vol_src ca.sub.substance.amount /_vol_dst)_vol_trans
      2. _coeff_phillLangmuir( ca.sub.substance.amount /_vol_dst,_ka,_n)
    20. Within group nsr (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount_substance.rate
    21. Within group sub (prefix _ indicates shortened variable name)
      1. _con_substance.amount/_vol
      2. _substance.amount_substance.rate
    22. Within group tc (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.tc.site.rate _k ca.cyto.substance.amount ca.tc.free.substance.amount _kb ca.tc.occupied.substance.amount
        2. ca.tc.free.substance.amount ca.tc.site.rate
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.tc.site.rate
    23. Within group tm (prefix _ indicates shortened variable name)
      1. _site_b.rate_assoc_b.k ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
      2. _site_a.rate_assoc_a.k ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
      3. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
      4. Within group free (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount_substance.rate
      5. Within group occupied_a (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.tm.site_a.rate
      6. Within group occupied_b (prefix _ indicates shortened variable name)
        1. _con_substance.amount/_vol
        2. _substance.amount ca.tm.site_b.rate

Functions:

function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function gaussianAmp "gaussian function with freely adjustable amplitude and offset"
  input Real x "input value";
  input Real y_min = 0.0 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 1.0 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = 0.0 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 1.0 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end gaussianAmp;
nameunitlabelvalue
ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sl.occupied.substance.amount"mol"amount of substance
ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
ca.cm_sl.free.substance.amount"mol"amount of substance
ca.cm_sl.site.rate"mol/s"molar flow rate of substance
ca.cq.occupied.con"mol/m3"concentration of substance in compartment
ca.cq.occupied.substance.amount"mol"amount of substance
ca.cq.free.con"mol/m3"concentration of substance in compartment
ca.cq.free.substance.amount"mol"amount of substance
ca.cq.site.rate"mol/s"molar flow rate of substance
ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sub.occupied.substance.amount"mol"amount of substance
ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
ca.cm_sub.free.substance.amount"mol"amount of substance
ca.cm_sub.site.rate"mol/s"molar flow rate of substance
ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.occupied.substance.amount"mol"amount of substance
ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.free.substance.amount"mol"amount of substance
ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_b.substance.amount"mol"amount of substance
ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_a.substance.amount"mol"amount of substance
ca.tm.free.con"mol/m3"concentration of substance in compartment
ca.tm.free.substance.rate"mol/s"molar flow rate of substance
ca.tm.free.substance.amount"mol"amount of substance
ca.tm.site_b.rate"mol/s"molar flow rate of substance
ca.tm.site_a.rate"mol/s"molar flow rate of substance
ca.tc.occupied.con"mol/m3"concentration of substance in compartment
ca.tc.occupied.substance.amount"mol"amount of substance
ca.tc.free.con"mol/m3"concentration of substance in compartment
ca.tc.free.substance.amount"mol"amount of substance
ca.tc.site.rate"mol/s"molar flow rate of substance
ca.jsr_sub.coeff"1/s"coefficient of transport
ca.jsr_sub.rate"mol/s"rate of change in substance amount
ca.nsr_jsr.rate"mol/s"rate of change in substance amount
ca.cyto_nsr.rate"mol/s"rate of change in substance amount
ca.sub_cyto.rate"mol/s"rate of change in substance amount
ca.nsr.con"mol/m3"concentration of substance in compartment
ca.nsr.substance.rate"mol/s"molar flow rate of substance
ca.nsr.substance.amount"mol"amount of substance
ca.jsr.con"mol/m3"concentration of substance in compartment
ca.jsr.substance.rate"mol/s"molar flow rate of substance
ca.jsr.substance.amount"mol"amount of substance
ca.cyto.con"mol/m3"concentration of substance in compartment
ca.cyto.substance.rate"mol/s"molar flow rate of substance
ca.cyto.substance.amount"mol"amount of substance
ca.sub.con"mol/m3"concentration of substance in compartment
ca.sub.substance.rate"mol/s"molar flow rate of substance
ca.sub.substance.amount"mol"amount of substance
ca.ca_sub.rate"mol/s"molar flow rate of substance
naca.i_ion"A"
naca.trans.rate"mol/s"rate of change in substance amount
cal.i_ion"A"
cal.trans.rate"mol/s"rate of change in substance amount
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
ca.mg.substance.amount"mol"amount of substanceca.mg.c_const * ca.mg.vol
ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / ca.sub_cyto.tau
ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / ca.nsr_jsr.tau
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
ca.cm_tot"mol/m3"total concentration of calmodulin0.045
ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
ca.mg.c_const"mol/m3"fixed concentration2.5
ca.mg.vol"m3"volume of the compartmentv_cyto
ca.sub.vol"m3"volume of the compartmentv_sub
ca.sub.c_start"mol/m3"initial value of concentration0.0002294
ca.cyto.vol"m3"volume of the compartmentv_cyto
ca.cyto.c_start"mol/m3"initial value of concentration0.0003623
ca.jsr.vol"m3"volume of the compartmentv_jsr
ca.jsr.c_start"mol/m3"initial value of concentration0.08227
ca.nsr.vol"m3"volume of the compartmentv_nsr
ca.nsr.c_start"mol/m3"initial value of concentration1.146
ca.sub_cyto.vol_src"m3"volume of source compartmentca.sub.vol
ca.sub_cyto.vol_dst"m3"volume of destination compartmentca.cyto.vol
ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.sub_cyto.vol_src, ca.sub_cyto.vol_dst)
ca.sub_cyto.tau"s"time constant of diffusion4e-05
ca.cyto_nsr.current_name"SERCA"
ca.cyto_nsr.vol_src"m3"volume of source compartmentca.cyto.vol
ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * v_nsr
ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
ca.nsr_jsr.vol_src"m3"volume of source compartmentca.nsr.vol
ca.nsr_jsr.vol_dst"m3"volume of destination compartmentca.jsr.vol
ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.nsr_jsr.vol_src, ca.nsr_jsr.vol_dst)
ca.nsr_jsr.tau"s"time constant of diffusion0.06
ca.jsr_sub.vol_src"m3"volume of source compartmentca.jsr.vol
ca.jsr_sub.vol_dst"m3"volume of destination compartmentca.sub.vol
ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.jsr_sub.vol_src, ca.jsr_sub.vol_dst)
ca.jsr_sub.current_name"RyR"
ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1500.0
ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
ca.jsr_sub.n"1"Hill coefficient2.0
ca.tc.n_tot"mol"total amount of bufferca.tc_tot * v_cyto
ca.tc.f_start"1"initial value for f0.6838
ca.tc.k"mol-1s-1"association constant88800.0 / v_cyto
ca.tc.kb"s-1"dissociation constant446.0
ca.tc.vol"m3"volume of compartment in which buffer resides1.0
ca.tc.assoc.k"mol-1s-1"association constantca.tc.k
ca.tc.assoc.kb"s-1"dissociation constantca.tc.kb
ca.tc.free.vol"m3"volume of the compartmentca.tc.vol
ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - ca.tc.f_start) * ca.tc.n_tot / ca.tc.vol
ca.tc.occupied.vol"m3"volume of the compartmentca.tc.vol
ca.tc.occupied.c_start"mol/m3"initial value of concentrationca.tc.f_start * ca.tc.n_tot / ca.tc.vol
ca.tm.n_tot"mol"total amount of bufferca.tmc_tot * v_cyto
ca.tm.f_a_start"1"initial value for f0.6192
ca.tm.f_b_start"1"initial value for f0.3363
ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / v_cyto
ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / v_cyto
ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
ca.tm.vol"m3"volume of compartment in which buffer residesv_cyto
ca.tm.assoc_a.k"mol-1s-1"association constantca.tm.k_a
ca.tm.assoc_a.kb"s-1"dissociation constantca.tm.kb_a
ca.tm.assoc_b.k"mol-1s-1"association constantca.tm.k_b
ca.tm.assoc_b.kb"s-1"dissociation constantca.tm.kb_b
ca.tm.free.vol"m3"volume of the compartmentca.tm.vol
ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (ca.tm.f_a_start + ca.tm.f_b_start)) * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_a.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationca.tm.f_a_start * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_b.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationca.tm.f_b_start * ca.tm.n_tot / ca.tm.vol
ca.cm_cyto.n_tot"mol"total amount of bufferca.cm_tot * v_cyto
ca.cm_cyto.f_start"1"initial value for f0.1336
ca.cm_cyto.k"mol-1s-1"association constant227700.0 / v_cyto
ca.cm_cyto.kb"s-1"dissociation constant542.0
ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_cyto.assoc.k"mol-1s-1"association constantca.cm_cyto.k
ca.cm_cyto.assoc.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_cyto.free.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_cyto.f_start) * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_cyto.occupied.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationca.cm_cyto.f_start * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_sub.n_tot"mol"total amount of bufferca.cm_tot * v_sub
ca.cm_sub.f_start"1"initial value for f0.08894000000000001
ca.cm_sub.k"mol-1s-1"association constantca.cm_cyto.k * v_cyto / v_sub
ca.cm_sub.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sub.assoc.k"mol-1s-1"association constantca.cm_sub.k
ca.cm_sub.assoc.kb"s-1"dissociation constantca.cm_sub.kb
ca.cm_sub.free.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sub.f_start) * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cm_sub.occupied.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationca.cm_sub.f_start * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cq.n_tot"mol"total amount of bufferca.cq_tot * v_jsr
ca.cq.f_start"1"initial value for f0.08735999999999999
ca.cq.k"mol-1s-1"association constant534.0 / v_jsr
ca.cq.kb"s-1"dissociation constant445.0
ca.cq.vol"m3"volume of compartment in which buffer resides1.0
ca.cq.assoc.k"mol-1s-1"association constantca.cq.k
ca.cq.assoc.kb"s-1"dissociation constantca.cq.kb
ca.cq.free.vol"m3"volume of the compartmentca.cq.vol
ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cq.f_start) * ca.cq.n_tot / ca.cq.vol
ca.cq.occupied.vol"m3"volume of the compartmentca.cq.vol
ca.cq.occupied.c_start"mol/m3"initial value of concentrationca.cq.f_start * ca.cq.n_tot / ca.cq.vol
ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
ca.cm_sl.n_tot"mol"total amount of bufferca.cm_sl_tot * v_sub
ca.cm_sl.f_start"1"initial value for f4.764e-05
ca.cm_sl.k"mol-1s-1"association constant115.0 / v_sub
ca.cm_sl.kb"s-1"dissociation constant1000.0
ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sl.assoc.k"mol-1s-1"association constantca.cm_sl.k
ca.cm_sl.assoc.kb"s-1"dissociation constantca.cm_sl.kb
ca.cm_sl.free.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sl.f_start) * ca.cm_sl.n_tot / ca.cm_sl.vol
ca.cm_sl.occupied.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationca.cm_sl.f_start * ca.cm_sl.n_tot / ca.cm_sl.vol
v_sub"m3"volume of "fuzzy" subspace (value from C++ for N-cell)3.1887126e-17
v_cyto"m3"volume of cytosol (value from C++ for N-cell)1.43492067e-15
v_nsr"m3"volume of network SR (value from C++ for N-cell)3.698906616e-17
v_jsr"m3"volume of junctional SR (value from C++ for N-cell)3.82645512e-18
ca_ex"mol/m3"extracellular Ca2+ concentration (value not used in this simulation)0.0

InaMo.Examples.ComponentTests.CaRyanodineReceptor

NOTE: This model does not represent any meaningful experiment, but is only used to find errors and unexpected changes in the simulation output of the tested component.

To produce unit test figure, plot ca_jsr.con and ca_sub.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: just large enough to see some change in variables
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaRyanodineReceptor "unit test for RyanodineReceptor"
  // uses values for jsr_sub in AN cell
  extends Modelica.Icons.Example;
  InaMo.Concentrations.Atrioventricular.RyanodineReceptor jsr_sub(vol_src = v_jsr, vol_dst = v_sub, p = 5e3, ka = 0.0012, n = 2) "ryanodine receptor";
  InaMo.Concentrations.Basic.Compartment ca_jsr(c_start = 0.4273, vol = v_jsr) "Ca2+ in junctional SR";
  InaMo.Concentrations.Basic.Compartment ca_sub(c_start = 0.06397e-3, vol = v_sub) "Ca2+ in \"fuzzy\" subspace";
  parameter SI.Volume v_jsr = 5.2778723E-18 "volume of junctional SR (value for AN cell)";
  parameter SI.Volume v_sub = 4.398227E-17 "volume of \"fuzzy\" subspace (value for AN cell)";
equation
  connect(ca_jsr.substance, jsr_sub.src);
  connect(jsr_sub.dst, ca_sub.substance);
  annotation(
    Documentation(info = "<html>
    <p>NOTE: This model does not represent any meaningful experiment, but is
    only used to find errors and unexpected changes in the simulation output
    of the tested component.</p>
    <p>To produce unit test figure, plot <code>ca_jsr.con</code> and
    <code>ca_sub.con</code> against time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: just large enough to see some change in variables</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"),
    experiment(StartTime = 0, StopTime = 0.002, Tolerance = 1e-8, Interval = 1e-5),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "ca_(jsr|sub)\\.con"));
end CaRyanodineReceptor;
  1. ca_jsr.con ca_jsr.substance.amount / ca_jsr.vol
  2. Within group ca_sub (prefix _ indicates shortened variable name)
    1. _con_substance.amount/_vol
    2. _substance.amount jsr_sub.rate
  3. Within group jsr_sub (prefix _ indicates shortened variable name)
    1. ca_jsr.substance.amount _rate
    2. _rate_coeff( ca_jsr.substance.amount /_vol_src ca_sub.substance.amount /_vol_dst)_vol_trans
    3. _coeff_phillLangmuir( ca_sub.substance.amount /_vol_dst,_ka,_n)

Functions:

function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
nameunitlabelvalue
ca_sub.con"mol/m3"concentration of substance in compartment
ca_sub.substance.amount"mol"amount of substance
ca_jsr.con"mol/m3"concentration of substance in compartment
ca_jsr.substance.amount"mol"amount of substance
jsr_sub.coeff"1/s"coefficient of transport
jsr_sub.rate"mol/s"rate of change in substance amount
jsr_sub.vol_src"m3"volume of source compartmentv_jsr
jsr_sub.vol_dst"m3"volume of destination compartmentv_sub
jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(jsr_sub.vol_src, jsr_sub.vol_dst)
jsr_sub.current_name"RyR"
jsr_sub.p"1/s"rate coefficient (inverse of time constant)5000.0
jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
jsr_sub.n"1"Hill coefficient2.0
ca_jsr.vol"m3"volume of the compartmentv_jsr
ca_jsr.c_start"mol/m3"initial value of concentration0.4273
ca_sub.vol"m3"volume of the compartmentv_sub
ca_sub.c_start"mol/m3"initial value of concentration6.397e-05
v_jsr"m3"volume of junctional SR (value for AN cell)5.2778723e-18
v_sub"m3"volume of "fuzzy" subspace (value for AN cell)4.398227e-17

InaMo.Examples.ComponentTests.CaSERCA

NOTE: This model does not represent any meaningful experiment, but is only used to find errors and unexpected changes in the simulation output of the tested component.

To produce unit test figure, plot ca_cyto.con and ca_nsr.con against time.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: just large enough to see some change in variables
  • Tolerance: default value
  • Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox
  • model parameters: same as in InaMo.Cells.VariableCa.ANCell
model CaSERCA "unit test for SERCAPump"
  // uses values for cyto_nsr in AN cell
  extends Modelica.Icons.Example;
  InaMo.Concentrations.Atrioventricular.SERCAPump cyto_nsr(vol_src = v_cyto, p = 0.005e3 * v_nsr, k = 0.0006) "SERCA pump";
  InaMo.Concentrations.Basic.Compartment ca_nsr(c_start = 1.068, vol = v_nsr) "Ca2+ in network SR";
  InaMo.Concentrations.Basic.Compartment ca_cyto(c_start = 0.1206e-3, vol = v_cyto) "Ca2+ in cytosol";
  parameter SI.Volume v_nsr = 5.10194319E-17 "volume of network SR (value for AN cell)";
  parameter SI.Volume v_cyto = 1.9792021E-15 "volume of cytosol (value for AN cell)";
equation
  connect(ca_cyto.substance, cyto_nsr.src);
  connect(cyto_nsr.dst, ca_nsr.substance);
  annotation(
    Documentation(info = "<html>
    <p>NOTE: This model does not represent any meaningful experiment, but is
    only used to find errors and unexpected changes in the simulation output
    of the tested component.</p>
    <p>To produce unit test figure, plot <code>ca_cyto.con</code> and
    <code>ca_nsr.con</code> against time.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: just large enough to see some change in variables</li>
      <li>Tolerance: default value</li>
      <li>Interval: same as for InaMo.Examples.ComponentTests.CaHandlingApprox</li>
      <li>model parameters: same as in InaMo.Cells.VariableCa.ANCell</li>
    </ul>
  </html>"),
    experiment(StartTime = 0, StopTime = 0.01, Tolerance = 1e-6, Interval = 1e-5),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "ca_(cyto|nsr)\\.con"));
end CaSERCA;
  1. ca_cyto.con ca_cyto.substance.amount / ca_cyto.vol
  2. Within group ca_nsr (prefix _ indicates shortened variable name)
    1. _con_substance.amount/_vol
    2. _substance.amount cyto_nsr.rate
  3. Within group cyto_nsr (prefix _ indicates shortened variable name)
    1. ca_cyto.substance.amount _rate
    2. _rate_pmichaelisMenten( ca_cyto.substance.amount /_vol_src,_k)

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
ca_cyto.con"mol/m3"concentration of substance in compartment
ca_cyto.substance.amount"mol"amount of substance
ca_nsr.con"mol/m3"concentration of substance in compartment
ca_nsr.substance.amount"mol"amount of substance
cyto_nsr.rate"mol/s"rate of change in substance amount
cyto_nsr.current_name"SERCA"
cyto_nsr.vol_src"m3"volume of source compartmentv_cyto
cyto_nsr.p"mol/s"maximum flow rate5.0 * v_nsr
cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
ca_nsr.vol"m3"volume of the compartmentv_nsr
ca_nsr.c_start"mol/m3"initial value of concentration1.068
ca_cyto.vol"m3"volume of the compartmentv_cyto
ca_cyto.c_start"mol/m3"initial value of concentration0.0001206
v_nsr"m3"volume of network SR (value for AN cell)5.10194319e-17
v_cyto"m3"volume of cytosol (value for AN cell)1.9792021e-15

Tests for $I_f$

InaMo.Examples.ComponentTests.HyperpolarizationActivatedIV

To reproduce Figure S4C from Inada 2009, plot vc.is_end against vc.vs_end. It is necessary to use vc.vs_end instead of vc.v_pulse, because cd captures the current density from the previous pulse.

For Figure S4D plot vc.i for 6 seconds following the start of the pulses with amplitude -120 to -60 mV.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -120 mV to -50 mv
  • Tolerance: default value
  • Interval: enough to roughly follow time course of current
  • d_pulse: according to the description of Figure S4 in Inada 2009
  • d_hold: approximately 5 * max(act.tau)
  • l2.C: according to Table S15 in Inada 2009 (N cell model)

We assume the parameter values for the N cell model since I_f is only present in N cells.

NOTE: The plot has a disagreement with Figure S4C in Inada 2009 with current density being slightly lower (more negative) than in the reference, which is odd, since the same data is in perfect agreement with Figure S4D.

model HyperpolarizationActivatedIV "IV relationship of I_f, recreates Figures S4C and S4D from Inada 2009"
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.05, d_hold = 20, d_pulse = 4), v_start = -0.12, v_inc = 0.005);
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.NoACh;
  InaMo.Currents.Atrioventricular.HyperpolarizationActivatedChannel f "I_f" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 29e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, f.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, f.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 404, Tolerance = 1e-6, Interval = 1e-1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(is_end|vs_end|i|v|v_pulse)"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S4C from Inada 2009, plot vc.is_end against
      vc.vs_end.
      It is necessary to use vc.vs_end instead of vc.v_pulse, because cd
      captures the current density from the <i>previous</i> pulse.</p>
      <p>For Figure S4D plot vc.i for 6 seconds following the start of
      the pulses with amplitude -120 to -60 mV.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -120 mV to -50 mv</li>
        <li>Tolerance: default value</li>
        <li>Interval: enough to roughly follow time course of current</li>
        <li>d_pulse: according to the description of Figure S4 in Inada 2009</li>
        <li>d_hold: approximately 5 * max(act.tau)</li>
        <li>l2.C: according to Table S15 in Inada 2009 (N cell model)</li>
      </ul>
      <p>We assume the parameter values for the N cell model since I_f is
      only present in N cells.</p>
      <p>NOTE: The plot has a disagreement with Figure S4C in Inada 2009
      with current density being slightly lower (more negative) than in the
      reference, which is odd, since the same data is in perfect agreement
      with Figure S4D.</p>
    </html>
  "));
end HyperpolarizationActivatedIV;
  1. l2.i +( f.i_ion vc.i ) 0.0
  2. l2.v l2.i / l2.c
  3. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  4. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  5. $whenCondition1 vc.pulse_end
  6. $whenCondition2 vc.pulse_start
  7. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  8. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  9. Within group f (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _i_open_g_max( l2.v _v_eq)
    3. _i_ion_act.n_i_open
    4. _g_act.n_g_max
    5. _act.steadyfsteady( l2.v _act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
    6. _act.tauftau( l2.v , 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _i_n.i
    3. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    4. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    5. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    6. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.08319 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = -73.74631268436578 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function ftau
  input Real x "input value";
  input Real y_min = 0.25 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 2.25 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.07000000000000001 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.0158113883008419 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end ftau;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
f.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
f.act.steadyvalue that n would reach if v_gate was held constant
f.act.n"1"ratio of molecules in open conformation0.002161140405175932
f.g"S"ion conductance
f.i_open"A"i if open_ratio = 1
f.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period20.0
vc.d_pulse"s"pulse period4.0
vc.v_hold"V"voltage during holding period-0.05
v_start"V"start value for pulse amplitude-0.12
v_inc"V"increment for pulse amplitude0.005
use_achfalse
ach"mol/m3"0.0
f.v_eq"V"equilibrium potential-0.03
f.g_max"S"maximum conductance1e-09
f.current_name"I_f"
f.act_shift"V"if use_ach then (-7.2) * InaMo.Functions.Biochemical.hillLangmuir(ach, 1.26e-05, 0.6899999999999999) else 0.0
f.act.shift"V"f.act_shift
l2.c"F"membrane capacitance2.9e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.HyperpolarizationActivatedSteady

To reproduce Figure S4A from Inada 2009, plot act_steady against v. For Figure S4B, plot act_tau against v.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -120 to -40 mV
  • Tolerance: left at default value, since derivatives are not relevant
  • Interval: enough for a smooth plot
model HyperpolarizationActivatedSteady "steady state of I_f, recreates Figures S4A and S4B from Inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.NoACh;
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  InaMo.Currents.Atrioventricular.HyperpolarizationActivatedChannel f "I_f" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  Real act_steady = f.act.steady "steady state of activation gate";
  Real act_tau = f.act.tau "time constant of activation gate";
  SI.Voltage v(start = -0.12, fixed = true);
equation
  vc.v_stim = v;
  der(v) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, f.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, f.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 80, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "act_steady|act_tau|v|vc.v"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S4A from Inada 2009, plot act_steady against v.
      For Figure S4B, plot act_tau against v.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -120 to -40 mV</li>
        <li>Tolerance: left at default value, since derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
      </ul>
    </html>
  "));
end HyperpolarizationActivatedSteady;
  1. vc.n.i +( l2.i f.i_ion ) 0.0
  2. l2.v l2.i / l2.c
  3. Within group f (prefix _ indicates shortened variable name)
    1. _act.n( act_steady _act.n)/ act_tau
    2. _i_open_g_max( l2.v _v_eq)
    3. _i_ion_act.n_i_open
    4. _g_act.n_g_max
    5. act_steady fsteady( l2.v _act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
    6. act_tau ftau( l2.v , 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
  4. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _n.i_i
    3. l2.v 0.001

Functions:

function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.08319 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = -73.74631268436578 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function ftau
  input Real x "input value";
  input Real y_min = 0.25 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 2.25 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.07000000000000001 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.0158113883008419 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end ftau;
nameunitlabelvalue
act_tau"s"time constant of activation gate
act_steadysteady state of activation gate
f.act.n"1"ratio of molecules in open conformation0.002161140405175932
f.g"S"ion conductance
f.i_open"A"i if open_ratio = 1
f.i_ion"A"current used for ion flux
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)-0.12
vc.g.p.v"V"Potential at the pin0.0
use_achfalse
ach"mol/m3"0.0
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
f.v_eq"V"equilibrium potential-0.03
f.g_max"S"maximum conductance1e-09
f.current_name"I_f"
f.act_shift"V"if use_ach then (-7.2) * InaMo.Functions.Biochemical.hillLangmuir(ach, 1.26e-05, 0.6899999999999999) else 0.0
f.act.shift"V"f.act_shift

Tests for $I_{K,1}$

InaMo.Examples.ComponentTests.InwardRectifierLin

To recreate Figure 8 of Lindblad 1996, plot kir.i / i_max against vc.v.

This example uses a linear input current, because I_K,1 is modeled as an immediate current without activation or inactivation kinetics.

The following parameters are taken from Lindblad 1996 and differ from the parameters used by Inada 2009:

  • kir.g_max = 5.088 nS (Table 14, Lindblad 1996)
  • l2.c = 50pF (Table 14, Lindblad 1996)
  • temp = 35 °C (Table 14, Lindblad 1996)
  • kir.Use_vact = false

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -100 to +50 mV
  • Tolerance: default value (previously a value < 1e-9 was required for dassl will to pick up the event for i_max.)
  • Interval: enough for a smooth plot
model InwardRectifierLin "IV relationshio of I_K1, recreates Figure 8 of Lindblad 1996"
  extends Modelica.Icons.Example;
  InaMo.Currents.Atrioventricular.InwardRectifier kir(g_max = 5.088e-9, use_vact = false) "inward rectifier with parameter settings from Lindblad1996" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(c = 5e-11, use_init = false) "lipid bilayer with Lindblad1996 settings" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  inner parameter SI.Temperature temp = SI.Conversions.from_degC(35) "membrane temperature";
  inner parameter SI.Concentration k_ex = 5 "extracellular potassium concentration";
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  discrete SI.Current i_max(start = 0, fixed = true, nominal = 1e-12) "current obtained at peak";
initial equation
  vc.v_stim = -100e-3;
equation
// factor required to push value into range where zero crossing can be detected
  when der(vc.i) * 1e12 < 0 then
    i_max = kir.i;
  end when;
  der(vc.v_stim) = 1e-3;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, kir.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, kir.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 150, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "kir\\.i|i_max|vc\\.v"),
    Documentation(info = "
    <html>
      <p>To recreate Figure 8 of Lindblad 1996, plot kir.i / i_max against
      vc.v.</p>
      <p>This example uses a linear input current, because I_K,1 is modeled
      as an immediate current without activation or inactivation kinetics.</p>
      <p>The following parameters are taken from Lindblad 1996 and differ from
      the parameters used by Inada 2009:</p>
      <ul>
        <li>kir.g_max = 5.088 nS (Table 14, Lindblad 1996)</li>
        <li>l2.c = 50pF (Table 14, Lindblad 1996)</li>
        <li>temp = 35 °C (Table 14, Lindblad 1996)</li>
        <li>kir.Use_vact = false</li>
      </ul>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -100 to +50 mV</li>
        <li>Tolerance: default value (previously a value < 1e-9 was required
          for dassl will to pick up the event for i_max.)</li>
        <li>Interval: enough for a smooth plot</li>
      </ul>
    </html>
  "));
end InwardRectifierLin;
  1. l2.i +( kir.i_ion vc.i ) 0.0
  2. vc.n.i +( l2.i kir.i_ion ) 0.0
  3. vc.v_stim l2.i / l2.c
  4. $whenCondition1 vc.i × 1000000000000.0 < 0.0
  5. Within group kir (prefix _ indicates shortened variable name)
    1. _open_ratio_n_pot 3.0 _voltage_inact.n
    2. _i_open_g_max( vc.v_stim _v_eq)
    3. _i_ion_open_ratio_i_open
    4. _g_open_ratio_g_max
    5. _voltage_inact.nfn( vc.v_stim , 0.0 , 1.0 ,_v_eq 0.0036 , -1.393 _FoRT, 1.0 , 1.0 , 1.0 )
    6. _voltage_act.nfn( vc.v_stim , 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
  6. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _v_stim 0.001

Functions:

function fn
  input Real x "input value";
  input Real y_min = 0.5 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.03 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fn;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
i_max"A"current obtained at peak0.0
vc.i"A"measured membrane current
vc.v_stim"V"input voltage (needs to be defined externally)
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
kir.voltage_act.nratio of molecules in open conformation
kir.voltage_inact.nratio of molecules in open conformation
kir.g"S"ion conductance
kir.i_open"A"i if open_ratio = 1
kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kir.i_ion"A"current used for ion flux
$whenCondition1der(vc.i) * 1000000000000.0 < 0.0
vc.g.p.v"V"Potential at the pin0.0
kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(k_ex, 0.59)
kir.v_eq"V"equilibrium potential-0.0819
kir.g_max"S"maximum conductance5.088e-09
kir.current_name"I_K1"
kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (temp * 8.3144598)
kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)false
l2.c"F"membrane capacitance5e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
temp"K"membrane temperature288.15
k_ex"mol/m3"extracellular potassium concentration5.0

Tests for $I_{Ca,L}$

InaMo.Examples.ComponentTests.LTypeCalciumIV

To reproduce Figure S1E from Inada 2009, plot vc.is_peak against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak captures the peak current from the previous pulse.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -60 mV to 80 mv
  • Tolerance: default value (previously a value < 1e-9 was required for dassl will to pick up the event for i_max.)
  • Interval: enough to roughly follow time course of current
  • d_pulse: according to the description of Figure S1 in Inada 2009
  • d_hold: approximately 5 * max(cal.inact.tau_fast)
  • v_hold: should be -40 mV according to the description of figure S1, but we chose -70 mV as it gives better results for pulses <= -40 mV
  • l2.C: according to Table S15 in Inada 2009

NOTE: We assume parameter values for the NH cell model since the plot for S1H shows that Inada et al. clearly used this model although they stated that the AN cell model was used for Figure S1H. For Figure S1E, however, the parameter value actually makes no difference because the plot shows only normalized current.

model LTypeCalciumIV "IV relationship of I_Ca,L, recreates Figure S1E of Inada 2009"
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.07, d_hold = 5, d_pulse = 0.3), v_start = -0.06, v_inc = 0.005);
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.CaConst;
  extends InaMo.Concentrations.Interfaces.NoACh;
  inner parameter SI.Concentration ca_ex = 0 "extracellular Ca2+ concentration (value not used in this simulation)";
  replaceable InaMo.Currents.Atrioventricular.LTypeCalciumChannel cal(g_max = 21e-9) "calcium channels with parameters from NH model" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Concentrations.Basic.ConstantConcentration ca(vol = v_sub) "calcium concentration that is affected by channel" annotation(
    Placement(transformation(extent = {{-51, -80}, {-17, -46}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 40e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
equation
  connect(ca.substance, cal.ca) annotation(
    Line(points = {{-34, -80}, {-14, -80}, {-14, -30}, {-28, -30}, {-28, -16}, {-28, -16}}));
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, cal.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, cal.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 164, Tolerance = 1e-6, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(is_peak|vs_peak|v|v_pulse)"),
    Documentation(info = "
    <html>
    <p>To reproduce Figure S1E from Inada 2009, plot vc.is_peak against
    vc.vs_peak.
    It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak
    captures the peak current from the <i>previous</i> pulse.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: allow a plot from -60 mV to 80 mv</li>
      <li>Tolerance: default value (previously a value < 1e-9 was required
        for dassl will to pick up the event for i_max.)</li>
      <li>Interval: enough to roughly follow time course of current</li>
      <li>d_pulse: according to the description of Figure S1 in Inada 2009</li>
      <li>d_hold: approximately 5 * max(cal.inact.tau_fast)</li>
      <li>v_hold: should be -40 mV according to the description of figure S1,
      but we chose -70 mV as it gives better results for pulses <= -40 mV</li>
      <li>l2.C: according to Table S15 in Inada 2009</li>
    </ul>
    <p>NOTE: We assume parameter values for the NH cell model since the plot for
    S1H shows that Inada et al. clearly used this model although they stated
    that the AN cell model was used for Figure S1H.
    For Figure S1E, however, the parameter value actually makes no difference
    because the plot shows only normalized current.</p>
    </html>
  "));
end LTypeCalciumIV;
  1. l2.i +( cal.i_ion vc.i ) 0.0
  2. l2.v l2.i / l2.c
  3. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  4. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  5. $whenCondition1 vc.pulse_end
  6. $whenCondition2 vc.pulse_start
  7. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  8. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  9. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total_ach_factor
    6. _i_open_g_max( l2.v _v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tauact.ftau( l2.v , 0.0 )
    11. _inact_slow.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau( l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau( l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _i_n.i
    3. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    4. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    5. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    6. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end act.ftau;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end falpha;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.009992481708450124
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.009992481708450124
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation0.6187190947824258
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
ca.substance.amount"mol"amount of substanceca.c_const * ca.vol
vc.g.p.v"V"Potential at the pin0.0
cal.ach_factorif use_ach then 1.0 - cal.k_ach * InaMo.Functions.Biochemical.michaelisMenten(ach, 9.000000000000001e-05) else 1.0
vc.d_hold"s"holding period5.0
vc.d_pulse"s"pulse period0.3
vc.v_hold"V"voltage during holding period-0.07000000000000001
v_start"V"start value for pulse amplitude-0.06
v_inc"V"increment for pulse amplitude0.005
v_sub"m3"1.0
use_achfalse
ach"mol/m3"0.0
ca_ex"mol/m3"extracellular Ca2+ concentration (value not used in this simulation)0.0
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance2.1e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
ca.c_const"mol/m3"fixed concentration1.0
ca.vol"m3"volume of the compartmentv_sub
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.LTypeCalciumIVN

This example uses the same settings as LTypeCalciumIV, but uses the equations for the N cell model instead of the AN/NH cell models.

To reproduce Figure S1E from Inada 2009, plot vc.is_peak against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak captures the peak current from the previous pulse.

All parameters are set to the same values as in LTypeCalciumIV with the same rationale.

model LTypeCalciumIVN "IV relationship of I_Ca,L, recreates Figure S1E of Inada 2009"
  // FIXME redeclare breaks icon inheritance
  extends LTypeCalciumIV(redeclare InaMo.Currents.Atrioventricular.LTypeCalciumChannelN cal(g_max = 21e-9));
  annotation(
    experiment(StartTime = 0, StopTime = 164, Tolerance = 1e-6, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(is_peak|vs_peak|v|v_pulse)"),
    Documentation(info = "
    <html>
    <p>This example uses the same settings as LTypeCalciumIV, but uses the
    equations for the N cell model instead of the AN/NH cell models.</p>
    <p>To reproduce Figure S1E from Inada 2009, plot vc.is_peak against
    vc.vs_peak.
    It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak
    captures the peak current from the <i>previous</i> pulse.</p>
    <p>All parameters are set to the same values as in LTypeCalciumIV with the
    same rationale.</p>
    </html>
  "));
end LTypeCalciumIVN;
  1. l2.i +( cal.i_ion vc.i ) 0.0
  2. l2.v l2.i / l2.c
  3. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  4. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  5. $whenCondition1 vc.pulse_end
  6. $whenCondition2 vc.pulse_start
  7. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  8. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  9. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total_ach_factor
    6. _i_open_g_max( l2.v _v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
    10. _act.tauact.ftau( l2.v , 0.0 )
    11. _inact_slow.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau( l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau( l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _i_n.i
    3. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    4. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    5. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    6. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0182 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end falpha;
function act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end act.ftau;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.009992481708450124
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.009992481708450124
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation0.9744192116879924
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
ca.substance.amount"mol"amount of substanceca.c_const * ca.vol
vc.g.p.v"V"Potential at the pin0.0
cal.ach_factorif use_ach then 1.0 - cal.k_ach * InaMo.Functions.Biochemical.michaelisMenten(ach, 9.000000000000001e-05) else 1.0
vc.d_hold"s"holding period5.0
vc.d_pulse"s"pulse period0.3
vc.v_hold"V"voltage during holding period-0.07000000000000001
v_start"V"start value for pulse amplitude-0.06
v_inc"V"increment for pulse amplitude0.005
v_sub"m3"1.0
use_achfalse
ach"mol/m3"0.0
ca_ex"mol/m3"extracellular Ca2+ concentration (value not used in this simulation)0.0
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance2.1e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
ca.c_const"mol/m3"fixed concentration1.0
ca.vol"m3"volume of the compartmentv_sub
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.LTypeCalciumSteady

To reproduce Figure S1A and S1B from Inada 2009, plot act_steady and inact_steady against v. For Figure S1C and S1D, plot inact_tau_fast and inact_tau_slow against v.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -80 to 60 mV
  • Tolerance: left at default value, since derivatives are not relevant
  • Interval: enough for a smooth plot
model LTypeCalciumSteady "steady state of I_Ca,L, recreates Figures S1A-S1D from Inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.CaConst;
  extends InaMo.Concentrations.Interfaces.NoACh;
  inner parameter SI.Concentration ca_ex = 0 "extracellular Ca2+ concentration (value not used in this simulation)";
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  InaMo.Currents.Atrioventricular.LTypeCalciumChannel cal "I_Ca,L (AN and NH cells)" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Currents.Atrioventricular.LTypeCalciumChannelN calN "I_Ca,L (N cell)" annotation(
    Placement(transformation(extent = {{-85, -17}, {-51, 17}})));
  InaMo.Concentrations.Basic.ConstantConcentration ca(c_const = 0, vol = 0) "dummy Ca2+ concentration required to avoid underdetermined equation system" annotation(
    Placement(transformation(extent = {{-51, -80}, {-17, -46}})));
  Real act_steady = cal.act.steady "steady state of activation gate (AN and NH cells)";
  Real act_steady_n = calN.act.steady "steady state of activation gate (N cell)";
  SI.Duration act_tau = cal.act.tau "time constant of activation gate";
  Real inact_steady = cal.inact_slow.steady "steady state of inactivation gates";
  SI.Duration inact_tau_fast = cal.inact_fast.tau "time constant of fast inactivation gate";
  SI.Duration inact_tau_slow = cal.inact_slow.tau "time constant of slow inactivation gate";
  SI.Voltage v(start = -0.08, fixed = true) "input voltage";
equation
  vc.v_stim = v;
  der(v) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, cal.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  connect(cal.n, calN.n) annotation(
    Line(points = {{-34, -16}, {-34, -16}, {-34, -40}, {-68, -40}, {-68, -16}, {-68, -16}}, color = {0, 0, 255}));
  connect(vc.p, cal.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(cal.p, calN.p) annotation(
    Line(points = {{-34, 18}, {-34, 18}, {-34, 40}, {-68, 40}, {-68, 18}, {-68, 18}}, color = {0, 0, 255}));
  connect(ca.substance, cal.ca) annotation(
    Line(points = {{-34, -80}, {-12, -80}, {-12, -30}, {-28, -30}, {-28, -16}, {-28, -16}}));
  connect(ca.substance, calN.ca) annotation(
    Line(points = {{-34, -80}, {-62, -80}, {-62, -16}, {-62, -16}}));
  annotation(
    experiment(StartTime = 0, StopTime = 140, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "act_steady|inact_steady|act_steady_n|act_tau|inact_tau_fast|inact_tau_slow|v|vc\\.v"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S1A and S1B from Inada 2009, plot act_steady and
      inact_steady against v.
      For Figure S1C and S1D, plot inact_tau_fast and inact_tau_slow
      against v.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -80 to 60 mV</li>
        <li>Tolerance: left at default value, since derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
      </ul>
    </html>
  "));
end LTypeCalciumSteady;
  1. vc.g.p.i +( vc.i vc.n.i ) 0.0
  2. calN.i_ion + cal.i_ion +( l2.i vc.i ) 0.0
  3. vc.n.i +(( cal.i_ion calN.i_ion ) l2.i ) 0.0
  4. ca.substance.rate + calN.trans.rate + cal.trans.rate 0.0
  5. l2.v l2.i / l2.c
  6. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n( act_steady _act.n)/ act_tau
    3. _inact_slow.n( inact_steady _inact_slow.n)/ inact_tau_slow
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/ inact_tau_fast
    5. _open_ratio_act.n_inact_total_ach_factor
    6. _i_open_g_max( l2.v _v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. act_steady fsteady( l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. act_tau act.ftau( l2.v , 0.0 )
    11. inact_steady fsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. inact_tau_slow inact_fast.ftau( l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. inact_tau_fast inact_fast.ftau( l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  7. Within group calN (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n( act_steady_n _act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total_ach_factor
    6. _i_open_g_max( l2.v _v_eq)
    7. _i_ion_open_ratio_i_open
    8. l2.v 0.001
    9. _g_open_ratio_g_max
    10. act_steady_n fsteady( l2.v , 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
    11. _act.tauact.ftau( l2.v , 0.0 )
    12. _inact_slow.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    13. _inact_slow.tauinact_fast.ftau( l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    14. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    15. _inact_fast.tauinact_fast.ftau( l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    16. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n

Functions:

function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end act.ftau;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end falpha;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
nameunitlabelvalue
inact_tau_slow"s"time constant of slow inactivation gate
inact_tau_fast"s"time constant of fast inactivation gate
inact_steadysteady state of inactivation gates
act_tau"s"time constant of activation gate
act_steady_nsteady state of activation gate (N cell)
act_steadysteady state of activation gate (AN and NH cells)
ca.substance.rate"mol/s"molar flow rate of substance
calN.inact_total
calN.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
calN.inact_fast.steadyvalue that n would reach if v_gate was held constant
calN.inact_fast.nratio of molecules in open conformation0.009992481708450124
calN.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
calN.inact_slow.steadyvalue that n would reach if v_gate was held constant
calN.inact_slow.nratio of molecules in open conformation0.009992481708450124
calN.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
calN.act.nratio of molecules in open conformation0.9744192116879924
calN.trans.rate"mol/s"rate of change in substance amount
calN.g"S"ion conductance
calN.i_open"A"i if open_ratio = 1
calN.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
calN.i_ion"A"current used for ion flux
cal.inact_total
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.009992481708450124
cal.inact_slow.nratio of molecules in open conformation0.009992481708450124
cal.act.nratio of molecules in open conformation0.6187190947824258
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)-0.08
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
calN.con.substance.amount"mol"amount of substancecalN.con.c_const * calN.con.vol
ca.substance.amount"mol"amount of substanceca.c_const * ca.vol
vc.g.p.v"V"Potential at the pin0.0
cal.ach_factorif use_ach then 1.0 - cal.k_ach * InaMo.Functions.Biochemical.michaelisMenten(ach, 9.000000000000001e-05) else 1.0
calN.ach_factorif use_ach then 1.0 - calN.k_ach * InaMo.Functions.Biochemical.michaelisMenten(ach, 9.000000000000001e-05) else 1.0
v_sub"m3"1.0
use_achfalse
ach"mol/m3"0.0
ca_ex"mol/m3"extracellular Ca2+ concentration (value not used in this simulation)0.0
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance1.85e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
calN.v_eq"V"equilibrium potential0.0621
calN.g_max"S"maximum conductance1.85e-08
calN.trans.n"1"stoichiometric ratio of ion transportcalN.n_ca
calN.trans.zvalence of ion2
calN.con.c_const"mol/m3"fixed concentrationca_ex
calN.con.vol"m3"volume of the compartment1.0
calN.n_ca"1"stoichiometric ratio of transport1.0
calN.current_name"I_Ca,L"
calN.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
ca.c_const"mol/m3"fixed concentration0.0
ca.vol"m3"volume of the compartment0.0

InaMo.Examples.ComponentTests.LTypeCalciumStep

This example is required separately from LTypeCalciumIV and LTypeCalciumIVN, because it needs a much more fine grained step size to accurately show the current time course.

To reproduce Figure S1H in Inada 2009 plot vc.i against time.

NOTE: Inada et al. state that they used AN cells for plot S1H, but actual value of peak current suggests that parameters of NH cells were used instead.

NOTE: The x axis of Figure S1H seems to be scaled differently than the measuring strip in the plot suggests. To obtain a good fit, time stamps extracted from the figure have to be multiplied by a scaling factor of 0.75.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow that the steady state is reached both before the step and after the step
  • Tolerance: default value

    Interval: accurately show time course of current
model LTypeCalciumStep "response of I_Ca,L to a step from -40 mV to 10 mV, recreates figure 1H from inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.CaConst;
  extends InaMo.Concentrations.Interfaces.NoACh;
  inner parameter SI.Concentration ca_ex = 0 "extracellular Ca2+ concentration (value not used in this simulation)";
  InaMo.Currents.Atrioventricular.LTypeCalciumChannel cal(g_max = 21e-9) "I_Ca,L" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Concentrations.Basic.ConstantConcentration ca(vol = v_sub) "dummy Ca2+ concentration required to avoid underdetermined equation system" annotation(
    Placement(transformation(extent = {{-51, -80}, {-17, -46}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 40e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc(v_stim = if time < 1 then -0.04 else 0.01) "voltage clamp which changes voltage from 10 mV to -40 mV after 1 second" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, cal.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, cal.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  connect(ca.substance, cal.ca) annotation(
    Line(points = {{-34, -80}, {-14, -80}, {-14, -30}, {-28, -30}, {-28, -16}, {-28, -16}}));
  annotation(
    experiment(StartTime = 0, StopTime = 2, Tolerance = 1e-6, Interval = 1e-4),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.i"),
    Documentation(info = "
    <html>
      <p>This example is required separately from LTypeCalciumIV and
      LTypeCalciumIVN, because it needs a much more fine grained step size to
      accurately show the current time course.</p>
      <p>To reproduce Figure S1H in Inada 2009 plot vc.i against time.</p>
      <p>NOTE: Inada et al. state that they used AN cells for plot S1H, but
      actual value of peak current suggests that parameters of NH cells were
      used instead.</p>
      <p>NOTE: The x axis of Figure S1H seems to be scaled differently than
      the measuring strip in the plot suggests. To obtain a good fit, time
      stamps extracted from the figure have to be multiplied by a scaling
      factor of 0.75.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow that the steady state is reached both
        before the step and after the step</li>
        <p>Tolerance: default value</p
        <li>Interval: accurately show time course of current</li>
      </ul>
    </html>
  "));
end LTypeCalciumStep;
  1. vc.g.p.i +( vc.i vc.n.i ) 0.0
  2. l2.i +( cal.i_ion vc.i ) 0.0
  3. vc.n.i +( l2.i cal.i_ion ) 0.0
  4. l2.v l2.i / l2.c
  5. l2.v ({ -0.04   if   time < 1.0 0.01   otherwise)()
  6. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total_ach_factor
    6. _i_open_g_max( l2.v _v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tauact.ftau( l2.v , 0.0 )
    11. _inact_slow.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau( l2.v , 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau( l2.v , 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n

Functions:

function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end falpha;
function act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end act.ftau;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
nameunitlabelvalue
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.009992481708450124
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.009992481708450124
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation0.6187190947824258
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
ca.substance.amount"mol"amount of substanceca.c_const * ca.vol
vc.g.p.v"V"Potential at the pin0.0
cal.ach_factorif use_ach then 1.0 - cal.k_ach * InaMo.Functions.Biochemical.michaelisMenten(ach, 9.000000000000001e-05) else 1.0
v_sub"m3"1.0
use_achfalse
ach"mol/m3"0.0
ca_ex"mol/m3"extracellular Ca2+ concentration (value not used in this simulation)0.0
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance2.1e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
ca.c_const"mol/m3"fixed concentration1.0
ca.vol"m3"volume of the compartmentv_sub
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

Tests for $I_{K,r}$

InaMo.Examples.ComponentTests.RapidDelayedRectifierIV

To reproduce Figure S3C from Inada 2009, plot vc.is_end against vc.vs_end. To reproduce Figure S3D from Inada 2009, plot vc.is_tail against vc.vs_tail. It is necessary to use vc.vs_end/vc.vs_tail instead of vc.v_pulse, because vc.is_end and vc.is_tail capture the current from the previous pulse.

To reproduce Figure S3E from Inada 2009, plot vc.i against time starting 5 ms before and ending 500ms after the pulses with amplitude -10 mV, 10 mV and 30 mV.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -40 mV to 60 mV
  • Tolerance: default value
  • d_pulse: according to description of Figure S3 in Inada 2009
  • d_hold: approximately 5 * max(inact.tau)
  • v_hold: according to description of Figure S3 in Inada 2009
  • l2.C: according to Table S15 in Inada 2009 (AN cell model)
  • g_max: according to Table S15 in Inada 2009 (AN cell model)

NOTE: IV-curve in S3C seem to be shifted by 5 mV towards lower voltages. This could be explained if Inada et al. accidentally associated currents with the newly started pulse right after the current was measured instead of the previous pulse.

model RapidDelayedRectifierIV "IV relationship of I_K,r, recreates Figure S3C-S3E"
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.04, d_hold = 5, d_pulse = 0.5), v_start = -0.04, v_inc = 0.005);
  extends Modelica.Icons.Example;
  parameter SI.Concentration k_in = 140 "intracellular potassium concentration";
  parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  parameter SI.Temperature temp = 310 "cell medium temperature";
  parameter SI.Voltage v_k = nernst(k_in, k_ex, 1, temp) "equilibrium potential for K+ ions";
  InaMo.Currents.Atrioventricular.RapidDelayedRectifierChannel kr(g_max = 1.5e-9, v_eq = v_k) "I_K,r channel with parameters of AN cell model" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 40e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, kr.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, kr.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 126, Tolerance = 1e-12, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(is_end|vs_end|is_tail|vs_tail|is_peak|vs_peak|i|v|v_pulse)"),
    Documentation(info = "
    <html>
    <p>To reproduce Figure S3C from Inada 2009, plot vc.is_end against
    vc.vs_end.
    To reproduce Figure S3D from Inada 2009, plot vc.is_tail against
    vc.vs_tail.
    It is necessary to use vc.vs_end/vc.vs_tail instead of vc.v_pulse,
    because vc.is_end and vc.is_tail capture the current from the
    <i>previous</i> pulse.</p>
    <p>To reproduce Figure S3E from Inada 2009, plot vc.i against time starting
    5 ms before and ending 500ms after the pulses with amplitude -10 mV, 10 mV
    and 30 mV.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: allow a plot from -40 mV to 60 mV</li>
      <li>Tolerance: default value</li>
      <li>d_pulse: according to description of Figure S3 in Inada 2009</li>
      <li>d_hold: approximately 5 * max(inact.tau)</li>
      <li>v_hold: according to description of Figure S3 in Inada 2009</li>
      <li>l2.C: according to Table S15 in Inada 2009 (AN cell model)</li>
      <li>g_max: according to Table S15 in Inada 2009 (AN cell model)</li>
    </ul>
    <p>NOTE: IV-curve in S3C seem to be shifted by 5 mV towards lower
    voltages.
    This could be explained if Inada et al. accidentally associated currents
    with the newly started pulse right after the current was measured instead
    of the previous pulse.</p>
  "));
end RapidDelayedRectifierIV;
  1. l2.i +( kr.i_ion vc.i ) 0.0
  2. l2.v l2.i / l2.c
  3. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  4. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  5. $whenCondition1 vc.pulse_end
  6. $whenCondition2 vc.pulse_start
  7. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  8. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  9. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max( l2.v _v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act_fast.steadyact_fast.fsteady( l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. _act_fast.tauact_fast.ftau( l2.v , 0.0 )
    10. _act_slow.steadyact_fast.fsteady( l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. _act_slow.tauact_slow.ftau( l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. _inact.steadyinact.fsteady( l2.v )
    13. _inact.tauinact.ftau( l2.v , 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _i_n.i
    3. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    4. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    5. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    6. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, 0.0, 9.42, 603.6) + falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function act_fast.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.01022 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 117.6470588235294 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act_fast.fsteady;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act_fast.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * act_slow.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end falpha;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, 0.0, 39.8, 17.0) + falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function act_slow.ftau
  input Real x "input value";
  input Real y_min = 0.33581 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 1.24254 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.01 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.02222667316536598 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end act_slow.ftau;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.2938512182797032
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.7689430941621821
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.7689430941621821
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period5.0
vc.d_pulse"s"pulse period0.5
vc.v_hold"V"voltage during holding period-0.04
v_start"V"start value for pulse amplitude-0.04
v_inc"V"increment for pulse amplitude0.005
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
temp"K"cell medium temperature288.15
v_k"V"equilibrium potential for K+ ionsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance1.5e-09
kr.current_name"I_K,r"
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.RapidDelayedRectifierSteady

To reproduce Figure S3A and S3B from Inada 2009, plot act_steady and act_tau_fast against v.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -120 mV to 80 mV
  • Tolerance: left at default value, since derivatives are not relevant
model RapidDelayedRectifierSteady "steady state of I_K,r, recreates figure S3A and S3B from Inada 2009"
  extends Modelica.Icons.Example;
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  parameter SI.Concentration k_in = 140 "intracellular potassium concentration";
  parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  parameter SI.Temperature temp = 310 "cell medium temperature";
  parameter SI.Voltage v_k = nernst(k_in, k_ex, 1, temp) "equilibrium potential for K+ ions";
  InaMo.Currents.Atrioventricular.RapidDelayedRectifierChannel kr(g_max = 1.5e-9, v_eq = v_k) "I_K,r with parameters of AN cell model" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  Real act_steady = kr.act_fast.steady "steady state of activation gates";
  SI.Duration act_tau_fast = kr.act_fast.tau "time constant of fast activation gate";
  SI.Duration act_tau_slow = kr.act_slow.tau "time constant of slow activation gate";
  Real inact_steady = kr.inact.steady "steady state of inactivation gate";
  SI.Duration inact_tau = kr.inact.tau "time constant of inactivation gate";
  SI.Voltage v(start = -0.12, fixed = true) "input voltage";
equation
  vc.v_stim = v;
  der(v) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, kr.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, kr.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 200, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "act_steady|act_tau_fast|v|act_tau_slow|inact_tau|inact_steady|vc.v"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S3A and S3B from Inada 2009, plot act_steady and
      act_tau_fast against v.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -120 mV to 80 mV</li>
        <li>Tolerance: left at default value, since derivatives are not
        relevant</li>
      </ul>
    </html>
  "));
end RapidDelayedRectifierSteady;
  1. vc.n.i +( l2.i kr.i_ion ) 0.0
  2. l2.v l2.i / l2.c
  3. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n( act_steady _act_fast.n)/ act_tau_fast
    2. _act_slow.n(_act_slow.steady_act_slow.n)/ act_tau_slow
    3. _inact.n( inact_steady _inact.n)/ inact_tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max( l2.v _v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. act_steady act_fast.fsteady( l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. act_tau_fast act_fast.ftau( l2.v , 0.0 )
    10. _act_slow.steadyact_fast.fsteady( l2.v , 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. act_tau_slow act_slow.ftau( l2.v , 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. inact_steady inact.fsteady( l2.v )
    13. inact_tau inact.ftau( l2.v , 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  4. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _n.i_i
    3. l2.v 0.001

Functions:

function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, 0.0, 9.42, 603.6) + falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function act_fast.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.01022 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 117.6470588235294 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act_fast.fsteady;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, 0.0, 39.8, 17.0) + falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end falpha;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act_fast.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * act_slow.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function act_slow.ftau
  input Real x "input value";
  input Real y_min = 0.33581 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 1.24254 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.01 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.02222667316536598 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end act_slow.ftau;
nameunitlabelvalue
inact_tau"s"time constant of inactivation gate
inact_steadysteady state of inactivation gate
act_tau_slow"s"time constant of slow activation gate
act_tau_fast"s"time constant of fast activation gate
act_steadysteady state of activation gates
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.nratio of molecules in open conformation0.2938512182797032
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.7689430941621821
kr.act_fast.nratio of molecules in open conformation0.7689430941621821
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)-0.12
vc.g.p.v"V"Potential at the pin0.0
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
temp"K"cell medium temperature288.15
v_k"V"equilibrium potential for K+ ionsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance1.5e-09
kr.current_name"I_K,r"

Tests for $I_{NaCa}$

InaMo.Examples.ComponentTests.SodiumCalciumExchangerLin

This example does not represent the settings of a specific Figure from a reference but instead serves as the basis for other models that use different variable settings for their experiment setup.

This example uses a linear input current, because I_NaCa is modeled as an immediate current without activation or inactivation kinetics.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -140 to +140 mV
  • Tolerance: left at default value because derivatives are not relevant
  • Interval: enough for a smooth plot
model SodiumCalciumExchangerLin "IV relationship of I_NaCa, base model for recreation of Figures from Matsuoka 1992, Kurata 2002 and Inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.CaConst;
  InaMo.Currents.Atrioventricular.SodiumCalciumExchanger naca(k_NaCa = 1e-9) "I_NaCa" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  inner parameter SI.Temperature temp = 310 "cell medium temperature";
  InaMo.Membrane.LipidBilayer l2(c = 40e-12, use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  inner parameter SI.Concentration na_in = 8 "intracellular sodium concentration";
  inner parameter SI.Concentration na_ex = 140 "extracellular sodium concentration";
  inner parameter SI.Concentration ca_ex = 2 "extracellular calcium concentration";
  InaMo.Concentrations.Basic.ConstantConcentration ca_sub(c_const = 0.1e-3, vol = v_sub) "Ca2+ in \"fuzzy\" subspace" annotation(
    Placement(transformation(extent = {{-51, -80}, {-17, -46}})));
  parameter SI.Voltage v_start = -140e-3 "starting voltage";
initial equation
  vc.v_stim = v_start;
equation
  der(vc.v_stim) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, naca.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, naca.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  connect(ca_sub.substance, naca.ca) annotation(
    Line(points = {{-34, -80}, {-14, -80}, {-14, -30}, {-28, -30}, {-28, -16}, {-28, -16}}));
  annotation(
    experiment(StartTime = 0, StopTime = 280, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    Documentation(info = "
    <html>
      <p>This example does not represent the settings of a specific Figure from
      a reference but instead serves as the basis for other models that
      use different variable settings for their experiment setup.</p>
      <p>This example uses a linear input current, because I_NaCa is modeled
      as an immediate current without activation or inactivation kinetics.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -140 to +140 mV</li>
        <li>Tolerance: left at default value because derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
      </ul>
    </html>
  "));
end SodiumCalciumExchangerLin;
  1. l2.i +( naca.i_ion vc.i ) 0.0
  2. vc.n.i +( l2.i naca.i_ion ) 0.0
  3. vc.v_stim l2.i / l2.c
  4. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce_q_ci vc.v_stim _FoRT
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co vc.v_stim _FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n vc.v_stim _FoRT
  5. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _v_stim 0.001

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
vc.i"A"measured membrane current
vc.v_stim"V"input voltage (needs to be defined externally)
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
vc.g.p.v"V"Potential at the pin0.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
v_sub"m3"1.0
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current1e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
temp"K"cell medium temperature288.15
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
ca_ex"mol/m3"extracellular calcium concentration2.0
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
v_start"V"starting voltage-0.14

InaMo.Examples.ComponentTests.SodiumCalciumExchangerLinKurata

To recreate Figure 17 of Kurata 2002, plot naca.i against vc.v.

For more detail about the experiment setup see the documentation of InaMo.Examples.SodiumCalciumExchangerLin.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -100 to +50 mV
  • Tolerance: left at default value because derivatives are not relevant
  • Interval: enough for a smooth plot
  • L2.C: according to Table A1 in Kurata 2002
  • naca.k_NaCa: according to Table A1 in Kurata 2002 (see note below)
  • sodium.c_in: according to description of Figure 17 of Kurata 2002
  • sodium.c_ex: according to Table A1 in Kurata 2002
  • calcium.c_ex: according to Table A1 in Kurata 2002
  • ca_sub.c_const: according to description of Figure 17 of Kurata 2002

NOTE: Kurata give k_NaCa as 125 1/pF (which should probably be 125 pA/pF). This means that we have to multiply the value by l2.C to obtain the actual parameter in pA.

NOTE: This is the only plot for I_NaCa where all relevant conventration parameters are given. Consequently this example can reproduce the Figure from the paper exactly while the others cannot.

model SodiumCalciumExchangerLinKurata "IV relationship of I_NaCa, recreates Figure 17 from Kurata 2002"
  extends SodiumCalciumExchangerLin(l2(c = 32e-12), temp = 310.15, naca(k_NaCa = 125 * l2.c), na_in = 10, na_ex = 140, ca_ex = 2, ca_sub(c_const = 0.1e-3), v_start = -100e-3);
  annotation(
    experiment(StartTime = 0, StopTime = 150, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "naca\\.i|vc\\.v"),
    Documentation(info = "
    <html>
      <p>To recreate Figure 17 of Kurata 2002, plot naca.i against vc.v.</p>
      <p>For more detail about the experiment setup see the documentation of
      InaMo.Examples.SodiumCalciumExchangerLin.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -100 to +50 mV</li>
        <li>Tolerance: left at default value because derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
        <li>L2.C: according to Table A1 in Kurata 2002</li>
        <li>naca.k_NaCa: according to Table A1 in Kurata 2002 (see note below)
        </li>
        <li>sodium.c_in: according to description of Figure 17 of Kurata
        2002</li>
        <li>sodium.c_ex: according to Table A1 in Kurata 2002</li>
        <li>calcium.c_ex: according to Table A1 in Kurata 2002</li>
        <li>ca_sub.c_const: according to description of Figure 17 of Kurata
        2002</li>
      </ul>
      <p>NOTE: Kurata give k_NaCa as 125 1/pF (which should probably be
      125 pA/pF). This means that we have to multiply the value by l2.C to
      obtain the actual parameter in pA.</p>
      <p>NOTE: This is the only plot for I_NaCa where all relevant
      conventration parameters are given. Consequently this example can
      reproduce the Figure from the paper exactly while the others cannot.</p>
    </html>
  "));
end SodiumCalciumExchangerLinKurata;
  1. l2.i +( naca.i_ion vc.i ) 0.0
  2. vc.n.i +( l2.i naca.i_ion ) 0.0
  3. vc.v_stim l2.i / l2.c
  4. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce_q_ci vc.v_stim _FoRT
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co vc.v_stim _FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n vc.v_stim _FoRT
  5. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _v_stim 0.001

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
vc.i"A"measured membrane current
vc.v_stim"V"input voltage (needs to be defined externally)
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
vc.g.p.v"V"Potential at the pin0.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
v_sub"m3"1.0
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current125.0 * l2.c
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
temp"K"cell medium temperature288.15
l2.c"F"membrane capacitance3.2e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
na_in"mol/m3"intracellular sodium concentration10.0
na_ex"mol/m3"extracellular sodium concentration140.0
ca_ex"mol/m3"extracellular calcium concentration2.0
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
v_start"V"starting voltage-0.1

InaMo.Examples.ComponentTests.SodiumCalciumExchangerLinMatsuoka

To recreate Figure 19 of Matsuoka 1992, plot the following variables against a1.vc.v.

  • Figure 19A: a1.naca.i, a2.naca.i, a3.naca.i
  • Figure 19B: b1.naca.i, b2.naca.i, b3.naca.i
  • Figure 19C: c1.naca.i, c2.naca.i, c3.naca.i
  • Figure 19D: d1.naca.i, d2.naca.i, d3.naca.i

The values for the concentration parameters are chosen as follows:

  • Figure 19A
    • sodium.c_ex = 0 (according to Figure 15A)
    • sodium.c_in = 25
    • calcium.c_ex = 8 (according to Figure 15A)
    • ca_sub.c_const = [0, 0.016, 0.234]
  • Figure 19B
    • sodium.c_ex = 0 (according to Figure 15A and p. 983, paragraph about Figure 16A)
    • sodium.c_in = 100
    • calcium.c_ex = 8 (according to Figure 15A and p. 983, paragraph about Figure 16A)
    • ca_sub.c_const = [0, 0.064, 1.08]
  • Figure 19C
    • sodium.c_ex = 150 (according to Figure 17A)
    • sodium.c_in = [0, 25, 50]
    • calcium.c_ex = 0 (according to Figure 17A)
    • ca_sub.c_const = 0.003
  • Figure 19D
    • sodium.c_ex = 150 (according to Figure 17B)
    • sodium.c_in = [0, 25, 100]
    • calcium.c_ex = 0 (according to Figure 17B)
    • ca_sub.c_const = 1.08

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -140 to +140 mV
  • Tolerance: left at default value because derivatives are not relevant
  • Interval: enough for a smooth plot
  • l2.C: left at default value for AN cell because it is not relevant for the plot
  • naca.k_NaCa: chosen arbitrarily to fit order of magnitude for individual subplots of Figure 19 of Matsuoka 1992 (see note below)
  • temp: according to Matsuoka 1992, p. 993 (2 * RT/F = 53 mV <=> temp = 307.52 °K

For more details of parameter and simulation settings see the documentation of InaMo.Examples.SodiumCalciumExchangerLin.

NOTE: Matsuoka et al. never give a value for l2.C, because when the voltage is fixed with a voltage clamp, the capacitance of the cell has no influence on the resulting current. We therefore leave l2.C arbitrarily at the default value for AN cells.

NOTE: The subplots in Figure 19 of Matsuoka 1992 do not show the absolute value of the current, but it can be inferred from Figures 15--17. However, an agreement with thes absolute values cannot be reproduced with a single value for naca.k_NaCa. This is hinted at on page 993 of Matsuoka 1992, where the authors state that "each experiment was fitted with a scaler variable". Unfortunately the values of these variables are not given in the paper. We therefore chose arbitrary values between 0.25 and 1 nA to roughly fit the order of magnitude of the experimental data. This still leaves some differences open, which may be explained if Matsuoka et all used a different scaling variable for each indivitual line in the plot.

model SodiumCalciumExchangerLinMatsuoka "bundles all experiments required to reproduce Figure 19 of Matsuoka 1992"
  extends Modelica.Icons.Example;
  model BundleBase = SodiumCalciumExchangerLin(naca(k_NaCa = 1e-9), temp = 307.52, v_start = -140e-3);
  BundleBase a1(na_in = 25, na_ex = 0, ca_sub(c_const = 0), ca_ex = 8, naca(k_NaCa = 0.95e-9));
  BundleBase a2(na_in = 25, na_ex = 0, ca_sub(c_const = 0.016), ca_ex = 8, naca(k_NaCa = 0.95e-9));
  BundleBase a3(na_in = 25, na_ex = 0, ca_sub(c_const = 0.234), ca_ex = 8, naca(k_NaCa = 0.95e-9));
  BundleBase b1(na_in = 100, na_ex = 0, ca_sub(c_const = 0), ca_ex = 8, naca(k_NaCa = 0.25e-9));
  BundleBase b2(na_in = 100, na_ex = 0, ca_sub(c_const = 0.064), ca_ex = 8, naca(k_NaCa = 0.25e-9));
  BundleBase b3(na_in = 100, na_ex = 0, ca_sub(c_const = 1.08), ca_ex = 8, naca(k_NaCa = 0.25e-9));
  BundleBase c1(na_in = 0, na_ex = 150, ca_sub(c_const = 0.003), ca_ex = 0, naca(k_NaCa = 0.36e-9));
  BundleBase c2(na_in = 25, na_ex = 150, ca_sub(c_const = 0.003), ca_ex = 0, naca(k_NaCa = 0.36e-9));
  BundleBase c3(na_in = 50, na_ex = 150, ca_sub(c_const = 0.003), ca_ex = 0, naca(k_NaCa = 0.36e-9));
  BundleBase d1(na_in = 0, na_ex = 150, ca_sub(c_const = 1.08), ca_ex = 0, naca(k_NaCa = 0.56e-9));
  BundleBase d2(na_in = 25, na_ex = 150, ca_sub(c_const = 1.08), ca_ex = 0, naca(k_NaCa = 0.56e-9));
  BundleBase d3(na_in = 100, na_ex = 150, ca_sub(c_const = 1.08), ca_ex = 0, naca(k_NaCa = 0.56e-9));
  annotation(
    experiment(StartTime = 0, StopTime = 280, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "[a-d][1-3]\\.(naca\\.i|vc\\.v)"),
    Documentation(info = "
    <html>
      <p>To recreate Figure 19 of Matsuoka 1992, plot the following variables
      against a1.vc.v.<p>
      <ul>
        <li>Figure 19A: a1.naca.i, a2.naca.i, a3.naca.i</li>
        <li>Figure 19B: b1.naca.i, b2.naca.i, b3.naca.i</li>
        <li>Figure 19C: c1.naca.i, c2.naca.i, c3.naca.i</li>
        <li>Figure 19D: d1.naca.i, d2.naca.i, d3.naca.i</li>
      </ul>
      <p>The values for the concentration parameters are chosen as follows:</p>
      <ul>
        <li>Figure 19A
          <ul>
            <li>sodium.c_ex = 0 <i>(according to Figure 15A)</i></li>
            <li>sodium.c_in = 25</li>
            <li>calcium.c_ex = 8 <i>(according to Figure 15A)</i></li>
            <li>ca_sub.c_const = [0, 0.016, 0.234]</li>
          </ul>
        </li>
        <li>Figure 19B
          <ul>
            <li>sodium.c_ex = 0 <i>(according to Figure 15A and p. 983, paragraph about Figure 16A)</i></li>
            <li>sodium.c_in = 100</li>
            <li>calcium.c_ex = 8 <i>(according to Figure 15A and p. 983, paragraph about Figure 16A)</i></li>
            <li>ca_sub.c_const = [0, 0.064, 1.08]</li>
          </ul>
        </li>
        <li>Figure 19C
          <ul>
            <li>sodium.c_ex = 150 <i>(according to Figure 17A)</i></li>
            <li>sodium.c_in = [0, 25, 50]</li>
            <li>calcium.c_ex = 0 <i>(according to Figure 17A)</i></li>
            <li>ca_sub.c_const = 0.003</li>
          </ul>
        </li>
        <li>Figure 19D
          <ul>
            <li>sodium.c_ex = 150 <i>(according to Figure 17B)</i></li>
            <li>sodium.c_in = [0, 25, 100]</li>
            <li>calcium.c_ex = 0 <i>(according to Figure 17B)</i></li>
            <li>ca_sub.c_const = 1.08</li>
          </ul>
        </li>
      </ul>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -140 to +140 mV</li>
        <li>Tolerance: left at default value because derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
        <li>l2.C: left at default value for AN cell because it is not relevant
        for the plot</li>
        <li>naca.k_NaCa: chosen arbitrarily to fit order of magnitude for
        individual subplots of Figure 19 of Matsuoka 1992 (see note below)</li>
        <li>temp: according to Matsuoka 1992, p. 993 (2 * RT/F = 53 mV <=>
        temp = 307.52 °K</li>
      </ul>
      <p>For more details of parameter and simulation settings see the
      documentation of InaMo.Examples.SodiumCalciumExchangerLin.</p>
      <p>NOTE: Matsuoka et al. never give a value for l2.C, because when the
      voltage is fixed with a voltage clamp, the capacitance of the cell
      has no influence on the resulting current. We therefore leave l2.C
      arbitrarily at the default value for AN cells.</p>
      <p>NOTE: The subplots in Figure 19 of Matsuoka 1992 do not show the
      absolute value of the current, but it can be inferred from Figures
      15--17. However, an agreement with thes absolute values cannot be
      reproduced with a single value for naca.k_NaCa. This is hinted at on
      page 993 of Matsuoka 1992, where the authors state that &quot;each
      experiment was fitted with a scaler variable&quot;. Unfortunately the
      values of these variables are not given in the paper. We therefore
      chose arbitrary values between 0.25 and 1 nA to roughly fit the order
      of magnitude of the experimental data.
      This still leaves some differences open, which may be explained if
      Matsuoka et all used a different scaling variable for each indivitual
      <i>line</i> in the plot.</p>
    </html>
  "));
end SodiumCalciumExchangerLinMatsuoka;
  1. Within group a1 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci a1.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co a1.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n a1.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  2. Within group a2 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci a2.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co a2.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n a2.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  3. Within group a3 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci a3.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co a3.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n a3.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  4. Within group b1 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci b1.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co b1.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n b1.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  5. Within group b2 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci b2.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co b2.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n b2.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  6. Within group b3 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci b3.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co b3.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n b3.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  7. Within group c1 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci c1.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co c1.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n c1.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  8. Within group c2 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci c2.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co c2.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n c2.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  9. Within group c3 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci c3.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co c3.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n c3.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  10. Within group d1 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci d1.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co d1.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n d1.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  11. Within group d2 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci d2.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co d2.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n d2.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001
  12. Within group d3 (prefix _ indicates shortened variable name)
    1. _l2.i+(_naca.i_ion_vc.i) 0.0
    2. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    3. _vc.v_stim_l2.i/_l2.c
    4. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci d3.vc.v_stim _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co d3.vc.v_stim _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n d3.vc.v_stim _FoRT
    5. Within group vc (prefix _ indicates shortened variable name)
      1. _g.p.i+(_i_n.i) 0.0
      2. _v_stim 0.001

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
a1.vc.i"A"measured membrane current
a1.vc.v_stim"V"input voltage (needs to be defined externally)
a1.vc.g.p.i"A"Current flowing into the pin
a1.vc.n.i"A"Current flowing into the pin
a1.l2.i"A"Current flowing from pin p to pin n
a1.naca.e4"1"ratio of exchanger molecules in state e4
a1.naca.e3"1"ratio of exchanger molecules in state e3
a1.naca.e2"1"ratio of exchanger molecules in state e2
a1.naca.e1"1"ratio of exchanger molecules in state e1
a1.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
a1.naca.x4"1"relative frequancy of E4 states
a1.naca.x3"1"relative frequency of E3 states
a1.naca.x2"1"relative frequency of E2 states
a1.naca.x1"1"relative frequency of E1 states
a1.naca.k_14"1"rate constant for transition from E1 to E4
a1.naca.k_41"1"rate constant for transition from E4 to E1
a1.naca.k_32"1"rate constant for transition from E3 to E2
a1.naca.k_23"1"rate constant for transition from E2 to E3
a1.naca.k_21"1"rate constant for transition from E2 to E1
a1.naca.k_12"1"rate constant for transition from E1 to E2
a1.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
a1.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
a1.naca.do"1"common denominator summing relative frequencies for all E2 substates
a1.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
a1.naca.di"1"common denominator summing relative frequencies for all E1 substates
a1.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
a1.naca.i_ion"A"current used for TransmembraneCaFlow
a1.naca.trans.rate"mol/s"rate of change in substance amount
a2.vc.i"A"measured membrane current
a2.vc.v_stim"V"input voltage (needs to be defined externally)
a2.vc.g.p.i"A"Current flowing into the pin
a2.vc.n.i"A"Current flowing into the pin
a2.l2.i"A"Current flowing from pin p to pin n
a2.naca.e4"1"ratio of exchanger molecules in state e4
a2.naca.e3"1"ratio of exchanger molecules in state e3
a2.naca.e2"1"ratio of exchanger molecules in state e2
a2.naca.e1"1"ratio of exchanger molecules in state e1
a2.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
a2.naca.x4"1"relative frequancy of E4 states
a2.naca.x3"1"relative frequency of E3 states
a2.naca.x2"1"relative frequency of E2 states
a2.naca.x1"1"relative frequency of E1 states
a2.naca.k_14"1"rate constant for transition from E1 to E4
a2.naca.k_41"1"rate constant for transition from E4 to E1
a2.naca.k_32"1"rate constant for transition from E3 to E2
a2.naca.k_23"1"rate constant for transition from E2 to E3
a2.naca.k_21"1"rate constant for transition from E2 to E1
a2.naca.k_12"1"rate constant for transition from E1 to E2
a2.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
a2.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
a2.naca.do"1"common denominator summing relative frequencies for all E2 substates
a2.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
a2.naca.di"1"common denominator summing relative frequencies for all E1 substates
a2.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
a2.naca.i_ion"A"current used for TransmembraneCaFlow
a2.naca.trans.rate"mol/s"rate of change in substance amount
a3.vc.i"A"measured membrane current
a3.vc.v_stim"V"input voltage (needs to be defined externally)
a3.vc.g.p.i"A"Current flowing into the pin
a3.vc.n.i"A"Current flowing into the pin
a3.l2.i"A"Current flowing from pin p to pin n
a3.naca.e4"1"ratio of exchanger molecules in state e4
a3.naca.e3"1"ratio of exchanger molecules in state e3
a3.naca.e2"1"ratio of exchanger molecules in state e2
a3.naca.e1"1"ratio of exchanger molecules in state e1
a3.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
a3.naca.x4"1"relative frequancy of E4 states
a3.naca.x3"1"relative frequency of E3 states
a3.naca.x2"1"relative frequency of E2 states
a3.naca.x1"1"relative frequency of E1 states
a3.naca.k_14"1"rate constant for transition from E1 to E4
a3.naca.k_41"1"rate constant for transition from E4 to E1
a3.naca.k_32"1"rate constant for transition from E3 to E2
a3.naca.k_23"1"rate constant for transition from E2 to E3
a3.naca.k_21"1"rate constant for transition from E2 to E1
a3.naca.k_12"1"rate constant for transition from E1 to E2
a3.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
a3.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
a3.naca.do"1"common denominator summing relative frequencies for all E2 substates
a3.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
a3.naca.di"1"common denominator summing relative frequencies for all E1 substates
a3.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
a3.naca.i_ion"A"current used for TransmembraneCaFlow
a3.naca.trans.rate"mol/s"rate of change in substance amount
b1.vc.i"A"measured membrane current
b1.vc.v_stim"V"input voltage (needs to be defined externally)
b1.vc.g.p.i"A"Current flowing into the pin
b1.vc.n.i"A"Current flowing into the pin
b1.l2.i"A"Current flowing from pin p to pin n
b1.naca.e4"1"ratio of exchanger molecules in state e4
b1.naca.e3"1"ratio of exchanger molecules in state e3
b1.naca.e2"1"ratio of exchanger molecules in state e2
b1.naca.e1"1"ratio of exchanger molecules in state e1
b1.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
b1.naca.x4"1"relative frequancy of E4 states
b1.naca.x3"1"relative frequency of E3 states
b1.naca.x2"1"relative frequency of E2 states
b1.naca.x1"1"relative frequency of E1 states
b1.naca.k_14"1"rate constant for transition from E1 to E4
b1.naca.k_41"1"rate constant for transition from E4 to E1
b1.naca.k_32"1"rate constant for transition from E3 to E2
b1.naca.k_23"1"rate constant for transition from E2 to E3
b1.naca.k_21"1"rate constant for transition from E2 to E1
b1.naca.k_12"1"rate constant for transition from E1 to E2
b1.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
b1.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
b1.naca.do"1"common denominator summing relative frequencies for all E2 substates
b1.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
b1.naca.di"1"common denominator summing relative frequencies for all E1 substates
b1.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
b1.naca.i_ion"A"current used for TransmembraneCaFlow
b1.naca.trans.rate"mol/s"rate of change in substance amount
b2.vc.i"A"measured membrane current
b2.vc.v_stim"V"input voltage (needs to be defined externally)
b2.vc.g.p.i"A"Current flowing into the pin
b2.vc.n.i"A"Current flowing into the pin
b2.l2.i"A"Current flowing from pin p to pin n
b2.naca.e4"1"ratio of exchanger molecules in state e4
b2.naca.e3"1"ratio of exchanger molecules in state e3
b2.naca.e2"1"ratio of exchanger molecules in state e2
b2.naca.e1"1"ratio of exchanger molecules in state e1
b2.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
b2.naca.x4"1"relative frequancy of E4 states
b2.naca.x3"1"relative frequency of E3 states
b2.naca.x2"1"relative frequency of E2 states
b2.naca.x1"1"relative frequency of E1 states
b2.naca.k_14"1"rate constant for transition from E1 to E4
b2.naca.k_41"1"rate constant for transition from E4 to E1
b2.naca.k_32"1"rate constant for transition from E3 to E2
b2.naca.k_23"1"rate constant for transition from E2 to E3
b2.naca.k_21"1"rate constant for transition from E2 to E1
b2.naca.k_12"1"rate constant for transition from E1 to E2
b2.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
b2.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
b2.naca.do"1"common denominator summing relative frequencies for all E2 substates
b2.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
b2.naca.di"1"common denominator summing relative frequencies for all E1 substates
b2.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
b2.naca.i_ion"A"current used for TransmembraneCaFlow
b2.naca.trans.rate"mol/s"rate of change in substance amount
b3.vc.i"A"measured membrane current
b3.vc.v_stim"V"input voltage (needs to be defined externally)
b3.vc.g.p.i"A"Current flowing into the pin
b3.vc.n.i"A"Current flowing into the pin
b3.l2.i"A"Current flowing from pin p to pin n
b3.naca.e4"1"ratio of exchanger molecules in state e4
b3.naca.e3"1"ratio of exchanger molecules in state e3
b3.naca.e2"1"ratio of exchanger molecules in state e2
b3.naca.e1"1"ratio of exchanger molecules in state e1
b3.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
b3.naca.x4"1"relative frequancy of E4 states
b3.naca.x3"1"relative frequency of E3 states
b3.naca.x2"1"relative frequency of E2 states
b3.naca.x1"1"relative frequency of E1 states
b3.naca.k_14"1"rate constant for transition from E1 to E4
b3.naca.k_41"1"rate constant for transition from E4 to E1
b3.naca.k_32"1"rate constant for transition from E3 to E2
b3.naca.k_23"1"rate constant for transition from E2 to E3
b3.naca.k_21"1"rate constant for transition from E2 to E1
b3.naca.k_12"1"rate constant for transition from E1 to E2
b3.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
b3.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
b3.naca.do"1"common denominator summing relative frequencies for all E2 substates
b3.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
b3.naca.di"1"common denominator summing relative frequencies for all E1 substates
b3.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
b3.naca.i_ion"A"current used for TransmembraneCaFlow
b3.naca.trans.rate"mol/s"rate of change in substance amount
c1.vc.i"A"measured membrane current
c1.vc.v_stim"V"input voltage (needs to be defined externally)
c1.vc.g.p.i"A"Current flowing into the pin
c1.vc.n.i"A"Current flowing into the pin
c1.l2.i"A"Current flowing from pin p to pin n
c1.naca.e4"1"ratio of exchanger molecules in state e4
c1.naca.e3"1"ratio of exchanger molecules in state e3
c1.naca.e2"1"ratio of exchanger molecules in state e2
c1.naca.e1"1"ratio of exchanger molecules in state e1
c1.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
c1.naca.x4"1"relative frequancy of E4 states
c1.naca.x3"1"relative frequency of E3 states
c1.naca.x2"1"relative frequency of E2 states
c1.naca.x1"1"relative frequency of E1 states
c1.naca.k_14"1"rate constant for transition from E1 to E4
c1.naca.k_41"1"rate constant for transition from E4 to E1
c1.naca.k_32"1"rate constant for transition from E3 to E2
c1.naca.k_23"1"rate constant for transition from E2 to E3
c1.naca.k_21"1"rate constant for transition from E2 to E1
c1.naca.k_12"1"rate constant for transition from E1 to E2
c1.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
c1.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
c1.naca.do"1"common denominator summing relative frequencies for all E2 substates
c1.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
c1.naca.di"1"common denominator summing relative frequencies for all E1 substates
c1.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
c1.naca.i_ion"A"current used for TransmembraneCaFlow
c1.naca.trans.rate"mol/s"rate of change in substance amount
c2.vc.i"A"measured membrane current
c2.vc.v_stim"V"input voltage (needs to be defined externally)
c2.vc.g.p.i"A"Current flowing into the pin
c2.vc.n.i"A"Current flowing into the pin
c2.l2.i"A"Current flowing from pin p to pin n
c2.naca.e4"1"ratio of exchanger molecules in state e4
c2.naca.e3"1"ratio of exchanger molecules in state e3
c2.naca.e2"1"ratio of exchanger molecules in state e2
c2.naca.e1"1"ratio of exchanger molecules in state e1
c2.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
c2.naca.x4"1"relative frequancy of E4 states
c2.naca.x3"1"relative frequency of E3 states
c2.naca.x2"1"relative frequency of E2 states
c2.naca.x1"1"relative frequency of E1 states
c2.naca.k_14"1"rate constant for transition from E1 to E4
c2.naca.k_41"1"rate constant for transition from E4 to E1
c2.naca.k_32"1"rate constant for transition from E3 to E2
c2.naca.k_23"1"rate constant for transition from E2 to E3
c2.naca.k_21"1"rate constant for transition from E2 to E1
c2.naca.k_12"1"rate constant for transition from E1 to E2
c2.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
c2.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
c2.naca.do"1"common denominator summing relative frequencies for all E2 substates
c2.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
c2.naca.di"1"common denominator summing relative frequencies for all E1 substates
c2.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
c2.naca.i_ion"A"current used for TransmembraneCaFlow
c2.naca.trans.rate"mol/s"rate of change in substance amount
c3.vc.i"A"measured membrane current
c3.vc.v_stim"V"input voltage (needs to be defined externally)
c3.vc.g.p.i"A"Current flowing into the pin
c3.vc.n.i"A"Current flowing into the pin
c3.l2.i"A"Current flowing from pin p to pin n
c3.naca.e4"1"ratio of exchanger molecules in state e4
c3.naca.e3"1"ratio of exchanger molecules in state e3
c3.naca.e2"1"ratio of exchanger molecules in state e2
c3.naca.e1"1"ratio of exchanger molecules in state e1
c3.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
c3.naca.x4"1"relative frequancy of E4 states
c3.naca.x3"1"relative frequency of E3 states
c3.naca.x2"1"relative frequency of E2 states
c3.naca.x1"1"relative frequency of E1 states
c3.naca.k_14"1"rate constant for transition from E1 to E4
c3.naca.k_41"1"rate constant for transition from E4 to E1
c3.naca.k_32"1"rate constant for transition from E3 to E2
c3.naca.k_23"1"rate constant for transition from E2 to E3
c3.naca.k_21"1"rate constant for transition from E2 to E1
c3.naca.k_12"1"rate constant for transition from E1 to E2
c3.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
c3.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
c3.naca.do"1"common denominator summing relative frequencies for all E2 substates
c3.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
c3.naca.di"1"common denominator summing relative frequencies for all E1 substates
c3.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
c3.naca.i_ion"A"current used for TransmembraneCaFlow
c3.naca.trans.rate"mol/s"rate of change in substance amount
d1.vc.i"A"measured membrane current
d1.vc.v_stim"V"input voltage (needs to be defined externally)
d1.vc.g.p.i"A"Current flowing into the pin
d1.vc.n.i"A"Current flowing into the pin
d1.l2.i"A"Current flowing from pin p to pin n
d1.naca.e4"1"ratio of exchanger molecules in state e4
d1.naca.e3"1"ratio of exchanger molecules in state e3
d1.naca.e2"1"ratio of exchanger molecules in state e2
d1.naca.e1"1"ratio of exchanger molecules in state e1
d1.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
d1.naca.x4"1"relative frequancy of E4 states
d1.naca.x3"1"relative frequency of E3 states
d1.naca.x2"1"relative frequency of E2 states
d1.naca.x1"1"relative frequency of E1 states
d1.naca.k_14"1"rate constant for transition from E1 to E4
d1.naca.k_41"1"rate constant for transition from E4 to E1
d1.naca.k_32"1"rate constant for transition from E3 to E2
d1.naca.k_23"1"rate constant for transition from E2 to E3
d1.naca.k_21"1"rate constant for transition from E2 to E1
d1.naca.k_12"1"rate constant for transition from E1 to E2
d1.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
d1.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
d1.naca.do"1"common denominator summing relative frequencies for all E2 substates
d1.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
d1.naca.di"1"common denominator summing relative frequencies for all E1 substates
d1.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
d1.naca.i_ion"A"current used for TransmembraneCaFlow
d1.naca.trans.rate"mol/s"rate of change in substance amount
d2.vc.i"A"measured membrane current
d2.vc.v_stim"V"input voltage (needs to be defined externally)
d2.vc.g.p.i"A"Current flowing into the pin
d2.vc.n.i"A"Current flowing into the pin
d2.l2.i"A"Current flowing from pin p to pin n
d2.naca.e4"1"ratio of exchanger molecules in state e4
d2.naca.e3"1"ratio of exchanger molecules in state e3
d2.naca.e2"1"ratio of exchanger molecules in state e2
d2.naca.e1"1"ratio of exchanger molecules in state e1
d2.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
d2.naca.x4"1"relative frequancy of E4 states
d2.naca.x3"1"relative frequency of E3 states
d2.naca.x2"1"relative frequency of E2 states
d2.naca.x1"1"relative frequency of E1 states
d2.naca.k_14"1"rate constant for transition from E1 to E4
d2.naca.k_41"1"rate constant for transition from E4 to E1
d2.naca.k_32"1"rate constant for transition from E3 to E2
d2.naca.k_23"1"rate constant for transition from E2 to E3
d2.naca.k_21"1"rate constant for transition from E2 to E1
d2.naca.k_12"1"rate constant for transition from E1 to E2
d2.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
d2.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
d2.naca.do"1"common denominator summing relative frequencies for all E2 substates
d2.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
d2.naca.di"1"common denominator summing relative frequencies for all E1 substates
d2.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
d2.naca.i_ion"A"current used for TransmembraneCaFlow
d2.naca.trans.rate"mol/s"rate of change in substance amount
d3.vc.i"A"measured membrane current
d3.vc.v_stim"V"input voltage (needs to be defined externally)
d3.vc.g.p.i"A"Current flowing into the pin
d3.vc.n.i"A"Current flowing into the pin
d3.l2.i"A"Current flowing from pin p to pin n
d3.naca.e4"1"ratio of exchanger molecules in state e4
d3.naca.e3"1"ratio of exchanger molecules in state e3
d3.naca.e2"1"ratio of exchanger molecules in state e2
d3.naca.e1"1"ratio of exchanger molecules in state e1
d3.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
d3.naca.x4"1"relative frequancy of E4 states
d3.naca.x3"1"relative frequency of E3 states
d3.naca.x2"1"relative frequency of E2 states
d3.naca.x1"1"relative frequency of E1 states
d3.naca.k_14"1"rate constant for transition from E1 to E4
d3.naca.k_41"1"rate constant for transition from E4 to E1
d3.naca.k_32"1"rate constant for transition from E3 to E2
d3.naca.k_23"1"rate constant for transition from E2 to E3
d3.naca.k_21"1"rate constant for transition from E2 to E1
d3.naca.k_12"1"rate constant for transition from E1 to E2
d3.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
d3.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
d3.naca.do"1"common denominator summing relative frequencies for all E2 substates
d3.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
d3.naca.di"1"common denominator summing relative frequencies for all E1 substates
d3.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
d3.naca.i_ion"A"current used for TransmembraneCaFlow
d3.naca.trans.rate"mol/s"rate of change in substance amount
a1.naca.con.substance.amount"mol"amount of substancea1.naca.con.c_const * a1.naca.con.vol
a2.naca.con.substance.amount"mol"amount of substancea2.naca.con.c_const * a2.naca.con.vol
a3.naca.con.substance.amount"mol"amount of substancea3.naca.con.c_const * a3.naca.con.vol
b1.naca.con.substance.amount"mol"amount of substanceb1.naca.con.c_const * b1.naca.con.vol
b2.naca.con.substance.amount"mol"amount of substanceb2.naca.con.c_const * b2.naca.con.vol
b3.naca.con.substance.amount"mol"amount of substanceb3.naca.con.c_const * b3.naca.con.vol
c1.naca.con.substance.amount"mol"amount of substancec1.naca.con.c_const * c1.naca.con.vol
c2.naca.con.substance.amount"mol"amount of substancec2.naca.con.c_const * c2.naca.con.vol
c3.naca.con.substance.amount"mol"amount of substancec3.naca.con.c_const * c3.naca.con.vol
d1.naca.con.substance.amount"mol"amount of substanced1.naca.con.c_const * d1.naca.con.vol
d2.naca.con.substance.amount"mol"amount of substanced2.naca.con.c_const * d2.naca.con.vol
d3.naca.con.substance.amount"mol"amount of substanced3.naca.con.c_const * d3.naca.con.vol
a1.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+a1.naca.di_c * a1.na_in / a1.naca.k_cn_i
a1.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+a1.naca.di_2n * a1.na_in / a1.naca.k_3n_i
a1.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+a1.naca.do_2n * a1.na_ex / a1.naca.k_3n_o
a1.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+a1.naca.do_1n * a1.na_ex / a1.naca.k_2n_o
a1.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+a1.naca.di_1n * a1.na_in / a1.naca.k_2n_i
a1.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludeda1.ca_sub.substance.amount / (a1.naca.k_c_i * a1.v_sub)
a1.vc.g.p.v"V"Potential at the pin0.0
a1.ca_sub.substance.amount"mol"amount of substancea1.ca_sub.c_const * a1.ca_sub.vol
a1.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+a1.na_in / a1.naca.k_1n_i
a1.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludeda1.ca_ex / a1.naca.k_c_o
a1.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+a1.na_ex / a1.naca.k_1n_o
a1.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a1.na_ex, a1.naca.k_3n_o)
a1.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a1.na_in, a1.naca.k_3n_i)
a2.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+a2.naca.di_c * a2.na_in / a2.naca.k_cn_i
a2.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+a2.naca.di_2n * a2.na_in / a2.naca.k_3n_i
a2.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+a2.naca.do_2n * a2.na_ex / a2.naca.k_3n_o
a2.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+a2.naca.do_1n * a2.na_ex / a2.naca.k_2n_o
a2.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+a2.naca.di_1n * a2.na_in / a2.naca.k_2n_i
a2.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludeda2.ca_sub.substance.amount / (a2.naca.k_c_i * a2.v_sub)
a2.vc.g.p.v"V"Potential at the pin0.0
a2.ca_sub.substance.amount"mol"amount of substancea2.ca_sub.c_const * a2.ca_sub.vol
a2.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+a2.na_in / a2.naca.k_1n_i
a2.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludeda2.ca_ex / a2.naca.k_c_o
a2.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+a2.na_ex / a2.naca.k_1n_o
a2.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a2.na_ex, a2.naca.k_3n_o)
a2.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a2.na_in, a2.naca.k_3n_i)
a3.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+a3.naca.di_c * a3.na_in / a3.naca.k_cn_i
a3.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+a3.naca.di_2n * a3.na_in / a3.naca.k_3n_i
a3.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+a3.naca.do_2n * a3.na_ex / a3.naca.k_3n_o
a3.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+a3.naca.do_1n * a3.na_ex / a3.naca.k_2n_o
a3.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+a3.naca.di_1n * a3.na_in / a3.naca.k_2n_i
a3.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludeda3.ca_sub.substance.amount / (a3.naca.k_c_i * a3.v_sub)
a3.vc.g.p.v"V"Potential at the pin0.0
a3.ca_sub.substance.amount"mol"amount of substancea3.ca_sub.c_const * a3.ca_sub.vol
a3.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+a3.na_in / a3.naca.k_1n_i
a3.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludeda3.ca_ex / a3.naca.k_c_o
a3.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+a3.na_ex / a3.naca.k_1n_o
a3.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a3.na_ex, a3.naca.k_3n_o)
a3.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(a3.na_in, a3.naca.k_3n_i)
b1.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+b1.naca.di_c * b1.na_in / b1.naca.k_cn_i
b1.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+b1.naca.di_2n * b1.na_in / b1.naca.k_3n_i
b1.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+b1.naca.do_2n * b1.na_ex / b1.naca.k_3n_o
b1.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+b1.naca.do_1n * b1.na_ex / b1.naca.k_2n_o
b1.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+b1.naca.di_1n * b1.na_in / b1.naca.k_2n_i
b1.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedb1.ca_sub.substance.amount / (b1.naca.k_c_i * b1.v_sub)
b1.vc.g.p.v"V"Potential at the pin0.0
b1.ca_sub.substance.amount"mol"amount of substanceb1.ca_sub.c_const * b1.ca_sub.vol
b1.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+b1.na_in / b1.naca.k_1n_i
b1.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedb1.ca_ex / b1.naca.k_c_o
b1.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+b1.na_ex / b1.naca.k_1n_o
b1.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b1.na_ex, b1.naca.k_3n_o)
b1.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b1.na_in, b1.naca.k_3n_i)
b2.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+b2.naca.di_c * b2.na_in / b2.naca.k_cn_i
b2.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+b2.naca.di_2n * b2.na_in / b2.naca.k_3n_i
b2.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+b2.naca.do_2n * b2.na_ex / b2.naca.k_3n_o
b2.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+b2.naca.do_1n * b2.na_ex / b2.naca.k_2n_o
b2.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+b2.naca.di_1n * b2.na_in / b2.naca.k_2n_i
b2.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedb2.ca_sub.substance.amount / (b2.naca.k_c_i * b2.v_sub)
b2.vc.g.p.v"V"Potential at the pin0.0
b2.ca_sub.substance.amount"mol"amount of substanceb2.ca_sub.c_const * b2.ca_sub.vol
b2.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+b2.na_in / b2.naca.k_1n_i
b2.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedb2.ca_ex / b2.naca.k_c_o
b2.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+b2.na_ex / b2.naca.k_1n_o
b2.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b2.na_ex, b2.naca.k_3n_o)
b2.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b2.na_in, b2.naca.k_3n_i)
b3.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+b3.naca.di_c * b3.na_in / b3.naca.k_cn_i
b3.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+b3.naca.di_2n * b3.na_in / b3.naca.k_3n_i
b3.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+b3.naca.do_2n * b3.na_ex / b3.naca.k_3n_o
b3.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+b3.naca.do_1n * b3.na_ex / b3.naca.k_2n_o
b3.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+b3.naca.di_1n * b3.na_in / b3.naca.k_2n_i
b3.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedb3.ca_sub.substance.amount / (b3.naca.k_c_i * b3.v_sub)
b3.vc.g.p.v"V"Potential at the pin0.0
b3.ca_sub.substance.amount"mol"amount of substanceb3.ca_sub.c_const * b3.ca_sub.vol
b3.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+b3.na_in / b3.naca.k_1n_i
b3.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedb3.ca_ex / b3.naca.k_c_o
b3.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+b3.na_ex / b3.naca.k_1n_o
b3.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b3.na_ex, b3.naca.k_3n_o)
b3.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(b3.na_in, b3.naca.k_3n_i)
c1.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+c1.naca.di_c * c1.na_in / c1.naca.k_cn_i
c1.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+c1.naca.di_2n * c1.na_in / c1.naca.k_3n_i
c1.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+c1.naca.do_2n * c1.na_ex / c1.naca.k_3n_o
c1.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+c1.naca.do_1n * c1.na_ex / c1.naca.k_2n_o
c1.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+c1.naca.di_1n * c1.na_in / c1.naca.k_2n_i
c1.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedc1.ca_sub.substance.amount / (c1.naca.k_c_i * c1.v_sub)
c1.vc.g.p.v"V"Potential at the pin0.0
c1.ca_sub.substance.amount"mol"amount of substancec1.ca_sub.c_const * c1.ca_sub.vol
c1.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+c1.na_in / c1.naca.k_1n_i
c1.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedc1.ca_ex / c1.naca.k_c_o
c1.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+c1.na_ex / c1.naca.k_1n_o
c1.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c1.na_ex, c1.naca.k_3n_o)
c1.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c1.na_in, c1.naca.k_3n_i)
c2.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+c2.naca.di_c * c2.na_in / c2.naca.k_cn_i
c2.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+c2.naca.di_2n * c2.na_in / c2.naca.k_3n_i
c2.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+c2.naca.do_2n * c2.na_ex / c2.naca.k_3n_o
c2.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+c2.naca.do_1n * c2.na_ex / c2.naca.k_2n_o
c2.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+c2.naca.di_1n * c2.na_in / c2.naca.k_2n_i
c2.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedc2.ca_sub.substance.amount / (c2.naca.k_c_i * c2.v_sub)
c2.vc.g.p.v"V"Potential at the pin0.0
c2.ca_sub.substance.amount"mol"amount of substancec2.ca_sub.c_const * c2.ca_sub.vol
c2.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+c2.na_in / c2.naca.k_1n_i
c2.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedc2.ca_ex / c2.naca.k_c_o
c2.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+c2.na_ex / c2.naca.k_1n_o
c2.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c2.na_ex, c2.naca.k_3n_o)
c2.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c2.na_in, c2.naca.k_3n_i)
c3.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+c3.naca.di_c * c3.na_in / c3.naca.k_cn_i
c3.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+c3.naca.di_2n * c3.na_in / c3.naca.k_3n_i
c3.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+c3.naca.do_2n * c3.na_ex / c3.naca.k_3n_o
c3.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+c3.naca.do_1n * c3.na_ex / c3.naca.k_2n_o
c3.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+c3.naca.di_1n * c3.na_in / c3.naca.k_2n_i
c3.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedc3.ca_sub.substance.amount / (c3.naca.k_c_i * c3.v_sub)
c3.vc.g.p.v"V"Potential at the pin0.0
c3.ca_sub.substance.amount"mol"amount of substancec3.ca_sub.c_const * c3.ca_sub.vol
c3.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+c3.na_in / c3.naca.k_1n_i
c3.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedc3.ca_ex / c3.naca.k_c_o
c3.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+c3.na_ex / c3.naca.k_1n_o
c3.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c3.na_ex, c3.naca.k_3n_o)
c3.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(c3.na_in, c3.naca.k_3n_i)
d1.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+d1.naca.di_c * d1.na_in / d1.naca.k_cn_i
d1.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+d1.naca.di_2n * d1.na_in / d1.naca.k_3n_i
d1.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+d1.naca.do_2n * d1.na_ex / d1.naca.k_3n_o
d1.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+d1.naca.do_1n * d1.na_ex / d1.naca.k_2n_o
d1.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+d1.naca.di_1n * d1.na_in / d1.naca.k_2n_i
d1.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedd1.ca_sub.substance.amount / (d1.naca.k_c_i * d1.v_sub)
d1.vc.g.p.v"V"Potential at the pin0.0
d1.ca_sub.substance.amount"mol"amount of substanced1.ca_sub.c_const * d1.ca_sub.vol
d1.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+d1.na_in / d1.naca.k_1n_i
d1.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedd1.ca_ex / d1.naca.k_c_o
d1.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+d1.na_ex / d1.naca.k_1n_o
d1.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d1.na_ex, d1.naca.k_3n_o)
d1.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d1.na_in, d1.naca.k_3n_i)
d2.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+d2.naca.di_c * d2.na_in / d2.naca.k_cn_i
d2.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+d2.naca.di_2n * d2.na_in / d2.naca.k_3n_i
d2.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+d2.naca.do_2n * d2.na_ex / d2.naca.k_3n_o
d2.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+d2.naca.do_1n * d2.na_ex / d2.naca.k_2n_o
d2.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+d2.naca.di_1n * d2.na_in / d2.naca.k_2n_i
d2.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedd2.ca_sub.substance.amount / (d2.naca.k_c_i * d2.v_sub)
d2.vc.g.p.v"V"Potential at the pin0.0
d2.ca_sub.substance.amount"mol"amount of substanced2.ca_sub.c_const * d2.ca_sub.vol
d2.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+d2.na_in / d2.naca.k_1n_i
d2.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedd2.ca_ex / d2.naca.k_c_o
d2.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+d2.na_ex / d2.naca.k_1n_o
d2.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d2.na_ex, d2.naca.k_3n_o)
d2.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d2.na_in, d2.naca.k_3n_i)
d3.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+d3.naca.di_c * d3.na_in / d3.naca.k_cn_i
d3.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+d3.naca.di_2n * d3.na_in / d3.naca.k_3n_i
d3.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+d3.naca.do_2n * d3.na_ex / d3.naca.k_3n_o
d3.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+d3.naca.do_1n * d3.na_ex / d3.naca.k_2n_o
d3.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+d3.naca.di_1n * d3.na_in / d3.naca.k_2n_i
d3.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedd3.ca_sub.substance.amount / (d3.naca.k_c_i * d3.v_sub)
d3.vc.g.p.v"V"Potential at the pin0.0
d3.ca_sub.substance.amount"mol"amount of substanced3.ca_sub.c_const * d3.ca_sub.vol
d3.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+d3.na_in / d3.naca.k_1n_i
d3.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedd3.ca_ex / d3.naca.k_c_o
d3.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+d3.na_ex / d3.naca.k_1n_o
d3.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d3.na_ex, d3.naca.k_3n_o)
d3.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(d3.na_in, d3.naca.k_3n_i)
a1.v_sub"m3"1.0
a1.naca.trans.n"1"stoichiometric ratio of ion transporta1.naca.n_ca
a1.naca.trans.zvalence of ion2
a1.naca.con.c_const"mol/m3"fixed concentrationa1.ca_ex
a1.naca.con.vol"m3"volume of the compartment1.0
a1.naca.n_ca"1"stoichiometric ratio of transport-2.0
a1.naca.current_name"I_NaCa"
a1.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
a1.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
a1.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
a1.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
a1.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
a1.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
a1.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
a1.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
a1.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
a1.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
a1.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
a1.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
a1.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current9.5e-10
a1.naca.FoRThelper variable to simplify equations11604.52214706721 / a1.temp
a1.temp"K"cell medium temperature288.15
a1.l2.c"F"membrane capacitance4e-11
a1.l2.v_init"V"initial potential (from short initial stimulation)-0.09
a1.l2.use_initdetermines whether initial value for v is usedfalse
a1.na_in"mol/m3"intracellular sodium concentration25.0
a1.na_ex"mol/m3"extracellular sodium concentration0.0
a1.ca_ex"mol/m3"extracellular calcium concentration8.0
a1.ca_sub.c_const"mol/m3"fixed concentration0.0
a1.ca_sub.vol"m3"volume of the compartmenta1.v_sub
a1.v_start"V"starting voltage-0.14
a2.v_sub"m3"1.0
a2.naca.trans.n"1"stoichiometric ratio of ion transporta2.naca.n_ca
a2.naca.trans.zvalence of ion2
a2.naca.con.c_const"mol/m3"fixed concentrationa2.ca_ex
a2.naca.con.vol"m3"volume of the compartment1.0
a2.naca.n_ca"1"stoichiometric ratio of transport-2.0
a2.naca.current_name"I_NaCa"
a2.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
a2.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
a2.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
a2.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
a2.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
a2.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
a2.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
a2.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
a2.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
a2.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
a2.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
a2.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
a2.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current9.5e-10
a2.naca.FoRThelper variable to simplify equations11604.52214706721 / a2.temp
a2.temp"K"cell medium temperature288.15
a2.l2.c"F"membrane capacitance4e-11
a2.l2.v_init"V"initial potential (from short initial stimulation)-0.09
a2.l2.use_initdetermines whether initial value for v is usedfalse
a2.na_in"mol/m3"intracellular sodium concentration25.0
a2.na_ex"mol/m3"extracellular sodium concentration0.0
a2.ca_ex"mol/m3"extracellular calcium concentration8.0
a2.ca_sub.c_const"mol/m3"fixed concentration0.016
a2.ca_sub.vol"m3"volume of the compartmenta2.v_sub
a2.v_start"V"starting voltage-0.14
a3.v_sub"m3"1.0
a3.naca.trans.n"1"stoichiometric ratio of ion transporta3.naca.n_ca
a3.naca.trans.zvalence of ion2
a3.naca.con.c_const"mol/m3"fixed concentrationa3.ca_ex
a3.naca.con.vol"m3"volume of the compartment1.0
a3.naca.n_ca"1"stoichiometric ratio of transport-2.0
a3.naca.current_name"I_NaCa"
a3.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
a3.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
a3.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
a3.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
a3.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
a3.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
a3.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
a3.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
a3.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
a3.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
a3.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
a3.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
a3.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current9.5e-10
a3.naca.FoRThelper variable to simplify equations11604.52214706721 / a3.temp
a3.temp"K"cell medium temperature288.15
a3.l2.c"F"membrane capacitance4e-11
a3.l2.v_init"V"initial potential (from short initial stimulation)-0.09
a3.l2.use_initdetermines whether initial value for v is usedfalse
a3.na_in"mol/m3"intracellular sodium concentration25.0
a3.na_ex"mol/m3"extracellular sodium concentration0.0
a3.ca_ex"mol/m3"extracellular calcium concentration8.0
a3.ca_sub.c_const"mol/m3"fixed concentration0.234
a3.ca_sub.vol"m3"volume of the compartmenta3.v_sub
a3.v_start"V"starting voltage-0.14
b1.v_sub"m3"1.0
b1.naca.trans.n"1"stoichiometric ratio of ion transportb1.naca.n_ca
b1.naca.trans.zvalence of ion2
b1.naca.con.c_const"mol/m3"fixed concentrationb1.ca_ex
b1.naca.con.vol"m3"volume of the compartment1.0
b1.naca.n_ca"1"stoichiometric ratio of transport-2.0
b1.naca.current_name"I_NaCa"
b1.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
b1.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
b1.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
b1.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
b1.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
b1.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
b1.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
b1.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
b1.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
b1.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
b1.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
b1.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
b1.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.5e-10
b1.naca.FoRThelper variable to simplify equations11604.52214706721 / b1.temp
b1.temp"K"cell medium temperature288.15
b1.l2.c"F"membrane capacitance4e-11
b1.l2.v_init"V"initial potential (from short initial stimulation)-0.09
b1.l2.use_initdetermines whether initial value for v is usedfalse
b1.na_in"mol/m3"intracellular sodium concentration100.0
b1.na_ex"mol/m3"extracellular sodium concentration0.0
b1.ca_ex"mol/m3"extracellular calcium concentration8.0
b1.ca_sub.c_const"mol/m3"fixed concentration0.0
b1.ca_sub.vol"m3"volume of the compartmentb1.v_sub
b1.v_start"V"starting voltage-0.14
b2.v_sub"m3"1.0
b2.naca.trans.n"1"stoichiometric ratio of ion transportb2.naca.n_ca
b2.naca.trans.zvalence of ion2
b2.naca.con.c_const"mol/m3"fixed concentrationb2.ca_ex
b2.naca.con.vol"m3"volume of the compartment1.0
b2.naca.n_ca"1"stoichiometric ratio of transport-2.0
b2.naca.current_name"I_NaCa"
b2.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
b2.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
b2.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
b2.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
b2.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
b2.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
b2.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
b2.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
b2.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
b2.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
b2.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
b2.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
b2.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.5e-10
b2.naca.FoRThelper variable to simplify equations11604.52214706721 / b2.temp
b2.temp"K"cell medium temperature288.15
b2.l2.c"F"membrane capacitance4e-11
b2.l2.v_init"V"initial potential (from short initial stimulation)-0.09
b2.l2.use_initdetermines whether initial value for v is usedfalse
b2.na_in"mol/m3"intracellular sodium concentration100.0
b2.na_ex"mol/m3"extracellular sodium concentration0.0
b2.ca_ex"mol/m3"extracellular calcium concentration8.0
b2.ca_sub.c_const"mol/m3"fixed concentration0.064
b2.ca_sub.vol"m3"volume of the compartmentb2.v_sub
b2.v_start"V"starting voltage-0.14
b3.v_sub"m3"1.0
b3.naca.trans.n"1"stoichiometric ratio of ion transportb3.naca.n_ca
b3.naca.trans.zvalence of ion2
b3.naca.con.c_const"mol/m3"fixed concentrationb3.ca_ex
b3.naca.con.vol"m3"volume of the compartment1.0
b3.naca.n_ca"1"stoichiometric ratio of transport-2.0
b3.naca.current_name"I_NaCa"
b3.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
b3.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
b3.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
b3.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
b3.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
b3.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
b3.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
b3.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
b3.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
b3.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
b3.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
b3.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
b3.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.5e-10
b3.naca.FoRThelper variable to simplify equations11604.52214706721 / b3.temp
b3.temp"K"cell medium temperature288.15
b3.l2.c"F"membrane capacitance4e-11
b3.l2.v_init"V"initial potential (from short initial stimulation)-0.09
b3.l2.use_initdetermines whether initial value for v is usedfalse
b3.na_in"mol/m3"intracellular sodium concentration100.0
b3.na_ex"mol/m3"extracellular sodium concentration0.0
b3.ca_ex"mol/m3"extracellular calcium concentration8.0
b3.ca_sub.c_const"mol/m3"fixed concentration1.08
b3.ca_sub.vol"m3"volume of the compartmentb3.v_sub
b3.v_start"V"starting voltage-0.14
c1.v_sub"m3"1.0
c1.naca.trans.n"1"stoichiometric ratio of ion transportc1.naca.n_ca
c1.naca.trans.zvalence of ion2
c1.naca.con.c_const"mol/m3"fixed concentrationc1.ca_ex
c1.naca.con.vol"m3"volume of the compartment1.0
c1.naca.n_ca"1"stoichiometric ratio of transport-2.0
c1.naca.current_name"I_NaCa"
c1.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
c1.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
c1.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
c1.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
c1.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
c1.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
c1.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
c1.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
c1.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
c1.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
c1.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
c1.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
c1.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current3.6e-10
c1.naca.FoRThelper variable to simplify equations11604.52214706721 / c1.temp
c1.temp"K"cell medium temperature288.15
c1.l2.c"F"membrane capacitance4e-11
c1.l2.v_init"V"initial potential (from short initial stimulation)-0.09
c1.l2.use_initdetermines whether initial value for v is usedfalse
c1.na_in"mol/m3"intracellular sodium concentration0.0
c1.na_ex"mol/m3"extracellular sodium concentration150.0
c1.ca_ex"mol/m3"extracellular calcium concentration0.0
c1.ca_sub.c_const"mol/m3"fixed concentration0.003
c1.ca_sub.vol"m3"volume of the compartmentc1.v_sub
c1.v_start"V"starting voltage-0.14
c2.v_sub"m3"1.0
c2.naca.trans.n"1"stoichiometric ratio of ion transportc2.naca.n_ca
c2.naca.trans.zvalence of ion2
c2.naca.con.c_const"mol/m3"fixed concentrationc2.ca_ex
c2.naca.con.vol"m3"volume of the compartment1.0
c2.naca.n_ca"1"stoichiometric ratio of transport-2.0
c2.naca.current_name"I_NaCa"
c2.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
c2.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
c2.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
c2.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
c2.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
c2.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
c2.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
c2.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
c2.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
c2.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
c2.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
c2.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
c2.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current3.6e-10
c2.naca.FoRThelper variable to simplify equations11604.52214706721 / c2.temp
c2.temp"K"cell medium temperature288.15
c2.l2.c"F"membrane capacitance4e-11
c2.l2.v_init"V"initial potential (from short initial stimulation)-0.09
c2.l2.use_initdetermines whether initial value for v is usedfalse
c2.na_in"mol/m3"intracellular sodium concentration25.0
c2.na_ex"mol/m3"extracellular sodium concentration150.0
c2.ca_ex"mol/m3"extracellular calcium concentration0.0
c2.ca_sub.c_const"mol/m3"fixed concentration0.003
c2.ca_sub.vol"m3"volume of the compartmentc2.v_sub
c2.v_start"V"starting voltage-0.14
c3.v_sub"m3"1.0
c3.naca.trans.n"1"stoichiometric ratio of ion transportc3.naca.n_ca
c3.naca.trans.zvalence of ion2
c3.naca.con.c_const"mol/m3"fixed concentrationc3.ca_ex
c3.naca.con.vol"m3"volume of the compartment1.0
c3.naca.n_ca"1"stoichiometric ratio of transport-2.0
c3.naca.current_name"I_NaCa"
c3.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
c3.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
c3.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
c3.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
c3.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
c3.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
c3.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
c3.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
c3.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
c3.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
c3.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
c3.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
c3.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current3.6e-10
c3.naca.FoRThelper variable to simplify equations11604.52214706721 / c3.temp
c3.temp"K"cell medium temperature288.15
c3.l2.c"F"membrane capacitance4e-11
c3.l2.v_init"V"initial potential (from short initial stimulation)-0.09
c3.l2.use_initdetermines whether initial value for v is usedfalse
c3.na_in"mol/m3"intracellular sodium concentration50.0
c3.na_ex"mol/m3"extracellular sodium concentration150.0
c3.ca_ex"mol/m3"extracellular calcium concentration0.0
c3.ca_sub.c_const"mol/m3"fixed concentration0.003
c3.ca_sub.vol"m3"volume of the compartmentc3.v_sub
c3.v_start"V"starting voltage-0.14
d1.v_sub"m3"1.0
d1.naca.trans.n"1"stoichiometric ratio of ion transportd1.naca.n_ca
d1.naca.trans.zvalence of ion2
d1.naca.con.c_const"mol/m3"fixed concentrationd1.ca_ex
d1.naca.con.vol"m3"volume of the compartment1.0
d1.naca.n_ca"1"stoichiometric ratio of transport-2.0
d1.naca.current_name"I_NaCa"
d1.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
d1.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
d1.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
d1.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
d1.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
d1.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
d1.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
d1.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
d1.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
d1.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
d1.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
d1.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
d1.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.6e-10
d1.naca.FoRThelper variable to simplify equations11604.52214706721 / d1.temp
d1.temp"K"cell medium temperature288.15
d1.l2.c"F"membrane capacitance4e-11
d1.l2.v_init"V"initial potential (from short initial stimulation)-0.09
d1.l2.use_initdetermines whether initial value for v is usedfalse
d1.na_in"mol/m3"intracellular sodium concentration0.0
d1.na_ex"mol/m3"extracellular sodium concentration150.0
d1.ca_ex"mol/m3"extracellular calcium concentration0.0
d1.ca_sub.c_const"mol/m3"fixed concentration1.08
d1.ca_sub.vol"m3"volume of the compartmentd1.v_sub
d1.v_start"V"starting voltage-0.14
d2.v_sub"m3"1.0
d2.naca.trans.n"1"stoichiometric ratio of ion transportd2.naca.n_ca
d2.naca.trans.zvalence of ion2
d2.naca.con.c_const"mol/m3"fixed concentrationd2.ca_ex
d2.naca.con.vol"m3"volume of the compartment1.0
d2.naca.n_ca"1"stoichiometric ratio of transport-2.0
d2.naca.current_name"I_NaCa"
d2.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
d2.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
d2.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
d2.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
d2.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
d2.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
d2.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
d2.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
d2.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
d2.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
d2.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
d2.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
d2.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.6e-10
d2.naca.FoRThelper variable to simplify equations11604.52214706721 / d2.temp
d2.temp"K"cell medium temperature288.15
d2.l2.c"F"membrane capacitance4e-11
d2.l2.v_init"V"initial potential (from short initial stimulation)-0.09
d2.l2.use_initdetermines whether initial value for v is usedfalse
d2.na_in"mol/m3"intracellular sodium concentration25.0
d2.na_ex"mol/m3"extracellular sodium concentration150.0
d2.ca_ex"mol/m3"extracellular calcium concentration0.0
d2.ca_sub.c_const"mol/m3"fixed concentration1.08
d2.ca_sub.vol"m3"volume of the compartmentd2.v_sub
d2.v_start"V"starting voltage-0.14
d3.v_sub"m3"1.0
d3.naca.trans.n"1"stoichiometric ratio of ion transportd3.naca.n_ca
d3.naca.trans.zvalence of ion2
d3.naca.con.c_const"mol/m3"fixed concentrationd3.ca_ex
d3.naca.con.vol"m3"volume of the compartment1.0
d3.naca.n_ca"1"stoichiometric ratio of transport-2.0
d3.naca.current_name"I_NaCa"
d3.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
d3.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
d3.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
d3.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
d3.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
d3.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
d3.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
d3.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
d3.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
d3.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
d3.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
d3.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
d3.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.6e-10
d3.naca.FoRThelper variable to simplify equations11604.52214706721 / d3.temp
d3.temp"K"cell medium temperature288.15
d3.l2.c"F"membrane capacitance4e-11
d3.l2.v_init"V"initial potential (from short initial stimulation)-0.09
d3.l2.use_initdetermines whether initial value for v is usedfalse
d3.na_in"mol/m3"intracellular sodium concentration100.0
d3.na_ex"mol/m3"extracellular sodium concentration150.0
d3.ca_ex"mol/m3"extracellular calcium concentration0.0
d3.ca_sub.c_const"mol/m3"fixed concentration1.08
d3.ca_sub.vol"m3"volume of the compartmentd3.v_sub
d3.v_start"V"starting voltage-0.14

InaMo.Examples.ComponentTests.SodiumCalciumExchangerRamp

This example constitutes the base setup for the voltage ramp experiment performed by Convery 2000 whose data is used by Inada 2009 for Figure S6. This model has to be simulated twice with different parameters for the AN and NH cell model and for the N cell model. This is done in SodiumCalciumExchangerRampInada.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow to see the whole 300 ms ramp in the plot
  • Tolerance: left at default value because derivatives are not relevant
  • Interval: enough for a smooth plot
  • t_ramp_start: according to Figure 4D of Convery 2000
  • ramp_duration: according to Convery 2000, p. 379
  • ramp_start: according to Convery 2000, p. 397
  • ramp_end: according to Convery 2000, p. 397
  • v_hold: according to Figure 4D of Convery 2000
model SodiumCalciumExchangerRamp "I_NaCa during voltage clamp ramp, simulation setup from Convery 2000 for Figure S6 of Inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Concentrations.Interfaces.CaConst;
  InaMo.Currents.Atrioventricular.SodiumCalciumExchanger naca "I_NaCa" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(c = 40e-12, use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  inner parameter SI.Temperature temp = 310 "cell medium temperature";
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  inner parameter SI.Concentration na_in = 8 "intracellular sodium concentration";
  inner parameter SI.Concentration na_ex = 140 "extracellular sodium concentration";
  inner parameter SI.Concentration ca_ex = 2 "extracellular calcium concentration";
  InaMo.Concentrations.Basic.ConstantConcentration ca_sub(c_const = 0.1e-3, vol = v_sub) "Ca2+ in \"fuzzy\" subspace" annotation(
    Placement(transformation(extent = {{-51, -80}, {-17, -46}})));
  parameter SI.Time t_ramp_start = 50e-3 "time at which ramp starts";
  parameter SI.Duration ramp_duration = 250e-3 "duration of ramp";
  parameter SI.Voltage ramp_start = 60e-3 "voltage at start of ramp";
  parameter SI.Voltage ramp_end = -80e-3 "voltage at end of ramp";
  parameter SI.Voltage v_hold = -40e-3 "holding potential outside of ramp";
  Boolean ramp = time > t_ramp_start and time < t_ramp_start + ramp_duration "true during ramp";
protected
  parameter Real ramp_rate = (ramp_end - ramp_start) / ramp_duration "steepness of ramp";
equation
  if ramp then
    vc.v_stim = (time - t_ramp_start) * ramp_rate + ramp_start;
  else
    vc.v_stim = v_hold;
  end if;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, naca.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, naca.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  connect(ca_sub.substance, naca.ca) annotation(
    Line(points = {{-34, -80}, {-14, -80}, {-14, -30}, {-28, -30}, {-28, -16}, {-28, -16}}));
  annotation(
    experiment(StartTime = 0, StopTime = 0.5, Tolerance = 1e-6, Interval = 1e-3),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    Documentation(info = "
    <html>
      <p>This example constitutes the base setup for the voltage ramp
      experiment performed by Convery 2000 whose data is used by Inada 2009
      for Figure S6. This model has to be simulated twice with different
      parameters for the AN and NH cell model and for the N cell model.
      This is done in SodiumCalciumExchangerRampInada.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow to see the whole 300 ms ramp in the plot</li>
        <li>Tolerance: left at default value because derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
        <li>t_ramp_start: according to Figure 4D of Convery 2000</li>
        <li>ramp_duration: according to Convery 2000, p. 379</li>
        <li>ramp_start: according to Convery 2000, p. 397</li>
        <li>ramp_end: according to Convery 2000, p. 397</li>
        <li>v_hold: according to Figure 4D of Convery 2000</li>
      </ul>
    </html>
  "));
end SodiumCalciumExchangerRamp;
  1. vc.g.p.i +( vc.i vc.n.i ) 0.0
  2. l2.i +( naca.i_ion vc.i ) 0.0
  3. vc.n.i +( l2.i naca.i_ion ) 0.0
  4. l2.v l2.i / l2.c
  5. l2.v ({ time ramp_rate + ramp_start   if   ramp v_hold   otherwise)()
  6. ramp ( time > t_ramp_start )( time < t_ramp_start + ramp_duration )
  7. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce_q_ci l2.v _FoRT
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co l2.v _FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n l2.v _FoRT

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
ramptrue during ramp
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
vc.g.p.v"V"Potential at the pin0.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
v_sub"m3"1.0
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
temp"K"cell medium temperature288.15
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
ca_ex"mol/m3"extracellular calcium concentration2.0
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
t_ramp_start"s"time at which ramp starts0.05
ramp_duration"s"duration of ramp0.25
ramp_start"V"voltage at start of ramp0.06
ramp_end"V"voltage at end of ramp-0.08
v_hold"V"holding potential outside of ramp-0.04
ramp_rate"km2.s-4.A-1.g"steepness of ramp(ramp_end - ramp_start) / ramp_duration

InaMo.Examples.ComponentTests.SodiumCalciumExchangerRampInada

To recreate Figure S6A of Inada 2009, plot an_nh.naca.i / an_nh.l2.C against an_nh.vc.v and n.naca.i / n.l2.C against n.vc.v.

To recreate Figure S6B of Inada 2009, plot an_nh.naca.i against an_nh.vc.v and n.naca.i against n.vc.v, choosing only the data from 50 ms <= t < 300 ms.

This example is based on InaMo.Examples.SodiumCalciumExchangerRamp. For details of the experiment setup see this base model.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow to see the whole 300 ms ramp in the plot
  • Tolerance: left at default value because derivatives are not relevant
  • Interval: enough for a smooth plot
  • BaseExample.sodium.c_in: according to Table S15 of Inada 2009
  • BaseExample.sodium.c_ex: according to Table S15 of Inada 2009
  • BaseExample.calcium.c_ex: according to Convery 2000, p. 394 (Tyrode's solution)
  • BaseExample.ca_sub.c_const: found by manually changing value until plot matched Figure S6B of Inada 2009

NOTE: Inada et al. do not state whether calcium concentration was held constant for the experiment and if so, which value was assumed for [Ca2+]_sub. Since they used Data from Convery 2000 in Figure S6, we assume that the calcium and sodium concentrations should be similar to those used in this experiment ([Na+]_i = 10 mM, [Na+]_o = 140 mM, [Ca2+]_o = 2.5 mM). However, Convery 2000 do not give a value for [Ca2+]_sub and both using all values from Table S15 of Inada 2009 and using all values from Convery 2000 does not reproduce the absolute values observed in Figure S6. We therefore used a mix of settings from both sources and manually changed [Ca2+]_sub until a good fit with the plot was achieved. The remaining differences disappear when the current densities are multiplied by a factor of 1.18.

model SodiumCalciumExchangerRampInada "IV relationship of I_NaCa, recreates Figure S6 from Inada 2009"
  extends Modelica.Icons.Example;
  model BaseExample = SodiumCalciumExchangerRamp(na_in = 8, na_ex = 140, ca_ex = 2.5, ca_sub(c_const = 0.15e-3), temp = 310);
  BaseExample an_nh(naca(k_NaCa = 5.92e-9), l2(c = 40e-12));
  BaseExample n(naca(k_NaCa = 2.14e-9), l2(c = 29e-12));
  //FIXME variableFilter behaves weird (also catches some F1_ variables)
  annotation(
    experiment(StartTime = 0, StopTime = 0.5, Tolerance = 1e-6, Interval = 1e-3),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "(n|an_nh)\\.(vc\\.v|naca\\.(i|e[1-4]|k_[1-4][1-4]))"),
    Documentation(info = "
    <html>
      <p>To recreate Figure S6A of Inada 2009, plot an_nh.naca.i / an_nh.l2.C
      against an_nh.vc.v and n.naca.i / n.l2.C against n.vc.v.</p>
      <p>To recreate Figure S6B of Inada 2009, plot an_nh.naca.i against
      an_nh.vc.v and n.naca.i against n.vc.v, choosing only the data from
      50 ms <= t < 300 ms.</p>
      <p>This example is based on InaMo.Examples.SodiumCalciumExchangerRamp.
      For details of the experiment setup see this base model.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow to see the whole 300 ms ramp in the plot</li>
        <li>Tolerance: left at default value because derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
        <li>BaseExample.sodium.c_in: according to Table S15 of Inada 2009</li>
        <li>BaseExample.sodium.c_ex: according to Table S15 of Inada 2009</li>
        <li>BaseExample.calcium.c_ex: according to Convery 2000, p. 394
        (Tyrode's solution)</li>
        <li>BaseExample.ca_sub.c_const: found by manually changing value until
        plot matched Figure S6B of Inada 2009</li>
      </ul>
      <p>NOTE: Inada et al. do not state whether calcium concentration was held
      constant for the experiment and if so, which value was assumed for
      [Ca2+]_sub. Since they used Data from Convery 2000 in Figure S6, we
      assume that the calcium and sodium concentrations should be similar to
      those used in this experiment ([Na+]_i = 10 mM, [Na+]_o = 140 mM,
      [Ca2+]_o = 2.5 mM). However, Convery 2000 do not give a value for
      [Ca2+]_sub and both using all values from Table S15 of Inada 2009 and
      using all values from Convery 2000 does not reproduce the absolute values
      observed in Figure S6. We therefore used a mix of settings from both
      sources and manually changed [Ca2+]_sub until a good fit with the plot
      was achieved.
      The remaining differences disappear when the current densities are
      multiplied by a factor of 1.18.</p>
    </html>
  "));
end SodiumCalciumExchangerRampInada;
  1. an_nh.l2.v ({ time an_nh.ramp_rate + an_nh.ramp_start   if   an_nh.ramp an_nh.v_hold   otherwise)()
  2. an_nh.ramp ( time > an_nh.t_ramp_start )( time < an_nh.t_ramp_start + an_nh.ramp_duration )
  3. n.l2.v ({ time n.ramp_rate + n.ramp_start   if   n.ramp n.v_hold   otherwise)()
  4. n.ramp ( time > n.t_ramp_start )( time < n.t_ramp_start + n.ramp_duration )
  5. Within group an_nh (prefix _ indicates shortened variable name)
    1. _vc.g.p.i+(_vc.i_vc.n.i) 0.0
    2. _l2.i+(_naca.i_ion_vc.i) 0.0
    3. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    4. _l2.v_l2.i/_l2.c
    5. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci an_nh.l2.v _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co an_nh.l2.v _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n an_nh.l2.v _FoRT
  6. Within group n (prefix _ indicates shortened variable name)
    1. _vc.g.p.i+(_vc.i_vc.n.i) 0.0
    2. _l2.i+(_naca.i_ion_vc.i) 0.0
    3. _vc.n.i+(_l2.i_naca.i_ion) 0.0
    4. _l2.v_l2.i/_l2.c
    5. Within group naca (prefix _ indicates shortened variable name)
      1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
      2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
      3. _di_cv_di_ce_q_ci n.l2.v _FoRT
      4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
      5. _do_cv_do_ce_q_co n.l2.v _FoRT
      6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
      7. _k_12_di_cv/_di
      8. _f1_2n_i(_di_2n+_di_3n)/_di
      9. _k_21_do_cv/_do
      10. _f1_2n_o(_do_2n+_do_3n)/_do
      11. _k_23_f1_2n_o/_k_32
      12. _k_41 1.0 /_k_32
      13. _k_14_f1_2n_i_k_32
      14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
      15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
      16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
      17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
      18. _d_x1+_x2+_x3+_x4
      19. _e1_x1/_d
      20. _e2_x2/_d
      21. _e3_x3/_d
      22. _e4_x4/_d
      23. _k_32e 0.5 _q_n n.l2.v _FoRT

Functions:

function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
an_nh.ramptrue during ramp
an_nh.vc.i"A"measured membrane current
an_nh.vc.g.p.i"A"Current flowing into the pin
an_nh.vc.n.i"A"Current flowing into the pin
an_nh.l2.i"A"Current flowing from pin p to pin n
an_nh.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
an_nh.naca.e4"1"ratio of exchanger molecules in state e4
an_nh.naca.e3"1"ratio of exchanger molecules in state e3
an_nh.naca.e2"1"ratio of exchanger molecules in state e2
an_nh.naca.e1"1"ratio of exchanger molecules in state e1
an_nh.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
an_nh.naca.x4"1"relative frequancy of E4 states
an_nh.naca.x3"1"relative frequency of E3 states
an_nh.naca.x2"1"relative frequency of E2 states
an_nh.naca.x1"1"relative frequency of E1 states
an_nh.naca.k_14"1"rate constant for transition from E1 to E4
an_nh.naca.k_41"1"rate constant for transition from E4 to E1
an_nh.naca.k_32"1"rate constant for transition from E3 to E2
an_nh.naca.k_23"1"rate constant for transition from E2 to E3
an_nh.naca.k_21"1"rate constant for transition from E2 to E1
an_nh.naca.k_12"1"rate constant for transition from E1 to E2
an_nh.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
an_nh.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
an_nh.naca.do"1"common denominator summing relative frequencies for all E2 substates
an_nh.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
an_nh.naca.di"1"common denominator summing relative frequencies for all E1 substates
an_nh.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
an_nh.naca.i_ion"A"current used for TransmembraneCaFlow
an_nh.naca.trans.rate"mol/s"rate of change in substance amount
n.ramptrue during ramp
n.vc.i"A"measured membrane current
n.vc.g.p.i"A"Current flowing into the pin
n.vc.n.i"A"Current flowing into the pin
n.l2.i"A"Current flowing from pin p to pin n
n.l2.v"V"Voltage drop of the two pins (= p.v - n.v)
n.naca.e4"1"ratio of exchanger molecules in state e4
n.naca.e3"1"ratio of exchanger molecules in state e3
n.naca.e2"1"ratio of exchanger molecules in state e2
n.naca.e1"1"ratio of exchanger molecules in state e1
n.naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
n.naca.x4"1"relative frequancy of E4 states
n.naca.x3"1"relative frequency of E3 states
n.naca.x2"1"relative frequency of E2 states
n.naca.x1"1"relative frequency of E1 states
n.naca.k_14"1"rate constant for transition from E1 to E4
n.naca.k_41"1"rate constant for transition from E4 to E1
n.naca.k_32"1"rate constant for transition from E3 to E2
n.naca.k_23"1"rate constant for transition from E2 to E3
n.naca.k_21"1"rate constant for transition from E2 to E1
n.naca.k_12"1"rate constant for transition from E1 to E2
n.naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
n.naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
n.naca.do"1"common denominator summing relative frequencies for all E2 substates
n.naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
n.naca.di"1"common denominator summing relative frequencies for all E1 substates
n.naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
n.naca.i_ion"A"current used for TransmembraneCaFlow
n.naca.trans.rate"mol/s"rate of change in substance amount
an_nh.naca.con.substance.amount"mol"amount of substancean_nh.naca.con.c_const * an_nh.naca.con.vol
n.naca.con.substance.amount"mol"amount of substancen.naca.con.c_const * n.naca.con.vol
an_nh.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+an_nh.naca.di_c * an_nh.na_in / an_nh.naca.k_cn_i
an_nh.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+an_nh.naca.di_2n * an_nh.na_in / an_nh.naca.k_3n_i
an_nh.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+an_nh.naca.do_2n * an_nh.na_ex / an_nh.naca.k_3n_o
an_nh.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+an_nh.naca.do_1n * an_nh.na_ex / an_nh.naca.k_2n_o
an_nh.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+an_nh.naca.di_1n * an_nh.na_in / an_nh.naca.k_2n_i
an_nh.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedan_nh.ca_sub.substance.amount / (an_nh.naca.k_c_i * an_nh.v_sub)
an_nh.vc.g.p.v"V"Potential at the pin0.0
an_nh.ca_sub.substance.amount"mol"amount of substancean_nh.ca_sub.c_const * an_nh.ca_sub.vol
an_nh.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+an_nh.na_in / an_nh.naca.k_1n_i
an_nh.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedan_nh.ca_ex / an_nh.naca.k_c_o
an_nh.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+an_nh.na_ex / an_nh.naca.k_1n_o
an_nh.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an_nh.na_ex, an_nh.naca.k_3n_o)
an_nh.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(an_nh.na_in, an_nh.naca.k_3n_i)
n.naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+n.naca.di_c * n.na_in / n.naca.k_cn_i
n.naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+n.naca.di_2n * n.na_in / n.naca.k_3n_i
n.naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+n.naca.do_2n * n.na_ex / n.naca.k_3n_o
n.naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+n.naca.do_1n * n.na_ex / n.naca.k_2n_o
n.naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+n.naca.di_1n * n.na_in / n.naca.k_2n_i
n.naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedn.ca_sub.substance.amount / (n.naca.k_c_i * n.v_sub)
n.vc.g.p.v"V"Potential at the pin0.0
n.ca_sub.substance.amount"mol"amount of substancen.ca_sub.c_const * n.ca_sub.vol
n.naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+n.na_in / n.naca.k_1n_i
n.naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedn.ca_ex / n.naca.k_c_o
n.naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+n.na_ex / n.naca.k_1n_o
n.naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.na_ex, n.naca.k_3n_o)
n.naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(n.na_in, n.naca.k_3n_i)
an_nh.v_sub"m3"1.0
an_nh.naca.trans.n"1"stoichiometric ratio of ion transportan_nh.naca.n_ca
an_nh.naca.trans.zvalence of ion2
an_nh.naca.con.c_const"mol/m3"fixed concentrationan_nh.ca_ex
an_nh.naca.con.vol"m3"volume of the compartment1.0
an_nh.naca.n_ca"1"stoichiometric ratio of transport-2.0
an_nh.naca.current_name"I_NaCa"
an_nh.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
an_nh.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
an_nh.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
an_nh.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
an_nh.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
an_nh.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
an_nh.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
an_nh.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
an_nh.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
an_nh.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
an_nh.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
an_nh.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
an_nh.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
an_nh.naca.FoRThelper variable to simplify equations11604.52214706721 / an_nh.temp
an_nh.l2.c"F"membrane capacitance4e-11
an_nh.l2.v_init"V"initial potential (from short initial stimulation)-0.09
an_nh.l2.use_initdetermines whether initial value for v is usedfalse
an_nh.temp"K"cell medium temperature288.15
an_nh.na_in"mol/m3"intracellular sodium concentration8.0
an_nh.na_ex"mol/m3"extracellular sodium concentration140.0
an_nh.ca_ex"mol/m3"extracellular calcium concentration2.5
an_nh.ca_sub.c_const"mol/m3"fixed concentration0.00015
an_nh.ca_sub.vol"m3"volume of the compartmentan_nh.v_sub
an_nh.t_ramp_start"s"time at which ramp starts0.05
an_nh.ramp_duration"s"duration of ramp0.25
an_nh.ramp_start"V"voltage at start of ramp0.06
an_nh.ramp_end"V"voltage at end of ramp-0.08
an_nh.v_hold"V"holding potential outside of ramp-0.04
an_nh.ramp_rate"km2.s-4.A-1.g"steepness of ramp(an_nh.ramp_end - an_nh.ramp_start) / an_nh.ramp_duration
n.v_sub"m3"1.0
n.naca.trans.n"1"stoichiometric ratio of ion transportn.naca.n_ca
n.naca.trans.zvalence of ion2
n.naca.con.c_const"mol/m3"fixed concentrationn.ca_ex
n.naca.con.vol"m3"volume of the compartment1.0
n.naca.n_ca"1"stoichiometric ratio of transport-2.0
n.naca.current_name"I_NaCa"
n.naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
n.naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
n.naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
n.naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
n.naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
n.naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
n.naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
n.naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
n.naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
n.naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
n.naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
n.naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
n.naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
n.naca.FoRThelper variable to simplify equations11604.52214706721 / n.temp
n.l2.c"F"membrane capacitance2.9e-11
n.l2.v_init"V"initial potential (from short initial stimulation)-0.09
n.l2.use_initdetermines whether initial value for v is usedfalse
n.temp"K"cell medium temperature288.15
n.na_in"mol/m3"intracellular sodium concentration8.0
n.na_ex"mol/m3"extracellular sodium concentration140.0
n.ca_ex"mol/m3"extracellular calcium concentration2.5
n.ca_sub.c_const"mol/m3"fixed concentration0.00015
n.ca_sub.vol"m3"volume of the compartmentn.v_sub
n.t_ramp_start"s"time at which ramp starts0.05
n.ramp_duration"s"duration of ramp0.25
n.ramp_start"V"voltage at start of ramp0.06
n.ramp_end"V"voltage at end of ramp-0.08
n.v_hold"V"holding potential outside of ramp-0.04
n.ramp_rate"km2.s-4.A-1.g"steepness of ramp(n.ramp_end - n.ramp_start) / n.ramp_duration

Tests for $I_{Na}$

InaMo.Examples.ComponentTests.SodiumChannelIV

To reproduce Figure 2B from Lindblad 1996, plot cd against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because cd captures the current density from the previous pulse.

Note that results will not be exact as Lindblad 1996 used the full model to generate the plots.

Simulation parameters are chosen with the following rationale:

  • StopTime: allow a plot from -100 mV to 70 mV
  • Tolerance: default value

    Interval: roughly show time course of current (Noble 1962 remarks that 0.1 ms is the smallest step size needed for RK4.)

Other parameter settings can be found in Lindblad 1996 on the following pages:

  • na_in: H1673 (Table 15, initial value)
  • na_ex: H1674 (Fig. 2)
  • na_p: H1672 (Table 14) + H1673 (top right) + Inada 2009 Supporting material, 27
  • temp: H1674 (Fig 2.)
  • l2.C: H1672 (Table 14)
  • vc.v_hold: H1674 (Fig. 2)
  • vc.d_hold: H1674 (Fig. 2) -> Wendt 1992, C1235 (bottom left)
  • vc.d_pulse: H1674 (Fig. 2) -> Wendt 1992, C1235 (bottom left)

NOTE: na_p is the only parameter whose value is not directly taken from Lindblad 1996. Lindblad et al. use 1.4 nl while Inada et al. use 1.4 pl which gives currents in the order of nA instead of μa and therefore seems more reasonable (and is more in accordance with the plots of Lindblad et al.).

model SodiumChannelIV "IV relationship of I_Na, recreates Figure 2 B from Lindblad 1996"
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.09, d_hold = 2, d_pulse = 0.05), v_start = -0.1);
  extends Modelica.Icons.Example;
  InaMo.Currents.Atrioventricular.SodiumChannel na "I_Na" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 50e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  inner parameter SI.Temperature temp = SI.Conversions.from_degC(35) "cell medium temperature";
  // Note: uses Lindblad parameters instead of Inada parameters
  // For Inada2009 we would use na_in = 8, na_ex = 140 and na_p = 1.4e-15 at 310K
  // Note: pl/s -> m³/s by setting p *= 1e-15
  inner parameter SI.Concentration na_in = 8.4 "intracellular sodium concentration";
  inner parameter SI.Concentration na_ex = 75 "extracellular sodium concentration";
  inner parameter PermeabilityFM na_p = 1.4e-15 * 1.5 "cell membrane permeability for Na+ ions";
  discrete Real cd(unit = "A/F") "current density";
initial equation
  cd = vc.is_peak / l2.c;
equation
  when change(vc.is_peak) then
    cd = vc.is_peak / l2.c;
  end when;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, na.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, na.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 75.8, Tolerance = 1e-6, Interval = 1e-3),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(vs_peak|v|v_pulse)|cd"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure 2B from Lindblad 1996, plot cd against
      vc.vs_peak.
      It is necessary to use vc.vs_peak instead of vc.v_pulse, because cd
      captures the current density from the <i>previous</i> pulse.</p>
      <p>Note that results will not be exact as Lindblad 1996 used the full
      model to generate the plots.</p>
      <p>Simulation parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -100 mV to 70 mV</li>
        <p>Tolerance: default value</p
        <li>Interval: roughly show time course of current (Noble 1962 remarks
        that 0.1 ms is the smallest step size needed for RK4.)</li>
      </ul>
      <p>Other parameter settings can be found in Lindblad 1996 on the
      following pages:</p>
      <ul>
        <li>na_in: H1673 (Table 15, initial value)</li>
        <li>na_ex: H1674 (Fig. 2)</li>
        <li>na_p: H1672 (Table 14) + H1673 (top right) + Inada 2009 Supporting material, 27</li>
        <li>temp: H1674 (Fig 2.)</li>
        <li>l2.C: H1672 (Table 14)</li>
        <li>vc.v_hold: H1674 (Fig. 2)</li>
        <li>vc.d_hold: H1674 (Fig. 2) -> Wendt 1992, C1235 (bottom left)</li>
        <li>vc.d_pulse: H1674 (Fig. 2) -> Wendt 1992, C1235 (bottom left)</li>
      </ul>
      <p>NOTE: na_p is the only parameter whose value is not directly taken
      from Lindblad 1996. Lindblad et al. use 1.4 nl while Inada et al. use
      1.4 pl which gives currents in the order of nA instead of μa and
      therefore seems more reasonable (and is more in accordance with the
      plots of Lindblad et al.).</p>
    </html>
  "));
end SodiumChannelIV;
  1. l2.i +( na.i_ion vc.i ) 0.0
  2. vc.n.i +( na.i_ion l2.i ) 0.0
  3. na.i_open ghkFlux( l2.v , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  4. l2.v l2.i / l2.c
  5. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  6. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  7. $whenCondition1 vc.pulse_end
  8. $whenCondition2 vc.is_peak
    ( vc.is_peak 
    )
    
    
  9. $whenCondition3 vc.pulse_start
  10. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  11. $whenCondition5 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  12. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafalpha( l2.v , -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betaact.fbeta( l2.v , -0.0444 , -78.90791446382072 , 18400.0 )
    7. _inact_fast.steadyfsteady( l2.v )
    8. _inact_fast.taufsteady.fbeta( l2.v , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyfsteady( l2.v )
    10. _inact_slow.taufsteady.fbeta( l2.v , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  13. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    5. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function falpha
  input Real x "input value";
  input Real x0 = -0.0444 "offset for x (fitting parameter)";
  input Real sy = 5829.58 "scaling factor for y (fitting parameter)";
  input Real sx = -78.90791446382072 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha;
function fsteady.fbeta
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1491.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0946 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 77.51937984496124 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 323.3 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady.fbeta;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := act.fbeta(x, -0.0669, -1000.0 / 5.57, 44.9) / (act.fbeta(x, -0.0669, -1000.0 / 5.57, 44.9) + fsteady.fbeta(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end fsteady;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function act.fbeta
  input Real x "input value";
  input Real x0 = -0.0444 "x-value where y = 1 (fitting parameter)";
  input Real sx = -78.90791446382072 "scaling factor for x axis (fitting parameter)";
  input Real sy = 18400.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end act.fbeta;
nameunitlabelvalue
cd"A/F"current density
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation2.217110758230417e-07
na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_fast.steadyvalue that n would reach if v_gate was held constant
na.inact_fast.nratio of molecules in open conformation2.217110758230417e-07
na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.act.steady"1"steady state achieved if current voltage is held constant
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.9743799231069017
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.is_peak <> pre(vc.is_peak)
$whenCondition3vc.pulse_start
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition5vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period2.0
vc.d_pulse"s"pulse period0.05
vc.v_hold"V"voltage during holding period-0.09
v_start"V"start value for pulse amplitude-0.1
v_inc"V"increment for pulse amplitude0.005
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
l2.c"F"membrane capacitance5e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
temp"K"cell medium temperature288.15
na_in"mol/m3"intracellular sodium concentration8.4
na_ex"mol/m3"extracellular sodium concentration75.0
na_p"m3/(s.m2)"cell membrane permeability for Na+ ions2.1e-15
na.ion_in"mol/m3"intracellular concentration of ionna_in

InaMo.Examples.ComponentTests.SodiumChannelSteady

To reproduce Figure 2A from Lindblad 1996, plot m3 against (vc.v_stim - v_step) and h_total against vc.v_stim.

To reproduce Figure 2C-E, plot tau_m, tau_h1, and tau_h2 respectively against vc.v_stim.

Results should be fully accurate.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -100 mV to 100 mV
  • Tolerance: default value
  • Interval: enough to get correct peak values, but to follow time course of current at least an interval of 1e-4 s is needed

NOTE: This model could be much simpler if we would only calculate the steady states. However, this setup allows to actually inspect the time course of the variables to see when they will reach their steady state. Since the parameter n of the activation gate has a very low time constant (10-65 μs), the default experiment setup will only let you see the point in time where the steady state is almost reached. If you want more detail, you will have to decrease the simulation interval at least to 1e-4 (i.e. 100 μs).

model SodiumChannelSteady "steady state of I_Na, recreates Figures 2A, 2C, 2D and 2E from Lindblad 1996"
  extends Modelica.Icons.Example;
  InaMo.Currents.Atrioventricular.SodiumChannel na "I_Na" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  // Note: uses Lindblad parameters instead of Inada parameters (8, 140, 1.4e-9, 1), 310K
  inner parameter SI.Temperature temp = SI.Conversions.from_degC(35) "cell medium temperature";
  inner parameter SI.Concentration na_in = 8.4 "intracellular sodium concentration";
  inner parameter SI.Concentration na_ex = 75 "extracellular sodium concentration";
  inner parameter PermeabilityFM na_p = 1.4e-9 * 1.5 "cell membrane permeability for Na+ ions";
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc(v_stim(start = -0.1, fixed = true)) "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  parameter SI.Duration d_step = 2 "duration for which voltage is held constant between steps";
  parameter SI.Voltage v_step = 0.005 "size of voltage step";
  discrete Real m3(start = 0, fixed = true) "total activation of channel (m^3)";
  discrete Real h_total(start = 0, fixed = true) "total inactivation of channel";
  Real m_steady = na.act.alpha / (na.act.alpha + na.act.beta) "steady state for activation gate";
  Real m3_steady = m_steady ^ 3 "steady state of total activation";
  Real h_steady = na.inact_fast.steady "steady state of inactivation gate";
  SI.Duration tau_m = na.act.tau "time constant of activation gate";
  SI.Duration tau_m_measured(start = 0, fixed = true) "measured time until difference between na.act.n and m_stead is < 1e-6";
  SI.Duration tau_h1 = na.inact_fast.tau "time constant of fast inactivation gate";
  SI.Duration tau_h2 = na.inact_slow.tau "time constant of slow inactivation gate";
  SI.Time t_tau_m(start = 0, fixed = true) "time stamp of last voltage step";
  Real v_na = nernst(na_in, na_ex, 1, temp) "equilibrium potential for Na+ ions";
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, na.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, na.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  when abs(m_steady - na.act.n) < 1e-6 then
    tau_m_measured = time - pre(t_tau_m);
  end when "forces event when steady state is almost reached";
  when sample(0, d_step) then
// reset stimulation voltage
    reinit(vc.v_stim, pre(vc.v_stim) + v_step);
// record values from last cycle
    m3 = pre(na.act.n) ^ 3;
    h_total = pre(na.inact_total);
    t_tau_m = time;
  end when;
  der(vc.v_stim) = 0 "hold v_stim constant";
  annotation(
    experiment(StartTime = 0, StopTime = 82, Tolerance = 1e-6, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "m3_steady|h_steady|m3|vc\\.(v_sim|v)|v_step|h_total|tau_(m|h1|h2)"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure 2A from Lindblad 1996, plot m3 against
      (vc.v_stim - v_step) and h_total against vc.v_stim.</p>
      <p>To reproduce Figure 2C-E, plot tau_m, tau_h1, and tau_h2
      respectively against vc.v_stim.</p>
      <p>Results should be fully accurate.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -100 mV to 100 mV</li>
        <li>Tolerance: default value</li>
        <li>Interval: enough to get correct peak values, but to follow time
        course of current at least an interval of 1e-4 s is needed</li>
      </ul>
      <p>NOTE: This model could be much simpler if we would only
      calculate the steady states. However, this setup allows to actually
      inspect the time course of the variables to see when they will reach
      their steady state. Since the parameter n of the activation gate has a
      very low time constant (10-65 μs), the default experiment setup will
      only let you see the point in time where the steady state is almost
      reached. If you want more detail, you will have to decrease the
      simulation interval at least to 1e-4 (i.e. 100 μs).</p>
    </html>
  "));
end SodiumChannelSteady;
  1. l2.i +( na.i_ion vc.i ) 0.0
  2. vc.n.i +( l2.i na.i_ion ) 0.0
  3. na.i_open ghkFlux( vc.v_stim , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  4. vc.v_stim l2.i / l2.c
  5. m3_steady m_steady 3.0
  6. $whenCondition1 ( 1 , 0.0 , d_step )
  7. $whenCondition2 | m_steady na.act.n |< 1e-06
  8. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n( h_steady _inact_fast.n)/ tau_h1
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/ tau_h2
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafalpha( vc.v_stim , -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betaact.fbeta( vc.v_stim , -0.0444 , -78.90791446382072 , 18400.0 )
    7. h_steady fsteady( vc.v_stim )
    8. tau_h1 fsteady.fbeta( vc.v_stim , 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyfsteady( vc.v_stim )
    10. tau_h2 fsteady.fbeta( vc.v_stim , 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. m_steady _alpha/(_alpha+_beta)
      3. tau_m 1.0 /(_alpha+_beta)
  9. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _v_stim 0.0

Functions:

function falpha
  input Real x "input value";
  input Real x0 = -0.0444 "offset for x (fitting parameter)";
  input Real sy = 5829.58 "scaling factor for y (fitting parameter)";
  input Real sx = -78.90791446382072 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha;
function fsteady.fbeta
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1491.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0946 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 77.51937984496124 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 323.3 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady.fbeta;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := act.fbeta(x, -0.0669, -1000.0 / 5.57, 44.9) / (act.fbeta(x, -0.0669, -1000.0 / 5.57, 44.9) + fsteady.fbeta(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end fsteady;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function act.fbeta
  input Real x "input value";
  input Real x0 = -0.0444 "x-value where y = 1 (fitting parameter)";
  input Real sx = -78.90791446382072 "scaling factor for x axis (fitting parameter)";
  input Real sy = 18400.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end act.fbeta;
nameunitlabelvalue
t_tau_m"s"time stamp of last voltage step0.0
tau_h2"s"time constant of slow inactivation gate
tau_h1"s"time constant of fast inactivation gate
tau_m_measured"s"measured time until difference between na.act.n and m_stead is < 1e-60.0
tau_m"s"time constant of activation gate
h_steadysteady state of inactivation gate
m3_steadysteady state of total activation
m_steady"1"steady state for activation gate
h_totaltotal inactivation of channel0.0
m3total activation of channel (m^3)0.0
vc.i"A"measured membrane current
vc.v_stim"V"input voltage (needs to be defined externally)-0.1
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation2.217110758230417e-07
na.inact_fast.nratio of molecules in open conformation2.217110758230417e-07
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.9743799231069017
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
$whenCondition1sample(1, 0.0, d_step)
$whenCondition2abs(m_steady - na.act.n) < 1e-06
v_na"V"equilibrium potential for Na+ ionsInaMo.Functions.Biochemical.nernst(na_in, na_ex, 1, temp)
vc.g.p.v"V"Potential at the pin0.0
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
temp"K"cell medium temperature288.15
na_in"mol/m3"intracellular sodium concentration8.4
na_ex"mol/m3"extracellular sodium concentration75.0
na_p"m3/(s.m2)"cell membrane permeability for Na+ ions2.1e-09
d_step"s"duration for which voltage is held constant between steps2.0
v_step"V"size of voltage step0.005
na.ion_in"mol/m3"intracellular concentration of ionna_in

Tests for $I_p$

InaMo.Examples.ComponentTests.SodiumPotassiumPumpLin

To recreate Figure 12 of Demir 1994, plot p.i against vc.v.

This example uses a linear input current, because I_p is modeled as an immediate current without activation or inactivation kinetics.

The results are not fully accurate, because Demir 1994 only report the current-voltage relationship of the sum of I_p and the three background currents included in their model.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -60 to +40 mV
  • Tolerance: left at default, because derivatives are not relevant
  • Interval: enough for a smooth plot
  • l2.C: according to Table A9 from Demir 1994
  • sodium.c_in: according to Table A13 from Demir 1994 (mean)
  • sodium.c_ex: according to Table A13 from Demir 1994 (mean)
  • potassium.c_in: according to Table A13 from Demir 1994 (mean)
  • potassium.c_ex: according to Table A13 from Demir 1994 (mean)
  • p.i_max: according to Table A9 from Demir 1994
  • p.k_m_K: according to Table A9 from Demir 1994
  • p.k_m_Na: according to Table A9 from Demir 1994 and Table 10 from Zhang 2000 (identical)

NOTE: Inada et al. give no parameter values for p.k_m_K and p.k_m_Na. These parameters have to be taken from Zhang 2000 or Demir 1994. Fortunately, both papers agree for the value of p.k_m_K. For p.k_m_Na there seems to be a flipped digit since Demir 1994 gives the value 5.46 and Zhang 2000 gives the value 5.64. Since we want to replicate Demir 1994 in this example, we chose to use this value. For p.i_max, there exists one value in Table A9 from Demir 1994 and two different values for peripheral and central SA node cells in Zhang 2000. We assume that the "peripheral" value should be used for AN cells and the "central" value should be used for the N cell. As for the NH cell we currently have no good guess. The CellML implementation gives values for p.i_max that do not correspond to either Zhang 2000 or Demir 1994. It might be that the authors had the code of Inada et al. as reference, but we cannot be sure of that.

model SodiumPotassiumPumpLin "IV relationship of I_p, recreates Figure 12 of Demir 1994"
  extends Modelica.Icons.Example;
  InaMo.Membrane.LipidBilayer l2(c = 55e-12, use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  inner parameter SI.Concentration na_in = 9.67 "intracellular sodium concentration";
  inner parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  InaMo.Currents.Atrioventricular.SodiumPotassiumPump p(i_max = 0.2192e-9, k_m_Na = 5.46) "cell membrane permeability for Na+ ions" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  parameter SI.Voltage v_start = -0.06 "starting value for voltage";
initial equation
  vc.v_stim = v_start;
equation
  der(vc.v_stim) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, p.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, p.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 100, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "p\\.i|vc\\.v"),
    Documentation(info = "
    <html>
      <p>To recreate Figure 12 of Demir 1994, plot p.i against vc.v.</p>
      <p>This example uses a linear input current, because I_p is modeled
      as an immediate current without activation or inactivation kinetics.</p>
      <p>The results are not fully accurate, because Demir 1994 only report
      the current-voltage relationship of the <i>sum</i> of I_p and the
      three background currents included in their model.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -60 to +40 mV</li>
        <li>Tolerance: left at default, because derivatives are not relevant
        </li>
        <li>Interval: enough for a smooth plot</li>
        <li>l2.C: according to Table A9 from Demir 1994</li>
        <li>sodium.c_in: according to Table A13 from Demir 1994 (mean)</li>
        <li>sodium.c_ex: according to Table A13 from Demir 1994 (mean)</li>
        <li>potassium.c_in: according to Table A13 from Demir 1994 (mean)</li>
        <li>potassium.c_ex: according to Table A13 from Demir 1994 (mean)</li>
        <li>p.i_max: according to Table A9 from Demir 1994</li>
        <li>p.k_m_K: according to Table A9 from Demir 1994</li>
        <li>p.k_m_Na: according to Table A9 from Demir 1994 and
        Table 10 from Zhang 2000 (identical)</li>
      </ul>
      <p>NOTE: Inada et al. give no parameter values for p.k_m_K and p.k_m_Na.
      These parameters have to be taken from Zhang 2000 or Demir 1994.
      Fortunately, both papers agree for the value of p.k_m_K. For p.k_m_Na
      there seems to be a flipped digit since Demir 1994 gives the value 5.46
      and Zhang 2000 gives the value 5.64. Since we want to replicate Demir
      1994 in this example, we chose to use this value.
      For p.i_max, there exists one value in Table A9 from Demir 1994
      and two different values for peripheral and central SA node cells in
      Zhang 2000. We assume that the &quot;peripheral&quot; value should be
      used for AN cells and the &quot;central&quot; value should be used for
      the N cell. As for the NH cell we currently have no good guess. The
      CellML implementation gives values for p.i_max that do not correspond to
      either Zhang 2000 or Demir 1994. It might be that the authors had the
      code of Inada et al. as reference, but we cannot be sure of that.</p>
    </html>
  "));
end SodiumPotassiumPumpLin;
  1. vc.n.i +( l2.i p.i ) 0.0
  2. vc.v_stim l2.i / l2.c
  3. p.i p.i_max michaelisMenten( na_in , p.k_m_Na ) 3.0 michaelisMenten( k_ex , p.k_m_K ) 2.0 genLogistic( vc.v_stim , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  4. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _n.i_i
    3. _v_stim 0.001

Functions:

function genLogistic "generalized logistic function for fitting sigmoidal curves"
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = 0.0 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 1.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end genLogistic;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
nameunitlabelvalue
p.i"A"Current flowing from pin p to pin n
vc.i"A"measured membrane current
vc.v_stim"V"input voltage (needs to be defined externally)
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
vc.g.p.v"V"Potential at the pin0.0
l2.c"F"membrane capacitance5.5e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
na_in"mol/m3"intracellular sodium concentration9.67
k_ex"mol/m3"extracellular potassium concentration5.4
p.current_name"I_NaK"
p.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.192e-10
p.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.46
p.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
v_start"V"starting value for voltage-0.06

Tests for $I_{st}$

InaMo.Examples.ComponentTests.SustainedInwardIV

To reproduce Figure S5B from Inada 2009, plot vc.i against time starting 50 ms before and ending 100 ms after the pulses with amplitude -80 to 60 mV (in 10 mV increments).

To reproduce Figure S5C from Inada 2009, plot vc.is_peak against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak captures the current from the previous pulse.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -80 mV to 60 mV
  • Tolerance: default value
  • d_pulse: according to description of Figure S5 in Inada 2009
  • d_hold: approximately 5 * max(inact.tau)
  • v_hold: according to description of Figure S5 in Inada 2009
  • l2.C: according to Table S15 in Inada 2009 (N cell model)
  • st.g_max: manually adjusted, because it gives better agreement with both Figures S5B and S5C (see note below)

NOTE: The value for g_max had to be adjusted to obtain current densities that are comparable to those in Figure S5B and S5C in Inada 2009. This is probably because Inada et al. fitted the model to experimental data without stating this in the figure description.

model SustainedInwardIV "IV relationship of I_st, recreates Figure S5B and S5C of Inada 2009"
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.08, d_hold = 15, d_pulse = 0.5), v_start = -0.08, v_inc = 0.005);
  extends Modelica.Icons.Example;
  InaMo.Currents.Atrioventricular.SustainedInwardChannel st(g_max = 0.27e-9) "I_st" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 29e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, st.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, st.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 480, Tolerance = 1e-6, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(is_peak|vs_peak|i|v|v_pulse)"),
    Documentation(info = "
    <html>
    <p>To reproduce Figure S5B from Inada 2009, plot vc.i against time
    starting 50 ms before and ending 100 ms after the pulses with amplitude
    -80 to 60 mV (in 10 mV increments).</p>
    <p>To reproduce Figure S5C from Inada 2009, plot vc.is_peak against
    vc.vs_peak.
    It is necessary to use vc.vs_peak instead of vc.v_pulse,
    because vc.is_peak captures the current from the <i>previous</i> pulse.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: allow a plot from -80 mV to 60 mV</li>
      <li>Tolerance: default value</li>
      <li>d_pulse: according to description of Figure S5 in Inada 2009</li>
      <li>d_hold: approximately 5 * max(inact.tau)</li>
      <li>v_hold: according to description of Figure S5 in Inada 2009</li>
      <li>l2.C: according to Table S15 in Inada 2009 (N cell model)</li>
      <li>st.g_max: manually adjusted, because it gives better agreement
      with both Figures S5B and S5C (see note below)</li>
    </ul>
    <p>NOTE: The value for g_max had to be adjusted to obtain
    current densities that are comparable to those in Figure S5B and S5C in
    Inada 2009.
    This is probably because Inada et al. fitted the model to experimental
    data without stating this in the figure description.</p>
    </html>
  "));
end SustainedInwardIV;
  1. l2.i +( st.i_ion vc.i ) 0.0
  2. vc.n.i +( st.i_ion l2.i ) 0.0
  3. l2.v l2.i / l2.c
  4. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  5. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  6. $whenCondition1 vc.pulse_end
  7. $whenCondition2 vc.pulse_start
  8. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  9. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  10. Within group st (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _open_ratio_act.n_inact.n
    3. _i_open_g_max( l2.v _v_eq)
    4. _i_ion_open_ratio_i_open
    5. _g_open_ratio_g_max
    6. _act.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
    7. _act.tauftau( l2.v , 0.0 )
    8. _inact.alphainact.falpha( l2.v , 0.0 )
    9. _inact.betainact.fbeta( l2.v )
    10. Within group inact (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  11. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    5. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + fa.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fa;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0491 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 111.358574610245 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + fa.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + fa.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end ftau.falpha;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + fa.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function fa.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = -100.0 "scaling factor for x axis (fitting parameter)";
  input Real sy = 0.6316489361702128 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end fa.falpha;
function ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end ftau;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, 0.0) + fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.inact.steady"1"steady state achieved if current voltage is held constant
st.inact.beta"1"rate of transfer from open to closed conformation
st.inact.alpha"1"rate of transfer from closed to open conformation
st.inact.nratio of molecules in open conformation0.03322275838167021
st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.act.steadyvalue that n would reach if v_gate was held constant
st.act.nratio of molecules in open conformation0.9957968373875523
st.g"S"ion conductance
st.i_open"A"i if open_ratio = 1
st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
st.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period15.0
vc.d_pulse"s"pulse period0.5
vc.v_hold"V"voltage during holding period-0.08
v_start"V"start value for pulse amplitude-0.08
v_inc"V"increment for pulse amplitude0.005
st.v_eq"V"equilibrium potential0.0374
st.g_max"S"maximum conductance2.7e-10
st.current_name"I_st"
l2.c"F"membrane capacitance2.9e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.SustainedInwardIVKurata

This example is identical to SustainedInwardIV with the exception that the equation for the steady state of the activation and the parameter values for g_max and C are taken from Kurata 2002.

To reproduce Figure 4 bottom left from Kurata 2002, plot vc.i against time starting 50 ms before and ending 100 ms after the pulses with amplitude -70 to 50 mV (in 10 mV increments).

To reproduce Figure 4 bottom right from Kurata 2002, plot vc.is_peak / C against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak captures the current from the previous pulse.

Simulation protocol and parameters are chosen with the same rationale as in SustainedInwardIV.

model SustainedInwardIVKurata "IV relationship of I_st, reproduces Figure 4 from Kurata 2002 (bottom left + bottom right)"
  // FIXME redeclare breaks icon inheritance
  extends SustainedInwardIV(st(act(redeclare function fsteady = genLogistic(x0 = -57e-3, sx = 1000 / 5)), g_max = 0.48e-9), l2(c = 32e-12));
  annotation(
    experiment(StartTime = 0, StopTime = 480, Tolerance = 1e-6, Interval = 1e-2),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "vc\\.(i|is_peak|vs_peak|v|v_pulse)"),
    Documentation(info = "
    <html>
    <p>This example is identical to SustainedInwardIV with the exception that
    the equation for the steady state of the activation and the parameter
    values for g_max and C are taken from Kurata 2002.</p>
    <p>To reproduce Figure 4 bottom left from Kurata 2002, plot vc.i against
    time starting 50 ms before and ending 100 ms after the pulses with amplitude
    -70 to 50 mV (in 10 mV increments).</p>
    <p>To reproduce Figure 4 bottom right from Kurata 2002, plot vc.is_peak / C
    against vc.vs_peak.
    It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak
    captures the current from the <i>previous</i> pulse.</p>
    <p>Simulation protocol and parameters are chosen with the same rationale
    as in SustainedInwardIV.</p>
    </html>
  "));
end SustainedInwardIVKurata;
  1. l2.i +( st.i_ion vc.i ) 0.0
  2. vc.n.i +( st.i_ion l2.i ) 0.0
  3. l2.v l2.i / l2.c
  4. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  5. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  6. $whenCondition1 vc.pulse_end
  7. $whenCondition2 vc.pulse_start
  8. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  9. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  10. Within group st (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _open_ratio_act.n_inact.n
    3. _i_open_g_max( l2.v _v_eq)
    4. _i_ion_open_ratio_i_open
    5. _g_open_ratio_g_max
    6. _act.steadyfsteady( l2.v , 0.0 , 1.0 , -0.057 , 200.0 , 1.0 , 1.0 , 1.0 )
    7. _act.tauftau( l2.v , 0.0 )
    8. _inact.alphainact.falpha( l2.v , 0.0 )
    9. _inact.betainact.fbeta( l2.v )
    10. Within group inact (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  11. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    3. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    4. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    5. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.057 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + fa.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fa;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + fa.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, 0.0) + fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + fa.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end ftau;
function fa.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = -100.0 "scaling factor for x axis (fitting parameter)";
  input Real sy = 0.6316489361702128 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end fa.falpha;
function ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + fa.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end ftau.falpha;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.inact.steady"1"steady state achieved if current voltage is held constant
st.inact.beta"1"rate of transfer from open to closed conformation
st.inact.alpha"1"rate of transfer from closed to open conformation
st.inact.nratio of molecules in open conformation0.03322275838167021
st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.act.steadyvalue that n would reach if v_gate was held constant
st.act.nratio of molecules in open conformation0.999988804640495
st.g"S"ion conductance
st.i_open"A"i if open_ratio = 1
st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
st.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period15.0
vc.d_pulse"s"pulse period0.5
vc.v_hold"V"voltage during holding period-0.08
v_start"V"start value for pulse amplitude-0.08
v_inc"V"increment for pulse amplitude0.005
st.v_eq"V"equilibrium potential0.0374
st.g_max"S"maximum conductance4.8e-10
st.current_name"I_st"
l2.c"F"membrane capacitance3.2e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.SustainedInwardSteady

To reproduce Figure S5A from Inada 2009, plot act_steady against v.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -80 to 60 mV
  • Tolerance: left at default value, since derivatives are not relevant
  • Interval: enough for a smooth plot
model SustainedInwardSteady "steady state of I_st, recreates Figure S5A from Inada 2009"
  extends Modelica.Icons.Example;
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  InaMo.Currents.Atrioventricular.SustainedInwardChannel st "I_st" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  Real act_steady = st.act.steady "steady state of activation gate";
  SI.Duration act_tau = st.act.tau "time constant of activation gate";
  Real inact_steady = inact_tau * st.inact.alpha "steady state of inactivation gate";
  SI.Duration inact_tau = 1 / (st.inact.alpha + st.inact.beta) "time constant of inactivation gate";
  SI.Voltage v(start = -0.08, fixed = true) "input voltage";

  function qa "direct copy of activation steady state from Kurata 2002"
    input Real x;
    output Real y;
  algorithm
    y := 1 / (1 + exp(-(x + 57) / 5));
  end qa;

  function qi "direct copy of inactivation steady state from Kurata 2002"
    input Real x;
    output Real y;
  protected
    Real alpha;
    Real beta;
  algorithm
    alpha := 0.1504 / (3100 * exp(x / 13) + 700 * exp(x / 70));
    beta := 0.1504 / (95 * exp(-x / 10) + 50 * exp(-x / 700)) + 0.000229 / (1 + exp(-x / 5));
    y := alpha / (alpha + beta);
  end qi;

  function tau_qa "direct copy of activation time constant from Kurata 2002"
    input Real x;
    output Real y;
  protected
    Real alpha;
    Real beta;
  algorithm
    alpha := 1 / (0.15 * exp(-x / 11) + 0.2 * exp(-x / 700));
    beta := 1 / (16 * exp(x / 8) + 15 * exp(x / 50));
    y := 1 / (alpha + beta);
  end tau_qa;

  function tau_qi "direct copy of inactivation time constant from Kurata 2002"
    input Real x;
    output Real y;
  protected
    Real alpha;
    Real beta;
  algorithm
    alpha := 0.1504 / (3100 * exp(x / 13) + 700 * exp(x / 70));
    beta := 0.1504 / (95 * exp(-x / 10) + 50 * exp(-x / 700)) + 0.000229 / (1 + exp(-x / 5));
    y := 1 / (alpha + beta);
  end tau_qi;

  Real act_steady2 = qa(1000 * v) "steady state of activation gate (Kurata 2002)";
  Real inact_steady2 = qi(1000 * v) "steady state of inactivation gate (Kurata 2002)";
  Real act_tau2 = 0.001 * tau_qa(1000 * v) "time constant of activation gate (Kurata 2002)";
  Real inact_tau2 = 0.001 * tau_qi(1000 * v) "steady state of inactivation gate (Kurata 2002)";
equation
  vc.v_stim = v;
  der(v) = 0.001;
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, st.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, st.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 140, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "(act_steady|act_tau|inact_steady|inact_tau)2?|v|vc.v"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S5A from Inada 2009, plot act_steady
      against v.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -80 to 60 mV</li>
        <li>Tolerance: left at default value, since derivatives are not
        relevant</li>
        <li>Interval: enough for a smooth plot</li>
      </ul>
    </html>
  "));
end SustainedInwardSteady;
  1. st.i_ion +( l2.i vc.i ) 0.0
  2. vc.n.i +( l2.i st.i_ion ) 0.0
  3. l2.v l2.i / l2.c
  4. inact_steady inact_tau st.inact.alpha
  5. act_steady2 qa( 1000.0 l2.v )
  6. inact_steady2 qi( 1000.0 l2.v )
  7. act_tau2 0.001 tau_qa( 1000.0 l2.v )
  8. inact_tau2 0.001 tau_qi( 1000.0 l2.v )
  9. Within group st (prefix _ indicates shortened variable name)
    1. _act.n( act_steady _act.n)/ act_tau
    2. _open_ratio_act.n_inact.n
    3. _i_open_g_max( l2.v _v_eq)
    4. _i_ion_open_ratio_i_open
    5. _g_open_ratio_g_max
    6. act_steady fsteady( l2.v , 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
    7. act_tau ftau( l2.v , 0.0 )
    8. _inact.alphainact.falpha( l2.v , 0.0 )
    9. _inact.betainact.fbeta( l2.v )
    10. Within group inact (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. inact_tau 1.0 /(_alpha+_beta)
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. l2.v 0.001

Functions:

function tau_qi "direct copy of inactivation time constant from Kurata 2002"
  input Real x;
  output Real y;
  protected Real alpha;
  protected Real beta;
algorithm
  alpha := 0.1504 / (3100.0 * exp(x / 13.0) + 700.0 * exp(x / 70.0));
  beta := 0.1504 / (95.0 * exp(-x / 10.0) + 50.0 * exp(-x / 700.0)) + 0.000229 / (1.0 + exp(-x / 5.0));
  y := 1.0 / (alpha + beta);
end tau_qi;
function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0491 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 111.358574610245 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function fa.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = -100.0 "scaling factor for x axis (fitting parameter)";
  input Real sy = 0.6316489361702128 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end fa.falpha;
function fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + fa.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fa;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, 0.0) + fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
function qa "direct copy of activation steady state from Kurata 2002"
  input Real x;
  output Real y;
algorithm
  y := 1.0 / (1.0 + exp(-(x + 57.0) / 5.0));
end qa;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + fa.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end ftau;
function qi "direct copy of inactivation steady state from Kurata 2002"
  input Real x;
  output Real y;
  protected Real alpha;
  protected Real beta;
algorithm
  alpha := 0.1504 / (3100.0 * exp(x / 13.0) + 700.0 * exp(x / 70.0));
  beta := 0.1504 / (95.0 * exp(-x / 10.0) + 50.0 * exp(-x / 700.0)) + 0.000229 / (1.0 + exp(-x / 5.0));
  y := alpha / (alpha + beta);
end qi;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + fa.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (fa.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + fa.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end ftau.falpha;
function tau_qa "direct copy of activation time constant from Kurata 2002"
  input Real x;
  output Real y;
  protected Real alpha;
  protected Real beta;
algorithm
  alpha := 1.0 / (0.15 * exp(-x / 11.0) + 0.2 * exp(-x / 700.0));
  beta := 1.0 / (16.0 * exp(x / 8.0) + 15.0 * exp(x / 50.0));
  y := 1.0 / (alpha + beta);
end tau_qa;
nameunitlabelvalue
inact_tau2steady state of inactivation gate (Kurata 2002)
act_tau2time constant of activation gate (Kurata 2002)
inact_steady2steady state of inactivation gate (Kurata 2002)
act_steady2steady state of activation gate (Kurata 2002)
inact_tau"s"time constant of inactivation gate
inact_steady"s"steady state of inactivation gate
act_tau"s"time constant of activation gate
act_steadysteady state of activation gate
st.inact.steady"1"steady state achieved if current voltage is held constant
st.inact.beta"1"rate of transfer from open to closed conformation
st.inact.alpha"1"rate of transfer from closed to open conformation
st.inact.nratio of molecules in open conformation0.03322275838167021
st.act.nratio of molecules in open conformation0.9957968373875523
st.g"S"ion conductance
st.i_open"A"i if open_ratio = 1
st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
st.i_ion"A"current used for ion flux
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)-0.08
vc.g.p.v"V"Potential at the pin0.0
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
st.v_eq"V"equilibrium potential0.0374
st.g_max"S"maximum conductance1e-10
st.current_name"I_st"

Tests for $I_{to}$

InaMo.Examples.ComponentTests.TransientOutwardIV

To reproduce Figure S2E from Inada 2009, plot vc.i against time for 500 ms after the pulses with amplitude -10, 0, 20 and 40 mV.

To reproduce Figure S2F from Inada 2009, plot vc.is_peak/max(vc.is_peak) against vc.vs_peak. It is necessary to use vc.vs_peak instead of vc.v_pulse, because vc.is_peak captures the current from the previous pulse.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -60 mV to 60 mV (NOTE: It is important to choose StopTime such that the pulse for 65 mV is not part of the simulation, because otherwise the normalized current would change, since the maximum current is achieved during the last pulse)
  • Tolerance: default value
  • Interval: enough to roughly plot time course of current
  • d_pulse: according to description of Figure S2 in Inada 2009
  • d_hold: approximately 5 * max(inact_slow.tau)
  • v_hold: according to description of Figure S2 in Inada 2009
  • l2.C: according to Table S15 in Inada 2009 (NH cell model)
  • to.g_max: according to Table S15 in Inada 2009 (NH cell model)

NOTE: Although Inada et al. state that they used the AN cell model for Figure S2E and S2F, the absolute values of the current make it seem more likely, that the NH cell model was used instead. However, with these parameters the model still shows too high absolute values for the current. We see two possible explanations for this difference: Either Inada et al. used differnet parameter settings for the plots without documenting them or they chose d_hold too small, so that recovery to the steady state at holding potential was not completed before the next pulse. The difference disappears when the current is multiplied by a factor of 0.75 (e.g. by adjusting g_max).

model TransientOutwardIV "IV relationship of I_to, recreates Figures S2E and S2F from Inada 2009"
  extends Modelica.Icons.Example;
  extends InaMo.Examples.Interfaces.IVBase(vc(v_hold = -0.08, d_hold = 20, d_pulse = 0.5), v_start = -0.06, v_inc = 0.005);
  parameter SI.Concentration k_in = 140 "intracellular potassium concentration";
  parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  parameter SI.Temperature temp = 310 "cell medium temperature";
  parameter SI.Voltage v_k = nernst(k_in, k_ex, 1, temp) "equilibrium potential for K+ ions";
  InaMo.Currents.Atrioventricular.TransientOutwardChannel to(g_max = 14e-9, v_eq = v_k) "I_to (parameter values for NH cell)" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  // use g_max of NH model
  InaMo.Membrane.LipidBilayer l2(use_init = false, c = 40e-12) "cell membrane" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
equation
  connect(l2.p, vc.p) annotation(
    Line(points = {{34, 18}, {34, 18}, {34, 40}, {0, 40}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(vc.p, to.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 40}, {-34, 40}, {-34, 18}, {-34, 18}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{34, -16}, {34, -16}, {34, -40}, {0, -40}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(vc.n, to.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -40}, {-34, -40}, {-34, -16}, {-34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 532.5, Tolerance = 1e-6, Interval = 1e-2),
    __MoST_experiment(variableFilter = "vc\\.(i|is_peak|vs_peak|v|v_pulse)"),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    Documentation(info = "
    <html>
    <p>To reproduce Figure S2E from Inada 2009, plot vc.i against time for
    500 ms after the pulses with amplitude -10, 0, 20 and 40 mV.</p>
    <p>To reproduce Figure S2F from Inada 2009, plot vc.is_peak/max(vc.is_peak)
    against vc.vs_peak.
    It is necessary to use vc.vs_peak instead of vc.v_pulse,
    because vc.is_peak captures the current from the <i>previous</i> pulse.</p>
    <p>Simulation protocol and parameters are chosen with the following
    rationale:</p>
    <ul>
      <li>StopTime: allow a plot from -60 mV to 60 mV (NOTE: It is important
      to choose StopTime such that the pulse for 65 mV is not part of the
      simulation, because otherwise the normalized current would change, since
      the maximum current is achieved during the last pulse)</li>
      <li>Tolerance: default value</li>
      <li>Interval: enough to roughly plot time course of current</li>
      <li>d_pulse: according to description of Figure S2 in Inada 2009</li>
      <li>d_hold: approximately 5 * max(inact_slow.tau)</li>
      <li>v_hold: according to description of Figure S2 in Inada 2009</li>
      <li>l2.C: according to Table S15 in Inada 2009 (NH cell model)</li>
      <li>to.g_max: according to Table S15 in Inada 2009 (NH cell model)</li>
    </ul>
    <p>NOTE: Although Inada et al. state that they used the AN cell model for
    Figure S2E and S2F, the absolute values of the current make it seem more
    likely, that the NH cell model was used instead.
    However, with these parameters the model still shows too high absolute
    values for the current.
    We see two possible explanations for this difference: Either Inada et al.
    used differnet parameter settings for the plots without documenting them
    or they chose d_hold too small, so that recovery to the steady state at
    holding potential was not completed before the next pulse.
    The difference disappears when the current is multiplied by a factor of
    0.75 (e.g. by adjusting g_max).</p>
    </html>
  "));
end TransientOutwardIV;
  1. l2.i +( to.i_ion vc.i ) 0.0
  2. l2.v l2.i / l2.c
  3. vc.within_pulse time
    ( vc.tp_last 
    )< vc.d_pulse 
    
    
    
  4. vc.after_pulse time
    ( vc.tp_last 
    )> vc.d_pulse 
    
    
    
  5. $whenCondition1 vc.pulse_end
  6. $whenCondition2 vc.pulse_start
  7. $whenCondition3 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.after_pulse 
    ) vc.pulse_end 
    
    
    
  8. $whenCondition4 (( vc.peak_indicator
    ( vc.peak_indicator 
    )) vc.within_pulse 
    ) vc.pulse_end 
    
    
    
  9. Within group to (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max( l2.v _v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act.steadyfsteady( l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    9. _act.tauact.ftau( l2.v , 0.000596 )
    10. _inact_slow.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    11. _inact_slow.tauinact_slow.ftau( l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    12. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    13. _inact_fast.taufsteady( l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n
  10. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _i_n.i
    3. l2.v (_pulse_signal)(_v_pulse_v_hold)+_v_hold
    4. _pulse_start( 1 ,_d_hold,_d_hold+_d_pulse)
    5. _pulse_end( 2 ,_d_hold+_d_pulse,_d_hold+_d_pulse)
    6. _peak_indicator_i× 1000000000000.0 < 0.0

Functions:

function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = 0.00744 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 60.97560975609757 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function absmax "returns input whose absolute value is larger, preserving the sign"
  input Real a "first input";
  input Real b "second input";
  output Real m "a if abs(a) > abs(b), otherwise b";
algorithm
  m := if abs(a) > abs(b) then a else b;
end absmax;
function act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end act.ftau;
function falpha
  input Real x "input value";
  input Real x0 = -0.03061 "x-value where y = 1 (fitting parameter)";
  input Real sx = 90.0 "scaling factor for x axis (fitting parameter)";
  input Real sy = 325.2823086574655 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end falpha;
function inact_slow.ftau
  input Real x "input value";
  input Real y_min = 0.1 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 4.1 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.065 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.0158113883008419 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_slow.ftau;
nameunitlabelvalue
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.003978453093609672
to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_slow.steadyvalue that n would reach if v_gate was held constant
to.inact_slow.nratio of molecules in open conformation0.003978453093609672
to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.act.steadyvalue that n would reach if v_gate was held constant
to.act.nratio of molecules in open conformation0.3884912691202426
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
vc.after_pulsetrue after pulse has passed
vc.within_pulsetrue during pulse
vc.vp_last"V"voltage of last pulse0.0
vc.tp_last"s"time stamp of start of last pulse0.0
vc.peak_indicatorforces event at peak (factor of 1e12 is required to detect zero crossing)false
vc.tail_i"A"peak current after pulse0.0
vc.peak_i"A"peak current during pulse0.0
vc.vs_tail"V"steady step function of pulse associated with is_tail0.0
vc.vs_end"V"steady step function of pulse associated with is_end0.0
vc.vs_peak"V"steady step function of pulse associated with is_peak0.0
vc.is_end"A"steady step function of current at end of last pulse0.0
vc.is_tail"A"steady step function of peak tail current after last pulse0.0
vc.is_peak"A"steady step function of peak current during last pulse0.0
vc.v_pulse"V"voltage during pulse (must be defined externally)
vc.pulse_signal0 during holding period, 1 during pulse0
vc.pulse_endsignals end of pulse
vc.pulse_startsignals start of pulse
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
$whenCondition1vc.pulse_end
$whenCondition2vc.pulse_start
$whenCondition3vc.peak_indicator <> pre(vc.peak_indicator) and vc.after_pulse or vc.pulse_end
$whenCondition4vc.peak_indicator <> pre(vc.peak_indicator) and vc.within_pulse or vc.pulse_end
vc.g.p.v"V"Potential at the pin0.0
vc.d_hold"s"holding period20.0
vc.d_pulse"s"pulse period0.5
vc.v_hold"V"voltage during holding period-0.08
v_start"V"start value for pulse amplitude-0.06
v_inc"V"increment for pulse amplitude0.005
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
temp"K"cell medium temperature288.15
v_k"V"equilibrium potential for K+ ionsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance1.4e-08
to.current_name"I_to"
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse

InaMo.Examples.ComponentTests.TransientOutwardSteady

To reproduce Figure S2A-S2D from Inada 2009, plot act_steady, inact_steady, inact_tau_fast and inact_tau_slow against v.

Simulation protocol and parameters are chosen with the following rationale:

  • StopTime: allow a plot from -120 to 80 mV
  • Tolerance: left at default value, since derivatives are not relevant
  • Interval: enough to give a smooth plot

NOTE: Figure S2D shows a higher minimum for inact_slow.ftau.y_min (0.2 s instead of 0.1 s), but the formulas both in Inada 2009 and in the C++ code use the value of 0.1 s, which is why we keep it.

model TransientOutwardSteady "steady state of I_to, recreates Figures S2A-S2D from Inada 2009"
  extends Modelica.Icons.Example;
  InaMo.Membrane.LipidBilayer l2(use_init = false) "cell membrane" annotation(
    Placement(transformation(extent = {{-17, -17}, {17, 17}})));
  InaMo.ExperimentalMethods.VoltageClamp.VoltageClamp vc "voltage clamp" annotation(
    Placement(transformation(extent = {{17, -17}, {51, 17}})));
  InaMo.Currents.Atrioventricular.TransientOutwardChannel to(v_eq = v_k) "I_to" annotation(
    Placement(transformation(extent = {{-51, -17}, {-17, 17}})));
  parameter SI.Concentration k_in = 140 "intracellular potassium concentration";
  parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  parameter SI.Temperature temp = 310 "cell medium temperature";
  parameter SI.Voltage v_k = nernst(k_in, k_ex, 1, temp) "equilibrium potential for K+ ions";
  Real act_steady = to.act.steady "steady state of activation gate";
  SI.Duration act_tau = to.act.tau "time constant of activation gate";
  Real inact_steady = to.inact_slow.steady "steady state of inactivation gates";
  SI.Duration inact_tau_fast = to.inact_fast.tau "time constant of fast inactivation gate";
  SI.Duration inact_tau_slow = to.inact_slow.tau "time constant of slow inactivation gate";
  SI.Voltage v(start = -0.12, fixed = true);
equation
  vc.v_stim = v;
  der(v) = 0.001;
  connect(to.p, l2.p) annotation(
    Line(points = {{-34, 18}, {-34, 18}, {-34, 28}, {0, 28}, {0, 18}, {0, 18}}, color = {0, 0, 255}));
  connect(l2.p, vc.p) annotation(
    Line(points = {{0, 18}, {0, 18}, {0, 28}, {34, 28}, {34, 18}, {34, 18}}, color = {0, 0, 255}));
  connect(to.n, l2.n) annotation(
    Line(points = {{-34, -16}, {-34, -16}, {-34, -28}, {0, -28}, {0, -16}, {0, -16}}, color = {0, 0, 255}));
  connect(l2.n, vc.n) annotation(
    Line(points = {{0, -16}, {0, -16}, {0, -28}, {34, -28}, {34, -16}, {34, -16}}, color = {0, 0, 255}));
  annotation(
    experiment(StartTime = 0, StopTime = 200, Tolerance = 1e-6, Interval = 1),
    __OpenModelica_simulationFlags(lv = "LOG_STATS", s = "dassl"),
    __MoST_experiment(variableFilter = "act_tau|act_steady|inact_steady|inact_tau_fast|inact_tau_slow|v|vc\\.v"),
    Documentation(info = "
    <html>
      <p>To reproduce Figure S2A-S2D from Inada 2009, plot act_steady,
      inact_steady, inact_tau_fast and inact_tau_slow against v.</p>
      <p>Simulation protocol and parameters are chosen with the following
      rationale:</p>
      <ul>
        <li>StopTime: allow a plot from -120 to 80 mV</li>
        <li>Tolerance: left at default value, since derivatives are not
        relevant</li>
        <li>Interval: enough to give a smooth plot</li>
      </ul>
      <p>NOTE: Figure S2D shows a higher minimum for inact_slow.ftau.y_min
      (0.2 s instead of 0.1 s), but the formulas both in Inada 2009 and in
      the C++ code use the value of 0.1 s, which is why we keep it.</p>
    </html>
  "));
end TransientOutwardSteady;
  1. vc.n.i +( l2.i to.i_ion ) 0.0
  2. l2.v l2.i / l2.c
  3. Within group to (prefix _ indicates shortened variable name)
    1. _act.n( act_steady _act.n)/ act_tau
    2. _inact_slow.n( inact_steady _inact_slow.n)/ inact_tau_slow
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/ inact_tau_fast
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max( l2.v _v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. act_steady fsteady( l2.v , 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    9. act_tau act.ftau( l2.v , 0.000596 )
    10. inact_steady fsteady( l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    11. inact_tau_slow inact_slow.ftau( l2.v , 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    12. _inact_fast.steadyfsteady( l2.v , 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    13. inact_tau_fast fsteady( l2.v , 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    14. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n
  4. Within group vc (prefix _ indicates shortened variable name)
    1. _g.p.i+(_i_n.i) 0.0
    2. _n.i_i
    3. l2.v 0.001

Functions:

function fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = 0.00744 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 60.97560975609757 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end fsteady;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end act.ftau;
function falpha
  input Real x "input value";
  input Real x0 = -0.03061 "x-value where y = 1 (fitting parameter)";
  input Real sx = 90.0 "scaling factor for x axis (fitting parameter)";
  input Real sy = 325.2823086574655 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end falpha;
function inact_slow.ftau
  input Real x "input value";
  input Real y_min = 0.1 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 4.1 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.065 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.0158113883008419 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_slow.ftau;
nameunitlabelvalue
inact_tau_slow"s"time constant of slow inactivation gate
inact_tau_fast"s"time constant of fast inactivation gate
inact_steadysteady state of inactivation gates
act_tau"s"time constant of activation gate
act_steadysteady state of activation gate
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.003978453093609672
to.inact_slow.nratio of molecules in open conformation0.003978453093609672
to.act.nratio of molecules in open conformation0.3884912691202426
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
vc.i"A"measured membrane current
vc.g.p.i"A"Current flowing into the pin
vc.n.i"A"Current flowing into the pin
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)-0.12
vc.g.p.v"V"Potential at the pin0.0
l2.c"F"membrane capacitance0.01
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedfalse
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance2e-08
to.current_name"I_to"
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
temp"K"cell medium temperature288.15
v_k"V"equilibrium potential for K+ ionsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)