@tim.holy We are now frequently using the QuadDirect algorithm in our lab. However, I got a strange issue on one computer, after I ran the update-command for the packages. As far as I can remember, RegisterQD was not among the updated packages. Neither did I update my julia installation (still version 1.0.5).
Minimal (non-)working sample
julia> using RegisterQD
julia> pseudofixed=rand(10,10)
julia> tfm, mm = qd_rigid(pseudofixed, pseudofixed, (5,5), 0.1, print_interval=typemax(Int))
On a machine that was not updated, the last command generates the expected result
(AffineMap([1.0 -0.0; 0.0 1.0], [0.0, 0.0]), 0.0)
However, the updated machine first throws a deprecation warning and then an error
julia> tfm, mm = qd_rigid(pseudofixed, pseudofixed, (5,5), 0.1, print_interval=typemax(Int))
┌ Warning: `CenterIndexedArray(::Type{T}, dims) where T` is deprecated, use `CenterIndexedArray{T}(undef, dims...)` instead.
│ caller = Type at RegisterCore.jl:360 [inlined]
└ @ Core ~/.julia/packages/RegisterCore/0P3yV/src/RegisterCore.jl:360
ERROR: UndefVarError: shiftrange not defined
Stacktrace:
[1] #mismatch#5(::Symbol, ::Function, ::Type{Float64}, ::SubArray{Float64,2,Array{Float64,2},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::SubArray{Float64,2,OffsetArrays.OffsetArray{Float64,2,Array{Float64,2}},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::Tuple{Int64,Int64}) at /home/moses/.julia/packages/RegisterMismatch/kKJng/src/RegisterMismatch.jl:120
[2] #mismatch at ./subarray.jl:0 [inlined]
[3] #mismatch#1 at /home/moses/.julia/packages/RegisterMismatchCommon/Q3oNz/src/RegisterMismatchCommon.jl:15 [inlined]
[4] #mismatch at ./none:0 [inlined]
[5] #best_shift#1(::Symbol, ::CoordinateTransformations.IdentityTransformation, ::Function, ::SubArray{Float64,2,Array{Float64,2},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::SubArray{Float64,2,OffsetArrays.OffsetArray{Float64,2,Array{Float64,2}},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::Tuple{Int64,Int64}, ::Float64) at /home/moses/.julia/packages/RegisterQD/ZBH17/src/util.jl:29
[6] #best_shift at ./none:0 [inlined]
[7] #rigid_mm_fast#14(::CoordinateTransformations.IdentityTransformation, ::Function, ::Array{Float64,1}, ::Tuple{Int64,Int64}, ::Array{Float64,2}, ::Array{Float64,2}, ::Float64, ::LinearAlgebra.UniformScaling{Bool}) at /home/moses/.julia/packages/RegisterQD/ZBH17/src/rigid.jl:74
[8] #rigid_mm_fast at ./none:0 [inlined]
[9] f at /home/moses/.julia/packages/RegisterQD/ZBH17/src/rigid.jl:92 [inlined]
[10] split!(::QuadDIRECT.Box{Float64,1}, ::getfield(RegisterQD, Symbol("#f#17")){LinearAlgebra.UniformScaling{Bool},CoordinateTransformations.IdentityTransformation,Float64,Array{Float64,2},Array{Float64,2},Tuple{Int64,Int64}}, ::Array{Float64,1}, ::Int64, ::Array{Float64,1}, ::Float64, ::Float64, ::Float64, ::Float64) at /home/moses/.julia/packages/QuadDIRECT/uCBvD/src/algorithm.jl:48
[11] _init(::Function, ::Array{Float64,1}, ::Tuple{Array{Float64,1}}, ::Array{Float64,1}, ::Array{Float64,1}) at /home/moses/.julia/packages/QuadDIRECT/uCBvD/src/algorithm.jl:31
[12] init at /home/moses/.julia/packages/QuadDIRECT/uCBvD/src/algorithm.jl:20 [inlined]
[13] #analyze#29(::Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:minwidth, :print_interval, :maxevals, :atol, :rtol),Tuple{Array{Float64,1},Int64,Float64,Int64,Float64}}}, ::Function, ::Function, ::Tuple{Array{Float64,1}}, ::Array{Float64,1}, ::Array{Float64,1}) at /home/moses/.julia/packages/QuadDIRECT/uCBvD/src/algorithm.jl:515
[14] (::getfield(QuadDIRECT, Symbol("#kw##analyze")))(::NamedTuple{(:minwidth, :print_interval, :maxevals, :atol, :rtol),Tuple{Array{Float64,1},Int64,Float64,Int64,Float64}}, ::typeof(QuadDIRECT.analyze), ::Function, ::Tuple{Array{Float64,1}}, ::Array{Float64,1}, ::Array{Float64,1}) at ./none:0
[15] #_analyze#7(::Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:minwidth, :print_interval, :maxevals, :atol, :rtol),Tuple{Array{Float64,1},Int64,Float64,Int64,Float64}}}, ::Function, ::Function, ::Array{Float64,1}, ::Array{Float64,1}) at /home/moses/.julia/packages/RegisterQD/ZBH17/src/util.jl:207
[16] (::getfield(RegisterQD, Symbol("#kw##_analyze")))(::NamedTuple{(:minwidth, :print_interval, :maxevals, :atol, :rtol),Tuple{Array{Float64,1},Int64,Float64,Int64,Float64}}, ::typeof(RegisterQD._analyze), ::Function, ::Array{Float64,1}, ::Array{Float64,1}) at ./none:0
[17] #qd_rigid_coarse#16(::LinearAlgebra.UniformScaling{Bool}, ::CoordinateTransformations.IdentityTransformation, ::Float64, ::Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:print_interval,),Tuple{Int64}}}, ::Function, ::Array{Float64,2}, ::Array{Float64,2}, ::Tuple{Int64,Int64}, ::Array{Float64,1}, ::Array{Float64,1}) at /home/moses/.julia/packages/RegisterQD/ZBH17/src/rigid.jl:95
[18] #qd_rigid_coarse at ./none:0 [inlined]
[19] #qd_rigid#20(::LinearAlgebra.UniformScaling{Bool}, ::Array{Float64,1}, ::Float64, ::CoordinateTransformations.IdentityTransformation, ::Int64, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Array{Float64,2}, ::Array{Float64,2}, ::Tuple{Int64,Int64}, ::Float64) at /home/moses/.julia/packages/RegisterQD/ZBH17/src/rigid.jl:189
[20] (::getfield(RegisterQD, Symbol("#kw##qd_rigid")))(::NamedTuple{(:print_interval,),Tuple{Int64}}, ::typeof(qd_rigid), ::Array{Float64,2}, ::Array{Float64,2}, ::Tuple{Int64,Int64}, ::Float64) at ./none:0
[21] top-level scope at none:0
As I did not update julia itself, I do not understand that I get a deprecation. As far as I can see, RegisterQD has not seen any updates recently, either.