- Author:
- Shelley Fong <s.fong@auckland.ac.nz>
- Date:
- 2021-11-17 10:24:47+13:00
- Desc:
- Using sympy for rational nullspace
- Permanent Source URI:
- https://models.physiomeproject.org/workspace/6cb/rawfile/afab6426d3eeb0eb82b4eda04e980cd5a059bfec/parameter_finder/kinetic_parameters.py
# Gs protein module. From Dupont Sneyd: simple G protein model.
# Gs is associated with B1AR proteins
# 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)
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))
c_G = 3.83 # uM
kbindm = fastKineticConstant # 1/s
kbindp = kbindm / 0.285 # 1/uM.s
kActp = 16/c_G # 1/uM.s
kActm = smallReverse # 1/uM.s
kHydp = 0.8 # 1/s
kHydm = smallReverse # 1/s
kReassocp = 1.21e3 # 1/uM.s
kReassocm = kReassocp/bigNum # 1/s
# phosphorylation by NDPK (nucleoside diphosphate kinase) - omitting MM enzyme
kPiPhosp = fastKineticConstant
kPiPhosm = smallReverse
# CLOSED LOOP involving G - aGTP - aGDP - G
# use detailed balance to find kReasocm
if True:
kReassocm = kActp*kHydp*kReassocp/(kActm*kHydm)
k_kinetic = [
kbindp, kActp, kHydp, kReassocp, kPiPhosp,
kbindm, kActm, kHydm, kReassocm, kPiPhosm
]
# CONSTRAINTS
N_cT = np.zeros([2,len(M[1])])
# Reaction BIND: equal portions of L + derivatives (L == LR) **SMALL_ERROR**
N_cT[0][num_cols] = -1
N_cT[0][num_cols + 3] = 1
# or 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[1][num_cols + 5] = 1 # beta_gamma
N_cT[1][num_cols + 4] = -1 # a_GTP
N_cT[1][num_cols + 6] = -1 # a_GDP
# Gibbs free energy of L + R binding **MED_ERROR**
if False:
N_cT[0][num_cols + 3] = 1 # RL
N_cT[0][num_cols] = -1 # L
N_cT[0][num_cols + 1] = -1 # R
G_0_bind = -45.1872 # kJ/mol
R = 8.314
T = 310
K_bind = np.exp(G_0_bind/(R*T))*10^6
K_C = [K_bind]
K_C = [1, 1]
# volume vector
W = list(np.append([1] * num_cols, [V['V_myo']] * num_rows))
return (k_kinetic, N_cT, K_C, W)