Skip to content

Commit c052339

Browse files
fixup! feat: add missing_is_symbolic to remake
1 parent 69ce148 commit c052339

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

src/remake.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@ function remake(prob::BVProblem{uType, tType, iip, nlls}; f = missing, bc = miss
247247
tspan = prob.tspan
248248
end
249249

250-
u0, p = updated_u0_p(prob, u0, p, tspan[1]; interpret_symbolicmap, use_defaults)
250+
u0, p = updated_u0_p(
251+
prob, u0, p, tspan[1]; interpret_symbolicmap, use_defaults, missing_is_symbolic)
251252

252253
if problem_type === missing
253254
problem_type = prob.problem_type
@@ -543,19 +544,20 @@ function _updated_u0_p_internal(
543544
prob, ::Missing, p, t0; interpret_symbolicmap = true,
544545
use_defaults = false, missing_is_symbolic = true)
545546
return _updated_u0_p_internal(
546-
prob, missing_is_symbolic ? anydict() : state_values(prob), p, t0; interpret_symbolicmap)
547+
prob, missing_is_symbolic ? anydict() : state_values(prob),
548+
p, t0; interpret_symbolicmap, use_defaults)
547549
end
548550

549551
function _updated_u0_p_internal(
550552
prob, u0, ::Missing, t0; interpret_symbolicmap = true,
551553
use_defaults = false, missing_is_symbolic = true)
552554
return _updated_u0_p_internal(
553555
prob, u0, missing_is_symbolic ? anydict() : parameter_values(prob),
554-
t0; interpret_symbolicmap)
556+
t0; interpret_symbolicmap, use_defaults)
555557
end
556558

557559
function _updated_u0_p_internal(
558-
prob, u0, p, t0; interpret_symbolicmap = true, use_defaults = false)
560+
prob, u0, p, t0; interpret_symbolicmap = true, use_defaults = false, kwargs...)
559561
isu0symbolic = eltype(u0) <: Pair
560562
ispsymbolic = eltype(p) <: Pair && interpret_symbolicmap
561563

test/remake_tests.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,21 +121,25 @@ for prob in deepcopy(probs)
121121
@test prob2.p == typeof(prob.p)(p)
122122

123123
# respect defaults (:x), fallback to existing value (:z)
124-
prob2 = @inferred baseType remake(prob; u0 = [:y => 0.2], use_defaults = true)
124+
prob2 = @inferred baseType remake(
125+
prob; u0 = [:y => 0.2], use_defaults = true, missing_is_symbolic = false)
125126
@test prob2.u0 [0.1, 0.2, 3.0]
126127
@test prob2.p == typeof(prob.p)(p) # params unaffected
128+
prob2 = @inferred baseType remake(prob; u0 = [:y => 0.2], use_defaults = true)
129+
@test prob2.u0 [0.1, 0.2, 3.0]
130+
@test all(prob2.p .≈ [0.1, 20.0, 30.0])
127131

128132
# override defaults
129133
prob2 = @inferred baseType remake(prob; u0 = [:x => 0.2], use_defaults = true)
130134
@test prob2.u0 [0.2, 2.0, 3.0]
131-
@test prob2.p == typeof(prob.p)(p)
135+
@test all(prob2.p .≈ [0.1, 20.0, 30.0])
132136

133137
prob2 = @inferred baseType remake(prob; p = [:b => 0.2], use_defaults = true)
134-
@test prob2.u0 == u0
138+
@test prob2.u0 [0.1, 2.0, 3.0]
135139
@test all(prob2.p .≈ [0.1, 0.2, 30.0])
136140

137141
prob2 = @inferred baseType remake(prob; p = [:a => 0.2], use_defaults = true)
138-
@test prob2.u0 == u0
142+
@test prob2.u0 [0.1, 2.0, 3.0]
139143
@test all(prob2.p .≈ [0.2, 20.0, 30.0])
140144

141145
empty!(prob.f.sys.defaults)
@@ -152,36 +156,37 @@ for prob in deepcopy(probs)
152156
@test prob2.u0 == u0
153157
@test prob2.p == typeof(prob.p)(p)
154158

155-
prob2 = @inferred baseType remake(prob; u0 = [:x => 0.2])
159+
prob2 = @inferred baseType remake(
160+
prob; u0 = [:x => 0.2], missing_is_symbolic = false)
156161
@test prob2.u0 [0.2, 0.6, 3.0]
157162
@test prob2.p == typeof(prob.p)(p)
158163

159164
# respect numeric defaults (:z)
160165
prob2 = @inferred baseType remake(prob; u0 = [:x => 0.2], use_defaults = true)
161166
@test prob2.u0 [0.2, 0.6, 9.0]
162-
@test prob2.p == typeof(prob.p)(p) # params unaffected
167+
@test all(prob2.p .≈ [10.0, 30.0, 0.9])
163168

164169
# override defaults
165170
prob2 = @inferred baseType remake(prob; u0 = [:y => 0.2])
166171
@test prob2.u0 [1.0, 0.2, 3.0]
167-
@test prob2.p == typeof(prob.p)(p)
172+
@test all(prob2.p .≈ [10.0, 30.0, 30.0])
168173
prob2 = @inferred baseType remake(prob; u0 = [:y => 0.2], use_defaults = true)
169174
@test prob2.u0 [1.0, 0.2, 9.0]
170-
@test prob2.p == typeof(prob.p)(p)
175+
@test all(prob2.p .≈ [10.0, 30.0, 0.9])
171176

172177
prob2 = @inferred baseType remake(prob; p = [:a => 0.2])
173-
@test prob2.u0 == u0
178+
@test prob2.u0 [1.0, 3.0, 3.0]
174179
@test all(prob2.p .≈ [0.2, 0.6, 30.0])
175180

176181
prob2 = @inferred baseType remake(prob; p = [:a => 0.2], use_defaults = true)
177-
@test prob2.u0 == u0
182+
@test prob2.u0 [1.0, 3.0, 9.0]
178183
@test all(prob2.p .≈ [0.2, 0.6, 0.9])
179184

180185
prob2 = @inferred baseType remake(prob; p = [:b => 0.2])
181-
@test prob2.u0 == u0
186+
@test prob2.u0 [1.0, 3.0, 3.0]
182187
@test all(prob2.p .≈ [10.0, 0.2, 30.0])
183188
prob2 = @inferred baseType remake(prob; p = [:b => 0.2], use_defaults = true)
184-
@test prob2.u0 == u0
189+
@test prob2.u0 [1.0, 3.0, 9.0]
185190
@test all(prob2.p .≈ [10.0, 0.2, 0.9])
186191

187192
empty!(prob.f.sys.defaults)

0 commit comments

Comments
 (0)