//Created by libAntimony v2.4 model tentusscher_2004_endo_cell__environment(time_) // Variable initializations: time_ = ; end model tentusscher_2004_endo_cell__membrane(V, R, T, F, Cm, V_c, time_, i_K1, i_to, i_Kr, i_Ks, i_CaL, i_NaK, i_Na, i_b_Na, i_NaCa, i_b_Ca, i_p_K, i_p_Ca, i_Stim) // Assignment Rules: i_Stim := piecewise( - stim_amplitude , ( geq(time_ - floor(time_ / stim_period) * stim_period, stim_start)) && (time_ - floor(time_ / stim_period) * stim_period <= stim_start + stim_duration ), 0 ); // Rate Rules: V' = (-(1) / 1) * (i_K1 + i_to + i_Kr + i_Ks + i_CaL + i_NaK + i_Na + i_b_Na + i_NaCa + i_b_Ca + i_p_K + i_p_Ca + i_Stim); // Variable initializations: V = -86.2; R = 8314.472; T = 310; F = 96485.3415; Cm = 0.185; V_c = 0.016404; time_ = ; i_K1 = ; i_to = ; i_Kr = ; i_Ks = ; i_CaL = ; i_NaK = ; i_Na = ; i_b_Na = ; i_NaCa = ; i_b_Ca = ; i_p_K = ; i_p_Ca = ; stim_start = 10; stim_period = 1000; stim_duration = 1; stim_amplitude = 52; end model tentusscher_2004_endo_cell__reversal_potentials(E_Na, E_K, E_Ks, E_Ca, K_o, Na_o, K_i, Na_i, Ca_o, Ca_i, R, F, T, time_) // Assignment Rules: E_Na := ((R * T) / F) * ln(Na_o / Na_i); E_K := ((R * T) / F) * ln(K_o / K_i); E_Ks := ((R * T) / F) * ln((K_o + P_kna * Na_o) / (K_i + P_kna * Na_i)); E_Ca := ((0.5 * R * T) / F) * ln(Ca_o / Ca_i); // Variable initializations: P_kna = 0.03; K_o = ; Na_o = ; K_i = ; Na_i = ; Ca_o = ; Ca_i = ; R = ; F = ; T = ; time_ = ; end model tentusscher_2004_endo_cell__inward_rectifier_potassium_current(i_K1, V, K_o, E_K, time_) // Assignment Rules: i_K1 := g_K1 * xK1_inf * root(K_o / 5.4) * (V - E_K); xK1_inf := alpha_K1 / (alpha_K1 + beta_K1); alpha_K1 := 0.1 / (1 + exp(0.06 * ((V - E_K) - 200))); beta_K1 := (3 * exp(0.0002 * ((V - E_K) + 100)) + exp(0.1 * ((V - E_K) - 10))) / (1 + exp(-(0.5) * (V - E_K))); // Variable initializations: g_K1 = 5.405; V = ; K_o = ; E_K = ; time_ = ; end model tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current_Xr1_gate(Xr1, V, time_) // Assignment Rules: xr1_inf := 1 / (1 + exp((-(26) - V) / 7)); alpha_xr1 := 450 / (1 + exp((-(45) - V) / 10)); beta_xr1 := 6 / (1 + exp((V + 30) / 11.5)); tau_xr1 := 1 * alpha_xr1 * beta_xr1; // Rate Rules: Xr1' = (xr1_inf - Xr1) / tau_xr1; // Variable initializations: Xr1 = 0; V = ; time_ = ; end model tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current_Xr2_gate(Xr2, V, time_) // Assignment Rules: xr2_inf := 1 / (1 + exp((V + 88) / 24)); alpha_xr2 := 3 / (1 + exp((-(60) - V) / 20)); beta_xr2 := 1.12 / (1 + exp((V - 60) / 20)); tau_xr2 := 1 * alpha_xr2 * beta_xr2; // Rate Rules: Xr2' = (xr2_inf - Xr2) / tau_xr2; // Variable initializations: Xr2 = 1; V = ; time_ = ; end model tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current(i_Kr, E_K, K_o, time_, V, Xr1, Xr2) // Sub-modules, and any changes to those submodules: rapid_time_dependent_potassium_current_Xr1_gate: tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current_Xr1_gate(Xr1, V, time_); rapid_time_dependent_potassium_current_Xr2_gate: tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current_Xr2_gate(Xr2, V, time_); // Assignment Rules: i_Kr := g_Kr * root(K_o / 5.4) * Xr1 * Xr2 * (V - E_K); // Variable initializations: g_Kr = 0.096; E_K = ; K_o = ; end model tentusscher_2004_endo_cell__slow_time_dependent_potassium_current_Xs_gate(Xs, V, time_) // Assignment Rules: xs_inf := 1 / (1 + exp((-(5) - V) / 14)); alpha_xs := 1100 / root(1 + exp((-(10) - V) / 6)); beta_xs := 1 / (1 + exp((V - 60) / 20)); tau_xs := 1 * alpha_xs * beta_xs; // Rate Rules: Xs' = (xs_inf - Xs) / tau_xs; // Variable initializations: Xs = 0; V = ; time_ = ; end model tentusscher_2004_endo_cell__slow_time_dependent_potassium_current(i_Ks, E_Ks, time_, V, Xs) // Sub-modules, and any changes to those submodules: slow_time_dependent_potassium_current_Xs_gate: tentusscher_2004_endo_cell__slow_time_dependent_potassium_current_Xs_gate(Xs, V, time_); // Assignment Rules: i_Ks := g_Ks * power(Xs, 2) * (V - E_Ks); // Variable initializations: g_Ks = 0.245; E_Ks = ; end model tentusscher_2004_endo_cell__fast_sodium_current_m_gate(m, V, time_) // Assignment Rules: m_inf := 1 / power(1 + exp((-(56.86) - V) / 9.03), 2); alpha_m := 1 / (1 + exp((-(60) - V) / 5)); beta_m := 0.1 / (1 + exp((V + 35) / 5)) + 0.1 / (1 + exp((V - 50) / 200)); tau_m := 1 * alpha_m * beta_m; // Rate Rules: m' = (m_inf - m) / tau_m; // Variable initializations: m = 0; V = ; time_ = ; end model tentusscher_2004_endo_cell__fast_sodium_current_h_gate(h, V, time_) // Assignment Rules: h_inf := 1 / power(1 + exp((V + 71.55) / 7.43), 2); alpha_h := piecewise( 0.057 * exp(-(V + 80) / 6.8) , V < -(40) , 0 ); beta_h := piecewise( 2.7 * exp(0.079 * V) + 310000 * exp(0.3485 * V) , V < -(40) , 0.77 / (0.13 * (1 + exp((V + 10.66) / -(11.1)))) ); tau_h := 1 / (alpha_h + beta_h); // Rate Rules: h' = (h_inf - h) / tau_h; // Variable initializations: h = 0.75; V = ; time_ = ; end model tentusscher_2004_endo_cell__fast_sodium_current_j_gate(j, V, time_) // Assignment Rules: j_inf := 1 / power(1 + exp((V + 71.55) / 7.43), 2); alpha_j := piecewise( (((-(25428) * exp(0.2444 * V) - 6.948E-6 * exp(-(0.04391) * V)) * (V + 37.78)) / 1) / (1 + exp(0.311 * (V + 79.23))) , V < -(40) , 0 ); beta_j := piecewise( (0.02424 * exp(-(0.01052) * V)) / (1 + exp(-(0.1378) * (V + 40.14))) , V < -(40) , (0.6 * exp(0.057 * V)) / (1 + exp(-(0.1) * (V + 32))) ); tau_j := 1 / (alpha_j + beta_j); // Rate Rules: j' = (j_inf - j) / tau_j; // Variable initializations: j = 0.75; V = ; time_ = ; end model tentusscher_2004_endo_cell__fast_sodium_current(i_Na, E_Na, time_, V, m, h, j) // Sub-modules, and any changes to those submodules: fast_sodium_current_m_gate: tentusscher_2004_endo_cell__fast_sodium_current_m_gate(m, V, time_); fast_sodium_current_h_gate: tentusscher_2004_endo_cell__fast_sodium_current_h_gate(h, V, time_); fast_sodium_current_j_gate: tentusscher_2004_endo_cell__fast_sodium_current_j_gate(j, V, time_); // Assignment Rules: i_Na := g_Na * power(m, 3) * h * j * (V - E_Na); // Variable initializations: g_Na = 14.838; E_Na = ; end model tentusscher_2004_endo_cell__sodium_background_current(i_b_Na, E_Na, time_, V) // Assignment Rules: i_b_Na := g_bna * (V - E_Na); // Variable initializations: g_bna = 0.00029; E_Na = ; time_ = ; V = ; end model tentusscher_2004_endo_cell__L_type_Ca_current_d_gate(d, V, time_) // Assignment Rules: d_inf := 1 / (1 + exp((-(5) - V) / 7.5)); alpha_d := 1.4 / (1 + exp((-(35) - V) / 13)) + 0.25; beta_d := 1.4 / (1 + exp((V + 5) / 5)); gamma_d := 1 / (1 + exp((50 - V) / 20)); tau_d := 1 * alpha_d * beta_d + gamma_d; // Rate Rules: d' = (d_inf - d) / tau_d; // Variable initializations: d = 0; V = ; time_ = ; end model tentusscher_2004_endo_cell__L_type_Ca_current_f_gate(f, V, time_) // Assignment Rules: f_inf := 1 / (1 + exp((V + 20) / 7)); tau_f := 1125 * exp(-power(V + 27, 2) / 240) + 80 + 165 / (1 + exp((25 - V) / 10)); // Rate Rules: f' = (f_inf - f) / tau_f; // Variable initializations: f = 1; V = ; time_ = ; end model tentusscher_2004_endo_cell__L_type_Ca_current_fCa_gate(fCa, Ca_i, V, time_) // Assignment Rules: alpha_fCa := 1 / (1 + power(Ca_i / 0.000325, 8)); beta_fCa := 0.1 / (1 + exp((Ca_i - 0.0005) / 0.0001)); gama_fCa := 0.2 / (1 + exp((Ca_i - 0.00075) / 0.0008)); fCa_inf := (alpha_fCa + beta_fCa + gama_fCa + 0.23) / 1.46; tau_fCa := 2; d_fCa := (fCa_inf - fCa) / tau_fCa; // Rate Rules: fCa' = piecewise( 0 , ( fCa_inf > fCa) && (V > -(60) ), d_fCa ); // Variable initializations: fCa = 1; Ca_i = ; V = ; time_ = ; end model tentusscher_2004_endo_cell__L_type_Ca_current(i_CaL, Ca_o, Ca_i, R, F, T, time_, V, d, f, fCa) // Sub-modules, and any changes to those submodules: L_type_Ca_current_d_gate: tentusscher_2004_endo_cell__L_type_Ca_current_d_gate(d, V, time_); L_type_Ca_current_f_gate: tentusscher_2004_endo_cell__L_type_Ca_current_f_gate(f, V, time_); L_type_Ca_current_fCa_gate: tentusscher_2004_endo_cell__L_type_Ca_current_fCa_gate(fCa, Ca_i, V, time_); // Assignment Rules: i_CaL := (((g_CaL * d * f * fCa * 4 * V * power(F, 2)) / (R * T)) * (Ca_i * exp((2 * V * F) / (R * T)) - 0.341 * Ca_o)) / (exp((2 * V * F) / (R * T)) - 1); // Variable initializations: g_CaL = 0.000175; Ca_o = ; R = ; F = ; T = ; end model tentusscher_2004_endo_cell__calcium_background_current(i_b_Ca, E_Ca, time_, V) // Assignment Rules: i_b_Ca := g_bca * (V - E_Ca); // Variable initializations: g_bca = 0.000592; E_Ca = ; time_ = ; V = ; end model tentusscher_2004_endo_cell__transient_outward_current_s_gate(s, V, time_) // Assignment Rules: s_inf := 1 / (1 + exp((V + 28) / 5)); tau_s := 1000 * exp(-power(V + 67, 2) / 1000) + 8; // Rate Rules: s' = (s_inf - s) / tau_s; // Variable initializations: s = 1; V = ; time_ = ; end model tentusscher_2004_endo_cell__transient_outward_current_r_gate(r, V, time_) // Assignment Rules: r_inf := 1 / (1 + exp((20 - V) / 6)); tau_r := 9.5 * exp(-power(V + 40, 2) / 1800) + 0.8; // Rate Rules: r' = (r_inf - r) / tau_r; // Variable initializations: r = 0; V = ; time_ = ; end model tentusscher_2004_endo_cell__transient_outward_current(i_to, E_K, V, time_, s, r) // Sub-modules, and any changes to those submodules: transient_outward_current_s_gate: tentusscher_2004_endo_cell__transient_outward_current_s_gate(s, V, time_); transient_outward_current_r_gate: tentusscher_2004_endo_cell__transient_outward_current_r_gate(r, V, time_); // Assignment Rules: i_to := g_to * r * s * (V - E_K); // Variable initializations: g_to = 0.073; E_K = ; end model tentusscher_2004_endo_cell__sodium_potassium_pump_current(i_NaK, K_o, Na_i, time_, R, F, T, V) // Assignment Rules: i_NaK := ((((P_NaK * K_o) / (K_o + K_mk)) * Na_i) / (Na_i + K_mNa)) / (1 + 0.1245 * exp((-(0.1) * V * F) / (R * T)) + 0.0353 * exp((- V * F) / (R * T))); // Variable initializations: P_NaK = 1.362; K_mk = 1; K_mNa = 40; K_o = ; Na_i = ; time_ = ; R = ; F = ; T = ; V = ; end model tentusscher_2004_endo_cell__sodium_calcium_exchanger_current(i_NaCa, Na_i, Na_o, Ca_i, Ca_o, R, F, T, V, time_) // Assignment Rules: i_NaCa := (K_NaCa * (exp((gamma * V * F) / (R * T)) * power(Na_i, 3) * Ca_o - exp(((gamma - 1) * V * F) / (R * T)) * power(Na_o, 3) * Ca_i * alpha)) / ((power(Km_Nai, 3) + power(Na_o, 3)) * (Km_Ca + Ca_o) * (1 + K_sat * exp(((gamma - 1) * V * F) / (R * T)))); // Variable initializations: K_NaCa = 1000; K_sat = 0.1; alpha = 2.5; gamma = 0.35; Km_Ca = 1.38; Km_Nai = 87.5; Na_i = ; Na_o = ; Ca_i = ; Ca_o = ; R = ; F = ; T = ; V = ; time_ = ; end model tentusscher_2004_endo_cell__calcium_pump_current(i_p_Ca, Ca_i) // Assignment Rules: i_p_Ca := (g_pCa * Ca_i) / (Ca_i + K_pCa); // Variable initializations: g_pCa = 0.825; K_pCa = 0.0005; Ca_i = ; end model tentusscher_2004_endo_cell__potassium_pump_current(i_p_K, E_K, V) // Assignment Rules: i_p_K := (g_pK * (V - E_K)) / (1 + exp((25 - V) / 5.98)); // Variable initializations: g_pK = 0.0146; E_K = ; V = ; end model tentusscher_2004_endo_cell__calcium_dynamics(Ca_i, Ca_o, V, V_c, time_, d, F, Cm, i_CaL, i_NaCa, i_p_Ca, i_b_Ca) // Assignment Rules: i_rel := ((a_rel * power(Ca_SR, 2)) / (power(b_rel, 2) + power(Ca_SR, 2)) + c_rel) * d * g; i_up := Vmax_up / (1 + power(K_up, 2) / power(Ca_i, 2)); i_leak := V_leak * (Ca_SR - Ca_i); g_inf := piecewise( 1 / (1 + power(Ca_i / 0.00035, 6)) , Ca_i < 0.00035 , 1 / (1 + power(Ca_i / 0.00035, 16)) ); Ca_i_bufc := 1 / (1 + (Buf_c * K_buf_c) / power(Ca_i + K_buf_c, 2)); Ca_sr_bufsr := 1 / (1 + (Buf_sr * K_buf_sr) / power(Ca_SR + K_buf_sr, 2)); d_g := (g_inf - g) / tau_g; // Rate Rules: Ca_i' = Ca_i_bufc * (((i_leak - i_up) + i_rel) - ((1 * ((i_CaL + i_b_Ca + i_p_Ca) - 2 * i_NaCa)) / (2 * 1 * V_c * F)) * Cm); Ca_SR' = ((Ca_sr_bufsr * V_c) / V_sr) * (i_up - (i_rel + i_leak)); g' = piecewise( 0 , ( g_inf > g) && (V > -(60) ), d_g ); // Variable initializations: Ca_i = 0.0002; Ca_o = 2; Ca_SR = 0.2; g = 1; tau_g = 2; a_rel = 0.016464; b_rel = 0.25; c_rel = 0.008232; K_up = 0.00025; V_leak = 8e-5; Vmax_up = 0.000425; Buf_c = 0.15; K_buf_c = 0.001; Buf_sr = 10; K_buf_sr = 0.3; V_sr = 0.001094; V = ; V_c = ; time_ = ; d = ; F = ; Cm = ; i_CaL = ; i_NaCa = ; i_p_Ca = ; i_b_Ca = ; end model tentusscher_2004_endo_cell__sodium_dynamics(Na_i, Na_o, time_, F, Cm, V_c, i_Na, i_NaCa, i_NaK, i_b_Na) // Rate Rules: Na_i' = ((-(1) * (i_Na + i_b_Na + 3 * i_NaK + 3 * i_NaCa)) / (1 * V_c * F)) * Cm; // Variable initializations: Na_i = 11.6; Na_o = 140; time_ = ; F = ; Cm = ; V_c = ; i_Na = ; i_NaCa = ; i_NaK = ; i_b_Na = ; end model tentusscher_2004_endo_cell__potassium_dynamics(K_i, K_o, time_, F, Cm, V_c, i_K1, i_to, i_NaK, i_Kr, i_Ks, i_p_K, i_Stim) // Rate Rules: K_i' = ((-(1) * ((i_K1 + i_to + i_Kr + i_Ks + i_p_K + i_Stim) - 2 * i_NaK)) / (1 * V_c * F)) * Cm; // Variable initializations: K_i = 138.3; K_o = 5.4; time_ = ; F = ; Cm = ; V_c = ; i_K1 = ; i_to = ; i_NaK = ; i_Kr = ; i_Ks = ; i_p_K = ; i_Stim = ; end model *tentusscher_2004_endo_cell____main() // Sub-modules, and any changes to those submodules: environment: tentusscher_2004_endo_cell__environment(time_); membrane: tentusscher_2004_endo_cell__membrane(V, R, T, F, Cm, V_c, time_, i_K1, i_to, i_Kr, i_Ks, i_CaL, i_NaK, i_Na, i_b_Na, i_NaCa, i_b_Ca, i_p_K, i_p_Ca, i_Stim); reversal_potentials: tentusscher_2004_endo_cell__reversal_potentials(E_Na, E_K, E_Ks, E_Ca, K_o, Na_o, K_i, Na_i, Ca_o, Ca_i, R, F, T, time_); inward_rectifier_potassium_current: tentusscher_2004_endo_cell__inward_rectifier_potassium_current(i_K1, V, K_o, E_K, time_); rapid_time_dependent_potassium_current: tentusscher_2004_endo_cell__rapid_time_dependent_potassium_current(i_Kr, E_K, K_o, time_, V, Xr1, Xr2); slow_time_dependent_potassium_current: tentusscher_2004_endo_cell__slow_time_dependent_potassium_current(i_Ks, E_Ks, time_, V, Xs); fast_sodium_current: tentusscher_2004_endo_cell__fast_sodium_current(i_Na, E_Na, time_, V, m, h, j); sodium_background_current: tentusscher_2004_endo_cell__sodium_background_current(i_b_Na, E_Na, time_, V); L_type_Ca_current: tentusscher_2004_endo_cell__L_type_Ca_current(i_CaL, Ca_o, Ca_i, R, F, T, time_, V, d, f, fCa); calcium_background_current: tentusscher_2004_endo_cell__calcium_background_current(i_b_Ca, E_Ca, time_, V); transient_outward_current: tentusscher_2004_endo_cell__transient_outward_current(i_to, E_K, V, time_, s, r); sodium_potassium_pump_current: tentusscher_2004_endo_cell__sodium_potassium_pump_current(i_NaK, K_o, Na_i, time_, R, F, T, V); sodium_calcium_exchanger_current: tentusscher_2004_endo_cell__sodium_calcium_exchanger_current(i_NaCa, Na_i, Na_o, Ca_i, Ca_o, R, F, T, V, time_); calcium_pump_current: tentusscher_2004_endo_cell__calcium_pump_current(i_p_Ca, Ca_i); potassium_pump_current: tentusscher_2004_endo_cell__potassium_pump_current(i_p_K, E_K, V); calcium_dynamics: tentusscher_2004_endo_cell__calcium_dynamics(Ca_i, Ca_o, V, V_c, time_, d, F, Cm, i_CaL, i_NaCa, i_p_Ca, i_b_Ca); sodium_dynamics: tentusscher_2004_endo_cell__sodium_dynamics(Na_i, Na_o, time_, F, Cm, V_c, i_Na, i_NaCa, i_NaK, i_b_Na); potassium_dynamics: tentusscher_2004_endo_cell__potassium_dynamics(K_i, K_o, time_, F, Cm, V_c, i_K1, i_to, i_NaK, i_Kr, i_Ks, i_p_K, i_Stim); end