--- /srv/reproducible-results/rbuild-debian/r-b-build.uOo4rS1n/b1/pyfai_0.21.3+dfsg1-4_arm64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.uOo4rS1n/b2/pyfai_0.21.3+dfsg1-4_arm64.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ - bb985984967b36b51fe13324ab360a37 14636 science optional pyfai_0.21.3+dfsg1-4_all.deb │ - 0ce78fc7930729b3c27b1085dddf1362 72886312 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb │ + 1858460ff62550a324b10ae4350a3a65 14640 science optional pyfai_0.21.3+dfsg1-4_all.deb │ + 9fa527db51a4e096e41a712c6d9704ec 72886368 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb │ 361252eb183eebc86651d556dfd76c73 12897536 debug optional python3-pyfai-dbgsym_0.21.3+dfsg1-4_arm64.deb │ 5ed16f436e7339740bea5f01b68f841f 2120072 python optional python3-pyfai_0.21.3+dfsg1-4_arm64.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 1764 2023-02-22 12:27:09.000000 control.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 │ │ │ ├── file list │ │ │ │ @@ -25,12 +25,12 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1913 2023-02-22 12:27:09.000000 ./usr/share/doc/pyfai/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 55 2022-03-24 14:24:27.000000 ./usr/share/doc/pyfai/changelog.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3790 2023-02-19 12:38:42.000000 ./usr/share/doc/pyfai/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/man/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/man/man1/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1708 2023-02-22 12:27:09.000000 ./usr/share/man/man1/MX-calibrate.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 797 2023-02-22 12:27:09.000000 ./usr/share/man/man1/check_calib.1.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 839 2023-02-22 12:27:09.000000 ./usr/share/man/man1/detector2nexus.1.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 838 2023-02-22 12:27:09.000000 ./usr/share/man/man1/detector2nexus.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1350 2023-02-22 12:27:09.000000 ./usr/share/man/man1/diff_map.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1211 2023-02-22 12:27:09.000000 ./usr/share/man/man1/diff_tomo.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 411 2023-02-22 12:27:09.000000 ./usr/share/man/man1/eiger-mask.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1148 2023-02-22 12:27:09.000000 ./usr/share/man/man1/pyFAI-average.1.gz │ │ │ ├── ./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/tmp1m2p1gh6/detector2nexus', '\-\-help'] │ │ │ │ │ +['/tmp/tmpljfx7qsf/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 72874452 2023-02-22 12:27:09.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 72874508 2023-02-22 12:27:09.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -487,15 +487,15 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Recalib/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 33350 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Recalib/Recalib_notebook.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 180122 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Recalib/Recalib_notebook.ipynb.gz │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1051131 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Peakfinder8.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 661745 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Peakfinder8.ipynb.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2709561 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1826039 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1826034 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 384517 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Wilson.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 191825 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Wilson.ipynb.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10492 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Soleil/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1983727 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Soleil/Cristal_Mythen.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 925887 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Soleil/Cristal_Mythen.ipynb.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 26809 2023-02-22 12:27:09.000000 ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Soleil/Soleil_Diffabs_Calibration_K6C.html │ │ │ ├── ./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz │ │ │ │ ├── Separate.ipynb │ │ │ │ │ ├── Pretty-printed │ │ │ │ │ │┄ Similarity: 0.9879166666666667% │ │ │ │ │ │┄ Differences: {"'cells'": "{0: {'id': '6217c207'}, 1: {'id': '1b2855da'}, 2: {'id': 'f4f42aa1'}, 3: {'id': " │ │ │ │ │ │┄ "'0aa0b537'}, 4: {'id': 'a510d05c'}, 5: {'id': 'a0bf2205'}, 6: {'id': '40735719'}, 7: " │ │ │ │ │ │┄ "{'id': 'bed5456a'}, 8: {'id': '77f7c3a9'}, 9: {'id': '9b57d1f5'}, 10: {'id': " │ │ │ │ │ │┄ "'feaffc02'}, 11: {'id': '2ed2d718'}, 12: {'id': 'c8de049d'}, 13: {'id': 'bc2f3c14'}, " │ │ │ │ │ │┄ "14: {'id': '0ecb5ec8'}, 15: {'id': '0a24c9f6'}, 16: {'id': 'a2a184e6'}, 17: {'id': " │ │ │ │ │ │┄ "'c15a6a22'}, 1 […] │ │ │ │ │ │ @@ -1,32 +1,32 @@ │ │ │ │ │ │ { │ │ │ │ │ │ "cells": [ │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "markdown", │ │ │ │ │ │ - "id": "7f472646", │ │ │ │ │ │ + "id": "6217c207", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "# Signal separation between amorphous and crystalline phases\n", │ │ │ │ │ │ "\n" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 1, │ │ │ │ │ │ - "id": "ab6b6ea2", │ │ │ │ │ │ + "id": "1b2855da", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "%matplotlib nbagg" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 2, │ │ │ │ │ │ - "id": "c66109f8", │ │ │ │ │ │ + "id": "f4f42aa1", │ │ │ │ │ │ "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": "6384b153", │ │ │ │ │ │ + "id": "0aa0b537", │ │ │ │ │ │ "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": "04a706c4", │ │ │ │ │ │ + "id": "a510d05c", │ │ │ │ │ │ "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": "4ff93e6f", │ │ │ │ │ │ + "id": "a0bf2205", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "## 0. 1D and 2D integration" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 5, │ │ │ │ │ │ - "id": "d574a975", │ │ │ │ │ │ + "id": "40735719", │ │ │ │ │ │ "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": "4a5ede90", │ │ │ │ │ │ + "id": "bed5456a", │ │ │ │ │ │ "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": "73d8efe7", │ │ │ │ │ │ + "id": "77f7c3a9", │ │ │ │ │ │ "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": "97859c29", │ │ │ │ │ │ + "id": "9b57d1f5", │ │ │ │ │ │ "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": "0e3eb872", │ │ │ │ │ │ + "id": "feaffc02", │ │ │ │ │ │ "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": "e07e6592", │ │ │ │ │ │ + "id": "2ed2d718", │ │ │ │ │ │ "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": "88d5bca6", │ │ │ │ │ │ + "id": "c8de049d", │ │ │ │ │ │ "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": "f338ab26", │ │ │ │ │ │ + "id": "bc2f3c14", │ │ │ │ │ │ "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": "ea1e5524", │ │ │ │ │ │ + "id": "0ecb5ec8", │ │ │ │ │ │ "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": "72e9e078", │ │ │ │ │ │ + "id": "0a24c9f6", │ │ │ │ │ │ "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": "5908fac6", │ │ │ │ │ │ + "id": "a2a184e6", │ │ │ │ │ │ "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": "43b61566", │ │ │ │ │ │ + "id": "c15a6a22", │ │ │ │ │ │ "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": "63ad375e", │ │ │ │ │ │ + "id": "ce58e3b5", │ │ │ │ │ │ "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": "c5dc0fcc", │ │ │ │ │ │ + "id": "995aae3e", │ │ │ │ │ │ "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": "697fe7d7", │ │ │ │ │ │ + "id": "5703709a", │ │ │ │ │ │ "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": "40d521e9", │ │ │ │ │ │ + "id": "eb236d5f", │ │ │ │ │ │ "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": "f1ee255f", │ │ │ │ │ │ + "id": "f081d07e", │ │ │ │ │ │ "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": "bb66ab59", │ │ │ │ │ │ + "id": "6f9fa2ac", │ │ │ │ │ │ "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": "1a112cb7", │ │ │ │ │ │ + "id": "c0e636bf", │ │ │ │ │ │ "metadata": {}, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "name": "stdout", │ │ │ │ │ │ "output_type": "stream", │ │ │ │ │ │ "text": [ │ │ │ │ │ │ "Total execution time: 9.682s \n"