diff --git a/Project.toml b/Project.toml index 3aed7ad4..d224b361 100644 --- a/Project.toml +++ b/Project.toml @@ -57,7 +57,7 @@ StaticArrays = "1.6" StaticArraysCore = "1.1" Statistics = "1" StructArrays = "0.6" -SymbolicIndexingInterface = "0.3.1" +SymbolicIndexingInterface = "0.3.2" Tables = "1" Test = "1" Tracker = "0.2" diff --git a/src/vector_of_array.jl b/src/vector_of_array.jl index 12e23083..9dcfc409 100644 --- a/src/vector_of_array.jl +++ b/src/vector_of_array.jl @@ -198,6 +198,9 @@ function DiffEqArray(vec::AbstractVector{VT}, sys) end +SymbolicIndexingInterface.is_timeseries(::Type{<:AbstractVectorOfArray}) = Timeseries() +SymbolicIndexingInterface.state_values(A::AbstractDiffEqArray) = A.u +SymbolicIndexingInterface.current_time(A::AbstractDiffEqArray) = A.t SymbolicIndexingInterface.parameter_values(A::AbstractDiffEqArray) = A.p SymbolicIndexingInterface.symbolic_container(A::AbstractDiffEqArray) = A.sys diff --git a/test/symbolic_indexing_interface_test.jl b/test/symbolic_indexing_interface_test.jl index 17d7155b..a2a1ae30 100644 --- a/test/symbolic_indexing_interface_test.jl +++ b/test/symbolic_indexing_interface_test.jl @@ -29,6 +29,12 @@ dx = DiffEqArray([[f(x), f2(x)] for x in t], @test_throws Exception dx[:p] @test_throws Exception dx[[:p, :q]] @test dx[:t] == t +geta = getu(dx, :a) +get_arr = getu(dx, [:a, :b]) +get_tuple = getu(dx, (:a, :b)) +@test geta(dx) == dx[1, :] +@test get_arr(dx) == vcat.(dx[1, :], dx[2, :]) +@test get_tuple(dx) == tuple.(dx[1, :], dx[2, :]) @test symbolic_container(dx) isa SymbolCache @test parameter_values(dx) == [1.0, 2.0]