YAXArrays.jl
YAXArrays.jl copied to clipboard
replace! of a YAXArray gives StackOverflow Error
When I try to do replace! on a YAXArray I get the errror below. I am not entirely sure, whether this should be working but at least it should not give an StackOverflowError. I have not yet further investigated, whether it is the specific setup of my dataset or whether this also happens on other YAXArrays.
julia> replace!(gfw2018, 0=> NaN)
ERROR: StackOverflowError:
Stacktrace:
[1] approx_chunksize(g::DiskArrays.GridChunks{2})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/chunks.jl:196
[2] _writeblock!(::DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, ::Matrix{Float64}, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/batchgetindex.jl:187
[3] writeblock!(::DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, ::Matrix{Float64}, ::UnitRange{Int64}, ::UnitRange{Int64})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/batchgetindex.jl:213
[4] _writeblock!(::DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, ::Matrix{Float64}, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/batchgetindex.jl:199
--- the last 2 lines are repeated 3703 more times ---
[7411] writeblock!(::DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, ::Matrix{Float64}, ::UnitRange{Int64}, ::UnitRange{Int64})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/batchgetindex.jl:213
[7412] writeblock!(::DiskArrays.SubDiskArray{Float32, 2}, ::Matrix{Float64}, ::UnitRange{Int64}, ::UnitRange{Int64})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/subarray.jl:25
[7413] setindex_disk!(::DiskArrays.SubDiskArray{Float32, 2}, ::Matrix{Float64}, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/diskarray.jl:57
[7414] setindex!
@ ~/.julia/packages/DiskArrays/4dn4s/src/diskarray.jl:219 [inlined]
[7415] (::DiskArrays.var"#91#98"{DiskArrays.SubDiskArray{Float32, 2}, Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#12#14"{Base.Broadcast.var"#18#20"{Base.Broadcast.var"#11#13", Base.Broadcast.var"#15#16"{Base.Broadcast.var"#17#19"}, Base.Broadcast.var"#25#26"{Base.Broadcast.var"#27#28"}, Base.Broadcast.var"#21#22"{Base.Broadcast.var"#23#24"}, var"#11#12"}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}}, Tuple{Matrix{UInt8}}}})(c::Tuple{UnitRange{Int64}, UnitRange{Int64}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/broadcast.jl:138
[7416] foreach(f::DiskArrays.var"#91#98"{DiskArrays.SubDiskArray{Float32, 2}, Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#12#14"{Base.Broadcast.var"#18#20"{Base.Broadcast.var"#11#13", Base.Broadcast.var"#15#16"{Base.Broadcast.var"#17#19"}, Base.Broadcast.var"#25#26"{Base.Broadcast.var"#27#28"}, Base.Broadcast.var"#21#22"{Base.Broadcast.var"#23#24"}, var"#11#12"}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}}, Tuple{Matrix{UInt8}}}}, itr::DiskArrays.GridChunks{2})
@ Base ./abstractarray.jl:3073
[7417] copyto!(dest::DiskArrays.SubDiskArray{Float32, 2}, bc::Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#12#14"{Base.Broadcast.var"#18#20"{Base.Broadcast.var"#11#13", Base.Broadcast.var"#15#16"{Base.Broadcast.var"#17#19"}, Base.Broadcast.var"#25#26"{Base.Broadcast.var"#27#28"}, Base.Broadcast.var"#21#22"{Base.Broadcast.var"#23#24"}, var"#11#12"}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}}, Tuple{Matrix{UInt8}}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/broadcast.jl:136
[7418] copyto!
@ ./broadcast.jl:926 [inlined]
[7419] materialize!
@ ./broadcast.jl:884 [inlined]
[7420] materialize!
@ ./broadcast.jl:881 [inlined]
[7421] (::DiskArrays.var"#59#61"{DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#12#14"{Base.Broadcast.var"#18#20"{Base.Broadcast.var"#11#13", Base.Broadcast.var"#15#16"{Base.Broadcast.var"#17#19"}, Base.Broadcast.var"#25#26"{Base.Broadcast.var"#27#28"}, Base.Broadcast.var"#21#22"{Base.Broadcast.var"#23#24"}, var"#11#12"}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}}, Tuple{YAXArrayBase.GDALBand{UInt8}}}})(cnow::Tuple{UnitRange{Int64}, UnitRange{Int64}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/broadcast.jl:42
[7422] foreach(f::DiskArrays.var"#59#61"{DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#12#14"{Base.Broadcast.var"#18#20"{Base.Broadcast.var"#11#13", Base.Broadcast.var"#15#16"{Base.Broadcast.var"#17#19"}, Base.Broadcast.var"#25#26"{Base.Broadcast.var"#27#28"}, Base.Broadcast.var"#21#22"{Base.Broadcast.var"#23#24"}, var"#11#12"}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}}, Tuple{YAXArrayBase.GDALBand{UInt8}}}}, itr::DiskArrays.GridChunks{2})
@ Base ./abstractarray.jl:3073
[7423] copyto!(dest::DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, bc::Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.var"#new#383"{Tuple{Pair{Int64, Float64}}}, Tuple{Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}})
@ DiskArrays ~/.julia/packages/DiskArrays/4dn4s/src/broadcast.jl:38
[7424] materialize!
@ ./broadcast.jl:884 [inlined]
[7425] materialize!
@ ./broadcast.jl:881 [inlined]
[7426] broadcast!
@ ./broadcast.jl:850 [inlined]
[7427] _replace!
@ ~/.julia/packages/DiskArrays/4dn4s/src/array.jl:73 [inlined]
[7428] _replace!
@ ~/.julia/packages/DiskArrays/4dn4s/src/array.jl:34 [inlined]
[7429] _replace!
@ ~/.julia/packages/DimensionalData/pS9IE/src/array/methods.jl:348 [inlined]
[7430] replace_pairs!
@ ./set.jl:616 [inlined]
[7431] replace!(A::YAXArray{Float32, 2, DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}, old_new::Pair{Int64, Float64}; count::Int64)
@ Base ./set.jl:606
[7432] replace!(A::YAXArray{Float32, 2, DiskArrays.BroadcastDiskArray{Float32, 2, Base.Broadcast.Broadcasted{DiskArrays.ChunkStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, var"#11#12", Tuple{YAXArrayBase.GDALBand{UInt8}}}}, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}, old_new::Pair{Int64, Float64})
@ Base ./set.jl:606