SciML / DataInterpolations.jl

A library of data interpolation and smoothing functions
MIT License
203 stars 43 forks source link

refactor!: remove indexing dispatches and add dispatch for higher order derivatives with Symbolics #247

Closed sathvikbhagavan closed 2 months ago

sathvikbhagavan commented 2 months ago

If AbstractVector subtyping is not removed, We get errors like:

julia> df2 = expand_derivatives(D2(f(τ)))
ERROR: Differentiation with array expressions is not yet supported
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] occursin_info
    @ ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:67 [inlined]
  [3] (::Symbolics.var"#254#256"{SymbolicUtils.BasicSymbolic{Real}, SymbolicUtils.BasicSymbolic{Real}})(a::LinearInterpolation{Vector{Float64}, Vector{Float64}, true, Float64})
    @ Symbolics ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:100
  [4] iterate
    @ ./generator.jl:47 [inlined]
  [5] _collect(c::Vector{Any}, itr::Base.Generator{Vector{…}, Symbolics.var"#254#256"{…}}, ::Base.EltypeUnknown, isz::Base.HasShape{1})
    @ Base ./array.jl:854
  [6] collect_similar
    @ ./array.jl:763 [inlined]
  [7] map
    @ ./abstractarray.jl:3285 [inlined]
  [8] occursin_info(x::SymbolicUtils.BasicSymbolic{Real}, expr::SymbolicUtils.BasicSymbolic{Real}, fail::Bool)
    @ Symbolics ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:100
  [9] occursin_info(x::SymbolicUtils.BasicSymbolic{Real}, expr::SymbolicUtils.BasicSymbolic{Real})
    @ Symbolics ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:65
 [10] expand_derivatives(O::SymbolicUtils.BasicSymbolic{Real}, simplify::Bool; occurrences::Nothing)
    @ Symbolics ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:177
 [11] expand_derivatives
    @ ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:171 [inlined]
 [12] expand_derivatives(O::SymbolicUtils.BasicSymbolic{Real})
    @ Symbolics ~/.julia/packages/Symbolics/Eas9m/src/diff.jl:171
 [13] top-level scope
    @ REPL[12]:1
Some type information was truncated. Use `show(err)` to see complete types.

EDIT: This is indeed breaking.

Also fixes: #240

ChrisRackauckas commented 2 months ago

It is breaking but nothing is relying on it. Let's do it. Remove the indexing overloads as well, and the type parameter associated with it. I.e. Fix https://github.com/SciML/DataInterpolations.jl/issues/240