Skip to content

Commit 5dbad73

Browse files
add a docstring
1 parent 18e119c commit 5dbad73

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

src/stack/stack.jl

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,33 @@ end
601601
layerdims(s::DimStack{<:Any,<:Any,<:Any,<:Any,<:Any,<:Any,Nothing}, name::Symbol) = dims(s)
602602

603603
### Stack as Array
604+
"""
605+
DimStackArray <: AbstractDimArrayGenerator
606+
607+
A wrapper that makes a `DimStack` behave like an `AbstractArray`.
608+
609+
Provides array-like access to a `DimStack`, where each element is a `NamedTuple` containing
610+
values from all layers at that position.
611+
612+
# Examples
613+
```julia
614+
using DimensionalData
615+
616+
# Create a DimStack
617+
da1 = DimArray(ones(2,2), (X(1:2), Y(1:2)); name=:temp)
618+
da2 = DimArray(2ones(2,2), (X(1:2), Y(1:2)); name=:precip)
619+
stack = DimStack((da1, da2))
620+
621+
# Wrap as DimStackArray
622+
arr = DimStackArray(stack)
623+
624+
# Get values from all layers at position [1,1]
625+
arr[1,1] # Returns (temp=1.0, precip=2.0)
626+
627+
# Views maintain DimStack structure
628+
view(arr, 1:2, 1)
629+
```
630+
"""
604631
struct DimStackArray{T,N,D,S<:AbstractDimStack} <: AbstractDimArrayGenerator{T,N,D}
605632
stack::S
606633
function DimStackArray(stack::AbstractDimStack{K,T,N,L,D}) where {K,T,N,L,D}
@@ -653,4 +680,4 @@ Base.eltype(::Type{Base.SkipMissing{T}}) where {T<:AbstractDimStack{<:Any, NT}}
653680
@generated _nonmissing_nt(NT::Type{<:NamedTuple{K,V}}) where {K,V} =
654681
NamedTuple{K, Tuple{map(Base.nonmissingtype, V.parameters)...}}
655682

656-
Base.Broadcast.broadcastable(st::AbstractDimStack) = [st[D] for D in DimIndices(st)]
683+
Base.Broadcast.broadcastable(st::AbstractDimStack) = DimStackArray(st)

0 commit comments

Comments
 (0)