Los Altos, California
Re: Ancillary equations in SBML models
05 Aug '08 10:37
I'll jump in here from the perspective of a software developer who is in charge of exchanging models. I don't know the biology encoded in the equations; I just know that I have lists of
species, reactants, products, modifiers, etc; lists of reactions that relate reactants, products and modifiers; and the kinetic laws that describe corresponding reactions.
As Nicolas implies below, parsing equations is not the job of the developer. The developer doesn't have the information required to determine directly from an equation such as:
| dx/dt = k * C * Y / (K + Y)
| where C = [calcium/calmodulin]/[total calmodulin]
that C is a modifier rather than a parameter. Likewise, the developer also shouldn't have to assume that Y is a reactant. These should be in the species list, and pulled together in the reaction's modifier/reactant/product list.
As it stands now, if C is a modifier but is not in the listOfModifiers, then the only way a tool would know that it's a modifier would be to parse the kinetic law, and for every term in the MathML compare that term to the listOfSpecies; if a term is in the listOfSpecies but not in the lists of reactants and products, then we assume it's a modifier. It's clear that there's no guarantee that C will be in the list of modifiers. Is there also no guarantee that C will be in the list of species? What happens if there's no kinecticLaw? Since the kinetic law is optional per the spec, it seems that a reaction would be incompletely specified if it left out the modifier term.
I agree that best practices should include all products in the listOfProducts, all reactants in the listOfReactants, and all modifiers in the listOfModifiers. I would take this one step farther and argue that the reaction should be fully specified to include all products, reactants and modifiers. To count on the tool developer to parse the MathML seems to be risky and introduces errors in exchange of models among tools. The spec is complete in its definition of reactants/products/modifiers and reactions; as a software developer my goal is to code to the spec in order to minimize ambiguity when exchanging my models with other tools.