- Author:
- Shelley Fong <s.fong@auckland.ac.nz>
- Date:
- 2022-04-26 11:12:51+12:00
- Desc:
- Adding matlab curve and gate fitting files from Pan
- Permanent Source URI:
- https://models.cellml.org/workspace/827/rawfile/d7007fe58bc5d140b6d6299ee7d059f01b15c7e7/parameter_finder/kinetic_parameters_NaK.py
# Return kinetic parameters, constraints, and vector of volumes in each
# compartment (pL) (1 if gating variable, or in element corresponding to
# kappa)
# Translated from Pan 2018 cardiac AP
import numpy as np
def kinetic_parameters(M, include_type2_reactions, dims, V):
# Set the kinetic rate constants
num_cols = dims['num_cols']
num_rows = dims['num_rows']
# load gate transition parameters
params = [579.7295217414668, 0.034879219354591186, 5.639944100346918, 10616.937709739579, 1.0816661063545703, 140.3708770779026, 1423.2000451582858, 11564.806376707837, 194.45056712819016, 30629.883572499126, 36355.32008932964, 281037.2758463317, 1573967.5553213488, -0.05495132913005736, 1360.2623826632548]
fast_kinetic_constant = 1e6
K_d_Nai = params[2]
k_3b_p = fast_kinetic_constant
k_3b_m = fast_kinetic_constant * (0.5 * K_d_Nai)
k_4b_p = fast_kinetic_constant
k_4b_m = fast_kinetic_constant * (2 * K_d_Nai)
K_d_Nai_0 = params[0]
k_5b_m_0 = fast_kinetic_constant
k_5b_p_0 = fast_kinetic_constant / K_d_Nai_0
k_6b_p = params[6]
k_6b_m = k_6b_p / 6.3
k_7b_p = params[7]
k_7b_m = params[10]
K_d_Nae_0 = params[1]
k_8b_m_0 = fast_kinetic_constant
k_8b_p_0 = fast_kinetic_constant * K_d_Nae_0
K_d_Nae = params[3]
k_9b_m = fast_kinetic_constant
k_9b_p = fast_kinetic_constant * 2 * K_d_Nae
k_10b_m = fast_kinetic_constant
k_10b_p = fast_kinetic_constant * 0.5 * K_d_Nae
K_d_Ke = params[4]
k_11b_p = fast_kinetic_constant
k_11b_m = fast_kinetic_constant * 0.5 * K_d_Ke
k_12b_p = fast_kinetic_constant
k_12b_m = fast_kinetic_constant * 2 * K_d_Ke
k_13b_p = params[8]
k_13b_m = params[11]
K_d_MgATP = params[5]
k_14b_p = fast_kinetic_constant
k_14b_m = fast_kinetic_constant * K_d_MgATP
k_15b_p = params[9]
k_15b_m = params[12]
# Calculate remaining parameter
G_MgATP_0 = 11900
RT = 8.314 * 310
K_MgATP = np.exp(-G_MgATP_0 / RT) * pow(10,6)
K_d_Ki = np.sqrt(( k_3b_m * k_4b_m * k_5b_m_0 * k_6b_m * k_7b_m * k_8b_m_0 * k_9b_m * k_10b_m * k_11b_m * k_12b_m * k_13b_m * k_14b_m * k_15b_m * K_MgATP) / (
k_3b_p * k_4b_p * k_5b_p_0 * k_6b_p * k_7b_p * k_8b_p_0 * k_9b_p * k_10b_p * k_11b_p * k_12b_p * k_13b_p * k_14b_p * k_15b_p))
k_1b_m = fast_kinetic_constant
k_1b_p = fast_kinetic_constant * 2 * K_d_Ki
k_2b_m = fast_kinetic_constant
k_2b_p = fast_kinetic_constant * 0.5 * K_d_Ki
Delta_NaK = params[13]
# Calculate bond graph constants from kinetic parameters
# Note: units of kappa are fmol/s, units of K are fmol^-1
kf_NaK = [k_1b_p, k_2b_p, k_3b_p, k_4b_p, k_5b_p_0, k_6b_p, k_7b_p, k_8b_p_0,
k_9b_p, k_10b_p, k_11b_p, k_12b_p, k_13b_p, k_14b_p, k_15b_p]
kr_NaK = [k_1b_m, k_2b_m, k_3b_m, k_4b_m, k_5b_m_0, k_6b_m, k_7b_m, k_8b_m_0,
k_9b_m, k_10b_m, k_11b_m, k_12b_m, k_13b_m, k_14b_m, k_15b_m]
k_kinetic = kf_NaK + kr_NaK
# CONSTRAINTS
N_cT = []
K_C = []
# volume vector
# W = list(np.append([1] * num_cols, [V['V_myo']] * num_rows))
V_i = V['V_myo']
V_o = V['V_o']
W = [1] * (num_cols+15) + [V_i, V_o, V_i, V_o] + [V_i] * 4
return (k_kinetic, N_cT, K_C, W)