Main Content


Expression to determine reaction rate equation or expression of observable object


The Expression property can be a property of KineticLaw (or AbstractKineticLaw) object or an observable object.

For an observable object, the Expression property is a mathematical expression that lets you perform post-simulation calculations. For details, see Observable.

For a KineticLaw object, the Expression property indicates the mathematical expression that is used to determine the ReactionRate property of the reaction object. Expression is a reaction rate expression assigned by the kinetic law definition used by the reaction. The kinetic law being used is indicated by the property KineticLawName. You can configure Expression for user-defined kinetic laws, but not for built-in kinetic laws. Expression is read only for kinetic law objects.


If you set the Expression property to a reaction rate expression that is not continuous and differentiable, see Using Events to Address Discontinuities in Rule and Reaction Rate Expressions before simulating your model.

Kinetic Law Definition

The kinetic law definition provides a mechanism for applying a specific rate law to multiple reactions. It acts as a mapping template for the reaction rate. The kinetic law is defined by a mathematical expression, (defined in the property Expression), and includes the species and parameter variables used in the expression. The species variables are defined in the SpeciesVariables property, and the parameter variables are defined in the ParameterVariables property of the kinetic law object.

If a reaction is using a kinetic law definition, the ReactionRate property of the reaction object shows the result of a mapping from the kinetic law definition. To determine ReactionRate, the species variables and parameter variables that participate in the reaction rate should be mapped in the kinetic law for the reaction. In this case, SimBiology® software determines the ReactionRate by using the Expression property of the abstract kinetic law object, and by mapping SpeciesVariableNames to SpeciesVariables and ParameterVariableNames to ParameterVariables.

For example, the kinetic law definition Henri-Michaelis-Menten has the Expression Vm*S/(Km+S), where Vm and Km are defined as parameters in the ParameterVariables property of the abstract kinetic law object, and S is defined as a species in the SpeciesVariable property of the abstract kinetic law object.

By applying the Henri-Michaelis-Menten kinetic law to a reaction A -> B with Va mapping to Vm, A mapping to S, and Ka mapping to Km, the rate equation for the reaction becomes Va*A/(Ka+A).

The exact expression of a reaction using MassAction kinetic law varies depending upon the number of reactants. Thus, for mass action kinetics the Expression property is set to MassAction because in general for mass action kinetics the reaction rate is defined as


where [Si] is the concentration of the ith reactant, mi is the stoichiometric coefficient of [Si], nr is the number of reactants, and k is the mass action reaction rate constant.

SimBiology software contains some built-in kinetic laws. You can also define your own kinetic laws. To find the list of available kinetic laws, use the sbiowhos -kineticlaw command (sbiowhos). You can create a kinetic law definition with the function sbioabstractkineticlaw and add it to the library using sbioaddtolibrary.


Applies toObjects: abstract kinetic law, kinetic law, observable
Data typeCharacter vector
Data valuesDefined by kinetic law definition
AccessRead-only in kinetic law object. Read/write in user-defined kinetic law.


Example 1

Example with Henri-Michaelis-Menten kinetics

  1. Create a model object, and add a reaction object to the model.

    modelObj = sbiomodel ('my_model');
    reactionObj = addreaction (modelObj, 'a + b -> c + d');
  2. Define a kinetic law for the reaction object.

    kineticlawObj = addkineticlaw(reactionObj, 'Henri-Michaelis-Menten');
  3. Verify that the Expression property for the kinetic law object is Henri-Michaelis-Menten.

    get (kineticlawObj, 'Expression')

    MATLAB® returns:

    ans =
    Vm*S/(Km + S) 

  4. The 'Henri-Michaelis-Menten' kinetic law has two parameter variables (Vm and Km) and one species variable (S) that you should set. To set these variables, first create the parameter variables as parameter objects (parameterObj1, parameterObj2) with names Vm_d, Km_d, and assign the objects' Parent property value to the kineticlawObj. The species object with Name a is created when reactionObjis created and need not be redefined.

    parameterObj1 = addparameter(kineticlawObj, 'Vm_d');
    parameterObj2 = addparameter(kineticlawObj, 'Km_d');
  5. Set the variable names for the kinetic law object.

    set(kineticlawObj,'ParameterVariableNames', {'Vm_d' 'Km_d'});
    set(kineticlawObj,'SpeciesVariableNames', {'a'});
  6. Verify that the reaction rate is expressed correctly in the reaction object ReactionRate property.

    get (reactionObj, 'ReactionRate')

    MATLAB returns:

    ans =

Example 2

Example with Mass Action kinetics.

  1. Create a model object, and then add a reaction object.

    modelObj = sbiomodel ('my_model');
    reactionObj = addreaction (modelObj, 'a + b -> c + d');
  2. Define a kinetic law for the reaction object.

    kineticlawObj = addkineticlaw(reactionObj, 'MassAction');
    get(kineticlawObj, 'Expression')

    MATLAB returns:

    ans =
  3. Assign the rate constant for the reaction.

    set (kineticlawObj, 'ParameterVariablenames', 'k');
    get (reactionObj, 'ReactionRate')

    MATLAB returns:

    ans =