From b812c072e99382a3027bbbe5feb18dca8a813255 Mon Sep 17 00:00:00 2001 From: Eoghan O'Connell Date: Fri, 8 Nov 2024 09:29:02 +0100 Subject: [PATCH] docs: update figure labels; ci: correct github actions syntax --- .github/workflows/check.yml | 5 ++--- examples/fft_cupy3d_speed.png | Bin 47741 -> 37076 bytes examples/fft_cupy3d_speed.py | 19 ++++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6dbe717..12b1bdb 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -39,9 +39,8 @@ jobs: pip freeze - name: Test with pytest run: | - coverage run --source=qpretrieve -m pytest tests - # ignore the cupy imports, as we don't have a gpu-enabled pipeline setup - --ignore=tests/test_cupy_gpu + # ignore the cupy imports, as we don't have a gpu-enabled pipeline setup + coverage run --source=qpretrieve -m pytest tests --ignore=tests/test_cupy_gpu - name: Lint with flake8 run: | flake8 . diff --git a/examples/fft_cupy3d_speed.png b/examples/fft_cupy3d_speed.png index d18c5a9d454ea31de059f43dca768dcb3672b77d..9f0752392a54c52517ef2fbf6092c9b9c42a3b09 100644 GIT binary patch literal 37076 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⪙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 fj%rwx7hhe!%h0Xg*U?=@eD^;9MG!nl diff --git a/examples/fft_cupy3d_speed.py b/examples/fft_cupy3d_speed.py index 27b5a76..0538bea 100644 --- a/examples/fft_cupy3d_speed.py +++ b/examples/fft_cupy3d_speed.py @@ -1,9 +1,11 @@ """Fourier Transform speeds for the Cupy 3D interface -This example visualizes the normalised speed for different 3D image stacks for -the `FFTFilterCupy3D` FFT Filter +This example visualizes the speed for different batch sizes for +the `FFTFilterCupy3D` FFT Filter. The y-axis shows the speed of a single +FFT for the corresponding batch size. -- Optimum stack size for 256 images (incl. padding) is bewteen 128 and 256. +- Optimum batch size is between 64 and 256 for 256x256pix images (incl. padding). +- Here, batch size is the size of the 3D stack in z. """ import time @@ -54,11 +56,10 @@ ax1.bar(range(len(n_transforms_list)), height=speed_norm, color='darkmagenta') ax1.set_xticks(range(len(n_transforms_list)), labels=n_transforms_list) -ax1.set_xlabel("Number of Transforms") -ax1.set_ylabel("Speed normalised by number of transforms (s)") -ax1.set_title(f"Normalised by number of transforms") +ax1.set_xlabel("Fourier transform batch size") +ax1.set_ylabel("Speed / batch size (s)") -plt.suptitle("Speed of CuPy 3D") +plt.suptitle("Speed of FFT Interface CuPy3D") plt.tight_layout() -# plt.show() -plt.savefig("fft_cupy3d_speed.png", dpi=150) +plt.show() +# plt.savefig("fft_cupy3d_speed.png", dpi=150)