Skip to content

Commit 43b172e

Browse files
fix: fix substitute(::AbstractSystem, _...)
1 parent d275c1b commit 43b172e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/systems/abstractsystem.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2791,7 +2791,7 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
27912791
# post-walk to avoid infinite recursion
27922792
@set! sys.systems = map(Base.Fix2(substitute, dict), systems)
27932793
something(get(rules, nameof(sys), nothing), sys)
2794-
elseif sys isa ODESystem
2794+
elseif sys isa System
27952795
rules = todict(map(r -> Symbolics.unwrap(r[1]) => Symbolics.unwrap(r[2]),
27962796
collect(rules)))
27972797
eqs = fast_substitute(get_eqs(sys), rules)
@@ -2800,9 +2800,15 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
28002800
for (k, v) in get_defaults(sys))
28012801
guess = Dict(fast_substitute(k, rules) => fast_substitute(v, rules)
28022802
for (k, v) in get_guesses(sys))
2803+
noise_eqs = fast_substitute(get_noise_eqs(sys), rules)
2804+
costs = fast_substitute(get_costs(sys), rules)
2805+
observed = fast_substitute(get_observed(sys), rules)
2806+
initialization_eqs = fast_substitute(get_initialization_eqs(sys), rules)
2807+
cstrs = fast_substitute(get_constraints(sys), rules)
28032808
subsys = map(s -> substitute(s, rules), get_systems(sys))
2804-
ODESystem(eqs, get_iv(sys); name = nameof(sys), defaults = defs,
2805-
guesses = guess, parameter_dependencies = pdeps, systems = subsys)
2809+
System(eqs, get_iv(sys); name = nameof(sys), defaults = defs,
2810+
guesses = guess, parameter_dependencies = pdeps, systems = subsys, noise_eqs,
2811+
observed, initialization_eqs, constraints = cstrs)
28062812
else
28072813
error("substituting symbols is not supported for $(typeof(sys))")
28082814
end

0 commit comments

Comments
 (0)