rafaqz / DimensionalData.jl

Named dimensions and indexing for julia arrays and other data
https://rafaqz.github.io/DimensionalData.jl/stable/
MIT License
271 stars 38 forks source link

Error showing DimArray with only anonymous dimension #511

Closed sethaxen closed 7 months ago

sethaxen commented 1 year ago
julia> using DimensionalData

julia> das = [DimArray(randn(2, 3), (X, Y)) for _ in 1:3];

julia> da = cat(das...; dims=3)
2×3×3 DimArray{Float64,3} with dimensions: X, Y, AnonDim
[:, :, 1]
 0.896455  -0.515374  -0.540068
 0.478765  -0.166111   1.24415
[and 2 more slices...]

julia> r = map(sum, eachslice(da; dims=3));

julia> Array(r)
3-element Vector{Float64}:
  1.3978175220235793
 -2.180296366520602
 -0.20435644692185745

julia> dims(r)
AnonDim

julia> r
3-element DimArray{Float64,1} with dimensions: AnonDim
Error showing value of type DimArray{Float64, 1, Tuple{DimensionalData.Dimensions.AnonDim{DimensionalData.Dimensions.LookupArrays.NoLookup{Base.OneTo{Int64}}}}, Tuple{}, Vector{Float64}, DimensionalData.NoName, DimensionalData.Dimensions.LookupArrays.NoMetadata}:
ERROR: BoundsError: attempt to access 0-element DimensionalData.Dimensions.LookupArrays.AutoIndex at index [1:3]
Stacktrace:
  [1] throw_boundserror(A::DimensionalData.Dimensions.LookupArrays.AutoIndex, I::Tuple{UnitRange{Int64}})
    @ Base ./abstractarray.jl:744
  [2] checkbounds
    @ ./abstractarray.jl:709 [inlined]
  [3] _getindex
    @ ./multidimensional.jl:860 [inlined]
  [4] getindex
    @ ./abstractarray.jl:1294 [inlined]
  [5] _print_matrix(io::IOContext{Base.TTY}, A::Vector{Float64}, lookups::Tuple{DimensionalData.Dimensions.LookupArrays.NoLookup{DimensionalData.Dimensions.LookupArrays.AutoIndex}})
    @ DimensionalData ~/.julia/packages/DimensionalData/jKcnN/src/array/show.jl:85
  [6] print_matrix
    @ ~/.julia/packages/DimensionalData/jKcnN/src/array/show.jl:76 [inlined]
  [7] print_array
    @ ~/.julia/packages/DimensionalData/jKcnN/src/array/show.jl:43 [inlined]
  [8] show_after
    @ ~/.julia/packages/DimensionalData/jKcnN/src/array/show.jl:35 [inlined]
  [9] show(io::IOContext{Base.TTY}, mime::MIME{Symbol("text/plain")}, A::DimArray{Float64, 1, Tuple{DimensionalData.Dimensions.AnonDim{DimensionalData.Dimensions.LookupArrays.NoLookup{Base.OneTo{Int64}}}}, Tuple{}, Vector{Float64}, DimensionalData.NoName, DimensionalData.Dimensions.LookupArrays.NoMetadata})
    @ DimensionalData ~/.julia/packages/DimensionalData/jKcnN/src/array/show.jl:27
 [10] (::OhMyREPL.var"#15#16"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::IOContext{Base.TTY})
    @ OhMyREPL ~/.julia/packages/OhMyREPL/h1QCu/src/output_prompt_overwrite.jl:23
 [11] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:557
 [12] display
    @ ~/.julia/packages/OhMyREPL/h1QCu/src/output_prompt_overwrite.jl:6 [inlined]
 [13] display
    @ ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:281 [inlined]
 [14] display(x::Any)
    @ Base.Multimedia ./multimedia.jl:340
 [15] #invokelatest#2
    @ ./essentials.jl:816 [inlined]
 [16] invokelatest
    @ ./essentials.jl:813 [inlined]
 [17] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:305
 [18] (::REPL.var"#57#58"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:287
 [19] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:557
 [20] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:285
 [21] (::REPL.var"#do_respond#80"{Bool, Bool, REPL.var"#93#103"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:899
 [22] #invokelatest#2
    @ ./essentials.jl:816 [inlined]
 [23] invokelatest
    @ ./essentials.jl:813 [inlined]
 [24] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/LineEdit.jl:2647
 [25] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL ~/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/share/julia/stdlib/v1.9/REPL/src/REPL.jl:1300
 [26] (::REPL.var"#62#68"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL ./task.jl:514