Skip to content

Feature Request: Add tools for degree of rate control (DRC) analysis #1283

@spackman

Description

@spackman

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions