Location: BG_NKE @ d7007fe58bc5 / parameter_finder / kinetic_parameters_NaK.py

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)