Skip to content

Commit 6b5f8ae

Browse files
authored
Merge pull request #105 from mdavezac/constructor-issue-103
Constructor over an AxisArray
2 parents deee61b + 7c395d0 commit 6b5f8ae

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/core.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ function AxisArray(A::AbstractArray{T,N}, names::NTuple{N,Symbol}, steps::NTuple
210210
AxisArray(A, axs...)
211211
end
212212

213+
AxisArray(A::AxisArray) = A
214+
AxisArray(A::AxisArray, ax::Vararg{Axis, N}) where N =
215+
AxisArray(A.data, ax..., last(Base.IteratorsMD.split(axes(A), Val{N}))...)
216+
AxisArray(A::AxisArray, ax::NTuple{N, Axis}) where N =
217+
AxisArray(A.data, ax..., last(Base.IteratorsMD.split(axes(A), Val{N}))...)
218+
213219
# Traits
214220
struct HasAxes{B} end
215221
HasAxes(::Type{<:AxisArray}) = HasAxes{true}()

test/core.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,18 @@ A = @inferred(AxisArray(reshape(1:24, 2,3,4),
145145
Axis{:y}(1//10:1//10:3//10),
146146
Axis{:z}(["a", "b", "c", "d"])))
147147

148+
# recursive constructor
149+
@test A === @inferred AxisArray(A)
150+
@test axisnames(AxisArray(A, Axis{:yoyo}(1:length(A[Axis{:x}])))) == (:yoyo, :y, :z)
151+
@test AxisArray(A, Axis{:yoyo}(1:length(A[Axis{:x}]))).data === A.data
152+
@test AxisArray(A, (Axis{:yoyo}(1:length(A[Axis{:x}])),)).data === A.data
153+
@test axisnames(AxisArray(A, :something, :in, :the)) == (:something, :in, :the)
154+
@test AxisArray(A, :way, :you, :move).data === A.data
155+
@test axisnames(AxisArray(A, (:c, :a, :b), (2, 3, 4))) == (:c, :a, :b)
156+
@test AxisArray(A, (:c, :a, :b), (2, 3, 4)).data === A.data
157+
@inferred AxisArray(A, Axis{:yoyo}(1:length(A[Axis{:x}])))
158+
@inferred AxisArray(A, (Axis{:yoyo}(1:length(A[Axis{:x}])),))
159+
148160
# Test axisdim
149161
@test axisdim(A, Axis{:x}) == axisdim(A, Axis{:x}()) == 1
150162
@test axisdim(A, Axis{:y}) == axisdim(A, Axis{:y}()) == 2

0 commit comments

Comments
 (0)