Message Boards Message Boards

Reaction Kinetics calculation with 8 equations

Posted 10 years ago

Need help!!! I am modeling the reaction kinetics of enzyme mechanism of a reaction system. Based on the reaction rate equations, 8 differential equations with 6 rate constants (k1-k6) are generated. The results of the expected response variable "b" are available as provided in the code below. I want to fit the model to the experimental data (b), in order to come up with the suitable rate constants for the reaction system. I have tried to adopt my problem to the solution provided by IIian but could not get reasonable results for k1-k6 and meaningful chart. Your help will be highly appreciated. Thank you.

Clear[k1, k2, k3, k4, k5, k6]; 

totaltime = 6; 

dataset1 = {{0, 0}, {5, 0.5472}, {10, 0.6310}, {15, 0.7120}, {20, 0.7630}, {25, 0.846992}, {30, 0.8364}}; 

model = ParametricNDSolveValue[{s'[t] == -k1*s[t]*e[t] + k2*x[t], 

a'[t] == -k4*a[t]*e1[t] + k5*y[t], 

b'[t] == k3*x[t], 

g'[t] == k6*y[t], 

e'[t] == -k1*s[t]*e[t] + k2*x[t] + k6*y[t], 

e1'[t] == -k4*s[t]*e[t] + k5*y[t] + k3*x[t], 

x'[t] == k1*s[t]*e[t] - k2*x[t] - k3*x[t], 

y'[t] == k4*a[t]*e1[t] - k5*y[t] - k6*y[t], 

s[0] == 4, a[0] == 0.91, e[0] == 0.36, b[0] == 0, g[0] == 0, e1[0] == 0, x[0] == 0, y[0] == 0}, y, {t, 0, totaltime}, {k1, k2, k3, k4, k5, k6}]; 

fit = FindFit[dataset1, model[k1, k2, k3, k4, k5, k6][t], {k1, k2, k3, k4, k5, {k6, 0}}, t] 

Plot[model[k1, k2, k3, k4, k5, k6][t] /. fit, {t, 0, 30}, Epilog -> {Red, Point[dataset1]}]
POSTED BY: Peter Adewale
5 Replies

You still need to address the third issue I had mentioned. Beyond that there seems to be a difficult issue: getting reasonable starting approximations for the rate constants might be key to getting convergence in the fitting process. If the values used in FindFit are such that NDSolve cannot go to t=30 then the result you are seeing is not surprising (and the warning messages are quite to the point about this).

One possibility is to recast as an optimization problem and set NMinimize loose on it. That might give values that you can work with either directly, or as inputs to FindFit.

POSTED BY: Daniel Lichtblau
Posted 10 years ago

@ Daniel, Multiplicative operator was in the code but some of it didn't show under reply preview. Attached is the code file that shows all the prompted errors. The values of some of the rate constants are out of range. Likewise, the model curve and the experimental curve are totally out of conformity. Thanks for your help.

POSTED BY: Peter Adewale

I placed the code in a code box. The asterisks are visible now.

See , "How to post and use Wolfram Community".

POSTED BY: Moderation Team
Posted 10 years ago


POSTED BY: Peter Adewale

There are a few issues.

(1) You do not explain what is going wrong. That really belongs in the post.

(2) There seem to be a bunch of multiplication operators missing, e.g k1s[t] should be k1*s[t].

(3) If I follow correctly you are letting t range from 0 to 30 but only solve up to t=6.

There may be other issues lurking but those were the ones I could readily find.

POSTED BY: Daniel Lichtblau
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract