Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/PyramidScheme.jl
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,10 @@ end
Pyramid(newbase, newlevels, DD.metadata(A))
end

function Base.map(f, A::Pyramid)
newbase = map(f, parent(A))
newlevels = [map(f, levels(A,i)) for i in 1:nlevels(A)]
Pyramid(newbase, newlevels, DD.metadata(A)) # This should handle metadata better.
function Base.map(f, A1::Pyramid, As::Pyramid...)
newbase = map(f, parent(A1), parent.(As)...)
newlevels = [map(f, levels(A1,i), levels.(As, i)...) for i in 1:nlevels(A1)]
Pyramid(newbase, newlevels, DD.metadata(A1)) # This should handle metadata better.
end

function DD.show_after(io::IO, mime, A::Pyramid)
Expand Down
15 changes: 15 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,21 @@ end
end
end

@testitem "Map of pyramids" begin
using DimensionalData
pyr1 = Pyramid(fill(1,X(1:128),Y(1:128)), tilesize=16)
pyr2 = Pyramid(fill(1, X(1:128),Y(1:128)), tilesize=16, resampling_method=sum)
pyr1_neg = map(x-> x-1, pyr1)
@test all(all.(iszero, pyr1_neg.levels))
@test iszero(pyr1_neg.base)
pyr2_neg = map(x-> x-1, pyr2)
@test pyr2_neg.levels[1][1,1] == 3

pyrsum = map((x,y) -> x + y, pyr1, pyr2)
@test pyrsum[100,30] == 2
@test pyrsum.levels[1][10,10] == 5
@test pyrsum.levels[2][10,10] == 17
end


#=
Expand Down
Loading