Export ODEs to Mathematica (pysb.export.mathematica
)¶
Module containing a class for converting a PySB model to a set of ordinary differential equations for integration or analysis in Mathematica.
For information on how to use the model exporters, see the documentation
for pysb.export
.
Output for the Robertson example model¶
The Mathematica code produced will follow the form as given below for
pysb.examples.robertson
:
(*
A simple three-species chemical kinetics system known as "Robertson's
example", as presented in:
H. H. Robertson, The solution of a set of reaction rate equations, in Numerical
Analysis: An Introduction, J. Walsh, ed., Academic Press, 1966, pp. 178-182.
Mathematica model definition file for model robertson.
Generated by pysb.export.mathematica.MathematicaExporter.
Run with (for example):
tmax = 10
soln = NDSolve[Join[odes, initconds], slist, {t, 0, tmax}]
Plot[s0[t] /. soln, {t, 0, tmax}, PlotRange -> All]
*)
(* Parameters *)
k1 = 0.040000000000000001;
k2 = 30000000;
k3 = 10000;
A0 = 1;
B0 = 0;
C0 = 0;
(* List of Species *)
(* s0[t] = A() *)
(* s1[t] = B() *)
(* s2[t] = C() *)
(* ODEs *)
odes = {
s0'[t] == -k1*s0[t] + k3*s1[t]*s2[t],
s1'[t] == k1*s0[t] - k2*s1[t]^2 - k3*s1[t]*s2[t],
s2'[t] == k2*s1[t]^2
}
(* Initial Conditions *)
initconds = {
s0[0] == A0,
s1[0] == B0,
s2[0] == C0
}
(* List of Variables (e.g., as an argument to NDSolve) *)
solvelist = {
s0[t],
s1[t],
s2[t]
}
(* Run the simulation -- example *)
tmax = 100
soln = NDSolve[Join[odes, initconds], solvelist, {t, 0, tmax}]
(* Observables *)
Atotal = (s0[t] * 1) /. soln
Btotal = (s1[t] * 1) /. soln
Ctotal = (s2[t] * 1) /. soln
The output consists of a block of commands that define the ODEs, parameters, species and other variables for the model, along with a set of descriptive comments. The sections are as follows:
The header comments identify the model and show an example of how to integrate the ODEs in Mathematica.
The parameters block defines the numerical values of the named parameters.
The list of species gives the mapping between the indexed species (
s0
,s1
,s2
) and their representation in PySB (A()
,B()
,C()
).The ODEs block defines the set of ordinary differential equations and assigns the set of equations to the variable
odes
.The initial conditions block defines the initial values for each species and assigns the set of conditions to the variable
initconds
.The “list of variables” block enumerates all of the species in the model (
s0[t]
,s1[t]
,s2[t]
) and assigns them to the variablesolvelist
; this list can be passed to the Mathematica commandNDSolve
to indicate the variables to be solved for.This is followed by an example of how to call
NDSolve
to integrate the equations.Finally, the observables block enumerates the observables in the model, expressing each one as a linear combination of the appropriate species in the model. The interpolating functions returned by
NDSolve
are substituted in from the solution variablesoln
, allowing the observables to be plotted.
Note that Mathematica does not permit underscores in variable names, so
any underscores used in PySB variables will be removed (e.g., A_total
will
be converted to Atotal
).
- class pysb.export.mathematica.MathematicaExporter(model, docstring=None)[source]¶
A class for returning the ODEs for a given PySB model for use in Mathematica.
Inherits from
pysb.export.Exporter
, which implements basic functionality for all exporters.