--- /srv/reproducible-results/rbuild-debian/r-b-build.kIFMx5Jl/b1/pyfai_0.21.3+dfsg1-4_amd64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.kIFMx5Jl/b2/pyfai_0.21.3+dfsg1-4_amd64.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ - a538d4af8bdbfb7c6fa94cf42aa07a4c 14640 science optional pyfai_0.21.3+dfsg1-4_all.deb │ - b2aa5ed8fcfc747a5a0fe65a5b9a86af 72885428 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb │ + 125a5573ae6a5bcbc62cce3e9feaae13 14636 science optional pyfai_0.21.3+dfsg1-4_all.deb │ + d1ba60f6e8d3b20f98ba6efac038bcff 72885564 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb │ a89bdfe2c8de6397f739a28908653bbb 13159296 debug optional python3-pyfai-dbgsym_0.21.3+dfsg1-4_amd64.deb │ 41b377bbef83c8d6ab4d35c365cfe910 2363764 python optional python3-pyfai_0.21.3+dfsg1-4_amd64.deb ├── pyfai_0.21.3+dfsg1-4_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-22 12:27:09.000000 debian-binary │ │ -rw-r--r-- 0 0 0 1760 2023-02-22 12:27:09.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 12688 2023-02-22 12:27:09.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 12684 2023-02-22 12:27:09.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── ./usr/share/man/man1/detector2nexus.1.gz │ │ │ │ ├── detector2nexus.1 │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. │ │ │ │ │ .TH DETECTOR2NEXUS', "1" "February 2023" "detector2nexus', '--version']" "User Commands" │ │ │ │ │ .SH NAME │ │ │ │ │ detector2nexus', \- Converts a detector description into a NeXus detector usable by other pyFAI utilities │ │ │ │ │ .SH DESCRIPTION │ │ │ │ │ -['/tmp/tmpqhjy7efe/detector2nexus', '\-\-help'] │ │ │ │ │ +['/tmp/tmpa5a9gh05/detector2nexus', '\-\-help'] │ │ │ │ │ usage: detector2nexus [options] [options] \fB\-o\fR nxs.h5 │ │ │ │ │ .PP │ │ │ │ │ Convert a complex detector definition (multiple modules, possibly in 3D) into │ │ │ │ │ a single NeXus detector definition together with the mask (and much more in │ │ │ │ │ the future) │ │ │ │ │ .SS "options:" │ │ │ │ │ .TP ├── python-pyfai-doc_0.21.3+dfsg1-4_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-22 12:27:09.000000 debian-binary │ │ -rw-r--r-- 0 0 0 11668 2023-02-22 12:27:09.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 72873568 2023-02-22 12:27:09.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 72873704 2023-02-22 12:27:09.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz │ │ │ │ ├── Separate.ipynb │ │ │ │ │ ├── Pretty-printed │ │ │ │ │ │┄ Similarity: 0.9879166666666667% │ │ │ │ │ │┄ Differences: {"'cells'": "{0: {'id': 'e88298b4'}, 1: {'id': '9c24bb61'}, 2: {'id': 'ffefcc7c'}, 3: {'id': " │ │ │ │ │ │┄ "'19a73ad3'}, 4: {'id': '8a9d65c3'}, 5: {'id': '4418c52f'}, 6: {'id': '862b605f'}, 7: " │ │ │ │ │ │┄ "{'id': '1472d927'}, 8: {'id': '9c2ba19e'}, 9: {'id': 'a63f59cd'}, 10: {'id': " │ │ │ │ │ │┄ "'7b4ec7ae'}, 11: {'id': '2eb630a5'}, 12: {'id': 'c55124fe'}, 13: {'id': 'af388f53'}, " │ │ │ │ │ │┄ "14: {'id': '6866b672'}, 15: {'id': 'e94a8170'}, 16: {'id': 'f0eb6fb8'}, 17: {'id': " │ │ │ │ │ │┄ "'cbf27706'}, 1 […] │ │ │ │ │ │ @@ -1,32 +1,32 @@ │ │ │ │ │ │ { │ │ │ │ │ │ "cells": [ │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "97db0048", │ │ │ │ │ │ + "id": "e88298b4", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "# Signal separation between amorphous and crystalline phases\n", │ │ │ │ │ │ "\n" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 1, │ │ │ │ │ │ - "id": "52b3f5a5", │ │ │ │ │ │ + "id": "9c24bb61", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "%matplotlib nbagg" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 2, │ │ │ │ │ │ - "id": "b91a6a60", │ │ │ │ │ │ + "id": "ffefcc7c", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "Using pyFAI version 0.21.0-dev0\n" │ │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ │ "print(f\"Using pyFAI version {pyFAI.version}\")\n", │ │ │ │ │ │ "#print(fabio.open(image_file).header[\"_array_data.header_contents\"])" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 3, │ │ │ │ │ │ - "id": "0f8ca34d", │ │ │ │ │ │ + "id": "19a73ad3", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "text/plain": [ │ │ │ │ │ │ "Detector Pilatus 6M\t PixelSize= 1.720e-04, 1.720e-04 m\n", │ │ │ │ │ │ "Wavelength= 1.033200e-10m\n", │ │ │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │ │ │ "ai.detector = pyFAI.detector_factory(\"Pilatus6M\")\n", │ │ │ │ │ │ "ai" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 4, │ │ │ │ │ │ - "id": "dee841c2", │ │ │ │ │ │ + "id": "8a9d65c3", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -1069,24 +1069,24 @@ │ │ │ │ │ │ "fig,ax = subplots(figsize=(9,9))\n", │ │ │ │ │ │ "jupyter.display(img, ax=ax)\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "fc57ad25", │ │ │ │ │ │ + "id": "4418c52f", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 0. 1D and 2D integration" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 5, │ │ │ │ │ │ - "id": "dc1efd08", │ │ │ │ │ │ + "id": "862b605f", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -2078,30 +2078,30 @@ │ │ │ │ │ │ "jupyter.plot2d(int2, ax=ax[1])\n", │ │ │ │ │ │ "ax[0].set_xlim(int2.radial.min(), int2.radial.max())\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "6e5511ed", │ │ │ │ │ │ + "id": "1472d927", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 1. Separation based on 2D integration\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "Two methods are readily available in pyFAI, they perform filtering the 2D regrouped image along a vertical axis:\n", │ │ │ │ │ │ "* median filtering: simple median along azimuthal angle\n", │ │ │ │ │ │ "* sigma clipping: iterative removal of all pixels above n standard deviation\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "The drawback is in the 2D integration: costly in time and smears pixel together." │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 6, │ │ │ │ │ │ - "id": "1ee1c9b2", │ │ │ │ │ │ + "id": "9c2ba19e", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -3108,29 +3108,29 @@ │ │ │ │ │ │ "ax.plot(sc2.radial, sc2.intensity, label=\"sigma-clip (legacy)\")\n", │ │ │ │ │ │ "ax.legend()\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "f6466626", │ │ │ │ │ │ + "id": "a63f59cd", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 2. Separation based on 1D integration:\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "1D CSR integrator contain all the information to perform the sigma-clipping. This has been implemented in OpenCL and can be performed up to thousands of times per second.\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "* Available using OpenCL (no cython yet)\n", │ │ │ │ │ │ "* Presentation of how it can be implemented is explained later in the demonstration" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 7, │ │ │ │ │ │ - "id": "c4f5ba00", │ │ │ │ │ │ + "id": "7b4ec7ae", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -4131,26 +4131,26 @@ │ │ │ │ │ │ "ax.plot(sc100.radial, sc100.intensity, label=\"sigma-clip 100pts\")\n", │ │ │ │ │ │ "ax.legend()\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "7d9dd267", │ │ │ │ │ │ + "id": "2eb630a5", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 3. Rebuild the isotropic and anisotropic contribution\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "Isotropic images are simply obtained from bilinear interpolation from 1D curves." │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 8, │ │ │ │ │ │ - "id": "e20137af", │ │ │ │ │ │ + "id": "c55124fe", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -5129,15 +5129,15 @@ │ │ │ │ │ │ "jupyter.display(isotropic, label=\"Anisotropic contribution\")\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 9, │ │ │ │ │ │ - "id": "67264599", │ │ │ │ │ │ + "id": "af388f53", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -6115,15 +6115,15 @@ │ │ │ │ │ │ "jupyter.display(aniso, label=\"Anisotropic contribution\")\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 10, │ │ │ │ │ │ - "id": "c9f451c3", │ │ │ │ │ │ + "id": "6866b672", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -7104,26 +7104,26 @@ │ │ │ │ │ │ "jupyter.display(bragg, label=\"Bragg\", ax=ax[0])\n", │ │ │ │ │ │ "jupyter.display(amorphous, label=\"Amorphous\", ax=ax[1])\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "d766b25b", │ │ │ │ │ │ + "id": "e94a8170", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 4. Implementation of sigma-clipping using pure 1D integrators.\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "This is a workaround until it is implemented in pyFAI. The procedure mimics what is running in OpenCL." │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 11, │ │ │ │ │ │ - "id": "6c4a89f7", │ │ │ │ │ │ + "id": "f0eb6fb8", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "def sigma_clip_ng(ai, img, npt, method, unit=\"q_nm^-1\", error_model=None, thres=5, max_iter=5):\n", │ │ │ │ │ │ " img = img.astype(numpy.float32) #also explicit copy\n", │ │ │ │ │ │ " if error_model!=\"poisson\":\n", │ │ │ │ │ │ " raise RuntimeError(\"Only Poissonian detector are supported for now\")\n", │ │ │ │ │ │ @@ -7137,15 +7137,15 @@ │ │ │ │ │ │ " img[discard] = numpy.NaN\n", │ │ │ │ │ │ " return res1d" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 12, │ │ │ │ │ │ - "id": "cfe932c8", │ │ │ │ │ │ + "id": "cbf27706", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -8147,15 +8147,15 @@ │ │ │ │ │ │ "ax.plot(sc100.radial, sc100.intensity, label=\"sigma-clip 100pts\")\n", │ │ │ │ │ │ "ax.legend()\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "ddfe04af", │ │ │ │ │ │ + "id": "d7020206", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 5. Towards lossy compression of single crystal diffraction data\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "For now only available as OpenCL code. \n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "Also available as command line tool, see `man sparsify-Bragg`:\n", │ │ │ │ │ │ @@ -8164,15 +8164,15 @@ │ │ │ │ │ │ "* 2000 pixels with signal above the background\n", │ │ │ │ │ │ "* 100 radial bins with intensity and associated deviation" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 13, │ │ │ │ │ │ - "id": "6bd6f94e", │ │ │ │ │ │ + "id": "272c52a3", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "IntegrationMethod(1d int, no split, CSR, cython)\n", │ │ │ │ │ │ @@ -8198,15 +8198,15 @@ │ │ │ │ │ │ "%time sep = peak_finder(img, error_model=\"poisson\")\n", │ │ │ │ │ │ "print(f\"Number of Bragg pixels found: {len(sep.index)}\")" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 14, │ │ │ │ │ │ - "id": "32a2eac1", │ │ │ │ │ │ + "id": "26126e3b", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "CPU times: user 349 ms, sys: 27.6 ms, total: 377 ms\n", │ │ │ │ │ │ @@ -8225,15 +8225,15 @@ │ │ │ │ │ │ "restored_flat[sep.index] = sep.intensity\n", │ │ │ │ │ │ "restored = numpy.round(restored).astype(numpy.int32)" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 15, │ │ │ │ │ │ - "id": "e573053e", │ │ │ │ │ │ + "id": "391b08f8", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "application/javascript": [ │ │ │ │ │ │ "/* Put everything inside the global mpl namespace */\n", │ │ │ │ │ │ "/* global mpl */\n", │ │ │ │ │ │ @@ -9212,15 +9212,15 @@ │ │ │ │ │ │ "jupyter.display(restored, label=\"Restored\", ax=ax[1])\n", │ │ │ │ │ │ "pass" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 16, │ │ │ │ │ │ - "id": "552cf2e2", │ │ │ │ │ │ + "id": "ea5ac05e", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "The compression ratio would be : 160.968x\n" │ │ │ │ │ │ @@ -9231,30 +9231,30 @@ │ │ │ │ │ │ "raw_size = img.nbytes\n", │ │ │ │ │ │ "cmp_size = sep.index.nbytes + sep.intensity.nbytes + sep.background_avg.nbytes + sep.background_std.nbytes\n", │ │ │ │ │ │ "print(f\"The compression ratio would be : {raw_size/cmp_size:.3f}x\")" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "9141008d", │ │ │ │ │ │ + "id": "2dedf6d1", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 6. Conclusion\n", │ │ │ │ │ │ "\n", │ │ │ │ │ │ "This tutorial explains how single crystal diffraction images can be treated to separate the amorphous content from Bragg peaks.\n", │ │ │ │ │ │ "The first method has extensively been described in `J Kieffer & J.P. Wright; Powder Diffraction (2013) 28 (S2), pp339-350`\n", │ │ │ │ │ │ "Subsequent ones have been developed with Gavin Vaughan (ESRF ID15) and Daniele De Sanctis (ESRF ID29).\n", │ │ │ │ │ │ "Those methods open the door to lossy compression in the world of single crystal diffraction with compression rates above 100x which makes them appealing for serial-crystallography applications where bandwidth is critical. \n", │ │ │ │ │ │ "First experimentation shows a limited degradation of " │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 17, │ │ │ │ │ │ - "id": "65fa7461", │ │ │ │ │ │ + "id": "19769e29", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "Total execution time: 9.682s \n"