summaryrefslogtreecommitdiff
path: root/doc/source/Tutorials
diff options
context:
space:
mode:
authorPicca Frédéric-Emmanuel <picca@debian.org>2024-02-05 16:30:07 +0100
committerPicca Frédéric-Emmanuel <picca@debian.org>2024-02-05 16:30:07 +0100
commit04095a69f18767d222b16fae5b40f2b712cd6f7e (patch)
treed20abd3ee2f237319443e9dfd7500ad55d29a33d /doc/source/Tutorials
parent3427caf0e96690e56aac6231a91df8f0f7a64fc2 (diff)
New upstream version 2.0.0+dfsg
Diffstat (limited to 'doc/source/Tutorials')
-rw-r--r--doc/source/Tutorials/Image.ipynb52
-rw-r--r--doc/source/Tutorials/Sift/sift.ipynb66
-rw-r--r--doc/source/Tutorials/codec/Bitshuffle-LZ4.ipynb317
-rw-r--r--doc/source/Tutorials/writing_NXdata.rst5
4 files changed, 392 insertions, 48 deletions
diff --git a/doc/source/Tutorials/Image.ipynb b/doc/source/Tutorials/Image.ipynb
index 5ddab38..cea6c31 100644
--- a/doc/source/Tutorials/Image.ipynb
+++ b/doc/source/Tutorials/Image.ipynb
@@ -52,14 +52,20 @@
],
"source": [
"import time, os\n",
+ "\n",
"start_time = time.time()\n",
"import silx\n",
- "print(\"Using silx version \",silx.version)\n",
+ "\n",
+ "print(\"Using silx version \", silx.version)\n",
"from silx.resources import ExternalResources\n",
- "downloader = ExternalResources(\"pyFAI\", \"http://www.silx.org/pub/pyFAI/testimages\", \"PYFAI_DATA\")\n",
+ "\n",
+ "downloader = ExternalResources(\n",
+ " \"pyFAI\", \"http://www.silx.org/pub/pyFAI/testimages\", \"PYFAI_DATA\"\n",
+ ")\n",
"fname = downloader.getfile(\"powder_200_2_0001.cbf\")\n",
"print(\"filename\", os.path.basename(fname))\n",
"import fabio\n",
+ "\n",
"nbins = 1000"
]
},
@@ -80,9 +86,9 @@
"source": [
"%%time\n",
"\n",
- "#Display an image and the histogram of values (in log scale)\n",
+ "# Display an image and the histogram of values (in log scale)\n",
"img = fabio.open(fname).data\n",
- "log_img = numpy.arcsinh(img) # arcsinh is well behaved log-like function\n",
+ "log_img = numpy.arcsinh(img) # arcsinh is well behaved log-like function\n",
"his, edges = numpy.histogram(log_img, nbins)"
]
},
@@ -895,10 +901,13 @@
}
],
"source": [
- "fig, ax = subplots(1,2,)\n",
- "center = (edges[1:] + edges[:-1])/2.0 # this is the center of the bins \n",
+ "fig, ax = subplots(\n",
+ " 1,\n",
+ " 2,\n",
+ ")\n",
+ "center = (edges[1:] + edges[:-1]) / 2.0 # this is the center of the bins\n",
"ax[1].imshow(log_img, cmap=\"inferno\")\n",
- "ax[0].plot(center,his)"
+ "ax[0].plot(center, his)"
]
},
{
@@ -924,17 +933,20 @@
"metadata": {},
"outputs": [],
"source": [
- "#switch this to \"CPU\" to have a fail safe \n",
+ "# switch this to \"CPU\" to have a fail safe\n",
"devicetype = \"GPU\"\n",
"from silx.opencl.codec.byte_offset import ByteOffset\n",
"from silx.opencl.image import ImageProcessing\n",
"import pyopencl, pyopencl.array, pyopencl.elementwise\n",
+ "\n",
"cbf = fabio.cbfimage.CbfImage()\n",
"bo = ByteOffset(os.path.getsize(fname), img.size, devicetype=devicetype)\n",
- "ash = pyopencl.elementwise.ElementwiseKernel(bo.ctx, \n",
- " arguments=\"float* data, float* res\", \n",
- " operation=\"res[i] = asinh(data[i])\", \n",
- " name='arcsinh_kernel')\n",
+ "ash = pyopencl.elementwise.ElementwiseKernel(\n",
+ " bo.ctx,\n",
+ " arguments=\"float* data, float* res\",\n",
+ " operation=\"res[i] = asinh(data[i])\",\n",
+ " name=\"arcsinh_kernel\",\n",
+ ")\n",
"ip = ImageProcessing(template=img, ctx=bo.ctx)\n",
"res = pyopencl.array.empty(bo.queue, img.shape, dtype=float32)"
]
@@ -954,11 +966,11 @@
}
],
"source": [
- "%%time \n",
+ "%%time\n",
"raw = cbf.read(fname, only_raw=True)\n",
"dec = bo(raw, as_float=True)\n",
"ash(dec, res)\n",
- "his, edges = ip.histogram(res, nbins, copy=False)\n",
+ "his, edges = ip.histogram(res, nbins, copy=False)\n",
"log_img = res.get()"
]
},
@@ -1771,10 +1783,13 @@
}
],
"source": [
- "fig, ax = subplots(1,2,)\n",
- "center = (edges[1:] + edges[:-1])/2.0 # this is the center of the bins \n",
+ "fig, ax = subplots(\n",
+ " 1,\n",
+ " 2,\n",
+ ")\n",
+ "center = (edges[1:] + edges[:-1]) / 2.0 # this is the center of the bins\n",
"ax[1].imshow(log_img, cmap=\"inferno\")\n",
- "ax[0].plot(center,his)"
+ "ax[0].plot(center, his)"
]
},
{
@@ -1826,9 +1841,10 @@
"raw = cbf.read(fname, only_raw=True)\n",
"dec = bo(raw, as_float=True)\n",
"ash(dec, res)\n",
- "his, edges = ip.histogram(res, nbins, copy=False)\n",
+ "his, edges = ip.histogram(res, nbins, copy=False)\n",
"log_img = res.get()\n",
"import os\n",
+ "\n",
"print(os.linesep.join(bo.log_profile()))\n",
"print(os.linesep.join(ip.log_profile()))"
]
diff --git a/doc/source/Tutorials/Sift/sift.ipynb b/doc/source/Tutorials/Sift/sift.ipynb
index 4b96aad..af880d4 100644
--- a/doc/source/Tutorials/Sift/sift.ipynb
+++ b/doc/source/Tutorials/Sift/sift.ipynb
@@ -43,6 +43,7 @@
],
"source": [
"import time\n",
+ "\n",
"start_time = time.time()\n",
"%pylab nbagg"
]
@@ -865,10 +866,12 @@
"source": [
"# display test image\n",
"import silx\n",
- "print(\"Silx version %s\"%silx.version)\n",
+ "\n",
+ "print(\"Silx version %s\" % silx.version)\n",
"\n",
"from PIL import Image\n",
"from silx.test.utils import utilstest\n",
+ "\n",
"path = utilstest.getfile(\"lena.png\")\n",
"image = numpy.asarray(Image.open(path))\n",
"fig, ax = subplots()\n",
@@ -891,15 +894,16 @@
}
],
"source": [
- "#Initialization of the sift object is time consuming: it compiles all the code.\n",
- "import os \n",
- "#set to 1 to see the compilation going on\n",
- "os.environ[\"PYOPENCL_COMPILER_OUTPUT\"] = \"0\" \n",
- "#switch to \"GPU\" to \"CPU\" to enable fail-save version.\n",
- "devicetype=\"GPU\"\n",
+ "# Initialization of the sift object is time consuming: it compiles all the code.\n",
+ "import os\n",
+ "\n",
+ "# set to 1 to see the compilation going on\n",
+ "os.environ[\"PYOPENCL_COMPILER_OUTPUT\"] = \"0\"\n",
+ "# switch to \"GPU\" to \"CPU\" to enable fail-save version.\n",
+ "devicetype = \"GPU\"\n",
"from silx.image import sift\n",
"\n",
- "%time sift_ocl = sift.SiftPlan(template=image, devicetype=devicetype) \n",
+ "%time sift_ocl = sift.SiftPlan(template=image, devicetype=devicetype)\n",
"\n",
"print(\"Device used for calculation: \", sift_ocl.ctx.devices[0].name)"
]
@@ -933,13 +937,15 @@
}
],
"source": [
- "print(\"Time for calculating the keypoints on one image of size %sx%s\"%image.shape[:2])\n",
+ "print(\"Time for calculating the keypoints on one image of size %sx%s\" % image.shape[:2])\n",
"%time keypoints = sift_ocl(image)\n",
- "print(\"Number of keypoints: %s\"%len(keypoints))\n",
+ "print(\"Number of keypoints: %s\" % len(keypoints))\n",
"print(\"Keypoint content:\")\n",
"print(keypoints.dtype)\n",
- "print(\"x: %.3f \\t y: %.3f \\t sigma: %.3f \\t angle: %.3f\" % \n",
- " (keypoints[-1].x,keypoints[-1].y,keypoints[-1].scale,keypoints[-1].angle))\n",
+ "print(\n",
+ " \"x: %.3f \\t y: %.3f \\t sigma: %.3f \\t angle: %.3f\"\n",
+ " % (keypoints[-1].x, keypoints[-1].y, keypoints[-1].scale, keypoints[-1].angle)\n",
+ ")\n",
"print(\"descriptor:\")\n",
"print(keypoints[-1].desc)"
]
@@ -1753,10 +1759,10 @@
}
],
"source": [
- "#Overlay keypoints on the image:\n",
+ "# Overlay keypoints on the image:\n",
"fig, ax = subplots()\n",
"ax.imshow(image)\n",
- "ax.plot(keypoints[:].x, keypoints[:].y,\".g\")"
+ "ax.plot(keypoints[:].x, keypoints[:].y, \".g\")"
]
},
{
@@ -2568,7 +2574,7 @@
}
],
"source": [
- "#Diplaying keypoints by scale:\n",
+ "# Diplaying keypoints by scale:\n",
"fig, ax = subplots()\n",
"ax.hist(keypoints[:].scale, 100)\n",
"ax.set_xlabel(\"scale\")"
@@ -3383,18 +3389,18 @@
}
],
"source": [
- "#One can see 3 groups of keypoints, boundaries at: 8 and 20. Let's display them using colors.\n",
+ "# One can see 3 groups of keypoints, boundaries at: 8 and 20. Let's display them using colors.\n",
"S = 8\n",
"L = 20\n",
- "tiny = keypoints[keypoints[:].scale<S]\n",
- "small = keypoints[numpy.logical_and(keypoints[:].scale<L,keypoints[:].scale>=S)]\n",
- "bigger = keypoints[keypoints[:].scale>=L]\n",
+ "tiny = keypoints[keypoints[:].scale < S]\n",
+ "small = keypoints[numpy.logical_and(keypoints[:].scale < L, keypoints[:].scale >= S)]\n",
+ "bigger = keypoints[keypoints[:].scale >= L]\n",
"\n",
"fig, ax = subplots()\n",
"ax.imshow(image, cmap=\"gray\")\n",
- "ax.plot(tiny[:].x, tiny[:].y,\",g\", label=\"tiny\")\n",
- "ax.plot(small[:].x, small[:].y,\".b\", label=\"small\")\n",
- "ax.plot(bigger[:].x, bigger[:].y,\"or\", label=\"large\")\n",
+ "ax.plot(tiny[:].x, tiny[:].y, \",g\", label=\"tiny\")\n",
+ "ax.plot(small[:].x, small[:].y, \".b\", label=\"small\")\n",
+ "ax.plot(bigger[:].x, bigger[:].y, \"or\", label=\"large\")\n",
"ax.legend()"
]
},
@@ -3417,7 +3423,7 @@
"outputs": [],
"source": [
"shifted = numpy.zeros_like(image)\n",
- "shifted[5:,8:] = image[:-5, :-8]\n",
+ "shifted[5:, 8:] = image[:-5, :-8]\n",
"shifted_points = sift_ocl(shifted)"
]
},
@@ -3442,9 +3448,16 @@
"source": [
"%time mp = sift.MatchPlan()\n",
"%time match = mp(keypoints, shifted_points)\n",
- "print(\"Number of Keypoints with for image 1 : %i, For image 2 : %i, Matching keypoints: %i\" % (keypoints.size, shifted_points.size, match.shape[0]))\n",
+ "print(\n",
+ " \"Number of Keypoints with for image 1 : %i, For image 2 : %i, Matching keypoints: %i\"\n",
+ " % (keypoints.size, shifted_points.size, match.shape[0])\n",
+ ")\n",
"from numpy import median\n",
- "print(\"Measured offsets dx: %.3f, dy: %.3f\"%(median(match[:,1].x-match[:,0].x),median(match[:,1].y-match[:,0].y)))"
+ "\n",
+ "print(\n",
+ " \"Measured offsets dx: %.3f, dy: %.3f\"\n",
+ " % (median(match[:, 1].x - match[:, 0].x), median(match[:, 1].y - match[:, 0].y))\n",
+ ")"
]
},
{
@@ -4258,9 +4271,10 @@
"source": [
"# Example of usage of the automatic alignment:\n",
"import scipy.ndimage\n",
+ "\n",
"rotated = scipy.ndimage.rotate(image, 20, reshape=False)\n",
"sa = sift.LinearAlign(image, devicetype=devicetype)\n",
- "fig,ax = subplots(1, 3, figsize=(9,3))\n",
+ "fig, ax = subplots(1, 3, figsize=(9, 3))\n",
"ax[0].imshow(image)\n",
"ax[0].set_title(\"original\")\n",
"ax[1].imshow(rotated)\n",
diff --git a/doc/source/Tutorials/codec/Bitshuffle-LZ4.ipynb b/doc/source/Tutorials/codec/Bitshuffle-LZ4.ipynb
new file mode 100644
index 0000000..f5ece05
--- /dev/null
+++ b/doc/source/Tutorials/codec/Bitshuffle-LZ4.ipynb
@@ -0,0 +1,317 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "ba432c39-a7a0-4c75-93f9-dcbd879ff5f5",
+ "metadata": {},
+ "source": [
+ "# Bitshuffle-LZ decompression on GPU\n",
+ "\n",
+ "This tutorial explains:\n",
+ "\n",
+ "* how to read a HDF5 dataset chunk-by-chunk using the direct-chunk-read feature \n",
+ "* how to perform the bitshuffle-LZ4 decompression on the GPU using OpenCL.\n",
+ "\n",
+ "It uses a stack of 100 frames collected at the ESRF BM29 beamline with a Pilatus 2M, during a HPLC experiment."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "529014bd-2265-4057-8538-1f2a810f7661",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "fdbaea8e-f713-4f89-8d93-586e8fd2fdac",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Version of silx used (should be 1.2): 1.2.0-a0\n"
+ ]
+ }
+ ],
+ "source": [
+ "# some imports\n",
+ "import time\n",
+ "import h5py\n",
+ "import hdf5plugin\n",
+ "import numpy\n",
+ "from matplotlib.pyplot import subplots\n",
+ "from matplotlib.colors import LogNorm\n",
+ "import silx\n",
+ "from silx.resources import ExternalResources\n",
+ "from silx.opencl.codec.bitshuffle_lz4 import BitshuffleLz4\n",
+ "\n",
+ "start_time = time.perf_counter()\n",
+ "print(f\"Version of silx used (should be 1.2): {silx.version}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "a9337c85-cc22-4dd7-9a95-66634ec27432",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Download some data from internet:\n",
+ "filename = ExternalResources(\"silx\", \"http://www.silx.org/pub/silx\").getfile(\"hplc.h5\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "92a1f29a-4501-49e5-97ec-ad6067202492",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "dataset of shape (100, 1679, 1475) and dtype int32. Images look like:\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Display one frame:\n",
+ "fig, ax = subplots()\n",
+ "h = h5py.File(filename)\n",
+ "ds = h[\"/entry_0000/measurement/data\"]\n",
+ "ax.imshow(ds[0], norm=LogNorm())\n",
+ "print(f\"dataset of shape {ds.shape} and dtype {ds.dtype}. Images look like:\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "3a923d74-d164-4dc1-ab2b-2ba1fae6b027",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "696 ms ± 14.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# How long does it take to read all frames ?\n",
+ "%timeit for frame in ds: pass"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "6bf7abcb-87d8-4d52-9063-19ed2c0939b3",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "29.3 ms ± 343 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "(0, 1358315)"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# How long does it take to read the raw data (uncompresed) ?\n",
+ "filter_mask, chunk = ds.id.read_direct_chunk(ds.id.get_chunk_info(0).chunk_offset)\n",
+ "%timeit for i in range(ds.id.get_num_chunks()): filter_mask, chunk = ds.id.read_direct_chunk(ds.id.get_chunk_info(i).chunk_offset)\n",
+ "filter_mask, len(chunk)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "d572e453-67e1-4cd5-9faf-aed1ef6ddbbe",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "cl.Array([14, 10, 13, ..., 2, 3, 2], dtype=int32)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Setup the decompressor on the GPU:\n",
+ "gpu_lz = BitshuffleLz4(len(chunk), numpy.prod(ds.shape[1:]), ds.dtype)\n",
+ "gpu_lz.decompress(chunk)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "cc985465-78e3-43e9-a76d-a0c1452ede1e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = subplots()\n",
+ "frame = gpu_lz.decompress(chunk).get().reshape(ds.shape[1:])\n",
+ "ax.imshow(gpu_lz.decompress(chunk).get().reshape(ds.shape[1:]), norm=LogNorm())\n",
+ "# Validate the decompression on the GPU gives actually the proper result\n",
+ "numpy.all(frame == ds[0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "fe78c750-5e4a-45f9-848d-387050aef0bd",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "112 ms ± 343 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "for i in range(ds.id.get_num_chunks()):\n",
+ " filter_mask, chunk = ds.id.read_direct_chunk(ds.id.get_chunk_info(i).chunk_offset)\n",
+ " gpu_lz.decompress(chunk, wg=128)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "66816e9d-d974-485f-9768-1f2f14661fb7",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "OpenCL kernel profiling statistics in milliseconds for: BitshuffleLz4\n",
+ " Kernel name (count): min median max mean std\n",
+ " copy raw H -> D ( 100): 0.117 0.118 0.128 0.118 0.002\n",
+ " LZ4 unblock ( 100): 0.289 0.293 0.304 0.293 0.003\n",
+ " LZ4 decompress ( 100): 0.144 0.146 0.150 0.146 0.001\n",
+ "________________________________________________________________________________\n",
+ " Total OpenCL execution time : 55.774ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Some profiling information:\n",
+ "gpu_lz.set_profiling(True)\n",
+ "for i in range(ds.id.get_num_chunks()):\n",
+ " filter_mask, chunk = ds.id.read_direct_chunk(ds.id.get_chunk_info(i).chunk_offset)\n",
+ " gpu_lz.decompress(chunk, wg=128)\n",
+ "print(\"\\n\".join(gpu_lz.log_profile(stats=True)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "495d6274-fd39-41f9-aaac-c5c8cd8cba40",
+ "metadata": {},
+ "source": [
+ "## Conclusion\n",
+ "\n",
+ "A speed-up factor 6 has been observed which is mainly due to the (slow) parsing of the input to find the start of the LZ4 blocks. \n",
+ "The decompression and bit-unshuffling is comparatively fast !\n",
+ "This procedure is mainly worth when subsequent analysis takes place on the GPU, since it saves the time to send the decompressed array."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "b4ff76c0-c176-459a-9178-bb5448a102e1",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total run-time for the notebook 18.307s\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(f\"Total run-time for the notebook {time.perf_counter()-start_time:.3f}s\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "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.9.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/doc/source/Tutorials/writing_NXdata.rst b/doc/source/Tutorials/writing_NXdata.rst
index 4d87e3d..e59eb36 100644
--- a/doc/source/Tutorials/writing_NXdata.rst
+++ b/doc/source/Tutorials/writing_NXdata.rst
@@ -174,10 +174,7 @@ the *h5py* library.
import sys
# this is needed for writing arrays of utf-8 strings with h5py
- if sys.version_info < (3,):
- text_dtype = h5py.special_dtype(vlen=unicode)
- else:
- text_dtype = h5py.special_dtype(vlen=str)
+ text_dtype = h5py.special_dtype(vlen=str)
filename = "./myfile.h5"
h5f = h5py.File(filename, "w")