Skip to content

Commit 26c5873

Browse files
refactor: use new getp and setp for parameter indexing
1 parent cbf61c6 commit 26c5873

File tree

3 files changed

+11
-16
lines changed

3 files changed

+11
-16
lines changed

src/vector_of_array.jl

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,6 @@ function DiffEqArray(vec::AbstractVector{VT},
198198
sys)
199199
end
200200

201-
function Base.getproperty(A::AbstractDiffEqArray, sym::Symbol)
202-
if sym == SymbolicIndexingInterface.PARAMETER_INDEXING_PROXY_PROPERTY_NAME
203-
return ParameterIndexingProxy(A)
204-
else
205-
return getfield(A, sym)
206-
end
207-
end
208-
209201
SymbolicIndexingInterface.parameter_values(A::AbstractDiffEqArray) = A.p
210202
SymbolicIndexingInterface.symbolic_container(A::AbstractDiffEqArray) = A.sys
211203

@@ -292,8 +284,8 @@ Base.@propagate_inbounds function Base.getindex(A::AbstractDiffEqArray, ::Scalar
292284
return getindex.(A.u, variable_index.((A,), (sym,), eachindex(A.t)))
293285
end
294286
elseif is_parameter(A, sym)
295-
Base.depwarn("Indexing with parameters is deprecated. Use `$(nameof(typeof(A))).$(SymbolicIndexingInterface.PARAMETER_INDEXING_PROXY_PROPERTY_NAME)[$sym]` for parameter indexing.", :parameter_getindex)
296-
A.ps[sym]
287+
Base.depwarn("Indexing with parameters is deprecated. Use `getp(A, $sym)` for parameter indexing.", :parameter_getindex)
288+
return getp(A, sym)(A)
297289
elseif is_observed(A, sym)
298290
return observed(A, sym).(A.u, (parameter_values(A),), A.t)
299291
else
@@ -333,7 +325,8 @@ end
333325

334326
Base.@propagate_inbounds function Base.getindex(A::AbstractDiffEqArray, ::ScalarSymbolic, sym::Union{Tuple,AbstractArray})
335327
if all(x -> is_parameter(A, x), sym)
336-
return getindex.((A,), sym)
328+
Base.depwarn("Indexing with parameters is deprecated. Use `getp(A, $sym)` for parameter indexing.", :parameter_getindex)
329+
return getp(A, sym)(A)
337330
else
338331
return [getindex.((A,), sym, i) for i in eachindex(A.t)]
339332
end

test/downstream/symbol_indexing.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using RecursiveArrayTools, ModelingToolkit, OrdinaryDiffEq, Test
1+
using RecursiveArrayTools, ModelingToolkit, OrdinaryDiffEq, SymbolicIndexingInterface, Test
22

33
include("../testutils.jl")
44

@@ -21,7 +21,7 @@ sol_new = DiffEqArray(sol.u[1:10],
2121
@test sol_new[RHS] (1 .- sol_new[x]) ./ 3.0
2222
@test sol_new[t] sol_new.t
2323
@test sol_new[t, 1:5] sol_new.t[1:5]
24-
@test sol.ps[τ] == sol_new.ps[τ] == 3.0
24+
@test getp(sol, τ)(sol) == getp(sol_new, τ)(sol_new) == 3.0
2525
@test_deprecated sol[τ]
2626
@test_deprecated sol_new[τ]
2727

test/symbolic_indexing_interface_test.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ dx = DiffEqArray([[f(x), f2(x)] for x in t],
2121
@test dx[(:a, :b)] == [(f(x), f2(x)) for x in t]
2222
@test dx[[:a, :b], 3] [f(t[3]), f2(t[3])]
2323
@test dx[[:a, :b], 4:5] vcat(f.(t[4:5])', f2.(t[4:5])')
24-
@test dx.ps[[:p, :q]] == [1.0, 2.0]
25-
@test dx.ps[:p] == 1.0
26-
@test dx.ps[:q] == 2.0
24+
@test getp(dx, [:p, :q])(dx) == [1.0, 2.0]
25+
@test getp(dx, :p)(dx) == 1.0
26+
@test getp(dx, :q)(dx) == 2.0
27+
@test_deprecated dx[:p]
28+
@test_deprecated dx[[:p, :q]]
2729
@test dx[:t] == t
2830

2931
@test symbolic_container(dx) isa SymbolCache

0 commit comments

Comments
 (0)