Skip to content

Commit 06ba087

Browse files
committed
default_{p,u0} -> defaults
1 parent e6a84d9 commit 06ba087

File tree

10 files changed

+124
-226
lines changed

10 files changed

+124
-226
lines changed

src/systems/abstractsystem.jl

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ for prop in [
140140
:iv
141141
:states
142142
:ps
143-
:default_p
144-
:default_u0
143+
:defaults
145144
:observed
146145
:tgrad
147146
:jac
@@ -155,6 +154,10 @@ for prop in [
155154
:controls
156155
:loss
157156
:reduced_states
157+
:bcs
158+
:domain
159+
:depvars
160+
:indvars
158161
]
159162
fname1 = Symbol(:get_, prop)
160163
fname2 = Symbol(:has_, prop)
@@ -253,13 +256,13 @@ function Base.setproperty!(sys::AbstractSystem, prop::Symbol, val)
253256
idx = findfirst(s->getname(s) == prop, params);
254257
idx !== nothing;
255258
)
256-
get_default_p(sys)[params[idx]] = value(val)
259+
get_defaults(sys)[params[idx]] = value(val)
257260
elseif (
258261
sts = states(sys);
259262
idx = findfirst(s->getname(s) == prop, sts);
260263
idx !== nothing;
261264
)
262-
get_default_u0(sys)[sts[idx]] = value(val)
265+
get_defaults(sys)[sts[idx]] = value(val)
263266
else
264267
setfield!(sys, prop, val)
265268
end
@@ -280,16 +283,11 @@ end
280283
namespace_variables(sys::AbstractSystem) = states(sys, states(sys))
281284
namespace_parameters(sys::AbstractSystem) = parameters(sys, parameters(sys))
282285

283-
function namespace_default_u0(sys)
284-
d_u0 = default_u0(sys)
286+
function namespace_defaults(sys)
287+
d_u0 = defaults(sys)
285288
Dict(states(sys, k) => namespace_expr(d_u0[k], nameof(sys), independent_variable(sys)) for k in keys(d_u0))
286289
end
287290

288-
function namespace_default_p(sys)
289-
d_p = default_p(sys)
290-
Dict(parameters(sys, k) => namespace_expr(d_p[k], nameof(sys), independent_variable(sys)) for k in keys(d_p))
291-
end
292-
293291
function namespace_equations(sys::AbstractSystem)
294292
eqs = equations(sys)
295293
isempty(eqs) && return Equation[]
@@ -344,16 +342,10 @@ function observed(sys::AbstractSystem)
344342
init=Equation[])]
345343
end
346344

347-
function default_u0(sys::AbstractSystem)
345+
function defaults(sys::AbstractSystem)
348346
systems = get_systems(sys)
349-
d_u0 = get_default_u0(sys)
350-
isempty(systems) ? d_u0 : mapreduce(namespace_default_u0, merge, systems; init=d_u0)
351-
end
352-
353-
function default_p(sys::AbstractSystem)
354-
systems = get_systems(sys)
355-
d_p = get_default_p(sys)
356-
isempty(systems) ? d_p : mapreduce(namespace_default_p, merge, systems; init=d_p)
347+
d_u0 = get_defaults(sys)
348+
isempty(systems) ? d_u0 : mapreduce(namespace_defaults, merge, systems; init=d_u0)
357349
end
358350

359351
states(sys::AbstractSystem, v) = renamespace(nameof(sys), v)
@@ -413,7 +405,7 @@ function Base.show(io::IO, sys::AbstractSystem)
413405
Base.printstyled(io, "States ($nvars):"; bold=true)
414406
nrows = min(nvars, limit ? rows : nvars)
415407
limited = nrows < length(vars)
416-
d_u0 = has_default_u0(sys) ? default_u0(sys) : nothing
408+
d_u0 = has_defaults(sys) ? defaults(sys) : nothing
417409
for i in 1:nrows
418410
s = vars[i]
419411
print(io, "\n ", s)
@@ -432,13 +424,12 @@ function Base.show(io::IO, sys::AbstractSystem)
432424
Base.printstyled(io, "Parameters ($nvars):"; bold=true)
433425
nrows = min(nvars, limit ? rows : nvars)
434426
limited = nrows < length(vars)
435-
d_p = has_default_p(sys) ? default_p(sys) : nothing
436427
for i in 1:nrows
437428
s = vars[i]
438429
print(io, "\n ", s)
439430

440-
if d_p !== nothing
441-
val = get(d_p, s, nothing)
431+
if d_u0 !== nothing
432+
val = get(d_u0, s, nothing)
442433
if val !== nothing
443434
print(io, " [defaults to $val]")
444435
end

src/systems/control/controlsystem.jl

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,33 +68,29 @@ struct ControlSystem <: AbstractControlSystem
6868
"""
6969
systems::Vector{ControlSystem}
7070
"""
71-
default_u0: The default initial conditions to use when initial conditions
72-
are not supplied in `ODEProblem`.
71+
defaults: The default values to use when initial conditions and/or
72+
parameters are not supplied in `ODEProblem`.
7373
"""
74-
default_u0::Dict
75-
"""
76-
default_p: The default parameters to use when parameters are not supplied
77-
in `ODEProblem`.
78-
"""
79-
default_p::Dict
74+
defaults::Dict
8075
end
8176

8277
function ControlSystem(loss, deqs::AbstractVector{<:Equation}, iv, dvs, controls, ps;
8378
observed = [],
8479
systems = ODESystem[],
8580
default_u0=Dict(),
8681
default_p=Dict(),
82+
defaults=merge(Dict(default_u0), Dict(default_p)),
8783
name=gensym(:ControlSystem))
84+
if !(isempty(default_u0) && isempty(default_p))
85+
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :ControlSystem, force=true)
86+
end
8887
iv′ = value(iv)
8988
dvs′ = value.(dvs)
9089
controls′ = value.(controls)
9190
ps′ = value.(ps)
92-
default_u0 isa Dict || (default_u0 = Dict(default_u0))
93-
default_p isa Dict || (default_p = Dict(default_p))
94-
default_u0 = Dict(value(k) => value(default_u0[k]) for k in keys(default_u0))
95-
default_p = Dict(value(k) => value(default_p[k]) for k in keys(default_p))
91+
defaults isa Dict || (defaults = Dict(defaults))
9692
ControlSystem(value(loss), deqs, iv′, dvs′, controls′,
97-
ps′, observed, name, systems, default_u0, default_p)
93+
ps′, observed, name, systems, defaults)
9894
end
9995

10096
struct ControlToExpr

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -286,23 +286,10 @@ function process_DEProblem(constructor, sys::AbstractODESystem,u0map,parammap;
286286
kwargs...)
287287
dvs = states(sys)
288288
ps = parameters(sys)
289-
defaults = merge(default_p(sys), default_u0(sys))
289+
defs = defaults(sys)
290290

291-
if u0map !== nothing
292-
u0map′ = lower_mapnames(u0map,get_iv(sys))
293-
u0 = varmap_to_vars(u0map′,dvs; defaults=defaults)
294-
else
295-
u0 = nothing
296-
end
297-
298-
if !(parammap isa DiffEqBase.NullParameters)
299-
parammap′ = lower_mapnames(parammap)
300-
p = varmap_to_vars(parammap′,ps; defaults=defaults)
301-
elseif !isempty(defaults)
302-
p = varmap_to_vars(Dict(),ps; defaults=defaults)
303-
else
304-
p = ps
305-
end
291+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
292+
p = varmap_to_vars(parammap,ps; defaults=defs)
306293

307294
f = constructor(sys,dvs,ps,u0;tgrad=tgrad,jac=jac,checkbounds=checkbounds,
308295
linenumbers=linenumbers,parallel=parallel,simplify=simplify,

src/systems/diffeqs/modelingtoolkitize.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ function modelingtoolkitize(prob::DiffEqBase.ODEProblem)
5555

5656
de = ODESystem(
5757
eqs, t, sts, params,
58-
default_u0=Dict(sts .=> vec(collect(prob.u0))),
59-
default_p=Dict(params .=> vec(collect(prob.p))),
58+
defaults=merge(Dict(sts .=> vec(collect(prob.u0))), Dict(params .=> vec(collect(prob.p)))),
6059
)
6160

6261
de

src/systems/diffeqs/odesystem.jl

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,10 @@ struct ODESystem <: AbstractODESystem
6161
"""
6262
systems::Vector{ODESystem}
6363
"""
64-
default_u0: The default initial conditions to use when initial conditions
65-
are not supplied in `ODEProblem`.
64+
defaults: The default values to use when initial conditions and/or
65+
parameters are not supplied in `ODEProblem`.
6666
"""
67-
default_u0::Dict
68-
"""
69-
default_p: The default parameters to use when parameters are not supplied
70-
in `ODEProblem`.
71-
"""
72-
default_p::Dict
67+
defaults::Dict
7368
"""
7469
structure: structural information of the system
7570
"""
@@ -84,15 +79,17 @@ function ODESystem(
8479
name=gensym(:ODESystem),
8580
default_u0=Dict(),
8681
default_p=Dict(),
82+
defaults=merge(Dict(default_u0), Dict(default_p)),
8783
)
8884
iv′ = value(iv)
8985
dvs′ = value.(dvs)
9086
ps′ = value.(ps)
9187

92-
default_u0 isa Dict || (default_u0 = Dict(default_u0))
93-
default_p isa Dict || (default_p = Dict(default_p))
94-
default_u0 = Dict(value(k) => value(default_u0[k]) for k in keys(default_u0))
95-
default_p = Dict(value(k) => value(default_p[k]) for k in keys(default_p))
88+
if !(isempty(default_u0) && isempty(default_p))
89+
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :ODESystem, force=true)
90+
end
91+
defaults isa Dict || (defaults = Dict(defaults))
92+
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
9693

9794
tgrad = RefValue(Vector{Num}(undef, 0))
9895
jac = RefValue{Any}(Matrix{Num}(undef, 0, 0))
@@ -102,7 +99,7 @@ function ODESystem(
10299
if length(unique(sysnames)) != length(sysnames)
103100
throw(ArgumentError("System names must be unique."))
104101
end
105-
ODESystem(deqs, iv′, dvs′, ps′, observed, tgrad, jac, Wfact, Wfact_t, name, systems, default_u0, default_p, nothing, [])
102+
ODESystem(deqs, iv′, dvs′, ps′, observed, tgrad, jac, Wfact, Wfact_t, name, systems, defaults, nothing, [])
106103
end
107104

108105
iv_from_nested_derivative(x::Term) = operation(x) isa Differential ? iv_from_nested_derivative(arguments(x)[1]) : arguments(x)[1]
@@ -220,8 +217,7 @@ function flatten(sys::ODESystem)
220217
states(sys),
221218
parameters(sys),
222219
observed=observed(sys),
223-
default_u0=default_u0(sys),
224-
default_p=default_p(sys),
220+
defaults=defaults(sys),
225221
name=nameof(sys),
226222
)
227223
end

src/systems/diffeqs/sdesystem.jl

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,37 +67,34 @@ struct SDESystem <: AbstractODESystem
6767
"""
6868
systems::Vector{SDESystem}
6969
"""
70-
default_u0: The default initial conditions to use when initial conditions
71-
are not supplied in `ODEProblem`.
70+
defaults: The default values to use when initial conditions and/or
71+
parameters are not supplied in `ODEProblem`.
7272
"""
73-
default_u0::Dict
74-
"""
75-
default_p: The default parameters to use when parameters are not supplied
76-
in `ODEProblem`.
77-
"""
78-
default_p::Dict
73+
defaults::Dict
7974
end
8075

8176
function SDESystem(deqs::AbstractVector{<:Equation}, neqs, iv, dvs, ps;
8277
observed = [],
8378
systems = SDESystem[],
8479
default_u0=Dict(),
8580
default_p=Dict(),
81+
defaults=merge(Dict(default_u0), Dict(default_p)),
8682
name = gensym(:SDESystem))
8783
iv′ = value(iv)
8884
dvs′ = value.(dvs)
8985
ps′ = value.(ps)
9086

91-
default_u0 isa Dict || (default_u0 = Dict(default_u0))
92-
default_p isa Dict || (default_p = Dict(default_p))
93-
default_u0 = Dict(value(k) => value(default_u0[k]) for k in keys(default_u0))
94-
default_p = Dict(value(k) => value(default_p[k]) for k in keys(default_p))
87+
if !(isempty(default_u0) && isempty(default_p))
88+
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :SDESystem, force=true)
89+
end
90+
defaults isa Dict || (defaults = Dict(defaults))
91+
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
9592

9693
tgrad = RefValue(Vector{Num}(undef, 0))
9794
jac = RefValue{Any}(Matrix{Num}(undef, 0, 0))
9895
Wfact = RefValue(Matrix{Num}(undef, 0, 0))
9996
Wfact_t = RefValue(Matrix{Num}(undef, 0, 0))
100-
SDESystem(deqs, neqs, iv′, dvs′, ps′, observed, tgrad, jac, Wfact, Wfact_t, name, systems, default_u0, default_p)
97+
SDESystem(deqs, neqs, iv′, dvs′, ps′, observed, tgrad, jac, Wfact, Wfact_t, name, systems, defaults)
10198
end
10299

103100
function generate_diffusion_function(sys::SDESystem, dvs = states(sys), ps = parameters(sys); kwargs...)

src/systems/jumps/jumpsystem.jl

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,18 @@ struct JumpSystem{U <: ArrayPartition} <: AbstractSystem
4343
"""The internal systems."""
4444
systems::Vector{JumpSystem}
4545
"""
46-
default_u0: The default initial conditions to use when initial conditions
47-
are not supplied in `ODEProblem`.
46+
defaults: The default values to use when initial conditions and/or
47+
parameters are not supplied in `ODEProblem`.
4848
"""
49-
default_u0::Dict
50-
"""
51-
default_p: The default parameters to use when parameters are not supplied
52-
in `ODEProblem`.
53-
"""
54-
default_p::Dict
49+
defaults::Dict
5550
end
5651

5752
function JumpSystem(eqs, iv, states, ps;
5853
observed = Equation[],
5954
systems = JumpSystem[],
6055
default_u0=Dict(),
6156
default_p=Dict(),
57+
defaults=merge(Dict(default_u0), Dict(default_p)),
6258
name = gensym(:JumpSystem))
6359

6460
ap = ArrayPartition(MassActionJump[], ConstantRateJump[], VariableRateJump[])
@@ -73,12 +69,13 @@ function JumpSystem(eqs, iv, states, ps;
7369
error("JumpSystem equations must contain MassActionJumps, ConstantRateJumps, or VariableRateJumps.")
7470
end
7571
end
76-
default_u0 isa Dict || (default_u0 = Dict(default_u0))
77-
default_p isa Dict || (default_p = Dict(default_p))
78-
default_u0 = Dict(value(k) => value(default_u0[k]) for k in keys(default_u0))
79-
default_p = Dict(value(k) => value(default_p[k]) for k in keys(default_p))
72+
if !(isempty(default_u0) && isempty(default_p))
73+
Base.depwarn("`default_u0` and `default_p` are deprecated. Use `defaults` instead.", :JumpSystem, force=true)
74+
end
75+
defaults isa Dict || (defaults = Dict(defaults))
76+
defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
8077

81-
JumpSystem{typeof(ap)}(ap, value(iv), value.(states), value.(ps), observed, name, systems, default_u0, default_p)
78+
JumpSystem{typeof(ap)}(ap, value(iv), value.(states), value.(ps), observed, name, systems, defaults)
8279
end
8380

8481
function generate_rate_function(js, rate)
@@ -204,9 +201,9 @@ dprob = DiscreteProblem(js, u₀map, tspan, parammap)
204201
"""
205202
function DiffEqBase.DiscreteProblem(sys::JumpSystem, u0map, tspan::Union{Tuple,Nothing},
206203
parammap=DiffEqBase.NullParameters(); kwargs...)
207-
defaults = merge(default_p(sys), default_u0(sys))
208-
u0 = varmap_to_vars(u0map, states(sys); defaults=defaults)
209-
p = varmap_to_vars(parammap, parameters(sys); defaults=defaults)
204+
defs = defaults(sys)
205+
u0 = varmap_to_vars(u0map, states(sys); defaults=defs)
206+
p = varmap_to_vars(parammap, parameters(sys); defaults=defs)
210207
f = DiffEqBase.DISCRETE_INPLACE_DEFAULT
211208
df = DiscreteFunction{true,true}(f, syms=Symbol.(states(sys)))
212209
DiscreteProblem(df, u0, tspan, p; kwargs...)
@@ -233,9 +230,9 @@ dprob = DiscreteProblem(js, u₀map, tspan, parammap)
233230
"""
234231
function DiscreteProblemExpr(sys::JumpSystem, u0map, tspan::Union{Tuple,Nothing},
235232
parammap=DiffEqBase.NullParameters(); kwargs...)
236-
defaults = merge(default_p(sys), default_u0(sys))
237-
u0 = varmap_to_vars(u0map, states(sys); defaults=defaults)
238-
p = varmap_to_vars(parammap, parameters(sys); defaults=defaults)
233+
defs = defaults(sys)
234+
u0 = varmap_to_vars(u0map, states(sys); defaults=defs)
235+
p = varmap_to_vars(parammap, parameters(sys); defaults=defs)
239236
# identity function to make syms works
240237
quote
241238
f = DiffEqBase.DISCRETE_INPLACE_DEFAULT

0 commit comments

Comments
 (0)