Location: BG_composite_M2 @ fcefc10a7dd7 / parameter_finder / grand_kinetic_parameters.py

Author:
Shelley Fong <s.fong@auckland.ac.nz>
Date:
2021-10-27 11:22:54+13:00
Desc:
Adding GEF stuff
Permanent Source URI:
https://models.cellml.org/workspace/700/rawfile/fcefc10a7dd7e17af448dbb9d7bab2ee8a2746f1/parameter_finder/grand_kinetic_parameters.py

# Kinetic rate constants for composite model of FCU-AC 
# they must be computed together because of the presence of new potential closed loops

# order: {'cAMP','LRGbinding_B1AR','LRGbinding_M2','GsProtein','GiProtein'}

import numpy as np

def grand_kinetic_parameters(M, include_type2_reactions, dims, V, noLRG):

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

    # shared large/small constants
    bigNum = 1e5
    fastKineticConstant = bigNum
    smallReverse = 1e0
    
# M2 composite: LRG_M2 + GiProtein
    
    K_M2sig1 = 30    # uM  Kc
    K_M2sig2 = 0.16  # uM  Kh
    K_M2sig4 = 11    # uM  Kl
    k_M2sig1p = fastKineticConstant
    k_M2sig1m = k_M2sig1p*K_M2sig1
    k_M2sig2p = fastKineticConstant
    k_M2sig2m = k_M2sig2p*K_M2sig2
    k_M2sig4p = fastKineticConstant
    k_M2sig4m = k_M2sig4p*K_M2sig4
    k_M2sig3p = fastKineticConstant
    k_M2sig3m = k_M2sig1m*k_M2sig2m*k_M2sig3p*k_M2sig4p/(k_M2sig1p*k_M2sig2p*k_M2sig4m) # interim?

    k_Doff1p = fastKineticConstant
    k_Doff1m = smallReverse
    k_Ton1p = fastKineticConstant
    k_Ton1m = smallReverse
    k_Doff2p = fastKineticConstant
    k_Doff2m = smallReverse
    k_Ton2p = fastKineticConstant
    k_Ton2m = smallReverse
    k_M2Act1p = 2.5                   # 1/s
    k_M2Act1m = smallReverse          # 1/s            
    k_M2Act2p = 0.05                  # 1/s
    k_M2Act2m = smallReverse          # 1/s            
    k_M2Hydp = 0.8                    # 1/s      
    k_M2Hydm = smallReverse           # 1/s
    k_M2Reassocp = 1.21e3             # 1/uM.s
    k_M2Reassocm = k_M2Reassocp/fastKineticConstant   # 1/s
    # phosphorylation of GDP by NDPK (nucleoside diphosphate kinase) - omitting MM enzyme

    # Loop1: find kact1m using detailed balance
    k_M2Act1m = (k_M2Act1p*k_M2sig1p)/k_M2sig1m
    # Loop2: find kact1m using detailed balance
    k_M2Act2m = (k_M2Act2p*k_M2sig3p)/k_M2sig3m

    # Big Loop: find k_M2sig3p or kact2m using detailed balance
    # *** unnecessary ***
    k_M2sig3m = k_M2Act1p*k_M2sig2m*k_M2sig3p*k_M2sig4p/(k_M2Act1m*k_M2sig2p*k_M2sig4m)
    
    # CLOSED LOOP involving G - aGTP - aGDP - G
    # use detailed balance to find kReasocm with either Act (as they have
    # same equilibrium constant
    if True:
        k_M2Reassocm = k_M2Act1p*k_M2Hydp*k_M2Reassocp/(k_M2Act1m*k_M2Hydm)
    
    
# TOTAL    
    #  order: {'cAMP','LRGbinding_B1AR','LRGbinding_M2','GsProtein','GiProtein'}
# forwaard first, then reverse!
    k_kinetic = [k_M2sig1p, k_M2sig2p, k_M2sig3p, k_M2sig4p,# LRG_M2
        k_Doff1p, k_Ton1p, k_M2Act1p, k_Doff2p, k_Ton2p, k_M2Act2p, k_M2Hydp, k_M2Reassocp, #GiProtein
        k_M2sig1m, k_M2sig2m, k_M2sig3m, k_M2sig4m,
        k_Doff1m, k_Ton1m, k_M2Act1m, k_Doff2m, k_Ton2m, k_M2Act2m, k_M2Hydm, k_M2Reassocm
        ]


    # CONSTRAINTS
    N_cT = []
    if False:
        N_cT = np.zeros([1,size(M,2)]) 
        # substrate B1ARp is in eqlm with product B1ARtot
        N_cT[0][num_cols] = 1
        N_cT[0][num_cols + 1] = -1
    
    K_C = np.ones([1,len(N_cT)])

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

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