Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Abbott committed Mar 16, 2020
1 parent d45b2d6 commit 3a3907a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/functions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,13 @@ function Base.sort(A::KeyedVector; kw...)
KeyedArray(parent(A)[perm], (axiskeys(A,1)[perm],))
end

function Base.sort!(A::KeyedVector; kw...)
perm = sortperm(parent(A); kw...)
permute!(axiskeys(A,1), perm) # error if keys cannot be sorted, could treat like push!
permute!(parent(A), perm)
A
end

function Base.sortslices(A::KeyedArray; dims, kw...)
dims′ = hasnames(A) ? NamedDims.dim(dimnames(A), dims) : dims
data = sortslices(parent(A); dims=dims′, kw...)
Expand Down
6 changes: 6 additions & 0 deletions test/_functions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ VN = NamedDimsArray(V.data.data, v=10:10:100)
AxisKeys.OUTER[]==:KeyedArray && # sortslices(keyless(M), dims=:c) # is an error
@test sortslices(M, dims=:c) isa NamedDimsArray

A = KeyedArray([1,0], vec=[:a, :b]) # https://github.com/JuliaArrays/AxisArrays.jl/issues/172
sort!(A)
@test A(:a) == 1
@test axiskeys(A, 1) == [:b, :a]
@test_throws Exception sort!(KeyedArray([1,0], 'a':'b'))

# reshape
@test reshape(M, 4,3) isa Array
@test reshape(M, 2,:) isa Array
Expand Down

0 comments on commit 3a3907a

Please sign in to comment.