Expression to determine reaction rate equation
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.
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 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. |
Example with Henri-Michaelis-Menten
kinetics
Create a model object, and add a reaction object to the model.
modelObj = sbiomodel ('my_model'); reactionObj = addreaction (modelObj, 'a + b -> c + d');
Define a kinetic law for the reaction object.
kineticlawObj = addkineticlaw(reactionObj, 'Henri-Michaelis-Menten');
Verify that the Expression
property
for the kinetic law object is Henri-Michaelis-Menten
.
get (kineticlawObj, 'Expression')
MATLAB® returns:
ans = Vm*S/(Km + S)
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');
Set the variable names for the kinetic law object.
set(kineticlawObj,'ParameterVariableNames', {'Vm_d' 'Km_d'}); set(kineticlawObj,'SpeciesVariableNames', {'a'});
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 with Mass Action
kinetics.
Create a model object, and then add a reaction object.
modelObj = sbiomodel ('my_model'); reactionObj = addreaction (modelObj, 'a + b -> c + d');
Define a kinetic law for the reaction object.
kineticlawObj = addkineticlaw(reactionObj, 'MassAction'); get(kineticlawObj, 'Expression')
MATLAB returns:
ans = MassAction
Assign the rate constant for the reaction.
set (kineticlawObj, 'ParameterVariablenames', 'k');
get (reactionObj, 'ReactionRate')
MATLAB returns:
ans = k*a*b