Using sbiofit to estimate/fit a complex model based on multiple measurments

2 visualizzazioni (ultimi 30 giorni)
Hi,
I have a rather complex enzyme-kinetic model. For didactic purposes I will just give a simplified version here. The problem should be eminent anyway. I'll also drop intermediate steps in the reaction.
E, F : Enzymes. A, B : Substrates. Q, R : Products.
E + F + A + B <-> E + F + Q + B <-> E + FQB <-> E + F + Q + R
k21,k12 k32,k23 k34,k43
I did measure the concentration of Product "R". I altered the Substrate "A" in multiple series.
My aim is to estimate the rate parameters. I created a model containing all differential equations. I used sbiofit which works, but now I got the following two problems:
  1. How can I perform parameter estimation/fit on "all my measurements" at once. I do not want to fit measurement Nr. 1, then Nr. 2 etc. Reason: sbiofit will return totally different Parameter Estimates for each measurement. (Yes, this might be because my problem is "over-parametrized" if I fit each measurment at once.)
  2. During the fit, sbiofit yiels negative rates. How can I avoid that?
Any hints, also beyond Matlab, are very appreciated!
Best, Vincent

Risposte (1)

Arthur Goldsipe
Arthur Goldsipe il 26 Lug 2014
Hi Vincent,
You can fit multiple experiments with the same set of parameters using sbiofit, but you will need to make several small changes.
1) To fit multiple experiments with the same set of parameters, you need to call sbiofit with the name-value pair 'Pooled',true . In other words, add those to the end of the line of code that calls sbiofit.
2) You need to combine each experiment's data into one groupedData object, marking each experiment with a different ID. This ID variable needs to be set as the grouping variable, so that sbiofit can tell with time points come from the same experiment.
3) You need to set the initial value of A to 0 in the model. You will specify the initial value for each experiment separately.
4) You need to construct a vector of dose objects, one per experiment. These dose objects need to be configured to update the amount of A at time=0 to the appropriate value. The first dose object should set the initial amount of A to the value required for the first group of data, and so forth.
The example file phenobarbdemo shows how to create sample dose objects from a file containing all the data. Although that example uses sbiofitmixed, its syntax is very similar to sbiofit.
To avoid negative rate values, you probably need to constrain your kinetic parameters to be positive. When you describe the parameters you want to estimate (using estimatedInfo objects), specify a log transform. This will cause sbiofit to optimize the log of the parameters, which will force the actual SimBiology parameters to remain positive during estimation.
-Arthur
  7 Commenti
Arthur Goldsipe
Arthur Goldsipe il 30 Lug 2014
Hi Vincent,
Since your kinetics are not really mass action, I recommend that you set the kinetic law to Unknown. Then, you can set the reaction rate string to any expression you like.
In addition, it may be helpful to know that there are two types of parameters in SimBiology. I call them "model-scoped" and "reaction-scoped". If a parameter is model-scoped (created by calling addparameter on a model), then this parameter can be used in any reaction. If a parameter is reaction-scoped (created by calling addparameter on a kinetic law), then the parameter can only be used in the one reaction that "owns" it. This can be useful if you always want to name your reaction parameters the same way, like kf or kr, but you need different values of kf for different reactions.
I recommend using model-scoped parameters whenever possible. One reason is because they are easier to use with sbiofit. If you want to estimate a model-scoped parameter k12, then you can create an estimatedInfo object with the name 'k12'. But if you want to estimate a reaction-scoped parameter k12, then you need to specify which reaction the k12 belongs to and set the estimatedInfo's name to something like 'Reaction1.k12'.
Vincent
Vincent il 6 Ago 2014
Dear Arthur,
sorry for the long delay. I thank you very much for all of your answers, I figured out a way to do handle my model by now! :-)
Best, Vincent

Accedi per commentare.

Categorie

Scopri di più su Import Data in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by