How to configure SimBiology parameter estimation settings so that two parameters from the same model are actually one and the same?

2 views (last 30 days)
I want to estimate the parameters of my own model. The model contains several reactions, most of which obey Uni-Uni Michaelis-Menten kinetic law. There are also additional two reactions that are actually catalyzed by the same enzyme, and thus must have the same parameter values.
% Add custom-made kinetic law
ratelawexpression1 = 'kcat*e0*(S1*S2/Km1*Km2)/((1+S1/Km1)*(1+S2/Km2))';
mm_1 = sbioabstractkineticlaw('CustomMadeLaw',ratelawexpression1);
set(mm_1,'SpeciesVariables',{'S1','S2'});
set(mm_1,'ParameterVariables',{'kcat','e0','Km1','Km2'});
sbioaddtolibrary(mm_1);
% Add second reaction to the model
r2 = addreaction(model,'B1 + C -> D');
k2 = addkineticlaw(r2,'CustomMadeLaw');
p2a = addparameter(k2,'kcat',110);
p2b = addparameter(k2,'e0',0.6);
p2c = addparameter(k2,'Km_B1',0.01);
p2d = addparameter(k2,'Km_C',0.01);
set(k2,'ParameterVariableNames',{'kcat','e0','Km_B1','Km_C'});
set(k2,'SpeciesVariableNames',{'B1','C'});
set(r2,'Name','r2');
% Add third reaction to the model
r3 = addreaction(model,'B2 + C -> F');
k3 = addkineticlaw(r3,'CustomMadeLaw');
p3a = addparameter(k3,'kcat',110);
p3b = addparameter(k3,'e0',0.6);
p3c = addparameter(k3,'Km_B2',0.01);
p3d = addparameter(k3,'Km_C',0.01);
set(k3,'ParameterVariableNames',{'kcat','e0','Km_B2','Km_C'});
set(k3,'SpeciesVariableNames',{'B2','C'});
set(r3,'Name','r3');
From what I understand when using sbiofit, when performing parameter estimation, the kcat, e0 and Km_C parameters of both r2 and r3 are considered different. But I would like to configure the parameter estimation settings so that those parameters are considered the same (r2.kcat should be considered the same parameter as r3.kcat, r2.e0 is r3.e0, r2.Km_C is r3.Km_C, etc.). How should I write the model or how do I change the settings of sbiofit so that I can do the previously-mentioned task?

Accepted Answer

Jeremy Huard
Jeremy Huard on 8 Feb 2023
Hi,
the recommendation is to use model-scoped parameters instead of reaction-scoped parameters.
Now, let me explain what this actually means.
In SimBiology you can add parameter objects to a model object or a kinetic law object. The scope of a parameter depends on where you add the parameter object: If you add the parameter object to a model object, the parameter is available to all reactions in the model and the Parent property of the parameter object is SimBiology.Model. If you add the parameter object to a kinetic law object, the parameter is available only to the reaction for which you are using the kinetic law object and the Parent property of the parameter object is SimBiology.KineticLaw.
Here is how to implement it in your code:
  1. In the definitions of the p2x parameters, add them to the model instead of k2.
  2. Remove the duplicate definitions
So, your code could look as follows:
% Add custom-made kinetic law
ratelawexpression1 = 'kcat*e0*(S1*S2/Km1*Km2)/((1+S1/Km1)*(1+S2/Km2))';
mm_1 = sbioabstractkineticlaw('CustomMadeLaw',ratelawexpression1);
mm_1.SpeciesVariables = {'S1','S2'};
mm_1.ParameterVariables = {'kcat','e0','Km1','Km2'};
sbioaddtolibrary(mm_1);
% parameters
addparameter(model,'kcat',110);
addparameter(model,'e0',0.6);
addparameter(model,'Km_B1',0.01);
addparameter(model,'Km_B2',0.01);
addparameter(model,'Km_C',0.01);
% Add second reaction to the model
r2 = addreaction(model,'B1 + C -> D', 'Name', 'r2');
k2 = addkineticlaw(r2,'CustomMadeLaw');
k2.ParameterVariableNames = {'kcat','e0','Km_B1','Km_C'};
k2.SpeciesVariableNames = {'B1','C'};
% Add third reaction to the model
r3 = addreaction(model,'B2 + C -> F', 'Name', 'r3');
k3 = addkineticlaw(r3,'CustomMadeLaw');
k3.ParameterVariableNames = {'kcat','e0','Km_B2','Km_C'};
k3.SpeciesVariableNames = {'B2','C'};
Now, there is only one kcat in your model that you can estimate using sbiofit. Likewise for the remaining parameters.
I hope this helps.
Best regards,
Jérémy

More Answers (0)

Communities

More Answers in the  SimBiology Community

Categories

Find more on Extend Modeling Environment in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!