Skip to content

Commit af37ae8

Browse files
fix: various bug and test fixes
1 parent 152e9c2 commit af37ae8

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

src/systems/abstractsystem.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,8 @@ function SymbolicIndexingInterface.is_parameter(sys::AbstractSystem, sym)
427427
sym = unwrap(sym)
428428
if has_index_cache(sys) && (ic = get_index_cache(sys)) !== nothing
429429
return sym isa ParameterIndex || is_parameter(ic, sym) ||
430-
istree(sym) && operation(sym) === getindex &&
430+
istree(sym) &&
431+
operation(sym) === getindex &&
431432
is_parameter(ic, first(arguments(sym)))
432433
end
433434
if unwrap(sym) isa Int
@@ -462,10 +463,12 @@ function SymbolicIndexingInterface.parameter_index(sys::AbstractSystem, sym)
462463
end
463464
elseif istree(sym) && operation(sym) === getindex &&
464465
(idx = parameter_index(ic, first(arguments(sym)))) !== nothing
465-
if idx.portion isa SciMLStructures.Discrete && idx.idx[2] == idx.idx[3] == nothing
466+
if idx.portion isa SciMLStructures.Discrete &&
467+
idx.idx[2] == idx.idx[3] == nothing
466468
return nothing
467469
else
468-
ParameterIndex(idx.portion, (idx.idx..., arguments(sym)[(begin + 1):end]...))
470+
ParameterIndex(
471+
idx.portion, (idx.idx..., arguments(sym)[(begin + 1):end]...))
469472
end
470473
else
471474
nothing
@@ -485,7 +488,8 @@ end
485488
function SymbolicIndexingInterface.parameter_index(sys::AbstractSystem, sym::Symbol)
486489
if has_index_cache(sys) && (ic = get_index_cache(sys)) !== nothing
487490
idx = parameter_index(ic, sym)
488-
if idx === nothing || idx.portion isa SciMLStructures.Discrete && idx.idx[2] == idx.idx[3] == 0
491+
if idx === nothing ||
492+
idx.portion isa SciMLStructures.Discrete && idx.idx[2] == idx.idx[3] == 0
489493
return nothing
490494
else
491495
return idx

src/systems/parameter_buffer.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ function MTKParameters(
132132
end
133133
end
134134
tunable_buffer = narrow_buffer_type.(tunable_buffer)
135-
disc_buffer = narrow_buffer_type.(disc_buffer)
135+
disc_buffer = broadcast.(narrow_buffer_type, disc_buffer)
136136
const_buffer = narrow_buffer_type.(const_buffer)
137137
nonnumeric_buffer = narrow_buffer_type.(nonnumeric_buffer)
138138

@@ -149,7 +149,8 @@ function MTKParameters(
149149
oop, iip = build_function(dep_exprs, p...)
150150
update_function_iip, update_function_oop = RuntimeGeneratedFunctions.@RuntimeGeneratedFunction(iip),
151151
RuntimeGeneratedFunctions.@RuntimeGeneratedFunction(oop)
152-
update_function_iip(ArrayPartition(dep_buffer), tunable_buffer..., disc_buffer...,
152+
update_function_iip(ArrayPartition(dep_buffer), tunable_buffer...,
153+
Iterators.flatten(disc_buffer)...,
153154
const_buffer..., nonnumeric_buffer..., dep_buffer...)
154155
dep_buffer = narrow_buffer_type.(dep_buffer)
155156
else
@@ -442,7 +443,7 @@ function SymbolicIndexingInterface.remake_buffer(sys, oldbuf::MTKParameters, val
442443
@set! newbuf.dependent = narrow_buffer_type_and_fallback_undefs.(
443444
oldbuf.dependent,
444445
split_into_buffers(
445-
newbuf.dependent_update_oop(newbuf...), oldbuf.dependent, Val(false)))
446+
newbuf.dependent_update_oop(newbuf...), oldbuf.dependent, Val(0)))
446447
end
447448
return newbuf
448449
end

test/mtkparameters.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,9 @@ ps = MTKParameters(sys,
294294
yd2 => 2.0 + Sample(ssc)(x), Sample(t, dt)(x) => x,
295295
Sample(ssc)(x) => x, Hold(yd1) => yd1, Hold(yd2) => yd2],
296296
[x => 3.0])
297-
@test SciMLBase.get_saveable_values(ps, 1).x isa Tuple{Vector{Float64}, Vector{Bool}}
298297
tsidx1 = timeseries_parameter_index(sys, flag).timeseries_idx
299298
tsidx2 = 3 - tsidx1
299+
@test SciMLBase.get_saveable_values(ps, tsidx1).x isa Tuple{Vector{Float64}, BitVector}
300300
@test length(ps.discrete[tsidx1][1]) == 3
301301
@test length(ps.discrete[tsidx1][2]) == 1
302302
@test length(ps.discrete[tsidx2][1]) == 3

test/symbolic_indexing_interface.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ using SciMLStructures: Tunable
1919
@test parameter_index(odesys, a) isa ParameterIndex{Tunable, Tuple{Int, Int}}
2020
@test parameter_index(odesys, b) == parameter_index(odesys, :b)
2121
@test parameter_index(odesys, b) isa ParameterIndex{Tunable, Tuple{Int, Int}}
22-
@test parameter_index.((odesys,), [x, y, t, ParameterIndex(Tunable(), (1, 1)), :x, :y,]) ==
22+
@test parameter_index.(
23+
(odesys,), [x, y, t, ParameterIndex(Tunable(), (1, 1)), :x, :y]) ==
2324
[nothing, nothing, nothing, ParameterIndex(Tunable(), (1, 1)), nothing, nothing]
2425
@test isequal(parameter_symbols(odesys), [a, b])
2526
@test all(is_independent_variable.((odesys,), [t, :t]))

0 commit comments

Comments
 (0)