MethodError: no method matching setindex(::StaticArrays.SVector{3, Float64}, ::Float64, ::UInt16)
The function `setindex` exists, but no method is defined for this combination of argument types.
Closest candidates are:
setindex(::StaticArrays.StaticArray, ::Any, ::Int64)
@ StaticArrays ~/.julia/packages/StaticArrays/WNOVH/src/deque.jl:185
setindex(::StaticArrays.StaticArray, ::Any, ::Int64...)
@ StaticArrays ~/.julia/packages/StaticArrays/WNOVH/src/deque.jl:198
setindex(::CartesianIndex, ::Any, ::Any)
@ Base multidimensional.jl:106
...
Stacktrace:
[1] inrange_kernel!(tree::NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, index::Int64, point::SubArray{Float64, 1, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false}, r::Int64, idx_in_ball::Vector{Int64}, hyper_rec::NearestNeighbors.HyperRectangle{StaticArrays.SVector{3, Float64}}, min_dist::Float64, max_dist_contribs::StaticArrays.SVector{3, Float64}, max_dist::Float64)
@ NearestNeighbors ~/.julia/packages/NearestNeighbors/3NRL1/src/kd_tree.jl:254
[2] _inrange(tree::NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, point::SubArray{Float64, 1, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false}, radius::Int64, idx_in_ball::Vector{Int64})
@ NearestNeighbors ~/.julia/packages/NearestNeighbors/3NRL1/src/kd_tree.jl:207
[3] inrange_point!(tree::NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, point::SubArray{Float64, 1, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false}, radius::Int64, sortres::Bool, idx::Vector{Int64})
@ NearestNeighbors ~/.julia/packages/NearestNeighbors/3NRL1/src/inrange.jl:34
[4] inrange!(idxs::Vector{Int64}, tree::NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, point::SubArray{Float64, 1, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false}, radius::Int64, sortres::Bool)
@ NearestNeighbors ~/.julia/packages/NearestNeighbors/3NRL1/src/inrange.jl:64
[5] inrange (repeats 2 times)
@ ~/.julia/packages/NearestNeighbors/3NRL1/src/inrange.jl:69 [inlined]
[6] _dbscan_region_query!(neighbors::Vector{Int64}, nntree_and_points::Tuple{NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}}, point::Int64, radius::Int64)
@ Clustering ~/.julia/packages/Clustering/M6mjF/src/dbscan.jl:185
[7] _dbscan(data::Tuple{NearestNeighbors.KDTree{StaticArrays.SVector{3, Float64}, Distances.Euclidean, Float64, StaticArrays.SVector{3, Float64}}, LinearAlgebra.Adjoint{Float64, Matrix{Float64}}}, num_points::Int64, radius::Int64, min_neighbors::Int64, min_cluster_size::Int64)
@ Clustering ~/.julia/packages/Clustering/M6mjF/src/dbscan.jl:141
[8] dbscan(points::LinearAlgebra.Adjoint{Float64, Matrix{Float64}}, radius::Int64; metric::Distances.Euclidean, min_neighbors::Int64, min_cluster_size::Int64, nntree_kwargs::@Kwargs{leafsize::Int64})
@ Clustering ~/.julia/packages/Clustering/M6mjF/src/dbscan.jl:113
[9] top-level scope
@ REPL[3]:1
I spotted this using
Clustering, but the underlying isNearestNeighborsusingsetindexon aStaticArraywith index of typeUInt16.MWE:
This behavior seems to have been introduced in #166, when going from
split_dim::Inttosplit_dim::Int16inNearestNeighbors ≥ 0.4.14NearestNeighborsallows forStaticArraysversions down to0.9.0, even though it should only allow forStaticArrays ≥ 0.14.6since/NearestNeighbors@0.4.14.