# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# Expression (AbstractKineticLaw, KineticLaw)

Expression to determine reaction rate equation

## Description

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.

### Note

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

`$r=k\prod _{i=1}^{nr}{\left[Si\right]}^{{m}_{i}}$`
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`.

## Characteristics

 Applies to Objects: abstract kinetic law, kinetic law Data type Character vector Data values Defined by kinetic law definition Access Read-only in kinetic law object. Read/write in user-defined kinetic law.

## Examples

### 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 `reactionObj`is 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 = Vm_d*a/(Km_d+a)```

### 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 = MassAction ```
3. Assign the rate constant for the reaction.

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

MATLAB returns:

```ans = k*a*b ```