Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No longer works with DynamicQuantities.jl (need for integration with ModelingToolkit) #331

Closed
ctessum opened this issue Aug 31, 2024 · 3 comments

Comments

@ctessum
Copy link

ctessum commented Aug 31, 2024

Describe the example

Interpolators used to work with DynamicQuantities.jl, but they no longer do.

Minimal Reproducible Example 👇

Setup:

using DynamicQuantities, DataInterpolations

itp = DataInterpolations.LinearInterpolation(2.0:2:20, 1:10)

itp(1.0) # 2.0

Using a number with units, we get a normal error:

itp(1.0u"m") # ERROR: DimensionError: 1.0 m and 1 have incompatible dimensions

This is fine, because the units actually don't match. However, with a dimensionless number, it should work, but it doesn't:

itp(1.0u"rad") # ERROR: MethodError: no method matching searchsortedlastcorrelated(::UnitRange{Int64}, ::Quantity{Float64, Dimensions{…}}, ::Quantity{Int64, Dimensions{…}})

Error & Stacktrace ⚠️

ERROR: MethodError: no method matching searchsortedlastcorrelated(::UnitRange{Int64}, ::Quantity{Float64, Dimensions{…}}, ::Quantity{Int64, Dimensions{…}})

Closest candidates are:
  searchsortedlastcorrelated(::T, ::Any, ::FindFirstFunctions.Guesser{T}) where T<:(AbstractVector)
   @ FindFirstFunctions ~/.julia/packages/FindFirstFunctions/2w5qZ/src/FindFirstFunctions.jl:284
  searchsortedlastcorrelated(::AbstractRange, ::Any, ::Integer)
   @ FindFirstFunctions ~/.julia/packages/FindFirstFunctions/2w5qZ/src/FindFirstFunctions.jl:271
  searchsortedlastcorrelated(::AbstractVector, ::Any, ::T) where T<:Integer
   @ FindFirstFunctions ~/.julia/packages/FindFirstFunctions/2w5qZ/src/FindFirstFunctions.jl:265

Stacktrace:
 [1] searchsortedlastcorrelated(v::UnitRange{…}, x::Quantity{…}, guess::FindFirstFunctions.Guesser{…})
   @ FindFirstFunctions ~/.julia/packages/FindFirstFunctions/2w5qZ/src/FindFirstFunctions.jl:286
 [2] #get_idx#47
   @ ~/.julia/packages/DataInterpolations/sbGwq/src/interpolation_utils.jl:125 [inlined]
 [3] get_idx
   @ ~/.julia/packages/DataInterpolations/sbGwq/src/interpolation_utils.jl:120 [inlined]
 [4] _interpolate(A::LinearInterpolation{…}, t::Quantity{…}, iguess::FindFirstFunctions.Guesser{…})
   @ DataInterpolations ~/.julia/packages/DataInterpolations/sbGwq/src/interpolation_methods.jl:16
 [5] _interpolate
   @ ~/.julia/packages/DataInterpolations/sbGwq/src/interpolation_methods.jl:4 [inlined]
 [6] (::LinearInterpolation{…})(t::Quantity{…})
   @ DataInterpolations ~/.julia/packages/DataInterpolations/sbGwq/src/DataInterpolations.jl:24
 [7] top-level scope
   ..../test.jl:7

Not Working Environment (please complete the following information):

  • Output of using Pkg; Pkg.status()
  [82cc6244] DataInterpolations v6.4.0
  [06fc5a27] DynamicQuantities v1.0.0
  • Output of using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.16.0
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
  [82cc6244] DataInterpolations v6.4.0
  [e2d170a0] DataValueInterfaces v1.0.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [8d63f2c5] DispatchDoctor v0.4.14
  [ffbed154] DocStringExtensions v0.9.3
  [06fc5a27] DynamicQuantities v1.0.0
  [64ca27bc] FindFirstFunctions v1.3.0
  [f6369f11] ForwardDiff v0.10.36
  [92d709cd] IrrationalConstants v0.2.2
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.6.0
  [b964fa9f] LaTeXStrings v1.3.1
  [2ab3a3ac] LogExpFunctions v0.3.28
  [1914dd2f] MacroTools v0.5.13
  [77ba4419] NaNMath v1.0.2
  [bac558e1] OrderedCollections v1.6.3
  [65ce6f38] PackageExtensionCompat v1.0.2
  [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.4.3
  [08abe8d2] PrettyTables v2.3.2
  [3cdcf5f2] RecipesBase v1.3.4
  [189a3867] Reexport v1.2.2
  [276daf66] SpecialFunctions v2.4.0
  [1e83bf80] StaticArraysCore v1.4.3
  [892a3eda] StringManipulation v0.3.4
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.0
  [1c621080] TestItems v1.0.0
  [410a4b4d] Tricks v0.1.9
  [efe28fd5] OpenSpecFun_jll v0.5.5+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [b77e0a4c] InteractiveUtils
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.10.0
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [6462fe0b] Sockets
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.4.0+0
  [e37daf67] LibGit2_jll v1.6.4+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.2+1
  [14a3606d] MozillaCACerts_jll v2023.1.10
  [4536629a] OpenBLAS_jll v0.3.23+4
  [05823500] OpenLibm_jll v0.8.1+2
  [83775a58] Zlib_jll v1.2.13+1
  [8e850b90] libblastrampoline_jll v5.8.0+1
  [8e850ede] nghttp2_jll v1.52.0+1
  [3f19e933] p7zip_jll v17.4.0+2
  • Output of versioninfo()
Julia Version 1.10.4
Commit 48d4fd48430 (2024-06-04 10:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 8 × Apple M1
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 12 default, 0 interactive, 4 GC (on 4 virtual cores)
Environment:
  JULIA_EDITOR = code
  JULIA_NUM_THREADS = 12

Working Environment (please complete the following information):

  • Output of using Pkg; Pkg.status()
⌃ [82cc6244] DataInterpolations v5.3.1
  [06fc5a27] DynamicQuantities v1.0.0
  • Output of using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.16.0
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
⌃ [82cc6244] DataInterpolations v5.3.1
  [e2d170a0] DataValueInterfaces v1.0.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [8d63f2c5] DispatchDoctor v0.4.14
  [ffbed154] DocStringExtensions v0.9.3
  [06fc5a27] DynamicQuantities v1.0.0
  [64ca27bc] FindFirstFunctions v1.3.0
  [f6369f11] ForwardDiff v0.10.36
  [92d709cd] IrrationalConstants v0.2.2
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.6.0
  [b964fa9f] LaTeXStrings v1.3.1
  [2ab3a3ac] LogExpFunctions v0.3.28
  [1914dd2f] MacroTools v0.5.13
  [77ba4419] NaNMath v1.0.2
  [bac558e1] OrderedCollections v1.6.3
  [65ce6f38] PackageExtensionCompat v1.0.2
  [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.4.3
  [08abe8d2] PrettyTables v2.3.2
  [988b38a3] ReadOnlyArrays v0.2.0
  [3cdcf5f2] RecipesBase v1.3.4
  [189a3867] Reexport v1.2.2
  [276daf66] SpecialFunctions v2.4.0
  [1e83bf80] StaticArraysCore v1.4.3
  [892a3eda] StringManipulation v0.3.4
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.0
  [1c621080] TestItems v1.0.0
  [410a4b4d] Tricks v0.1.9
  [efe28fd5] OpenSpecFun_jll v0.5.5+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [b77e0a4c] InteractiveUtils
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.10.0
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [6462fe0b] Sockets
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.4.0+0
  [e37daf67] LibGit2_jll v1.6.4+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.2+1
  [14a3606d] MozillaCACerts_jll v2023.1.10
  [4536629a] OpenBLAS_jll v0.3.23+4
  [05823500] OpenLibm_jll v0.8.1+2
  [83775a58] Zlib_jll v1.2.13+1
  [8e850b90] libblastrampoline_jll v5.8.0+1
  [8e850ede] nghttp2_jll v1.52.0+1
  [3f19e933] p7zip_jll v17.4.0+2
  • Output of versioninfo()
Julia Version 1.10.4
Commit 48d4fd48430 (2024-06-04 10:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 8 × Apple M1
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 12 default, 0 interactive, 4 GC (on 4 virtual cores)
Environment:
  JULIA_EDITOR = code
  JULIA_NUM_THREADS = 12

Additional context

This is important because ModelingToolkit.jl calls every registered function with a DynamicQuantities.jl quantity to determine the units of the returned value, so DataInterpolations.jl can't be used with ModelingToolkit.jl until this is fixed, even for MTK systems that are not using units.

@sathvikbhagavan
Copy link
Member

Thanks for the report! Will look into this.

@sathvikbhagavan
Copy link
Member

Hello, I am trying to reproduce this but I am unable to do it. It is working fine for me:

julia> using DynamicQuantities, DataInterpolations

julia> itp = DataInterpolations.LinearInterpolation(2.0:2:20, 1:10)
LinearInterpolation with 10 points
┌──────┬──────┐
│ time │    u │
├──────┼──────┤
│  1.02.0 │
│  2.04.0 │
│  3.06.0 │
│  4.08.0 │
│  5.010.0 │
│  6.012.0 │
│  7.014.0 │
│  8.016.0 │
│  9.018.0 │
│ 10.020.0 │
└──────┴──────┘


julia> itp(1.0) # 2.0
2.0

julia> itp(1.0u"m")
ERROR: DimensionError: 1.0 m and 1 have incompatible dimensions
Stacktrace:
 [1] <
   @ ~/.julia/packages/DynamicQuantities/xx9ij/src/utils.jl:194 [inlined]
 [2] _interpolate
   @ ~/.julia/packages/DataInterpolations/sbGwq/src/interpolation_methods.jl:2 [inlined]
 [3] (::LinearInterpolation{StepRangeLen{…}, UnitRange{…}, Vector{…}, Vector{…}, Float64})(t::Quantity{Float64, Dimensions{…}})
   @ DataInterpolations ~/.julia/packages/DataInterpolations/sbGwq/src/DataInterpolations.jl:24
 [4] top-level scope
   @ REPL[7]:1
Some type information was truncated. Use `show(err)` to see complete types.

julia> itp(1.0u"rad")
2.0

My environment:

(jl_uQnjFt) pkg> st
Status `/private/var/folders/4d/0gnbkbdj2hl6xyfx573_zwl80000gn/T/jl_uQnjFt/Project.toml`
  [82cc6244] DataInterpolations v6.4.0
  [06fc5a27] DynamicQuantities v1.0.0

(jl_uQnjFt) pkg> st -m
Status `/private/var/folders/4d/0gnbkbdj2hl6xyfx573_zwl80000gn/T/jl_uQnjFt/Manifest.toml`
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.16.0
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
  [82cc6244] DataInterpolations v6.4.0
  [e2d170a0] DataValueInterfaces v1.0.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [8d63f2c5] DispatchDoctor v0.4.14
  [ffbed154] DocStringExtensions v0.9.3
  [06fc5a27] DynamicQuantities v1.0.0
  [64ca27bc] FindFirstFunctions v1.4.1
  [f6369f11] ForwardDiff v0.10.36
  [92d709cd] IrrationalConstants v0.2.2
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.6.0
  [b964fa9f] LaTeXStrings v1.3.1
  [2ab3a3ac] LogExpFunctions v0.3.28
  [1914dd2f] MacroTools v0.5.13
  [77ba4419] NaNMath v1.0.2
  [bac558e1] OrderedCollections v1.6.3
  [65ce6f38] PackageExtensionCompat v1.0.2
  [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.4.3
  [08abe8d2] PrettyTables v2.3.2
  [3cdcf5f2] RecipesBase v1.3.4
  [189a3867] Reexport v1.2.2
  [276daf66] SpecialFunctions v2.4.0
  [1e83bf80] StaticArraysCore v1.4.3
  [892a3eda] StringManipulation v0.3.4
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.0
  [1c621080] TestItems v1.0.0
  [410a4b4d] Tricks v0.1.9
  [efe28fd5] OpenSpecFun_jll v0.5.5+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [b77e0a4c] InteractiveUtils
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.10.0
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [6462fe0b] Sockets
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.4.0+0
  [e37daf67] LibGit2_jll v1.6.4+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.2+1
  [14a3606d] MozillaCACerts_jll v2023.1.10
  [4536629a] OpenBLAS_jll v0.3.23+4
  [05823500] OpenLibm_jll v0.8.1+2
  [83775a58] Zlib_jll v1.2.13+1
  [8e850b90] libblastrampoline_jll v5.11.0+0
  [8e850ede] nghttp2_jll v1.52.0+1
  [3f19e933] p7zip_jll v17.4.0+2

julia> versioninfo()
Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 8 × Apple M2
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Can you check it again?

@ctessum
Copy link
Author

ctessum commented Sep 16, 2024

Thanks! I just tried it again and I can confirm that it is now working for me both in the example above and in the original code where I observed the problem. I guess I could have just waited for it to fix itself! :)

@ctessum ctessum closed this as completed Sep 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants