- Author:
- Shelley Fong <s.fong@auckland.ac.nz>
- Date:
- 2021-11-17 10:23:53+13:00
- Desc:
- Using sympy for rational nullspace
- Permanent Source URI:
- https://models.physiomeproject.org/workspace/674/rawfile/aee62d9515c8ac80cb8542b1e25f565fbd2b674d/parameter_finder/kinetic_parameters_cAMP.py
# cAMP module
# Return kinetic parameters, constraints, and vector of volumes in each
# compartment (pL) (1 if gating variable, or in element corresponding to
# kappa)
# includes contributions from Gs and Gi proteins - assume they act on the
# same adenylyl cyclase form
# data for Gs is from saucerman2003
# data for Gi is made up from Shelley's brain
import numpy as np
def kinetic_parameters(M, include_type2_reactions, dims, V):
# Set the kinetic rate constants
# knowns: K_m [=] fmol/L
# kcat [=] per_sec
num_cols = dims['num_cols']
num_rows = dims['num_rows']
K1_m = 1.03e3 # uM
k1cat = 0.2 # 1/s
K2_m = 3.15e+2 # uM
k2cat = 8.5 # 1/s
K3_m = 8.60e+2 # uM
k3cat = 1e-16 # 1/s
K4_m = 1.30 # uM
k4cat = 5 # 1/s
K5_m = 30 # uM
K6_m = 0.4 # uM
K7_m = 44 # uM
KGiAC_m = 10 # made up value # uM
# initialise arrays
vkap = np.zeros(4)
vkam = np.zeros(4)
vkbp = np.zeros(4)
vkbm = np.zeros(4)
vkm2 = np.zeros(4)
vkp2 = np.zeros(4)
vK_m = [K1_m,K2_m,K3_m,K4_m,K5_m,K6_m,K7_m,KGiAC_m]
vkcat = [k1cat,k2cat,k3cat,k4cat]
kap_mult = [0.93, 0.1, 1, 1,0.1] # finding rates from literature?
fastKineticConstant = 1e6 # 1/s
# include the Gi reaction to remove it from the system in inhibited
# form
iks = range(4)
for i in range(4):
vkap[i] = kap_mult[i]*fastKineticConstant
vkam[i] = vkap[i]*vK_m[iks[i]] - vkcat[i]
vkbp[i] = vkcat[i]
vkbm[i] = (vkap[i]*vkbp[i])/vkam[i]
# reactions 1,2,3 are COUPLED as they share the same substrates and
# products, so their Keq are the same. Choose Keq(1) as the truth to
# use.
if include_type2_reactions:
iks = range(4,8)
for i in range(4):
vkm2[i] = fastKineticConstant
vkp2[i] = vkm2[i]/vK_m[iks[i]]
# Calculate bond graph constants from kinetic parameters
# Note: units of kappa are fmol/s, units of K are fmol^-1
k_kinetic = [vkap[0], vkbp[0],
vkap[1], vkbp[1],
vkap[2], vkbp[2],
vkap[3], vkbp[3],
vkp2[0], vkp2[1],vkp2[2], vkp2[3],
vkam[0], vkbm[0],
vkam[1], vkbm[1],
vkam[2], vkbm[2],
vkam[3], vkbm[3],
vkm2[0], vkm2[1],vkm2[2], vkm2[3],
]
# CONSTRAINTS
N_cT = np.zeros([2,len(M[0])])
if False:
# show substrate ATP is in eqlm with product cAMP
N_cT[0][num_cols ] = 1
N_cT[0][num_cols + 1] = -1
# constraint for equilibrium between cAMP and five_AMP
N_cT[0][num_cols + 1] = 1
N_cT[0][num_cols + 10] = -1
# constraint for formation of five_AMP from cAMP and PDE rxn
G_0_cAMP = -48.116 # kJ/mol
R = 8.314
T = 310
K_cAMP = np.exp(G_0_cAMP/(R*T))*pow(10,6)
N_cT[1][num_cols+2] = 1
N_cT[1][num_cols] = -1
K_C = [1, K_cAMP]
# volume vector
W = list(np.append([1] * num_cols, [V['V_myo']] * num_rows))
return (k_kinetic, N_cT, K_C, W)