-
-
Notifications
You must be signed in to change notification settings - Fork 214
/
Copy pathindex.html
54 lines (49 loc) · 24.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>ReactionSystem · ModelingToolkit.jl</title><script data-outdated-warner src="../../assets/warner.js"></script><link rel="canonical" href="https://mtk.sciml.ai/stable/systems/ReactionSystem/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.039/juliamono-regular.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.png" alt="ModelingToolkit.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">ModelingToolkit.jl</a></span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><span class="tocitem">Symbolic Modeling Tutorials</span><ul><li><a class="tocitem" href="../../tutorials/ode_modeling/">Composing Ordinary Differential Equations</a></li><li><a class="tocitem" href="../../tutorials/acausal_components/">Acausal Component-Based Modeling the RC Circuit</a></li><li><a class="tocitem" href="../../tutorials/higher_order/">Automatic Transformation of Nth Order ODEs to 1st Order ODEs</a></li><li><a class="tocitem" href="../../tutorials/tearing_parallelism/">Exposing More Parallelism By Tearing Algebraic Equations in ODESystems</a></li><li><a class="tocitem" href="../../tutorials/nonlinear/">Modeling Nonlinear Systems</a></li><li><a class="tocitem" href="../../tutorials/optimization/">Modeling Optimization Problems</a></li><li><a class="tocitem" href="../../tutorials/stochastic_diffeq/">Modeling with Stochasticity</a></li><li><a class="tocitem" href="../../tutorials/nonlinear_optimal_control/">Nonlinear Optimal Control</a></li></ul></li><li><span class="tocitem">ModelingToolkitize Tutorials</span><ul><li><a class="tocitem" href="../../mtkitize_tutorials/modelingtoolkitize/">Automatically Accelerating ODEProblem Code</a></li><li><a class="tocitem" href="../../mtkitize_tutorials/modelingtoolkitize_index_reduction/">Automated Index Reduction of DAEs</a></li></ul></li><li><span class="tocitem">Basics</span><ul><li><a class="tocitem" href="../../basics/AbstractSystem/">The AbstractSystem Interface</a></li><li><a class="tocitem" href="../../basics/ContextualVariables/">Contextual Variable Types</a></li><li><a class="tocitem" href="../../basics/Composition/">Composing Models and Building Reusable Components</a></li><li><a class="tocitem" href="../../basics/Validation/">Model Validation and Units</a></li><li><a class="tocitem" href="../../basics/DependencyGraphs/">Dependency Graphs</a></li><li><a class="tocitem" href="../../basics/FAQ/">Frequently Asked Questions</a></li></ul></li><li><span class="tocitem">System Types</span><ul><li><a class="tocitem" href="../ODESystem/">ODESystem</a></li><li><a class="tocitem" href="../SDESystem/">SDESystem</a></li><li><a class="tocitem" href="../JumpSystem/">JumpSystem</a></li><li><a class="tocitem" href="../NonlinearSystem/">NonlinearSystem</a></li><li><a class="tocitem" href="../OptimizationSystem/">OptimizationSystem</a></li><li><a class="tocitem" href="../ControlSystem/">ControlSystem</a></li><li class="is-active"><a class="tocitem" href>ReactionSystem</a><ul class="internal"><li><a class="tocitem" href="#System-Constructors"><span>System Constructors</span></a></li><li><a class="tocitem" href="#Composition-and-Accessor-Functions"><span>Composition and Accessor Functions</span></a></li><li><a class="tocitem" href="#Query-Functions"><span>Query Functions</span></a></li><li><a class="tocitem" href="#Transformations"><span>Transformations</span></a></li><li><a class="tocitem" href="#Analyses"><span>Analyses</span></a></li></ul></li><li><a class="tocitem" href="../PDESystem/">PDESystem</a></li></ul></li><li><a class="tocitem" href="../../comparison/">Comparison of ModelingToolkit vs Equation-Based Modeling Languages</a></li><li><a class="tocitem" href="../../internals/">Internal Details</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">System Types</a></li><li class="is-active"><a href>ReactionSystem</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>ReactionSystem</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/SciML/ModelingToolkit.jl/blob/master/docs/src/systems/ReactionSystem.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="ReactionSystem"><a class="docs-heading-anchor" href="#ReactionSystem">ReactionSystem</a><a id="ReactionSystem-1"></a><a class="docs-heading-anchor-permalink" href="#ReactionSystem" title="Permalink"></a></h1><p>A <code>ReactionSystem</code> represents a system of chemical reactions. Conversions are provided to generate corresponding chemical reaction ODE models, chemical Langevin equation SDE models, and stochastic chemical kinetics jump process models. As a simple example, the code below creates a SIR model, and solves the corresponding ODE, SDE, and jump process models.</p><pre><code class="language-julia">using ModelingToolkit, OrdinaryDiffEq, StochasticDiffEq, DiffEqJump
@parameters β γ t
@variables S(t) I(t) R(t)
rxs = [Reaction(β, [S,I], [I], [1,1], [2])
Reaction(γ, [I], [R])]
rs = ReactionSystem(rxs, t, [S,I,R], [β,γ])
u₀map = [S => 999.0, I => 1.0, R => 0.0]
parammap = [β => 1/10000, γ => 0.01]
tspan = (0.0, 250.0)
# solve as ODEs
odesys = convert(ODESystem, rs)
oprob = ODEProblem(odesys, u₀map, tspan, parammap)
sol = solve(oprob, Tsit5())
# solve as SDEs
sdesys = convert(SDESystem, rs)
sprob = SDEProblem(sdesys, u₀map, tspan, parammap)
sol = solve(sprob, EM(), dt=.01)
# solve as jump process
jumpsys = convert(JumpSystem, rs)
u₀map = [S => 999, I => 1, R => 0]
dprob = DiscreteProblem(jumpsys, u₀map, tspan, parammap)
jprob = JumpProblem(jumpsys, dprob, Direct())
sol = solve(jprob, SSAStepper())</code></pre><h2 id="System-Constructors"><a class="docs-heading-anchor" href="#System-Constructors">System Constructors</a><a id="System-Constructors-1"></a><a class="docs-heading-anchor-permalink" href="#System-Constructors" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="ModelingToolkit.Reaction" href="#ModelingToolkit.Reaction"><code>ModelingToolkit.Reaction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">struct Reaction{S, T<:Number}</code></pre><p>One chemical reaction.</p><p><strong>Fields</strong></p><ul><li><p><code>rate</code></p><p>The rate function (excluding mass action terms).</p></li><li><p><code>substrates</code></p><p>Reaction substrates.</p></li><li><p><code>products</code></p><p>Reaction products.</p></li><li><p><code>substoich</code></p><p>The stoichiometric coefficients of the reactants.</p></li><li><p><code>prodstoich</code></p><p>The stoichiometric coefficients of the products.</p></li><li><p><code>netstoich</code></p><p>The net stoichiometric coefficients of all species changed by the reaction.</p></li><li><p><code>only_use_rate</code></p><p><code>false</code> (default) if <code>rate</code> should be multiplied by mass action terms to give the rate law. <code>true</code> if <code>rate</code> represents the full reaction rate law.</p></li></ul><ul><li><p><code>connection_type</code></p><p>type: type of the system</p></li></ul><p><strong>Examples</strong></p><pre><code class="language-julia">using ModelingToolkit
@parameters t k[1:20]
@variables A(t) B(t) C(t) D(t)
rxs = [Reaction(k[1], nothing, [A]), # 0 -> A
Reaction(k[2], [B], nothing), # B -> 0
Reaction(k[3],[A],[C]), # A -> C
Reaction(k[4], [C], [A,B]), # C -> A + B
Reaction(k[5], [C], [A], [1], [2]), # C -> A + A
Reaction(k[6], [A,B], [C]), # A + B -> C
Reaction(k[7], [B], [A], [2], [1]), # 2B -> A
Reaction(k[8], [A,B], [A,C]), # A + B -> A + C
Reaction(k[9], [A,B], [C,D]), # A + B -> C + D
Reaction(k[10], [A], [C,D], [2], [1,1]), # 2A -> C + D
Reaction(k[11], [A], [A,B], [2], [1,1]), # 2A -> A + B
Reaction(k[12], [A,B,C], [C,D], [1,3,4], [2, 3]), # A+3B+4C -> 2C + 3D
Reaction(k[13], [A,B], nothing, [3,1], nothing), # 3A+B -> 0
Reaction(k[14], nothing, [A], nothing, [2]), # 0 -> 2A
Reaction(k[15]*A/(2+A), [A], nothing; only_use_rate=true), # A -> 0 with custom rate
Reaction(k[16], [A], [B]; only_use_rate=true), # A -> B with custom rate.
Reaction(k[17]*A*exp(B), [C], [D], [2], [1]), # 2C -> D with non constant rate.
Reaction(k[18]*B, nothing, [B], nothing, [2]), # 0 -> 2B with non constant rate.
Reaction(k[19]*t, [A], [B]), # A -> B with non constant rate.
Reaction(k[20]*t*A, [B,C], [D],[2,1],[2]) # 2A +B -> 2C with non constant rate.
]</code></pre><p>Notes:</p><ul><li><code>nothing</code> can be used to indicate a reaction that has no reactants or no products. In this case the corresponding stoichiometry vector should also be set to <code>nothing</code>.</li><li>The three-argument form assumes all reactant and product stoichiometric coefficients are one.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L2">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="ModelingToolkit.ReactionSystem" href="#ModelingToolkit.ReactionSystem"><code>ModelingToolkit.ReactionSystem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">struct ReactionSystem <: ModelingToolkit.AbstractSystem</code></pre><p>A system of chemical reactions.</p><p><strong>Fields</strong></p><ul><li><p><code>eqs</code></p><p>The reactions defining the system.</p></li><li><p><code>iv</code></p><p>Independent variable (usually time).</p></li><li><p><code>states</code></p><p>Dependent (state) variables representing amount of each species. Must not contain the independent variable.</p></li><li><p><code>ps</code></p><p>Parameter variables. Must not contain the independent variable.</p></li><li><p><code>observed</code></p></li><li><p><code>name</code></p><p>The name of the system</p></li><li><p><code>systems</code></p><p>systems: The internal systems</p></li></ul><p><strong>Example</strong></p><p>Continuing from the example in the <a href="#ModelingToolkit.Reaction"><code>Reaction</code></a> definition:</p><pre><code class="language-julia">rs = ReactionSystem(rxs, t, [A,B,C,D], k)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L124">source</a></section></article><h2 id="Composition-and-Accessor-Functions"><a class="docs-heading-anchor" href="#Composition-and-Accessor-Functions">Composition and Accessor Functions</a><a id="Composition-and-Accessor-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Composition-and-Accessor-Functions" title="Permalink"></a></h2><ul><li><code>get_eqs(sys)</code> or <code>equations(sys)</code>: The reactions that define the system.</li><li><code>get_states(sys)</code> or <code>states(sys)</code>: The set of chemical species in the system.</li><li><code>get_ps(sys)</code> or <code>parameters(sys)</code>: The parameters of the system.</li><li><code>independent_variable(sys)</code>: The independent variable of the reaction system, usually time.</li></ul><h2 id="Query-Functions"><a class="docs-heading-anchor" href="#Query-Functions">Query Functions</a><a id="Query-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Query-Functions" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="ModelingToolkit.oderatelaw" href="#ModelingToolkit.oderatelaw"><code>ModelingToolkit.oderatelaw</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia">oderatelaw(rx; combinatoric_ratelaw=true)</code></pre><p>Given a <a href="#ModelingToolkit.Reaction"><code>Reaction</code></a>, return the symbolic reaction rate law used in generated ODEs for the reaction. Note, for a reaction defined by</p><p><code>k*X*Y, X+Z --> 2X + Y</code></p><p>the expression that is returned will be <code>k*X(t)^2*Y(t)*Z(t)</code>. For a reaction of the form</p><p><code>k, 2X+3Y --> Z</code></p><p>the expression that is returned will be <code>k * (X(t)^2/2) * (Y(t)^3/6)</code>.</p><p>Notes:</p><ul><li>Allocates</li><li><code>combinatoric_ratelaw=true</code> uses factorial scaling factors in calculating the rate law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S^2/2!</code>. If <code>combinatoric_ratelaw=false</code> then the ratelaw is <code>k*S^2</code>, i.e. the scaling factor is ignored.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L190-L211">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="ModelingToolkit.jumpratelaw" href="#ModelingToolkit.jumpratelaw"><code>ModelingToolkit.jumpratelaw</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia">jumpratelaw(rx; rxvars=get_variables(rx.rate), combinatoric_ratelaw=true)</code></pre><p>Given a <a href="#ModelingToolkit.Reaction"><code>Reaction</code></a>, return the symbolic reaction rate law used in generated stochastic chemical kinetics model SSAs for the reaction. Note, for a reaction defined by</p><p><code>k*X*Y, X+Z --> 2X + Y</code></p><p>the expression that is returned will be <code>k*X^2*Y*Z</code>. For a reaction of the form</p><p><code>k, 2X+3Y --> Z</code></p><p>the expression that is returned will be <code>k * binomial(X,2) * binomial(Y,3)</code>.</p><p>Notes:</p><ul><li><code>rxvars</code> should give the <code>Variable</code>s, i.e. species and parameters, the rate depends on.</li><li>Allocates</li><li><code>combinatoric_ratelaw=true</code> uses binomials in calculating the rate law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S*(S-1)/2</code>. If <code>combinatoric_ratelaw=false</code> then the ratelaw is <code>k*S*(S-1)</code>, i.e. the rate law is not normalized by the scaling factor.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L277-L301">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="ModelingToolkit.ismassaction" href="#ModelingToolkit.ismassaction"><code>ModelingToolkit.ismassaction</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia">ismassaction(rx, rs; rxvars = get_variables(rx.rate),
haveivdep = any(var -> isequal(get_iv(rs),var), rxvars),
stateset = Set(states(rs)))</code></pre><p>True if a given reaction is of mass action form, i.e. <code>rx.rate</code> does not depend on any chemical species that correspond to states of the system, and does not depend explicitly on the independent variable (usually time).</p><p><strong>Arguments</strong></p><ul><li><code>rx</code>, the <a href="#ModelingToolkit.Reaction"><code>Reaction</code></a>.</li><li><code>rs</code>, a <a href="#ModelingToolkit.ReactionSystem"><code>ReactionSystem</code></a> containing the reaction.</li><li>Optional: <code>rxvars</code>, <code>Variable</code>s which are not in <code>rxvars</code> are ignored as possible dependencies.</li><li>Optional: <code>haveivdep</code>, <code>true</code> if the <a href="#ModelingToolkit.Reaction"><code>Reaction</code></a> <code>rate</code> field explicitly depends on the independent variable.</li><li>Optional: <code>stateset</code>, set of states which if the rxvars are within mean rx is non-mass action.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L322-L339">source</a></section></article><h2 id="Transformations"><a class="docs-heading-anchor" href="#Transformations">Transformations</a><a id="Transformations-1"></a><a class="docs-heading-anchor-permalink" href="#Transformations" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="Base.convert" href="#Base.convert"><code>Base.convert</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia">Base.convert(::Type{<:ODESystem},rs::ReactionSystem)</code></pre><p>Convert a <a href="#ModelingToolkit.ReactionSystem"><code>ReactionSystem</code></a> to an <a href="../ODESystem/#ModelingToolkit.ODESystem"><code>ODESystem</code></a>.</p><p>Notes:</p><ul><li><code>combinatoric_ratelaws=true</code> uses factorial scaling factors in calculating the rate</li></ul><p>law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S^2/2!</code>. If <code>combinatoric_ratelaws=false</code> then the ratelaw is <code>k*S^2</code>, i.e. the scaling factor is ignored.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L406-L417">source</a></section><section><div><pre><code class="language-julia">Base.convert(::Type{<:NonlinearSystem},rs::ReactionSystem)</code></pre><p>Convert a <a href="#ModelingToolkit.ReactionSystem"><code>ReactionSystem</code></a> to an <a href="../NonlinearSystem/#ModelingToolkit.NonlinearSystem"><code>NonlinearSystem</code></a>.</p><p>Notes:</p><ul><li><code>combinatoric_ratelaws=true</code> uses factorial scaling factors in calculating the rate</li></ul><p>law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S^2/2!</code>. If <code>combinatoric_ratelaws=false</code> then the ratelaw is <code>k*S^2</code>, i.e. the scaling factor is ignored.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L425-L437">source</a></section><section><div><pre><code class="language-julia">Base.convert(::Type{<:SDESystem},rs::ReactionSystem)</code></pre><p>Convert a <a href="#ModelingToolkit.ReactionSystem"><code>ReactionSystem</code></a> to an <a href="../SDESystem/#ModelingToolkit.SDESystem"><code>SDESystem</code></a>.</p><p>Notes:</p><ul><li><code>combinatoric_ratelaws=true</code> uses factorial scaling factors in calculating the rate</li></ul><p>law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S^2/2!</code>. If <code>combinatoric_ratelaws=false</code> then the ratelaw is <code>k*S^2</code>, i.e. the scaling factor is ignored.</p><ul><li><code>noise_scaling=nothing::Union{Vector{Num},Num,Nothing}</code> allows for linear</li></ul><p>scaling of the noise in the chemical Langevin equations. If <code>nothing</code> is given, the default value as in Gillespie 2000 is used. Alternatively, a <code>Num</code> can be given, this is added as a parameter to the system (at the end of the parameter array). All noise terms are linearly scaled with this value. The parameter may be one already declared in the <code>ReactionSystem</code>. Finally, a <code>Vector{Num}</code> can be provided (the length must be equal to the number of reactions). Here the noise for each reaction is scaled by the corresponding parameter in the input vector. This input may contain repeat parameters.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L445-L465">source</a></section><section><div><pre><code class="language-julia">Base.convert(::Type{<:JumpSystem},rs::ReactionSystem; combinatoric_ratelaws=true)</code></pre><p>Convert a <a href="#ModelingToolkit.ReactionSystem"><code>ReactionSystem</code></a> to an <a href="../JumpSystem/#ModelingToolkit.JumpSystem"><code>JumpSystem</code></a>.</p><p>Notes:</p><ul><li><code>combinatoric_ratelaws=true</code> uses binomials in calculating the rate law, i.e. for <code>2S -> 0</code> at rate <code>k</code> the ratelaw would be <code>k*S*(S-1)/2</code>. If <code>combinatoric_ratelaws=false</code> then the ratelaw is <code>k*S*(S-1)</code>, i.e. the rate law is not normalized by the scaling factor.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/c91e276f534b4ad76c06f5a128184df7e460c58c/src/systems/reaction/reactionsystem.jl#L493-L505">source</a></section></article><div class="admonition is-warning"><header class="admonition-header">Missing docstring.</header><div class="admonition-body"><p>Missing docstring for <code>structural_simplify</code>. Check Documenter's build log for details.</p></div></div><h2 id="Analyses"><a class="docs-heading-anchor" href="#Analyses">Analyses</a><a id="Analyses-1"></a><a class="docs-heading-anchor-permalink" href="#Analyses" title="Permalink"></a></h2></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../ControlSystem/">« ControlSystem</a><a class="docs-footer-nextpage" href="../PDESystem/">PDESystem »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.3 on <span class="colophon-date" title="Tuesday 13 July 2021 11:09">Tuesday 13 July 2021</span>. Using Julia version 1.6.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>