In SBML Level 3 as well as Level 2, rules are separated into three
subclasses for the benefit of model analysis software. The three
subclasses are based on the following three different possible functional
forms (where x is a variable, f is some arbitrary
function returning a numerical result, V is a vector of
variables that does not include x, and W is a
vector of variables that may include x):
Algebraic: | left-hand side is zero | 0 = f(W) |
Assignment: | left-hand side is a scalar: | x = f(V) |
Rate: | left-hand side is a rate-of-change: | dx/dt = f(W) |
In their general form given above, there is little to distinguish
between assignment and algebraic rules. They are treated as
separate cases for the following reasons:
- Assignment rules can simply be evaluated to calculate
intermediate values for use in numerical methods. They are statements
of equality that hold at all times. (For assignments that are only
performed once, see InitialAssignment.)
- SBML needs to place restrictions on assignment rules, for example
the restriction that assignment rules cannot contain algebraic loops.
- Some simulators do not contain numerical solvers capable of solving
unconstrained algebraic equations, and providing more direct forms such
as assignment rules may enable those simulators to process models they
could not process if the same assignments were put in the form of
general algebraic equations;
- Those simulators that can solve these algebraic equations make a
distinction between the different categories listed above; and
- Some specialized numerical analyses of models may only be applicable
to models that do not contain algebraic rules.
The approach taken to covering these cases in SBML is to define an
abstract Rule structure containing a subelement, "math", to hold the
right-hand side expression, then to derive subtypes of Rule that add
attributes to distinguish the cases of algebraic, assignment and rate
rules. The "math" subelement must contain a MathML expression defining the
mathematical formula of the rule. This MathML formula must return a
numerical value. The formula can be an arbitrary expression referencing
the variables and other entities in an SBML model.
Each of the three subclasses of Rule (AssignmentRule, AlgebraicRule,
RateRule) inherit the the "math" subelement and other fields from SBase.
The AssignmentRule and RateRule classes add an additional attribute,
"variable". See the definitions of AssignmentRule, AlgebraicRule and
RateRule for details about the structure and interpretation of each one.