From 904572636e33bb1658f07270db014b2edf3c479b Mon Sep 17 00:00:00 2001 From: Adrian Hill Date: Fri, 16 Feb 2024 22:50:29 +0100 Subject: [PATCH] Add more color channel reduction presets (#6) * Add more color channel reduction presets * Allow CI failure on nightly --- .github/workflows/CI.yml | 3 +++ src/heatmap.jl | 10 +++++++++- test/references/abssum_centered.txt | 1 + test/references/abssum_centered_2.txt | 1 + test/references/abssum_extrema.txt | 1 + test/references/abssum_extrema_2.txt | 1 + test/references/overlay_abssum_centered.txt | 1 + test/references/overlay_abssum_extrema.txt | 1 + test/references/overlay_rescale_abssum_centered.txt | 3 +++ test/references/overlay_rescale_abssum_extrema.txt | 3 +++ test/references/overlay_rescale_sumabs_centered.txt | 3 +++ test/references/overlay_rescale_sumabs_extrema.txt | 3 +++ test/references/overlay_sumabs_centered.txt | 1 + test/references/overlay_sumabs_extrema.txt | 1 + test/references/sumabs_centered.txt | 1 + test/references/sumabs_centered_2.txt | 1 + test/references/sumabs_extrema.txt | 1 + test/references/sumabs_extrema_2.txt | 1 + test/test_heatmap.jl | 2 +- 19 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 test/references/abssum_centered.txt create mode 100644 test/references/abssum_centered_2.txt create mode 100644 test/references/abssum_extrema.txt create mode 100644 test/references/abssum_extrema_2.txt create mode 100644 test/references/overlay_abssum_centered.txt create mode 100644 test/references/overlay_abssum_extrema.txt create mode 100644 test/references/overlay_rescale_abssum_centered.txt create mode 100644 test/references/overlay_rescale_abssum_extrema.txt create mode 100644 test/references/overlay_rescale_sumabs_centered.txt create mode 100644 test/references/overlay_rescale_sumabs_extrema.txt create mode 100644 test/references/overlay_sumabs_centered.txt create mode 100644 test/references/overlay_sumabs_extrema.txt create mode 100644 test/references/sumabs_centered.txt create mode 100644 test/references/sumabs_centered_2.txt create mode 100644 test/references/sumabs_extrema.txt create mode 100644 test/references/sumabs_extrema_2.txt diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e8f55cb..9ed3de9 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -20,6 +20,7 @@ jobs: matrix: version: - '1.6' + - '1' - 'nightly' os: - ubuntu-latest @@ -33,7 +34,9 @@ jobs: arch: ${{ matrix.arch }} - uses: julia-actions/cache@v1 - uses: julia-actions/julia-buildpkg@v1 + continue-on-error: ${{ matrix.version == 'nightly' }} - uses: julia-actions/julia-runtest@v1 + continue-on-error: ${{ matrix.version == 'nightly' }} - uses: julia-actions/julia-processcoverage@v1 - uses: codecov/codecov-action@v3 with: diff --git a/src/heatmap.jl b/src/heatmap.jl index ab647f2..e381277 100644 --- a/src/heatmap.jl +++ b/src/heatmap.jl @@ -17,6 +17,8 @@ Visualize 4D arrays as heatmaps, assuming the WHCN convention for input array di - `:sum`: sum up color channels - `:norm`: compute 2-norm over the color channels - `:maxabs`: compute `maximum(abs, x)` over the color channels + - `:sumabs`: compute `sum(abs, x)` over the color channels + - `:abssum`: compute `abs(sum(x))` over the color channels Defaults to `:$DEFAULT_REDUCE`. - `rangescale::Symbol`: Selects how the color channel reduced heatmap is normalized before the color scheme is applied. Can be either `:extrema` or `:centered`. @@ -85,8 +87,14 @@ function reduce_color_channel(val::AbstractArray, method::Symbol) return reduce((c...) -> maximum(abs.(c)), val; dims=3, init=init) elseif method == :norm return reduce((c...) -> sqrt(sum(c .^ 2)), val; dims=3, init=init) + elseif method == :sumabs + return reduce((c...) -> sum(abs, c), val; dims=3, init=init) + elseif method == :abssum + return reduce((c...) -> abs(sum(c)), val; dims=3, init=init) end throw( # else - ArgumentError("`reduce` :$method not supported, should be :maxabs, :sum or :norm"), + ArgumentError( + "`reduce` :$method not supported, should be :maxabs, :sum, :norm, :sumabs, or :abssum", + ), ) end diff --git a/test/references/abssum_centered.txt b/test/references/abssum_centered.txt new file mode 100644 index 0000000..fd55c97 --- /dev/null +++ b/test/references/abssum_centered.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/abssum_centered_2.txt b/test/references/abssum_centered_2.txt new file mode 100644 index 0000000..4e4381a --- /dev/null +++ b/test/references/abssum_centered_2.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/abssum_extrema.txt b/test/references/abssum_extrema.txt new file mode 100644 index 0000000..d00dbcc --- /dev/null +++ b/test/references/abssum_extrema.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/abssum_extrema_2.txt b/test/references/abssum_extrema_2.txt new file mode 100644 index 0000000..d00dbcc --- /dev/null +++ b/test/references/abssum_extrema_2.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/overlay_abssum_centered.txt b/test/references/overlay_abssum_centered.txt new file mode 100644 index 0000000..57d3560 --- /dev/null +++ b/test/references/overlay_abssum_centered.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/overlay_abssum_extrema.txt b/test/references/overlay_abssum_extrema.txt new file mode 100644 index 0000000..0c01456 --- /dev/null +++ b/test/references/overlay_abssum_extrema.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/overlay_rescale_abssum_centered.txt b/test/references/overlay_rescale_abssum_centered.txt new file mode 100644 index 0000000..bcfcb11 --- /dev/null +++ b/test/references/overlay_rescale_abssum_centered.txt @@ -0,0 +1,3 @@ +▀▀▀▀▀▀ +▀▀▀▀▀▀ +▀▀▀▀▀▀ \ No newline at end of file diff --git a/test/references/overlay_rescale_abssum_extrema.txt b/test/references/overlay_rescale_abssum_extrema.txt new file mode 100644 index 0000000..bccc955 --- /dev/null +++ b/test/references/overlay_rescale_abssum_extrema.txt @@ -0,0 +1,3 @@ +▀▀▀▀▀▀ +▀▀▀▀▀▀ +▀▀▀▀▀▀ \ No newline at end of file diff --git a/test/references/overlay_rescale_sumabs_centered.txt b/test/references/overlay_rescale_sumabs_centered.txt new file mode 100644 index 0000000..bcfcb11 --- /dev/null +++ b/test/references/overlay_rescale_sumabs_centered.txt @@ -0,0 +1,3 @@ +▀▀▀▀▀▀ +▀▀▀▀▀▀ +▀▀▀▀▀▀ \ No newline at end of file diff --git a/test/references/overlay_rescale_sumabs_extrema.txt b/test/references/overlay_rescale_sumabs_extrema.txt new file mode 100644 index 0000000..bccc955 --- /dev/null +++ b/test/references/overlay_rescale_sumabs_extrema.txt @@ -0,0 +1,3 @@ +▀▀▀▀▀▀ +▀▀▀▀▀▀ +▀▀▀▀▀▀ \ No newline at end of file diff --git a/test/references/overlay_sumabs_centered.txt b/test/references/overlay_sumabs_centered.txt new file mode 100644 index 0000000..57d3560 --- /dev/null +++ b/test/references/overlay_sumabs_centered.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/overlay_sumabs_extrema.txt b/test/references/overlay_sumabs_extrema.txt new file mode 100644 index 0000000..0c01456 --- /dev/null +++ b/test/references/overlay_sumabs_extrema.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/sumabs_centered.txt b/test/references/sumabs_centered.txt new file mode 100644 index 0000000..fd55c97 --- /dev/null +++ b/test/references/sumabs_centered.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/sumabs_centered_2.txt b/test/references/sumabs_centered_2.txt new file mode 100644 index 0000000..4e4381a --- /dev/null +++ b/test/references/sumabs_centered_2.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/sumabs_extrema.txt b/test/references/sumabs_extrema.txt new file mode 100644 index 0000000..d00dbcc --- /dev/null +++ b/test/references/sumabs_extrema.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/references/sumabs_extrema_2.txt b/test/references/sumabs_extrema_2.txt new file mode 100644 index 0000000..d00dbcc --- /dev/null +++ b/test/references/sumabs_extrema_2.txt @@ -0,0 +1 @@ +▀▀ \ No newline at end of file diff --git a/test/test_heatmap.jl b/test/test_heatmap.jl index 9cd8e13..bf9efc3 100644 --- a/test/test_heatmap.jl +++ b/test/test_heatmap.jl @@ -9,7 +9,7 @@ batch = reshape(collect(Float32, 1:prod(shape)), shape) img = [RGB(1, 0, 0) RGB(0, 1, 0); RGB(0, 0, 1) RGB(1, 1, 1)] img2 = [RGB(x, y, 0) for x in 0:0.2:1, y in 0:0.2:1] -reducers = [:sum, :maxabs, :norm] +reducers = [:sum, :maxabs, :norm, :sumabs, :abssum] rangescales = [:extrema, :centered] @testset "Single input" begin