From 8052c23169d285dd8d20c10d874e3afc86303c1c Mon Sep 17 00:00:00 2001 From: Francesc Alted Date: Wed, 20 Dec 2023 14:32:38 +0100 Subject: [PATCH] Add new chunking and blocking bench --- bench/encode-chunking-blocking-i13900K.ipynb | 523 +++++++++++++++++++ 1 file changed, 523 insertions(+) create mode 100644 bench/encode-chunking-blocking-i13900K.ipynb diff --git a/bench/encode-chunking-blocking-i13900K.ipynb b/bench/encode-chunking-blocking-i13900K.ipynb new file mode 100644 index 0000000..6313e9a --- /dev/null +++ b/bench/encode-chunking-blocking-i13900K.ipynb @@ -0,0 +1,523 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8421af3afa8cffac", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:03.604175Z", + "start_time": "2023-12-20T12:54:03.588003Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nBenchmark for compressing blocked images with grok codec.\\n\\nData can be downloaded from: http://www.silx.org/pub/nabu/data/compression/lung_raw_2000-2100.h5\\n'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "##############################################################################\n", + "# blosc2_grok: Grok (JPEG2000 codec) plugin for Blosc2\n", + "#\n", + "# Copyright (c) 2023 The Blosc Development Team \n", + "# https://blosc.org\n", + "# License: GNU Affero General Public License v3.0 (see LICENSE.txt)\n", + "##############################################################################\n", + "\n", + "\"\"\"\n", + "Benchmark for compressing blocked images with grok codec.\n", + "\n", + "Data can be downloaded from: http://www.silx.org/pub/nabu/data/compression/lung_raw_2000-2100.h5\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "32b99b422b688870", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:05.666978Z", + "start_time": "2023-12-20T12:54:03.596477Z" + } + }, + "outputs": [], + "source": [ + "import h5py\n", + "import blosc2\n", + "import blosc2_grok\n", + "import numpy as np\n", + "import hdf5plugin\n", + "from skimage.metrics import structural_similarity as ssim\n", + "from tqdm import tqdm\n", + "import matplotlib.pyplot as plt\n", + "from time import time" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "61a2ee3655e7c08b", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:05.674474Z", + "start_time": "2023-12-20T12:54:05.668654Z" + } + }, + "outputs": [], + "source": [ + "# Params for the frame iterator\n", + "verbose = False\n", + "all_frames = False\n", + "meas = {} # dictionary for storing the measurements\n", + "nblocks = 4 # number of blocks per dimension, when blocked" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5aed3cac86499bda", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:05.675688Z", + "start_time": "2023-12-20T12:54:05.672730Z" + } + }, + "outputs": [], + "source": [ + "# Register grok codec locally\n", + "blosc2.register_codec('grok', 160)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ecf05d785411c2f9", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:05.683720Z", + "start_time": "2023-12-20T12:54:05.679635Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compressing dataset of (100, 1024, 2048) images ...\n" + ] + } + ], + "source": [ + "# Open the dataset\n", + "data_dir = '/home/faltet/Downloads/'\n", + "f = h5py.File(f'{data_dir}/lung_raw_2000-2100.h5', 'r')\n", + "dset = f['/data']\n", + "if all_frames:\n", + " nframes = dset.shape[0]\n", + "else:\n", + " nframes = 1\n", + "images_per_chunk = 16\n", + "chunks = (images_per_chunk, dset.shape[1], dset.shape[2])\n", + "print(f\"Compressing dataset of {dset.shape} images ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bdc2562ffeb12a75", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:54:05.690449Z", + "start_time": "2023-12-20T12:54:05.685355Z" + } + }, + "outputs": [], + "source": [ + "# Define the compression and decompression parameters for Blosc2.\n", + "# Disable the filters and the splitmode, because these don't work with grok.\n", + "cparams = {\n", + " 'codec': 160,\n", + " #'nthreads': 16, # when commented out, this is automatically set to the number of cores\n", + " 'filters': [],\n", + " 'splitmode': blosc2.SplitMode.NEVER_SPLIT,\n", + "}\n", + "dparams = {\n", + " 'nthreads': 4,\n", + "}\n", + "\n", + "# Set the default parameters that will be used by grok\n", + "grok_params = {\n", + " 'cod_format': blosc2_grok.GrkFileFmt.GRK_FMT_JP2,\n", + " 'num_threads': 0,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4dbe1b1ad467f468", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:56:14.170346Z", + "start_time": "2023-12-20T12:54:05.693612Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compressing non-blocked images ...\n", + "Quality mode: rates-nonblocked\n", + "Compressing blocked images ...\n", + "Quality mode: rates-blocked\n" + ] + } + ], + "source": [ + "for blocked in (False, True):\n", + " if blocked:\n", + " print(\"Compressing blocked images ...\")\n", + " blocks = (1, dset.shape[1] // nblocks, dset.shape[2] // nblocks)\n", + " else:\n", + " print(\"Compressing non-blocked images ...\")\n", + " blocks = (1, dset.shape[1], dset.shape[2])\n", + " # Compress the dataset with different compression ratios\n", + " quality_mode = \"rates-blocked\" if blocked else \"rates-nonblocked\"\n", + " print(f\"Quality mode: {quality_mode}\")\n", + " ssims = []\n", + " cratios = []\n", + " times = []\n", + " range_vals = list(range(1, 11))\n", + " range_vals_str = \"range(1, 11)\"\n", + " for cratio in range_vals:\n", + " if verbose:\n", + " print(f\"Compressing with cratio={cratio}x ...\")\n", + " blosc2_grok.set_params_defaults(\n", + " quality_mode=quality_mode.split(\"-\")[0],\n", + " quality_layers=np.array([cratio], dtype=np.float64),\n", + " **grok_params)\n", + " \n", + " # Iterate over the frames\n", + " iter_frames = tqdm(range(nframes)) if verbose else range(nframes)\n", + " for i in iter_frames:\n", + " im = dset[i:i+images_per_chunk, ...]\n", + " # Transform the numpy array to a blosc2 array. This is where compression happens.\n", + " t0 = time()\n", + " b2im = blosc2.asarray(im, chunks=chunks, blocks=blocks, cparams=cparams)\n", + " if i == 0:\n", + " times.append(time() - t0)\n", + " cratios.append(b2im.schunk.cratio)\n", + " # Compare with the original image\n", + " im2 = b2im[:]\n", + " ssim_ = ssim(im[0], im2[0], data_range=im.max() - im.min())\n", + " ssims.append(ssim_)\n", + " if verbose:\n", + " print(f\"SSIM: {ssim_}\")\n", + " meas[quality_mode] = {'ssims': ssims, 'cratios': cratios, 'times': times}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "476ae852252dca85", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:56:14.178016Z", + "start_time": "2023-12-20T12:56:14.168902Z" + } + }, + "outputs": [], + "source": [ + "#meas" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9d72d5b5fd273ce7", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:56:14.383799Z", + "start_time": "2023-12-20T12:56:14.176146Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAHHCAYAAABEEKc/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACNP0lEQVR4nOzdd3zM9x/A8df3Lne5yBQyiRUqNjWC1k4lqFVqr1itolVKKTWrSmvU6DKDUrNUtZQUv6oRu9qYoWLElkQSWXff3x9prk6CRMMl8X4+Ht+Hu+99vt/v+3sXuXc+U1FVVUUIIYQQQphprB2AEEIIIURuIwmSEEIIIcQDJEESQgghhHiAJEhCCCGEEA+QBEkIIYQQ4gGSIAkhhBBCPEASJCGEEEKIB0iCJIQQQgjxAEmQhBBCCCEeIAmSEOKZWbJkCYqi8Pfff+foeadNm4afnx8mkylHzyuejtWrV+Pq6kpcXJy1Q8m2r776imLFipGUlGSxPyUlBR8fH7744gsrRSZymiRIIt86fvw47du3p3jx4hgMBooUKcIrr7zCnDlzLMolJyfz+eefU61aNZycnHBxcaFChQr079+fkydPmsulf7kfPHjQvG/8+PEoioJGo+HixYsZYoiNjcXOzg5FURg0aNDTu9lc5uOPP2bDhg3P5FqxsbFMnTqV999/H40m536lJSQkMH78eHbu3Jlj5xRgNBoZN24cgwcPxsHBwbz/l19+oU+fPlSsWBGtVkuJEiX+87VOnTrFu+++S926dTEYDI9MzletWkW3bt0oU6YMiqLQsGHDTMv16tWL5ORkvv76a4v9Op2OoUOHMnnyZBITE/9z7ML6JEES+dKePXuoUaMGx44do1+/fsydO5e+ffui0Wj4/PPPLcq2a9eOYcOGUbFiRT755BMmTJhA/fr1+fnnn9m3b1+Wrmdra8vKlSsz7F+/fn2O3E9e87AEqXv37ty7d4/ixYvn2LUWLVpEamoqnTt3zrFzQlqCNGHCBEmQctimTZs4deoU/fv3t9i/YsUKVqxYgbOzM97e3jlyrb179zJ79mzu3r1LuXLlHln2yy+/ZOPGjfj4+FCwYMGHljMYDPTs2ZMZM2bw4FKmwcHB3Lx5kxUrVuRI/MLKVCHyoebNm6tubm7qnTt3Mrx27do18+OwsDAVUCdPnpyhXGpqqnrz5k3z88WLF6uAeuDAAfO+cePGqYD62muvqVWrVs1wjldeeUVt166dCqgDBw78j3dlHUajUb137162jrG3t1d79uz5dAJ6QOXKldVu3bo9tlxKSoqalJSU5fPeuHFDBdRx48b9h+ievri4OGuHkC2tWrVSX3755Qz7L1++rCYnJ6uqqqotWrRQixcv/p+vdevWLTU2NlZVVVX99NNPVUA9f/58pmUjIyNVo9GoqqqqVqhQQW3QoMFDz3vw4EEVUENDQzO89uqrr6r16tX7z7EL65MaJJEvRUREUKFCBVxcXDK85u7ublEO4KWXXspQTqvVUqhQoSxdr0uXLhw9etSiSe7q1av8+uuvdOnSJUvnqFixIo0aNcqw32QyUaRIEdq3b2/e991331G9enUcHR1xcnKiUqVKGWrGMmMymfj888+pVKkSBoMBNzc3goKCLJoN05sDv/32WypUqICtrS1btmwB4LPPPqNu3boUKlQIOzs7qlevztq1ay2uoSgK8fHxhISEoCgKiqLQq1cv4OF9kL744gvztby9vRk4cCDR0dGPvZ/z58/zxx9/EBAQYLH/77//RlEUPvvsM2bNmoWvry+2traEh4eTnJzM2LFjqV69Os7Oztjb21OvXj127NhhcbybmxsAEyZMMN/H+PHjzWVOnjxJ+/btcXV1xWAwUKNGDX744QeLOFJSUpgwYQJlypTBYDBQqFAhXn75ZbZt22ZR5uTJk0RFRT32fnv16oWDgwMRERE0b94cR0dHunbtCsBvv/3G66+/TrFixbC1tcXHx4d3332Xe/fuZXqOy5cv06ZNGxwcHHBzc+O9997DaDRalL116xbdu3c3Nz337NmTY8eOoSgKS5YssSiblfcjMTGRLVu2ZPi8ALy9vdHpdI99D7LD1dUVR0fHLJX18fHJchNt9erVcXV1ZePGjRlee+WVV9i9eze3b9/OVqwi95EESeRLxYsX59ChQ/z555+PLQfw7bffkpqa+sTXq1+/PkWLFrWoWl+1ahUODg60aNEiS+fo2LEj//vf/7h69arF/t27d3PlyhU6deoEwLZt2+jcuTMFCxZk6tSpfPLJJzRs2JDff//9sdfo06cPQ4YMwcfHh6lTpzJy5EgMBkOGpsRff/2Vd999l44dO/L555+b+4Ok99WaOHEiH3/8MTY2Nrz++uts3rzZfOyyZcuwtbWlXr16LFu2jGXL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for blocked in (False, True):\n", + " quality_mode = \"rates-blocked\" if blocked else \"rates-nonblocked\"\n", + " marker = 'x-' if blocked else 'o-'\n", + " label = quality_mode.split(\"-\")[1]\n", + " plt.plot(meas[quality_mode]['cratios'], meas[quality_mode]['ssims'], marker, label=label)\n", + "plt.title(f'SSIM vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('Compression ratio')\n", + "plt.ylabel('SSIM index')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "34909ee7500458c", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:56:14.554148Z", + "start_time": "2023-12-20T12:56:14.381337Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABg6UlEQVR4nO3dd1xT5/4H8E8GJMgIgkJAQdHiQHCP4h7cOlpH663iddef3lvBarWutq7WUbWOOqqdemvVttZWq946iopt3aKtq04UqgIqEpas5Pz+CIkEwjSQ5Ph5v155xTzn5OR7CJJPnvOc50gEQRBAREREJFJSaxdAREREVJkYdoiIiEjUGHaIiIhI1Bh2iIiISNQYdoiIiEjUGHaIiIhI1Bh2iIiISNQYdoiIiEjUGHaIiIhI1Bh2SBRGjRqFunXrWruMZ0rXrl3RtWtXi25Tp9MhODgYCxYssOh2qfL06dMHY8eOtXYZFfL8889j2rRpRdr37t0LFxcX3L9/3wpVUWVg2CGbJZFIynQ7fPiwtUsVrUuXLmHu3Lm4detWlbze1q1bER8fj8jISItu9+jRo5g7dy5SUlIsut1n3e+//479+/dj+vTpJu0LFixAv3794O3tDYlEgrlz5z71a3377bcYNmwYAgMDIZFIig3a6enpmDNnDnr16gUPDw9IJBJs3LjR7LrTp0/H2rVrkZCQYNLeq1cvPPfcc1i0aNFT1022QW7tAoiKs2nTJpPHX331FQ4cOFCkvXHjxvjss8+g0+mqsrxnwqVLlzBv3jx07dq1SM/Z/v37Lf56S5cuRXh4OFQqlUW3e/ToUcybNw+jRo2Cu7u7Rbf9LFu6dCl69OiB5557zqT93XffhVqtRosWLbBv3z6LvNa6detw5swZtGnTBg8fPix2vQcPHuC9996Dv78/mjVrVuKXof79+8PNzQ0ff/wx3nvvPZNl//73v/HWW29h3rx5cHV1tcg+kPUw7JDNGjZsmMnj48eP48CBA0XaqewyMjLg7OxskW05OjpaZDsGZ8+exR9//IFly5aVuq4l98NW6HQ65OTkQKlUWruUMklKSsKePXuwfv36IstiY2NRt25dPHjwADVr1rTI623atAm1atWCVCpFcHBwsev5+Pjg3r17UKvVOH36NNq0aVPsulKpFP/85z/x1VdfYd68eZBIJMZlAwcOxIQJE7Bt2za89tprFtkHsh4exiJRKDxm59atW5BIJPjwww+xdu1a1KtXD9WqVcMLL7yA+Ph4CIKA999/H7Vr14aTkxP69++P5OTkItv9+eef0alTJzg7O8PV1RUvvvgiLl68WGItp0+fhkQiwX//+98iy/bt2weJRILdu3cDANLS0jBp0iTUrVsXCoUCXl5e+Mc//oGYmJhS9/nOnTsYM2YMfH19oVAoEBAQgNdffx05OTkAgI0bN0IikSA6Ohrjx4+Hl5cXateuDQC4ffs2xo8fj4YNG8LJyQmenp549dVXTQ5Xbdy4Ea+++ioAoFu3bkUOG5obs5OUlIQxY8bA29sbSqUSzZo1M/tzMGfHjh1wdHRE586dTdrnzp0LiUSCS5cu4V//+heqV6+Ojh07AgD+/PNPjBo1CvXq1YNSqYRarcZrr71m8s1/7ty5mDp1KgAgICDAuB8F9/Xrr79Gq1at4OTkBA8PD4SHhyM+Pt6kjmvXrmHgwIFQq9VQKpWoXbs2wsPDodFojOs8ePAAf/31FzIzM0vdX4lEgsjISGzevBlNmjSBQqHA3r17AQAffvgh2rdvD09PTzg5OaFVq1b4/vvvi93Gjh07EBwcDIVCgSZNmhi3U9Dhw4fRunVrKJVK1K9fH5988onxZ1tYWX4ee/bsQV5eHsLCwoo8vzLGz/n5+UEqLf0jS6FQQK1Wl3m7//jHP3D79m2cO3fOpN3LywtNmzbFzp07y1sq2SD27JCobd68GTk5OZgwYQKSk5OxZMkSDBo0CN27d8fhw4cxffp0XL9+HatXr8Zbb72FL7/80vjcTZs2YeTIkejZsycWL16MzMxMrFu3Dh07dsTZs2eL/YPeunVr1KtXD9999x1Gjhxpsuzbb79F9erV0bNnTwDAf/7zH3z//feIjIxEUFAQHj58iN9++w2XL19Gy5Yti92vu3fvom3btkhJScG4cePQqFEj3LlzB99//z0yMzNNel3Gjx+PmjVrYvbs2cjIyAAAnDp1CkePHkV4eDhq166NW7duYd26dejatSsuXbqEatWqoXPnznjjjTewatUqvP3222jcuDEAGO8Le/z4Mbp27Yrr168jMjISAQEB2LZtG0aNGoWUlBRMnDixxPfq6NGjCA4OhoODg9nlr776KgIDA7Fw4UIIggAAOHDgAG7evInRo0dDrVbj4sWL+PTTT3Hx4kUcP34cEokEr7zyCq5evYqtW7dixYoVqFGjBgAYexwWLFiAWbNmYdCgQfi///s/3L9/H6tXr0bnzp1x9uxZuLu7IycnBz179kR2djYmTJgAtVqNO3fuYPfu3UhJSTEedluzZg3mzZuHQ4cOlWnw9sGDB/Hdd98hMjISNWrUMP5OffTRR+jXrx+GDh2KnJwcfPPNN3j11Vexe/duvPjiiybb+O233/DDDz9g/PjxcHV1xapVqzBw4EDExcXB09MTgL7XrFevXvDx8cG8efOg1Wrx3nvvme11KcvPw/B+eXp6ok6dOqXupy1r1aoVAP34oxYtWhRZtmPHDitURRYnENmJiIgIobhf2ZEjRwp16tQxPo6NjRUACDVr1hRSUlKM7TNnzhQACM2aNRNyc3ON7UOGDBEcHR2FrKwsQRAEIS0tTXB3dxfGjh1r8joJCQmCSqUq0l7YzJkzBQcHByE5OdnYlp2dLbi7uwuvvfaasU2lUgkRERGl73whI0aMEKRSqXDq1Kkiy3Q6nSAIgrBhwwYBgNCxY0chLy/PZJ3MzMwizzt27JgAQPjqq6+Mbdu2bRMACIcOHSqyfpcuXYQuXboYH69cuVIAIHz99dfGtpycHCE0NFRwcXERUlNTS9yn2rVrCwMHDizSPmfOHAGAMGTIkCLLzO3H1q1bBQDCkSNHjG1Lly4VAAixsbEm6966dUuQyWTCggULTNrPnz8vyOVyY/vZs2cFAMK2bdtK3AdDreZ+XoUBEKRSqXDx4sVS9ysnJ0cIDg4WunfvXmQbjo6OwvXr141tf/zxhwBAWL16tbGtb9++QrVq1YQ7d+4Y265duybI5XKT/1Nl/XkIgiB07NhRaNWqVYn7eP/+fQGAMGfOnBLXK68mTZqY/O4V59SpUwIAYcOGDSWu5+joKLz++utF2hcuXCgAEBITEytYKdkKHsYiUXv11VdNBru2a9cOgH48kFwuN2nPycnBnTt3AOh7DFJSUjBkyBA8ePDAeJPJZGjXrh0OHTpU4usOHjwYubm5+OGHH4xt+/fvR0pKCgYPHmxsc3d3x4kTJ3D37t0y75NOp8OOHTvQt29ftG7dusjywoclxo4dC5lMZtLm5ORk/Hdubi4ePnyI5557Du7u7mU6hGbO//73P6jVagwZMsTY5uDggDfeeAPp6emIjo4u8fkPHz5E9erVi13+n//8p0hbwf3IysrCgwcP8PzzzwNAmfbjhx9+gE6nw6BBg0zeZ7VajcDAQOP7bPgd2rdvX4mHqObOnQtBEMp8Sn6XLl0QFBRU4n49evQIGo0GnTp1MrtPYWFhqF+/vvFx06ZN4ebmhps3bwIAtFotfvnlFwwYMAC+vr7G9Z577jn07t3bZFtl/XkApb9f9qR69ep48OCB2XYAZpeRfeFhLBI1f39/k8eGDy0/Pz+z7Y8ePQKgH58BAN27dze7XTc3txJft1mzZmjUqBG+/fZbjBkzBoD+EFaNGjVMtrlkyRKMHDkSfn5+aNWqFfr06YMRI0agXr16xW77/v37SE1NLXGQZkEBAQFF2h4/foxFixZhw4YNuHPnjvGwEACTMSjlcfv2bQQGBhYZV2E47HX79u1St1GwjsLM7UdycjLmzZuHb775BklJSSbLyrIf165dgyAICAwMNLvccEgtICAAkydPxvLly7F582Z06tQJ/fr1w7Bhw57qzDFz+wQAu3fvxvz583Hu3DlkZ2cb282Nryn8Ow7oP6QNv8tJSUl4/PhxkTOmABRpK+vPw6Ck98ueCIJg9mdr2D9zy8i+MOyQqBXu0Sit3fDHzXAa+6ZNm8wOdizYK1ScwYMHY8GCBXjw4AFcXV3x008/YciQISbPHTRoEDp16oQff/wR+/fvx9KlS7F48WL88MMPRb51V1TBXgKDCRMmYMOGDZg0aRJCQ0OhUqkgkUgQHh5utVP4PT09jR/Q5pjbj0GDBuHo0aOYOnUqmjdvDhcXF+h0OvTq1atM+6HT6SCRSPDzzz+b/Z1wcXEx/nvZsmUYNWoUdu7cif379+ONN97AokWLcPz4cePA7/Iyt0+//vor+vXrh86dO+Pjjz+Gj48PHBwcsGHDBmzZsqXI+qX9LpdHeX4epb1f9iQlJcU4lqsgw/6ZW0b2hWGHyAzDYQEvLy+zZ5uUxeDBgzFv3jxs374d3t7eSE1NRXh4eJH1fHx8MH78eIwfPx5JSUlo2bIlFixYUGzYqVmzJtzc3HDhwoUK1QUA33//PUaOHGlymndWVlaRSffK8422Tp06+PPPP6HT6Ux6d/766y/j8pI0atQIsbGxZX69R48eISoqCvPmzcPs2bON7YZeuYKK24/69etDEAQEBASgQYMGpb5mSEgIQkJC8O677+Lo0aPo0KED1q9fj/nz55e57tJs374dSqUS+/btg0KhMLZv2LChQtvz8vKCUqnE9evXiywr3Faen0ejRo2wffv2CtVkS+7cuYOcnByzA+9jY2NRo0YNi50+T9bDMTtEZvTs2RNubm5YuHAhcnNziywvyzTyjRs3RkhICL799lt8++238PHxMTmtWqvVFjnU4uXlBV9fX5NDF4VJpVIMGDAAu3btwunTp4ssL8s3eplMVmS91atXQ6vVmrQZ5rIpy8zDffr0QUJCAr799ltjW15eHlavXg0XFxd06dKlxOeHhobiwoULJe574X0Aiu7vypUri6xb3H688sorkMlkmDdvXpHtCIJgPIU9NTUVeXl5JstDQkIglUpN6i3PqefFkclkkEgkJu/FrVu3KnxWkEwmQ1hYGHbs2GEyNuz69ev4+eefTdYt688D0L9fjx49Mo4NsldnzpwBALRv397sstDQ0KouiSoBe3aIzHBzc8O6deswfPhwtGzZEuHh4ahZsybi4uKwZ88edOjQAWvWrCl1O4MHD8bs2bOhVCoxZswYkx6PtLQ01K5dG//85z/RrFkzuLi44JdffsGpU6dKnVhv4cKF2L9/P7p06YJx48ahcePGuHfvHrZt24bffvut1FmCX3rpJWzatAkqlQpBQUE4duwYfvnlF+OpygbNmzeHTCbD4sWLodFooFAo0L17d3h5eRXZ5rhx4/DJJ59g1KhROHPmDOrWrYvvv/8ev//+O1auXFnqLLT9+/fH+++/j+joaLzwwgslrgvo36POnTtjyZIlyM3NRa1atbB//36zvUOG04vfeecdhIeHw8HBAX379kX9+vUxf/58zJw5E7du3cKAAQPg6uqK2NhY/Pjjjxg3bhzeeustHDx4EJGRkXj11VfRoEED5OXlYdOmTZDJZBg4cKDxdcp76rk5L774IpYvX45evXrhX//6F5KSkrB27Vo899xz+PPPPyu0zblz52L//v3o0KEDXn/9dWi1WqxZswbBwcEm88uU9edhqFMul+OXX37BuHHjTF5v06ZNuH37tjH0HTlyxNj7NXz4cGMv3+HDh9GtWzfMmTOn1EtKHDlyBEeOHAGg/7KRkZFh3Gbnzp1NvkisWbMGKSkpxnC3a9cu/P333wD0h3ALjrM6cOAA/P39i5x2npSUhD///BMRERGl/4DJ9lXx2V9EFVaRU8+XLl1qst6hQ4fMnkJsOE278Knchw4d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XmnzEREREVHxKnzVcwOpVAqJRAJBEKDVai1RkyhodQJOxiZj95/3AADNOJkgERGRVVSoZyc7Oxtbt27FP/7xDzRo0ADnz5/HmjVrEBcXBxcXF0vXaHf2XriHjosPYshnx/Hn3xoAwBe/xmLvhXtWroyIiOjZU+6enfHjx+Obb76Bn58fXnvtNWzduhU1atSojNrs0t4L9/D61zEoPHopOSMHr38dg3XDWqJXsI/Z5xIREZHllftsLKlUCn9/f7Ro0aLEMSg//PDDUxdXVSx1NpZWJ6Dj4oO4p8kyu1wCQK1S4rfp3SGTcvwOERHR0yjr5/dTXy6CnjgZm1xs0AEAAcA9TRZOxiYjtL5n1RVGRET0DLPpy0XYm6S04oNORdYjIiKip1ehAcpknpdr2WZtLut6RERE9PQYdiyobYAHfFRKFHeQTwLAR6VE2wD7nnGaiIjInjDsWJBMKsGcvkEAUCTwGB7P6RvEwclERERViGHHwnoF+2DdsJZQq0wPValVSp52TkREZAVPPYMyFdUr2Af/CFLjZGwyktKy4OWqP3TFHh0iIqKqx7BTSWRSCU8vJyIisgE8jEVERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREombzYefOnTsYNmwYPD094eTkhJCQEJw+fdq4XBAEzJ49Gz4+PnByckJYWBiuXbtmxYqJiIjIlth02Hn06BE6dOgABwcH/Pzzz7h06RKWLVuG6tWrG9dZsmQJVq1ahfXr1+PEiRNwdnZGz549kZWVZcXKiYiIyFZIBEEQrF1EcWbMmIHff/8dv/76q9nlgiDA19cXU6ZMwVtvvQUA0Gg08Pb2xsaNGxEeHl6m10lNTYVKpYJGo4Gbm5vF6iciIqLKU9bPb5vu2fnpp5/QunVrvPrqq/Dy8kKLFi3w2WefGZfHxsYiISEBYWFhxjaVSoV27drh2LFjxW43OzsbqampJjciIiISJ5sOOzdv3sS6desQGBiIffv24fXXX8cbb7yB//73vwCAhIQEAIC3t7fJ87y9vY3LzFm0aBFUKpXx5ufnV3k7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sizeMB = np.prod(chunks) / 2**20\n", + "for blocked in (False, True):\n", + " quality_mode = \"rates-blocked\" if blocked else \"rates-nonblocked\"\n", + " marker = 'x-' if blocked else 'o-'\n", + " label = quality_mode.split(\"-\")[1]\n", + " plt.plot(meas[quality_mode]['cratios'], sizeMB / meas[quality_mode]['times'], marker, label=label)\n", + "plt.title(f'Time vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('cratio')\n", + "plt.ylabel('MB/s')\n", + "plt.ylim(0)\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5e1bc3978ae8183e", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:57:59.766055Z", + "start_time": "2023-12-20T12:56:14.557720Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compressing non-blocked images ...\n", + "Quality mode: dB-nonblocked\n", + "Compressing blocked images ...\n", + "Quality mode: dB-blocked\n" + ] + } + ], + "source": [ + "for blocked in (False, True):\n", + " if blocked:\n", + " print(\"Compressing blocked images ...\")\n", + " blocks = (1, dset.shape[1] // nblocks, dset.shape[2] // nblocks)\n", + " else:\n", + " print(\"Compressing non-blocked images ...\")\n", + " blocks = (1, dset.shape[1], dset.shape[2])\n", + " # Compress the dataset with different SNR ratios\n", + " quality_mode = \"dB-blocked\" if blocked else \"dB-nonblocked\"\n", + " print(f\"Quality mode: {quality_mode}\")\n", + " ssims = []\n", + " cratios = []\n", + " times = []\n", + " range_vals = list(range(90, 45, -5))\n", + " range_vals_str = \"range(90, 45, -5)\"\n", + " for quality in range_vals:\n", + " if verbose:\n", + " print(f\"Compressing with quality={quality}dB ...\")\n", + " blosc2_grok.set_params_defaults(\n", + " quality_mode=quality_mode.split(\"-\")[0],\n", + " quality_layers=np.array([quality], dtype=np.float64),\n", + " **grok_params)\n", + " \n", + " # Iterate over the frames\n", + " iter_frames = tqdm(range(nframes)) if verbose else range(nframes)\n", + " for i in iter_frames:\n", + " im = dset[i:i + images_per_chunk, ...]\n", + " # Transform the numpy array to a blosc2 array. This is where compression happens.\n", + " t0 = time()\n", + " b2im = blosc2.asarray(im, chunks=chunks, blocks=blocks, cparams=cparams)\n", + " if i == 0:\n", + " times.append(time() - t0)\n", + " cratios.append(b2im.schunk.cratio)\n", + " # Compare with the original image\n", + " im2 = b2im[:]\n", + " ssim_ = ssim(im[0], im2[0], data_range=im.max() - im.min())\n", + " ssims.append(ssim_)\n", + " if verbose:\n", + " print(f\"SSIM: {ssim_}\")\n", + " meas[quality_mode] = {'ssims': ssims, 'cratios': cratios, 'times': times}" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4c5c3ceb3cbe6c78", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:57:59.951683Z", + "start_time": "2023-12-20T12:57:59.767221Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for blocked in (False, True):\n", + " quality_mode = \"dB-blocked\" if blocked else \"dB-nonblocked\"\n", + " marker = 'x-' if blocked else 'o-'\n", + " label = quality_mode.split(\"-\")[1]\n", + " plt.plot(meas[quality_mode]['cratios'], meas[quality_mode]['ssims'], marker, label=label)\n", + "plt.title(f'SSIM vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('Compression ratio')\n", + "plt.ylabel('SSIM index')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3fc22140341fe3e7", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:58:00.155632Z", + "start_time": "2023-12-20T12:57:59.948565Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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RDVPJpXAXeEId4Vlb2mgKtGUP2RnYiK5PmSZrK8t192+Qq0RcL+w5JHmWupud1KT74VWDTvPPfccnnvuuQrr3LhxAxMnTsTu3bvRt29fg3Xnz59HbGwsjh07hrZt2wIAVq9ejT59+uD99983GY6qk7l3Rja3nj2wZHgyl7V6lR6VvbWXiOxf6RtrelmwF6pErXlw64Lyh+z+TL6rv7FtRWryvdCmJyhrNBoMGzYMM2bMQJMmTYzWHzlyBJ6envqgAwARERGQSqVISEjACy+8YHK/KpUKKpVK/zgnJ8ci7TX3zsjm1qPyWaNX6XHYW3uJiExxkEnhIZPCo4JeqCAvF7PCTk2+F9p02FmyZAkcHBzw+uuvm1yflpYGX1/DD750cHCAl5cX0tLSyt3v4sWLERMTY9G2ApyfUdOs0av0OOytvUREj8IW3wtt9uYciYmJ+OCDD7B+/XqL33dgzpw5yM7O1i+pqakW2a9ufgbwcD6GDudnEBHRk8AW3wttNuz88ccfyMjIQHBwMBwcHODg4IDr169j2rRpqFu3LgDA398fGRkZBtuVlJQgMzMT/v7+5e5bLpfDw8PDYLEU3fwM3X10dPyVCpv7GAMiIqLqYGvvhTY7jDVs2DBEREQYlEVGRmLYsGEYNWoUACA8PBxZWVlITExEmzZtAAC///47NBoNOnToUONt1uH8DCIietLZ0nuhVcNObm4uLl++rH+cnJyMkydPwsvLC8HBwfD2Npzf4OjoCH9/fzRq1AgA0LhxY/Tu3RtjxozBunXrUFxcjOjoaERFRdX4lVhlcX4GERE96WzlvdCqw1jHjx9Hq1at0KpVKwDA1KlT0apVK8ybN8/sfWzcuBGhoaHo2bMn+vTpg86dO+PTTz+triYTERGRneHHRaDmPvWciIiILMfc92+bnaBMREREZAkMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGoMO0RERCRqDDtEREQkagw7REREJGpWDTsHDhxAv379EBgYCIlEgu3bt+vXFRcXY9asWWjWrBlcXV0RGBiI4cOH4+bNmwb7yMzMxNChQ+Hh4QFPT0+MHj0aubm5NfxMiIiIyFZZNezk5eWhRYsWWLNmjdG6/Px8JCUlYe7cuUhKSsLWrVtx4cIFPP/88wb1hg4dirNnz2Lv3r3YuXMnDhw4gLFjx9bUUyAiIiIbJxEEQbB2IwBAIpFg27ZtGDBgQLl1jh07hvbt2+P69esIDg7G+fPnERYWhmPHjqFt27YAgNjYWPTp0wd///03AgMDzTp2Tk4OlEolsrOz4eHhYYmnQ0RERNXM3Pdvu5qzk52dDYlEAk9PTwDAkSNH4OnpqQ86ABAREQGpVIqEhAQrtZKIiIhsiYO1G2CuwsJCzJo1C0OGDNGnt7S0NPj6+hrUc3BwgJeXF9LS0srdl0qlgkql0j/OycmpnkYTERGR1dlFz05xcTEGDRoEQRCwdu3ax97f4sWLoVQq9UtQUJAFWklERES2yObDji7oXL9+HXv37jUYk/P390dGRoZB/ZKSEmRmZsLf37/cfc6ZMwfZ2dn6JTU1tdraT0RERNZl08NYuqBz6dIl7Nu3D97e3gbrw8PDkZWVhcTERLRp0wYA8Pvvv0Oj0aBDhw7l7lcul0Mul1dr24mIiMg2WDXs5Obm4vLly/rHycnJOHnyJLy8vBAQEICXXnoJSUlJ2LlzJ9RqtX4ejpeXF5ycnNC4cWP07t0bY8aMwbp161BcXIzo6GhERUWZfSUWERERiZtVLz3fv38/unfvblQ+YsQILFiwACEhISa327dvH7p16wZAe1PB6Oho7NixA1KpFAMHDsSHH34INzc3s9vBS8+JiIjsj7nv3zZznx1rYtghIiKyP6K8zw4RERFRVTHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkahZNewcOHAA/fr1Q2BgICQSCbZv326wXhAEzJs3DwEBAXB2dkZERAQuXbpkUCczMxNDhw6Fh4cHPD09MXr0aOTm5tbgsyAiIiJbZtWwk5eXhxYtWmDNmjUm1y9duhQffvgh1q1bh4SEBLi6uiIyMhKFhYX6OkOHDsXZs2exd+9e7Ny5EwcOHMDYsWNr6ikQERGRjZMIgiBYuxEAIJFIsG3bNgwYMACAtlcnMDAQ06ZNw/Tp0wEA2dnZ8PPzw/r16xEVFYXz588jLCwMx44dQ9u2bQEAsbGx6NOnD/7++28EBgaadeycnBwolUpkZ2fDw8OjWp4fERERWZa57982O2cnOTkZaWlpiIiI0JcplUp06NABR44cAQAcOXIEnp6e+qADABEREZBKpUhISCh33yqVCjk5OQYLERERiZPNhp20tDQAgJ+fn0G5n5+ffl1aWhp8fX0N1js4OMDLy0tfx5TFixdDqVTql6CgIAu3noiIiGyFzYad6jRnzhxkZ2frl9TUVGs3iYiIiKqJzYYdf39/AEB6erpBeXp6un6dv78/MjIyDNaXlJQgMzNTX8cUuVwODw8Pg4WIiIjEyWbDTkhICPz9/REXF6cvy8nJQUJCAsLDwwEA4eHhyMrKQmJior7O77//Do1Ggw4dOtR4m4mIiMj2OFjz4Lm5ubh8+bL+cXJyMk6ePAkvLy8EBwdj8uTJePfdd9GwYUOEhIRg7ty5CAwM1F+x1bhxY/Tu3RtjxozBunXrUFxcjOjoaERFRZl9JRYRERGJm1XDzvHjx9G9e3f946lTpwIARowYgfXr12PmzJnIy8vD2LFjkZWVhc6dOyM2NhYKhUK/zcaNGxEdHY2ePXtCKpVi4MCB+PDDD2v8uRAREZFtspn77FgT77NDRERkf+z+PjtERERElsCwQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREosawQ0RERKLGsENERESixrBDREREovbIYScpKQmnT5/WP/75558xYMAAvPHGGygq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b+LFF1+0UiuJiIjI1thF2MnNzcXQoUPx2WefoVatWvry7OxsfPHFF1ixYgV69OiBNm3a4KuvvsLhw4fx559/WrHFREREZCvsIuxMmDABffv2RUREhEF5YmIiiouLDcpDQ0MRHByMI0eOlLs/lUqFnJwcg4WIiIjEycHaDajM999/j6SkJBw7dsxoXVpaGpycnODp6WlQ7ufnh7S0tHL3uXjxYsTExFi6qURERGSDbLpnJzU1FZMmTcLGjRuhUCgstt85c+YgOztbv6Smplps30RERGRbbDrsJCYmIiMjA61bt4aDgwMcHBwQHx+PDz/8EA4ODvDz80NRURGysrIMtktPT4e/v3+5+5XL5fDw8DBYiIiISJxsehirZ8+eOH36tEHZqFGjEBoailmzZiEoKAiOjo6Ii4vDwIEDAQAXLlxASkoKwsPDrdFkIiIisjE2HXbc3d3RtGlTgzJXV1d4e3vry0ePHo2pU6fCy8sLHh4emDhxIsLDw/H0009bo8lERERkY2w67Jhj5cqVkEqlGDhwIFQqFSIjI/Hxxx9bu1lERERkIySCIAjWboS15eTkQKlUIjs7m/N3iIiI7IS57982PUGZiIiI6HEx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDHsEBERkagx7BAREZGoMewQERGRqDlYuwH2RK1Wo7i42NrNoBrm6OgImUxm7WYQEdEjYtgxgyAISEtLQ1ZWlrWbQlbi6ekJf39/SCQSazeFiIiqiGHHDLqg4+vrCxcXF77hPUEEQUB+fj4yMjIAAAEBAVZuERERVRXDTiXUarU+6Hh7e1u7OWQFzs7OAICMjAz4+vpySIuIyM7Y/ATlxYsXo127dnB3d4evry8GDBiACxcuGNQpLCzEhAkT4O3tDTc3NwwcOBDp6ekWOb5ujo6Li4tF9kf2Sffz55wtIiL7Y/NhJz4+HhMmTMCff/6JvXv3ori4GL169UJeXp6+zpQpU7Bj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sizeMB = np.prod(chunks) / 2**20\n", + "for blocked in (False, True):\n", + " quality_mode = \"dB-blocked\" if blocked else \"dB-nonblocked\"\n", + " marker = 'x-' if blocked else 'o-'\n", + " label = quality_mode.split(\"-\")[1]\n", + " plt.plot(meas[quality_mode]['cratios'], sizeMB / meas[quality_mode]['times'], marker, label=label)\n", + "plt.title(f'Time vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('cratio')\n", + "plt.ylabel('MB/s')\n", + "plt.ylim(0)\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c753e175", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-20T12:58:00.162599Z", + "start_time": "2023-12-20T12:58:00.154631Z" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}