A SimBiology® model is composed of a set of expressions (reactions, differential equations, discrete events), which together describe the dynamics of a biological system. You write expressions in terms of quantities (compartments, species, parameters), which are also enumerated in the model.
There are four distinct types of expressions in SimBiology:
A reaction describes a process such as a transformation, transport, or binding/unbinding process between reactants and products.
Example reactions include:
Creatine + ATP <-> ADP + phosphocreatine cytoplasm.speciesA -> nucleus.speciesA
A rule is a class of mathematical expressions that include differential equations, initial assignments, repeated assignments, and algebraic constraints.
For example, you can use a rule to:
Specify values for model components that are required for comparison with experimental data. For example, specify the active fraction of total protein.
Assign values to model components based on the values of other components in the model. For example, define a parameter's value as being proportional to a species or another parameter.
Define mass balance equations.
For species, use rate rules as an alternative to the differential rate expression generated from reactions.
An event describes an instantaneous change in the value of a quantity (compartment, species, parameter). The discrete transition occurs when a user-specified condition becomes true. The condition can be a specific time or a specific time-independent condition.
For example, you can use an event to:
Activate or deactivate a specific species (activator or inhibitor species).
Change a parameter value based on external signals.
Change reaction rates in response to addition or removal of a species.
Replicate an experimental condition, such as the addition or removal of an activating agent (such as a drug) to or from a sample.
Observable is a mathematical expression that lets you perform
post-simulation calculations. For example, you can use an observable to:
Compute some statistics such as area under the curve (AUC) of a drug concentration profile.
Compute the fraction of a ligand that is bound to a receptor at each time step.
You can also use an observable as a response in simulation, data fitting, and global sensitivity analysis.
SimBiology uses three types of quantities in models:
A compartment defines a physically bounded region that
contains species. A compartment is characterized by a capacity expressed as
volume, area, or length. A compartment can also contain other compartments,
which adds hierarchy to a model. For example, a compartment named
cytoplasm might contain a compartment named
nucleus, thereby partitioning species based on their
A species characterizes the state of the biological
system by representing the amount (or concentration) present in the system for
that entity. Examples of species are
creatine. Species' amounts
(or concentrations) vary during a simulation as a result of their participation
in reactions, differential equations, and events. Therefore, species represent
the dynamical state of a biological system.
A parameter is a quantity that is referred to by expressions. It typically remains constant during a simulation. For example, parameters are used as rate constants in reactions.
You can configure a parameter to vary during a simulation. This is useful, for example, to model the change in a reaction rate given the concentration of a catalyst or a change in temperature.
Note the following conditions imposed on quantities in the model hierarchy:
Models must contain at least one compartment.
A compartment can contain one or more compartments.
Species are always contained within a compartment.
In SimBiology, models and their components are implemented as objects. These
objects have properties and methods that you can use to access and configure them.
get method to list the property
values of an object. Use the dot notation to change the property values of an
SimBiology objects are handle objects, which has implications for how they behave during copy operations. Handle objects are referenced by their handle variable, and copies of the handle variable refer to the same object. To learn how handle objects affect copy operations, see Copying Objects.