-
-
Notifications
You must be signed in to change notification settings - Fork 80
Description
Is your feature request related to a problem? Please describe.
I'm interested in analyzing a reaction network to identify the degree of rate control for different reactions / pathways under a given kinetics. This concept was developed by Campbell and described here: (https://pubs.acs.org/doi/10.1021/acscatal.7b00115)
The degree of rate control represents the sensitivity of an overall reaction network pathway's cumulative rate to changes in the rate constants of an elementary step. This also has strong connections to the flux or concentration control coefficients defined in Metabolic Control Analysis (https://en.wikipedia.org/wiki/Metabolic_control_analysis)
Describe the solution you’d like
It would be great to have some function like:
using Catalyst
# example network from https://docs.sciml.ai/ReactionNetworkImporters/stable/
# network from reaction complex stoichiometry
stoichmat = [2 0 1 0 0 3;
0 1 1 0 0 0;
0 0 0 1 3 0]
incidencemat = [-1 1 0 0 0;
1 -1 0 0 0;
0 0 -1 1 0;
0 0 1 -1 0;
0 0 0 0 -1;
0 0 0 0 1]
cmn = ComplexMatrixNetwork(pars, stoichmat, incidencemat; species = species,
params = pars) # a complex matrix network
prn = loadrxnetwork(cmn; name = :testnetwork)
# --------- NEW CONTENT -------------
# incidence vector connecting the start and endpoints of the pathway under study
traj = [-1,1,0,0,0,0]
# returns a vector with values for the degree of rate control
# using a numerical solution by varuing the rate constants by +/- 10%
# for the given network pathway
drc = degree_of_rate_control(rn, traj, variation=0.1)
print(drc)
#k1, k2, k3, k4
drc = [ 0.1, 0.7, 0.2, 1]
# this would indicate k4 has absolute rate control (not exactly the best network for an example, other numbers are arbitrary)
Describe alternatives you’ve considered
This type of analysis could be implemented by users after the fact through fairly simple julia code, but it would be nice to have it as an option form a built-in feature.
My understanding of this analysis is that each elementary rate along the selected pathway would be varied by +/- some percentage of the rate constant for that step. The overall rate sensitivity would be collected as the difference in flux through the overall pathway under each condition. This simulation would be repreated for all elementary steps along the pathway.
I can forsee some challenges with implementation, namely that the user may need to specify additional information about how the numerical simulations should take place. I also think this may only be appropriate for mass action kinetic systems.
Regardless, this analysis has great potential to be useful in determining rate limiting steps in complex networks.
Additional context
I am a second year graduate student in chemistry working on complex aqeous photochemistry reaction networks, and I'm interested in exploring this type of analysis for an upcoming paper. I am still exploring the tools, but would love to leverage Catalysis.jl in my work, particularly network analysis features and sensitivity studies.