Clear Filters
Clear Filters

sbml export does not appear to export modifiers

2 views (last 30 days)
In a description of the SBML standard, namely Hucka et al., The Systems Biology Markup Language (SBML): Language Specification for Level 3 Version 1 Core, J Integr Bioinform. ; 12(2): 266. doi:10.2390/biecoll-jib-2015-266, a point of the specification is stated:
"4.11.2 SimpleSpeciesReference As mentioned above, every species that enters into a given reaction must appear in that reaction’s lists of reactants, products and/or modifiers. "
One maddening element of this is that a species can apparently be all three things! A self growth of A to increase the amount A, self-catalyzed by A. Does anyone know if appearance of a species in one list is sufficient, or (for example) if I have a mass action expression of compound A, does A have to be in both the reactants AND the modifer list?
More to the point: As far as I can tell, sbmlexport does not export modifers. They're just not there. So if one has reactions like A->B, but the reaction rate expresssion is r=k*A*C, where C is a species, then sbml isn't conformal. Am I missing something? Improperly using sbmlexport?
If modifiers are NOT there, will modifers be included in a future release? Right now I have a python script that captures all of the species in reactions that are not reactants or products, but it would be nice to have.
This brings up a question. Suppose I have a function dependent upon species, but indirectly. For example,
A parameter defined by a repeat assignment:
Glut4 = f(Plasma.Insulin);
for a reaction of Plasma.Glucose --> muscle.Glucose I have the reaction rate
rp2m = k * Glut4 * Plasma.Glucose;
Given those equations, is Plasma.Insulin a modifier of the reaction defined by rp2m?
Jim Bosley
Jim Bosley on 15 Jul 2022
Thanks, emjey. So your're saying that Mathworks monitors that site as well? I posted here to ensure MW had the issue asap. Still, I'll duplicate the post there, as you suggests. Much obliged.
Jim Bosley
Jim Bosley on 15 Jul 2022
Upon rereading, there are two issues I guess. They are:
1) The fact that sbmlexport does not export modifiers. That is a matlab bug, and
2) The question about recursion of functions and whether the modifier trait survives for a species that is nestled in a function (or a chain of recursive functions). That is a pure sbml question.
As soon as I get the keys to the kingdom (am admitted to the sbml forum) I'll post question number 2.

Sign in to comment.

Accepted Answer

Florian Augustin
Florian Augustin on 15 Jul 2022
Hi Jim,
SimBiology interprets a list of modifier species in an SBML document as catalysts. When importing a reaction with species specified in listOfModifiers, then the modifier species are imported as catalysts. I.e. a reaction with reactant A, product B and modifier E will be imported as A + E -> B + E. If the modifier to the reaction rate is not involved in the reaction as a physical agent in the reaction string, I recommend using a SimBiology parameter. Otherwise, you can to add the modifier species to both sides of the reaction.
When adding a species that is defined by a repeated assignment rule to both sides of the reaction, then the species is a boundary condition for the reaction; i.e. the species' value is not changed by the reaction. In this case, the species' BoundaryCondition property should be set to true.
I hope this helps,
Jim Bosley
Jim Bosley on 15 Jul 2022
Florian, First, thanks for your help today - very responsive technical service!
The issue as I see it is that some programs are more rigorous about sbml import than others. I use some proprietary software and if species E affects A->B. and is not in the modifier list, then an error is flagged. And, as the quote above from the standard description states, if E is involved it should be listed as a modifier for conformal SBML.
Which begs the question, why? Comparing A->B, and A+E -> B+E with rate r and A,B, and E being states, then all that is achieved by listing modifiers is forcing dE/dt to account for r in addition to dA/dt and dB/dt. I was trying to think of a math reason why one would want modifiers and couldn't really come up with one. I mean, suppose someone used E as a constant species, all a modifier listing would do would be to break that.
The other thing that sbml does is enforce some dubious constraints. For example, one can't use boolean expressions in SBML equations. Booleans are T or F, and 1 and 0 are NOT substituted. Grrrrr.
But again, thanks!
Florian Augustin
Florian Augustin on 18 Jul 2022
Hi Jim,
I think the idea is that species represent physical quantities and as such only affect the reaction rate if they are involved in the reaction (string). This is also the reason why the initial condition of species cannot be negative. Parameters in SimBiology are more flexible and could be used to represent modifiers to reaction rates without being involved in the reaction. A species that is neither consumed nor produced in a reaction (and is not changed by any other reaction or rule) can be marked as constant in SimBiology.
In case of A + E -> B + E, no differential equation for E is created because the value of E remains unchanged. You can view the equations in the SimBiology Model Builder app by clicking on the small d/dt button in the top right corner of the Browser panel. In the MATLAB Command Window you can call the getequations function on the SimBiolog model.

Sign in to comment.

More Answers (0)


More Answers in the  SimBiology Community


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




Community Treasure Hunt

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

Start Hunting!