Variable Stoichiometric Coefficients in SimBiology?

1 回表示 (過去 30 日間)
Sebastian
Sebastian 2011 年 11 月 30 日
コメント済み: Arthur Goldsipe 2018 年 5 月 7 日
Hello,
I am trying to write down the following equation.
glucose -> a pyruvate
where a is some number between 0 and 2. Usually this is done for the conversion of sugar into some other chemical compound as e.g. pyruvate. The stoichiometrical relation however is usually not known because part of the glucose is converted into biomass. So for me "a" is a parameter and not a fixed number. I don't see a possibility to implement this in the reaction equations so far but I definitly need to estimate it later on.
Is there a solution to parametrize the stoichimetric coefficients of a reaction?
Thank you, Sebastian

採用された回答

Sebastian
Sebastian 2011 年 12 月 6 日
Hi Arthur,
that is a great idea, and I am willing to try it out as soon as possible! I use varying compartment size with a repeated assignment so far, I will have to describe compartment size variation within the equations instead. How do I call the reactions rates for other reactions in this addrule assignment correctly ? They are readily present in the model object.
Thanks a lot Sebastian
  2 件のコメント
Arthur Goldsipe
Arthur Goldsipe 2011 年 12 月 6 日
Hi Sebastian,
There is currently no way to reference a reaction or its rate, so you must copy and paste the appropriate reaction rate into the rate rule. And you are correct that you will also need to make sure that you are correctly accounting for compartment volumes. I recommend adding units to your model and enabling unit conversion, since this will allow SimBiology to detect potential problems related to conversions between amount and concentration. It will also probably be easier if you setup your model so that all your species have units of amount rather than concentration.
Also note that I had a typo in my original response. You will see that one risk of this approach is not using the correct rate expression in all places. One approach you might be able to use to reduce this risk is to create a parameter controlled by a rule that represents the reaction flux, which you can then reference in both the reaction rate and the rate rule. Here's an example (assuming species are in units of amount and rate1 has units of amount/time):
m.addparameter('rate1', 'ConstantValue', false);
m.addrule('rate1 = k*glucose', 'repeatedAssignment');
m.addreaction('glucose -> null', 'ReactionRate', 'rate1');
m.addrule('pyruvate = a*rate1 + rate2')
Sebastian
Sebastian 2011 年 12 月 15 日
Hi Arthur,
I was trying around a bit and it finally worked out. Thank you a lot for your answers.
Sebastian

サインインしてコメントする。

その他の回答 (4 件)

Pramod Kumar
Pramod Kumar 2011 年 12 月 1 日
Hi Sebastian,
You cannot directly set the stoichiometry of a reaction using a model parameter, but you can programatically alter the stoichiometry after you have created the reaction in the following way:
m1 = sbmlimport('lotka')
m1.Reactions(1).Stoichiometry
a = 1.5; % New stoichiometric coefficient
m1.Reactions(1).Stoichiometry(3) = a
m1.Reactions
When you estimate the stoichiometry, your objective function could take the "a", the stoichiometric coefficient of pyruvate as one of estimable parameters.
- Pramod

Sebastian
Sebastian 2011 年 12 月 5 日
Hi Pramod, thank you for the answer, I see that I can set the stoichiometry coefficient. How should i now tell the sbioparamestim script that I want to update the model with this new parameter whenever it calculates the objective function? I don't really feel like messing around in the scripts.
Sebastian

Arthur Goldsipe
Arthur Goldsipe 2011 年 12 月 6 日
Hi Sebastian,
Pramod's suggestion to modify the reaction via the Stoichiometry property is only helpful if you are willing to write your own objective function to use with an optimization routine.
If you are only willing to use sbioparamestim, then you must use another approach. Perhaps you can use a rate rule. For example, if you have a model stored in variable m, one way to implement the reaction 'glucose -> a pyruvate' is as follows:
m.addreaction('glucose -> null', 'ReactionRate', 'k*glucose');
m.addrule('pyruvate = a*k*glucose', 'rate');
You could then use sbioparamestim to estimate the parameter a. Note that if pyruvate participates in other reactions in your model, you will have to add the appropriate terms to the reaction rate.
I hope that helps.
-Arthur

Jim Bosley
Jim Bosley 2018 年 4 月 28 日
This is an old thread, but I wanted to bounce this off the community. It seems that you can fool the model. If the stoichiometry is A -> n B (One units of A goes to n units of B), and n is a function of time and other variables, that is n = n(t,x) you can split the reaction in two: A->null, and null->B Then, if the reaction rate of A to null is ka * [A], the reaction rate into B is simply ka * n(t,x) * [A].
Comments, anyone?
  1 件のコメント
Arthur Goldsipe
Arthur Goldsipe 2018 年 5 月 7 日
I just saw your suggestion. I hadn't thought of that, but I think it's a great idea. And I would probably pick it over using a rate rule, now that I know about it. It's not a huge difference, but one minor benefit is that you would still have full support for dose objects. (Right now, there's a limitation that the target of a dose cannot be controlled by a rate rule, although that's a restriction I would eventually like to remove.)

サインインしてコメントする。

コミュニティ

その他の回答  SimBiology コミュニティ

カテゴリ

Help Center および File ExchangeExtend Modeling Environment についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by