API

SBMLImporter.load_SBMLFunction
load_SBML(path_SBML::AbstractString;
          ifelse_to_callback::Bool=true,
          inline_assignment_rules::Bool=false,
          write_to_file::Bool=false,
          model_as_string::Bool=false,
          check_massaction=true,
          mass_action::Bool=false)

Parse an SBML model into a ParsedReactionNetwork and convert SBML events/piecewise to callbacks.

For information on simulating the ParsedReactionNetwork, as a JumpProblem, a SDEProblem, or an ODEProblem see the documentation.

path_SBML can be the model as a string if model_as_string=true.

Arguments

  • path_SBML: File path to a valid SBML file (level 2 or higher).
  • ifelse_to_callback=true: Whether to rewrite ifelse (piecewise) expressions to callbacks; recommended for performance.
  • inline_assignment_rules=true: Whether to inline assignment rules into model equations. Recommended for model import speed, however, it will not be possible to access the rule-variable via sol[:var].
  • write_to_file=false: Whether to write the parsed SBML model to a Julia file in the same directory as the SBML file.
  • model_as_string=false: Whether or not the model (path_SBML) is provided as a string.
  • check_massaction=true: Whether to check if and rewrite a reaction to mass action if possible.
  • mass_action=false: Determines if reactions are treated as mass-action reactions. This option should be set to true only if it is certain that the model has mass action reactions, for example if the model is an SBML file produced by BioNetGen.

Returns

  • parsed_rn: A ParsedReactionNetwork struct that can be converted into a JumpProblem, a SDEProblem, or an ODEProblem
  • cbset: Callbackset (events, piecewise etc...) for the model.

Examples

# Import and simulate model as a JumpProblem
using SBMLImporter, JumpProcesses
prnbng, cb = load_SBML(path_SBML)
tspan = (0.0, 10.0)
dprob = DiscreteProblem(prnbng.rn, prnbng.u₀, tspan, prnbng.p)
jprob = JumpProblem(prnbng.rn, dprob, Direct())
sol = solve(jprob, SSAStepper(), callback=cb)
# Import and simulate model as a SDE
using SBMLImporter, StochasticDiffEq
prnbng, cb = load_SBML(path_SBML)
tspan = (0.0, 10.0)
sprob = SDEProblem(prnbng.rn, prnbng.u₀, tspan, prnbng.p)
sol = solve(sprob, LambaEM(), callback=cb)
# Import and simulate model as an ODE
using SBMLImporter, ModelingToolkit, OrdinaryDiffEq
prnbng, cb = load_SBML(path_SBML)
sys = convert(ODESystem, prnbng.rn)
oprob = ODEProblem(sys, prnbng.u₀, tspan, prnbng.p, jac=true)
sol = solve(oprob, Rodas5P(), callback=cb)
source