{ "cells": [ { "cell_type": "markdown", "id": "500b07b7-5f43-40c0-ba80-bc6cd759f9f4", "metadata": {}, "source": [ "# Gekachelte Bildverarbeitung, ein schneller Durchlauf\n", "\n", "In diesem Notebook werden wir einen gro\u00dfen Datensatz verarbeiten, der im zarr-Format gespeichert wurde, um Zellen in einzelnen Kacheln mit Hilfe von [dask](https://docs.dask.org/en/stable/) und [zarr](https://zarr.readthedocs.io/en/stable/) zu z\u00e4hlen. Die zugrunde liegenden Prinzipien werden in den n\u00e4chsten Abschnitten erkl\u00e4rt." ] }, { "cell_type": "code", "execution_count": 1, "id": "e6a9300d-1f11-4a3b-94bb-a136ba69f09d", "metadata": {}, "outputs": [], "source": [ "import zarr\n", "import dask.array as da\n", "import numpy as np\n", "from skimage.io import imread\n", "import pyclesperanto_prototype as cle\n", "from pyclesperanto_prototype import imshow\n", "from numcodecs import Blosc" ] }, { "cell_type": "markdown", "id": "8959f8d4-a6d6-4a2d-b4b7-9378d2ceec01", "metadata": {}, "source": [ "Zu Demonstrationszwecken verwenden wir einen Datensatz, der von Theresa Suckert, OncoRay, Universit\u00e4tsklinikum Carl Gustav Carus, TU Dresden, zur Verf\u00fcgung gestellt wurde. Der Datensatz ist unter der [Lizenz: CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/) lizenziert. Wir verwenden hier eine zugeschnittene Version, die als 8-Bit-Bild neu gespeichert wurde, um sie mit dem Notebook bereitstellen zu k\u00f6nnen. Das vollst\u00e4ndige 16-Bit-Bild im CZI-Dateiformat finden Sie [online](https://zenodo.org/record/4276076#.YX1F-55BxaQ). Der biologische Hintergrund wird in [Suckert et al. 2020](https://www.sciencedirect.com/science/article/abs/pii/S0167814020301043) erkl\u00e4rt, wo wir auch einen \u00e4hnlichen Workflow angewendet haben. \n", "\n", "Wenn Sie mit gro\u00dfen Datenmengen arbeiten, werden Sie wahrscheinlich bereits ein Bild im richtigen Format vorliegen haben. Zu Demonstrationszwecken speichern wir hier ein Testbild im zarr-Format, das h\u00e4ufig zur Verarbeitung gro\u00dfer Bilddaten verwendet wird." ] }, { "cell_type": "code", "execution_count": 2, "id": "cc2eeeb8-eb5e-49fc-8569-cdff5e143e5e", "metadata": {}, "outputs": [], "source": [ "# Resave a test image into tiled zarr format\n", "input_filename = '../../data/P1_H_C3H_M004_17-cropped.tif'\n", "zarr_filename = '../../data/P1_H_C3H_M004_17-cropped.zarr'\n", "image = imread(input_filename)[1]\n", "compressor = Blosc(cname='zstd', clevel=3, shuffle=Blosc.BITSHUFFLE)\n", "zarray = zarr.array(image, chunks=(100, 100), compressor=compressor)\n", "zarr.convenience.save(zarr_filename, zarray)" ] }, { "cell_type": "markdown", "id": "d76246fe-7358-4e0c-8112-1f1fd0af4108", "metadata": {}, "source": [ "## Laden des zarr-gest\u00fctzten Bildes\n", "Dask bietet integrierte Unterst\u00fctzung f\u00fcr das zarr-Dateiformat. Wir k\u00f6nnen dask-Arrays direkt aus einer zarr-Datei erstellen." ] }, { "cell_type": "code", "execution_count": 3, "id": "2132d10e-1ec5-43eb-9c3c-a4d9358919cc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n",
"
| \n",
" \n", " \n", " | \n", "
\n",
"
| \n",
" \n", " \n", " | \n", "