Location: BG_GiProtein @ 340bebd6437a / parameter_finder / kinetic_parameters_GiProtein.py

Author:
Shelley Fong <s.fong@auckland.ac.nz>
Date:
2021-10-28 16:48:50+13:00
Desc:
Renaming kinetic_parameters.py
Permanent Source URI:
https://models.cellml.org/workspace/6f9/rawfile/340bebd6437a5bb746e5c5103f007fe3f7d0fed6/parameter_finder/kinetic_parameters_GiProtein.py

# Gi protein module following Saucerman and Iancu: act1 and act2 with LR
# and LRG as substrates (G is already bound, so there is only one substrate
# to each act reaction)

# Gi is associated with muscarinic 2 (M2) receptors in cardiac myocytes

#     return (k_kinetic, N_cT, K_C, W) kinetic parameters, constraints, and vector of volumes in each
# compartment (pL) (1 if gating variable, or in element corresponding to
# kappa)

# 14Oct21: adding phosphate binding reaction to RG and LRG as separate
# reactions. Only RG_Pi and LRG_Pi proceed to Act reactions. 

# 21Oct21: adding intermediate compount between GDP release and GTP entry

import numpy as np 

def kinetic_parameters(M, include_type2_reactions, dims, V):
    # Set the kinetic rate constants.
    # original model had reactions that omitted enzymes as substrates e.g. BARK
    # convert unit from 1/s to 1/uM.s by dividing by conc of enzyme
    # all reactions were irreversible, made reversible by letting kr ~= 0

    num_cols = dims['num_cols']
    num_rows = dims['num_rows']

    bigNum = 1e3
    fastKineticConstant = bigNum
    smallReverse = fastKineticConstant/(pow(bigNum,2))

    k_Doff1p = fastKineticConstant
    k_Doff1m = smallReverse
    k_Ton1p = fastKineticConstant
    k_Ton1m = smallReverse
    k_Doff2p = fastKineticConstant
    k_Doff2m = smallReverse
    k_Ton2p = fastKineticConstant
    k_Ton2m = smallReverse
    kAct1p = 2.5                   # 1/s
    kAct1m = smallReverse          # 1/s            
    kAct2p = 0.05                  # 1/s
    kAct2m = smallReverse          # 1/s            
    kHydp = 0.8                    # 1/s      
    kHydm = smallReverse           # 1/s
    kReassocp = 1.21e3             # 1/uM.s
    kReassocm = kReassocp/bigNum   # 1/s
    # phosphorylation of GDP by NDPK (nucleoside diphosphate kinase) - omitting MM enzyme
    kPiPhosp = fastKineticConstant
    kPiPhosm = smallReverse

    # ensure that the closed loop formed by Act1 & Act2 obey detailed
    # balance
    kAct2m = kAct1m * kAct2p / kAct1p
    # CLOSED LOOP involving G - aGTP - aGDP - G
    # use detailed balance to find kReasocm with either Act (as they have
    # same equilibrium constant
    if True:
        kReassocm = kAct1p*kHydp*kReassocp/(kAct1m*kHydm)
    

    k_kinetic = [
        k_Doff1p, k_Ton1p, kAct1p, k_Doff2p, k_Ton2p, kAct2p, kHydp, kReassocp, #kPiPhosp,
        k_Doff1m, k_Ton1m, kAct1m, k_Doff2m, k_Ton2m, kAct2m, kHydm, kReassocm #,kPiPhosm
        ]

    # CONSTRAINTS
    N_cT = []
    
    # LR.G = aGTP.betaGamma
    if False:                                                          
        N_cT[1][num_cols + 2] = 1
        N_cT[1][num_cols + 3] = 1
        N_cT[1][num_cols + 4] = -1
        N_cT[1][num_cols + 5] = -1
    
    # [a-GTP] + [a-GDP] = [beta.gamma]                              **SMALL_ERROR**
    if True:
        N_cT = np.zeros(len(M[0]))
        N_cT[num_cols + 6] = 1   # beta_gamma
        N_cT[num_cols + 5] = -1  # a_GTP
        N_cT[num_cols + 7] = -1  # a_GDP

    K_C = [1]

    # volume vector
    W = list(np.append([1] * num_cols, [V['V_myo']] * num_rows))

    return (k_kinetic, [N_cT], K_C, W)