Skip to content

Commit af9e2b5

Browse files
committed
Add todict and _merge
1 parent 90be14f commit af9e2b5

File tree

7 files changed

+20
-12
lines changed

7 files changed

+20
-12
lines changed

src/systems/control/controlsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function ControlSystem(loss, deqs::AbstractVector{<:Equation}, iv, dvs, controls
7979
systems = ODESystem[],
8080
default_u0=Dict(),
8181
default_p=Dict(),
82-
defaults=merge(Dict(default_u0), Dict(default_p)),
82+
defaults=_merge(Dict(default_u0), Dict(default_p)),
8383
name=gensym(:ControlSystem))
8484
if !(isempty(default_u0) && isempty(default_p))
8585
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :ControlSystem, force=true)
@@ -88,7 +88,8 @@ function ControlSystem(loss, deqs::AbstractVector{<:Equation}, iv, dvs, controls
8888
dvs′ = value.(dvs)
8989
controls′ = value.(controls)
9090
ps′ = value.(ps)
91-
defaults isa Dict || (defaults = Dict(defaults))
91+
defaults = todict(defaults)
92+
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
9293
ControlSystem(value(loss), deqs, iv′, dvs′, controls′,
9394
ps′, observed, name, systems, defaults)
9495
end

src/systems/diffeqs/odesystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function ODESystem(
7979
name=gensym(:ODESystem),
8080
default_u0=Dict(),
8181
default_p=Dict(),
82-
defaults=merge(Dict(default_u0), Dict(default_p)),
82+
defaults=_merge(Dict(default_u0), Dict(default_p)),
8383
)
8484
iv′ = value(iv)
8585
dvs′ = value.(dvs)
@@ -88,7 +88,7 @@ function ODESystem(
8888
if !(isempty(default_u0) && isempty(default_p))
8989
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :ODESystem, force=true)
9090
end
91-
defaults isa Dict || (defaults = Dict(defaults))
91+
defaults = todict(defaults)
9292
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
9393

9494
tgrad = RefValue(Vector{Num}(undef, 0))

src/systems/diffeqs/sdesystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs, iv, dvs, ps;
7878
systems = SDESystem[],
7979
default_u0=Dict(),
8080
default_p=Dict(),
81-
defaults=merge(Dict(default_u0), Dict(default_p)),
81+
defaults=_merge(Dict(default_u0), Dict(default_p)),
8282
name = gensym(:SDESystem))
8383
iv′ = value(iv)
8484
dvs′ = value.(dvs)
@@ -87,7 +87,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs, iv, dvs, ps;
8787
if !(isempty(default_u0) && isempty(default_p))
8888
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :SDESystem, force=true)
8989
end
90-
defaults isa Dict || (defaults = Dict(defaults))
90+
defaults = todict(defaults)
9191
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
9292

9393
tgrad = RefValue(Vector{Num}(undef, 0))

src/systems/jumps/jumpsystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function JumpSystem(eqs, iv, states, ps;
5454
systems = JumpSystem[],
5555
default_u0=Dict(),
5656
default_p=Dict(),
57-
defaults=merge(Dict(default_u0), Dict(default_p)),
57+
defaults=_merge(Dict(default_u0), Dict(default_p)),
5858
name = gensym(:JumpSystem))
5959

6060
ap = ArrayPartition(MassActionJump[], ConstantRateJump[], VariableRateJump[])
@@ -72,7 +72,7 @@ function JumpSystem(eqs, iv, states, ps;
7272
if !(isempty(default_u0) && isempty(default_p))
7373
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :JumpSystem, force=true)
7474
end
75-
defaults isa Dict || (defaults = Dict(defaults))
75+
defaults = todict(defaults)
7676
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
7777

7878
JumpSystem{typeof(ap)}(ap, value(iv), value.(states), value.(ps), observed, name, systems, defaults)

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ function NonlinearSystem(eqs, states, ps;
5151
name = gensym(:NonlinearSystem),
5252
default_u0=Dict(),
5353
default_p=Dict(),
54-
defaults=merge(Dict(default_u0), Dict(default_p)),
54+
defaults=_merge(Dict(default_u0), Dict(default_p)),
5555
systems = NonlinearSystem[])
5656
if !(isempty(default_u0) && isempty(default_p))
5757
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :NonlinearSystem, force=true)
5858
end
59-
defaults isa Dict || (defaults = Dict(defaults))
59+
defaults = todict(defaults)
6060
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
6161
NonlinearSystem(eqs, value.(states), value.(ps), observed, name, systems, defaults, nothing, [])
6262
end

src/systems/optimization/optimizationsystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ function OptimizationSystem(op, states, ps;
4747
inequality_constraints = [],
4848
default_u0=Dict(),
4949
default_p=Dict(),
50-
defaults=merge(Dict(default_u0), Dict(default_p)),
50+
defaults=_merge(Dict(default_u0), Dict(default_p)),
5151
name = gensym(:OptimizationSystem),
5252
systems = OptimizationSystem[])
5353
if !(isempty(default_u0) && isempty(default_p))
5454
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :OptimizationSystem, force=true)
5555
end
56-
defaults isa Dict || (defaults = Dict(defaults))
56+
defaults = todict(defaults)
5757
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
5858

5959
OptimizationSystem(

src/utils.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,10 @@ Maps the variable to a state.
8888
"""
8989
tovar(s::Sym{<:Parameter}) = Sym{symtype(s)}(s.name)
9090
tovar(s::Sym) = s
91+
92+
function todict(d)
93+
eltype(d) <: Pair || throw(ArgumentError("The variable-value mapping must be a Dict."))
94+
d isa Dict ? d : Dict(d)
95+
end
96+
97+
_merge(d1, d2) = merge(todict(d1), todict(d2))

0 commit comments

Comments
 (0)