{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.gOPnh4aH/b1/pyfai_0.21.3+dfsg1-4_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.gOPnh4aH/b2/pyfai_0.21.3+dfsg1-4_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,5 +1,5 @@\n \n- 863acfb59c5724d058809831fe72d9c4 14636 science optional pyfai_0.21.3+dfsg1-4_all.deb\n- fd9058ddaddb930678e6884db17086f8 72886592 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb\n+ 3533ed540fdb7780675d961160dcf1a9 14632 science optional pyfai_0.21.3+dfsg1-4_all.deb\n+ 5c2adf567132efaeea06653cd6224829 72886060 doc optional python-pyfai-doc_0.21.3+dfsg1-4_all.deb\n 57c7b3db76c801e397ca322b7340f3d8 13103868 debug optional python3-pyfai-dbgsym_0.21.3+dfsg1-4_armhf.deb\n 0699ec33cfdb40c17c741401efca758f 2071064 python optional python3-pyfai_0.21.3+dfsg1-4_armhf.deb\n"}, {"source1": "pyfai_0.21.3+dfsg1-4_all.deb", "source2": "pyfai_0.21.3+dfsg1-4_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-22 12:27:09.000000 debian-binary\n -rw-r--r-- 0 0 0 1760 2023-02-22 12:27:09.000000 control.tar.xz\n--rw-r--r-- 0 0 0 12684 2023-02-22 12:27:09.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 12680 2023-02-22 12:27:09.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -25,12 +25,12 @@\n -rw-r--r-- 0 root (0) root (0) 1913 2023-02-22 12:27:09.000000 ./usr/share/doc/pyfai/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 55 2022-03-24 14:24:27.000000 ./usr/share/doc/pyfai/changelog.gz\n -rw-r--r-- 0 root (0) root (0) 3790 2023-02-19 12:38:42.000000 ./usr/share/doc/pyfai/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/man/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-22 12:27:09.000000 ./usr/share/man/man1/\n -rw-r--r-- 0 root (0) root (0) 1708 2023-02-22 12:27:09.000000 ./usr/share/man/man1/MX-calibrate.1.gz\n -rw-r--r-- 0 root (0) root (0) 797 2023-02-22 12:27:09.000000 ./usr/share/man/man1/check_calib.1.gz\n--rw-r--r-- 0 root (0) root (0) 839 2023-02-22 12:27:09.000000 ./usr/share/man/man1/detector2nexus.1.gz\n+-rw-r--r-- 0 root (0) root (0) 838 2023-02-22 12:27:09.000000 ./usr/share/man/man1/detector2nexus.1.gz\n -rw-r--r-- 0 root (0) root (0) 1350 2023-02-22 12:27:09.000000 ./usr/share/man/man1/diff_map.1.gz\n -rw-r--r-- 0 root (0) root (0) 1211 2023-02-22 12:27:09.000000 ./usr/share/man/man1/diff_tomo.1.gz\n -rw-r--r-- 0 root (0) root (0) 411 2023-02-22 12:27:09.000000 ./usr/share/man/man1/eiger-mask.1.gz\n -rw-r--r-- 0 root (0) root (0) 1148 2023-02-22 12:27:09.000000 ./usr/share/man/man1/pyFAI-average.1.gz\n"}, {"source1": "./usr/share/man/man1/detector2nexus.1.gz", "source2": "./usr/share/man/man1/detector2nexus.1.gz", "unified_diff": null, "details": [{"source1": "detector2nexus.1", "source2": "detector2nexus.1", "unified_diff": "@@ -1,13 +1,13 @@\n .\\\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.\n .TH DETECTOR2NEXUS', \"1\" \"February 2023\" \"detector2nexus', '--version']\" \"User Commands\"\n .SH NAME\n detector2nexus', \\- Converts a detector description into a NeXus detector usable by other pyFAI utilities\n .SH DESCRIPTION\n-['/tmp/tmpdc7zxf4d/detector2nexus', '\\-\\-help']\n+['/tmp/tmpyqd3dg4r/detector2nexus', '\\-\\-help']\n usage: detector2nexus [options] [options] \\fB\\-o\\fR nxs.h5\n .PP\n Convert a complex detector definition (multiple modules, possibly in 3D) into\n a single NeXus detector definition together with the mask (and much more in\n the future)\n .SS \"options:\"\n .TP\n"}]}]}]}]}, {"source1": "python-pyfai-doc_0.21.3+dfsg1-4_all.deb", "source2": "python-pyfai-doc_0.21.3+dfsg1-4_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-22 12:27:09.000000 debian-binary\n -rw-r--r-- 0 0 0 11672 2023-02-22 12:27:09.000000 control.tar.xz\n--rw-r--r-- 0 0 0 72874728 2023-02-22 12:27:09.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 72874196 2023-02-22 12:27:09.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/python-pyfai-doc/html/api/pyFAI.html", "source2": "./usr/share/doc/python-pyfai-doc/html/api/pyFAI.html", "unified_diff": "@@ -5652,15 +5652,15 @@\n

calibrant Module\uf0c1

\n

Calibrant

\n

A module containing classical calibrant and also tools to generate d-spacing.

\n

Interesting formula:\n http://geoweb3.princeton.edu/research/MineralPhy/xtalgeometry.pdf

\n
\n
\n-pyFAI.calibrant.CALIBRANT_FACTORY = Calibrants available: alpha_Al2O3, Si_SRM640e, cristobaltite, Si_SRM640b, CrOx, mock, TiO2, NaCl, Si_SRM640a, quartz, Si, Ni, Al, C14H30O, CuO, LaB6, Si_SRM640, ZnO, Au, AgBh, LaB6_SRM660a, Pt, Si_SRM640c, hydrocerussite, PBBA, LaB6_SRM660c, Si_SRM640d, CeO2, LaB6_SRM660b, Cr2O3\uf0c1
\n+pyFAI.calibrant.CALIBRANT_FACTORY = Calibrants available: LaB6_SRM660c, Si_SRM640, LaB6, Si_SRM640b, PBBA, LaB6_SRM660b, TiO2, CuO, Al, CeO2, Cr2O3, mock, CrOx, ZnO, AgBh, LaB6_SRM660a, cristobaltite, Au, Si_SRM640d, Si_SRM640a, quartz, Pt, Si, hydrocerussite, alpha_Al2O3, C14H30O, Si_SRM640c, NaCl, Ni, Si_SRM640e\uf0c1\n

Default calibration factory provided by the library.

\n
\n \n
\n
\n class pyFAI.calibrant.Calibrant(filename=None, dSpacing=None, wavelength=None)\uf0c1
\n

Bases: object

\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3488,19 +3488,19 @@\n pyFAI.blob_detection.make_gaussian(im, sigma, xc, yc)\u00ef\u0083\u0081\n \n ***** calibrant Module\u00ef\u0083\u0081 *****\n Calibrant\n A module containing classical calibrant and also tools to generate d-spacing.\n Interesting formula: http://geoweb3.princeton.edu/research/MineralPhy/\n xtalgeometry.pdf\n- pyFAI.calibrant.CALIBRANT_FACTORY= Calibrants available: alpha_Al2O3,\n- Si_SRM640e, cristobaltite, Si_SRM640b, CrOx, mock, TiO2, NaCl, Si_SRM640a,\n- quartz, Si, Ni, Al, C14H30O, CuO, LaB6, Si_SRM640, ZnO, Au, AgBh,\n- LaB6_SRM660a, Pt, Si_SRM640c, hydrocerussite, PBBA, LaB6_SRM660c, Si_SRM640d,\n- CeO2, LaB6_SRM660b, Cr2O3\u00ef\u0083\u0081\n+ pyFAI.calibrant.CALIBRANT_FACTORY= Calibrants available: LaB6_SRM660c,\n+ Si_SRM640, LaB6, Si_SRM640b, PBBA, LaB6_SRM660b, TiO2, CuO, Al, CeO2, Cr2O3,\n+ mock, CrOx, ZnO, AgBh, LaB6_SRM660a, cristobaltite, Au, Si_SRM640d,\n+ Si_SRM640a, quartz, Pt, Si, hydrocerussite, alpha_Al2O3, C14H30O, Si_SRM640c,\n+ NaCl, Ni, Si_SRM640e\u00ef\u0083\u0081\n Default calibration factory provided by the library.\n classpyFAI.calibrant.Calibrant(filename=None, dSpacing=None,\n wavelength=None)\u00ef\u0083\u0081\n Bases: object\n A calibrant is a reference compound where the d-spacing (interplanar\n distances) are known. They are expressed in Angstrom (in the file)\n __init__(filename=None, dSpacing=None, wavelength=None)\u00ef\u0083\u0081\n"}]}, {"source1": "./usr/share/doc/python-pyfai-doc/html/searchindex.js", "source2": "./usr/share/doc/python-pyfai-doc/html/searchindex.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -3797,41 +3797,41 @@\n \"interest\": [14, 16, 21, 32, 51, 53, 61, 71, 100, 102],\n \"geoweb3\": [14, 67],\n \"princeton\": [14, 67],\n \"edu\": [14, 17, 38, 43, 65, 67, 100],\n \"mineralphi\": [14, 67],\n \"xtalgeometri\": [14, 67],\n \"calibrant_factori\": [14, 58, 78, 87],\n- \"alpha_al2o3\": [14, 38, 39, 43, 57, 64, 85],\n+ \"lab6_srm660c\": [14, 38, 39, 43, 64, 85],\n \"si_srm640\": [14, 38, 39, 43, 64, 85],\n- \"cristobaltit\": [14, 38, 39, 43, 64, 85],\n+ \"lab6\": [14, 38, 39, 43, 56, 64, 77, 78, 79, 82, 85, 92, 97, 98],\n \"si_srm640b\": [14, 38, 39, 43, 64, 85],\n- \"crox\": [14, 38, 39, 43, 64, 68, 85],\n- \"mock\": [14, 38, 39, 43, 64, 85],\n+ \"pbba\": [14, 38, 39, 43, 64, 85],\n+ \"lab6_srm660b\": [14, 38, 39, 43, 64, 85],\n \"tio2\": [14, 38, 39, 43, 64, 85],\n- \"nacl\": [14, 38, 39, 43, 64, 85],\n- \"si_srm640a\": [14, 38, 39, 43, 64, 85],\n- \"quartz\": [14, 38, 39, 43, 64, 85, 94],\n- \"si\": [14, 38, 39, 43, 64, 67, 85, 94, 96],\n- \"ni\": [14, 38, 39, 43, 64, 85],\n- \"c14h30o\": [14, 38, 39, 43, 64, 85],\n \"cuo\": [14, 38, 39, 43, 64, 85],\n- \"lab6\": [14, 38, 39, 43, 56, 64, 77, 78, 79, 82, 85, 92, 97, 98],\n+ \"ceo2\": [14, 19, 29, 38, 39, 43, 64, 73, 80, 85, 93, 94],\n+ \"cr2o3\": [14, 38, 39, 43, 64, 68, 85],\n+ \"mock\": [14, 38, 39, 43, 64, 85],\n+ \"crox\": [14, 38, 39, 43, 64, 68, 85],\n \"zno\": [14, 38, 39, 43, 64, 85],\n- \"au\": [14, 38, 39, 43, 64, 78, 85, 97],\n \"agbh\": [14, 18, 38, 39, 43, 58, 64, 67, 76, 85, 87],\n \"lab6_srm660a\": [14, 38, 39, 43, 64, 85],\n- \"si_srm640c\": [14, 38, 39, 43, 64, 85],\n- \"hydrocerussit\": [14, 38, 39, 43, 65],\n- \"pbba\": [14, 38, 39, 43, 64, 85],\n- \"lab6_srm660c\": [14, 38, 39, 43, 64, 85],\n+ \"cristobaltit\": [14, 38, 39, 43, 64, 85],\n+ \"au\": [14, 38, 39, 43, 64, 78, 85, 97],\n \"si_srm640d\": [14, 38, 39, 43, 64, 85],\n- \"ceo2\": [14, 19, 29, 38, 39, 43, 64, 73, 80, 85, 93, 94],\n- \"lab6_srm660b\": [14, 38, 39, 43, 64, 85],\n- \"cr2o3\": [14, 38, 39, 43, 64, 68, 85],\n+ \"si_srm640a\": [14, 38, 39, 43, 64, 85],\n+ \"quartz\": [14, 38, 39, 43, 64, 85, 94],\n+ \"si\": [14, 38, 39, 43, 64, 67, 85, 94, 96],\n+ \"hydrocerussit\": [14, 38, 39, 43, 65],\n+ \"alpha_al2o3\": [14, 38, 39, 43, 57, 64, 85],\n+ \"c14h30o\": [14, 38, 39, 43, 64, 85],\n+ \"si_srm640c\": [14, 38, 39, 43, 64, 85],\n+ \"nacl\": [14, 38, 39, 43, 64, 85],\n+ \"ni\": [14, 38, 39, 43, 64, 85],\n \"compound\": [14, 18, 46, 55, 57, 67, 68, 71, 72, 73],\n \"interplanar\": 14,\n \"append_2th\": 14,\n \"append_dspac\": 14,\n \"count_registered_dspac\": 14,\n \"positon\": 14,\n \"fake_calibration_imag\": [14, 64, 76, 82, 85],\n"}]}, {"source1": "./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz", "source2": "./usr/share/doc/python-pyfai-doc/html/usage/tutorial/Separation/Separate.ipynb.gz", "unified_diff": null, "details": [{"source1": "Separate.ipynb", "source2": "Separate.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9879166666666667%", "Differences: {\"'cells'\": \"{0: {'id': '6d4fdc7d'}, 1: {'id': 'e9ad284b'}, 2: {'id': '86e4bb18'}, 3: {'id': \"", " \"'c420c604'}, 4: {'id': '9df6785f'}, 5: {'id': '0e3f9bd2'}, 6: {'id': 'df9e4144'}, 7: \"", " \"{'id': 'dd2a7019'}, 8: {'id': '4b0881d2'}, 9: {'id': 'f7cf55bb'}, 10: {'id': \"", " \"'686b1b3a'}, 11: {'id': 'aa7d1a73'}, 12: {'id': '2aed5ddc'}, 13: {'id': '66bf3381'}, \"", " \"14: {'id': 'bd594c98'}, 15: {'id': 'c0d35463'}, 16: {'id': 'a94d48af'}, 17: {'id': \"", " \"'9671843c'}, 1 [\u2026]"], "unified_diff": "@@ -1,32 +1,32 @@\n {\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"786528a7\",\n+ \"id\": \"6d4fdc7d\",\n \"metadata\": {},\n \"source\": [\n \"# Signal separation between amorphous and crystalline phases\\n\",\n \"\\n\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n- \"id\": \"c56c2994\",\n+ \"id\": \"e9ad284b\",\n \"metadata\": {},\n \"outputs\": [],\n \"source\": [\n \"%matplotlib nbagg\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n- \"id\": \"ae41aaf8\",\n+ \"id\": \"86e4bb18\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n \"Using pyFAI version 0.21.0-dev0\\n\"\n@@ -54,15 +54,15 @@\n \"print(f\\\"Using pyFAI version {pyFAI.version}\\\")\\n\",\n \"#print(fabio.open(image_file).header[\\\"_array_data.header_contents\\\"])\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n- \"id\": \"df42a046\",\n+ \"id\": \"c420c604\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"text/plain\": [\n \"Detector Pilatus 6M\\t PixelSize= 1.720e-04, 1.720e-04 m\\n\",\n \"Wavelength= 1.033200e-10m\\n\",\n@@ -84,15 +84,15 @@\n \"ai.detector = pyFAI.detector_factory(\\\"Pilatus6M\\\")\\n\",\n \"ai\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n- \"id\": \"e73a30bd\",\n+ \"id\": \"9df6785f\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -1069,24 +1069,24 @@\n \"fig,ax = subplots(figsize=(9,9))\\n\",\n \"jupyter.display(img, ax=ax)\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"9df98d2a\",\n+ \"id\": \"0e3f9bd2\",\n \"metadata\": {},\n \"source\": [\n \"## 0. 1D and 2D integration\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n- \"id\": \"07967a68\",\n+ \"id\": \"df9e4144\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -2078,30 +2078,30 @@\n \"jupyter.plot2d(int2, ax=ax[1])\\n\",\n \"ax[0].set_xlim(int2.radial.min(), int2.radial.max())\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"41c38244\",\n+ \"id\": \"dd2a7019\",\n \"metadata\": {},\n \"source\": [\n \"## 1. Separation based on 2D integration\\n\",\n \"\\n\",\n \"Two methods are readily available in pyFAI, they perform filtering the 2D regrouped image along a vertical axis:\\n\",\n \"* median filtering: simple median along azimuthal angle\\n\",\n \"* sigma clipping: iterative removal of all pixels above n standard deviation\\n\",\n \"\\n\",\n \"The drawback is in the 2D integration: costly in time and smears pixel together.\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 6,\n- \"id\": \"d949029f\",\n+ \"id\": \"4b0881d2\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -3108,29 +3108,29 @@\n \"ax.plot(sc2.radial, sc2.intensity, label=\\\"sigma-clip (legacy)\\\")\\n\",\n \"ax.legend()\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"110ba98f\",\n+ \"id\": \"f7cf55bb\",\n \"metadata\": {},\n \"source\": [\n \"## 2. Separation based on 1D integration:\\n\",\n \"\\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 \"\\n\",\n \"* Available using OpenCL (no cython yet)\\n\",\n \"* Presentation of how it can be implemented is explained later in the demonstration\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 7,\n- \"id\": \"9237cd07\",\n+ \"id\": \"686b1b3a\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -4131,26 +4131,26 @@\n \"ax.plot(sc100.radial, sc100.intensity, label=\\\"sigma-clip 100pts\\\")\\n\",\n \"ax.legend()\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"4be7d96f\",\n+ \"id\": \"aa7d1a73\",\n \"metadata\": {},\n \"source\": [\n \"## 3. Rebuild the isotropic and anisotropic contribution\\n\",\n \"\\n\",\n \"Isotropic images are simply obtained from bilinear interpolation from 1D curves.\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 8,\n- \"id\": \"8485dae7\",\n+ \"id\": \"2aed5ddc\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -5129,15 +5129,15 @@\n \"jupyter.display(isotropic, label=\\\"Anisotropic contribution\\\")\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 9,\n- \"id\": \"b4055f18\",\n+ \"id\": \"66bf3381\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -6115,15 +6115,15 @@\n \"jupyter.display(aniso, label=\\\"Anisotropic contribution\\\")\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 10,\n- \"id\": \"90e9324c\",\n+ \"id\": \"bd594c98\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -7104,26 +7104,26 @@\n \"jupyter.display(bragg, label=\\\"Bragg\\\", ax=ax[0])\\n\",\n \"jupyter.display(amorphous, label=\\\"Amorphous\\\", ax=ax[1])\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"bb9068a4\",\n+ \"id\": \"c0d35463\",\n \"metadata\": {},\n \"source\": [\n \"## 4. Implementation of sigma-clipping using pure 1D integrators.\\n\",\n \"\\n\",\n \"This is a workaround until it is implemented in pyFAI. The procedure mimics what is running in OpenCL.\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 11,\n- \"id\": \"974b651e\",\n+ \"id\": \"a94d48af\",\n \"metadata\": {},\n \"outputs\": [],\n \"source\": [\n \"def sigma_clip_ng(ai, img, npt, method, unit=\\\"q_nm^-1\\\", error_model=None, thres=5, max_iter=5):\\n\",\n \" img = img.astype(numpy.float32) #also explicit copy\\n\",\n \" if error_model!=\\\"poisson\\\":\\n\",\n \" raise RuntimeError(\\\"Only Poissonian detector are supported for now\\\")\\n\",\n@@ -7137,15 +7137,15 @@\n \" img[discard] = numpy.NaN\\n\",\n \" return res1d\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 12,\n- \"id\": \"d3b128a6\",\n+ \"id\": \"9671843c\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -8147,15 +8147,15 @@\n \"ax.plot(sc100.radial, sc100.intensity, label=\\\"sigma-clip 100pts\\\")\\n\",\n \"ax.legend()\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"277a374d\",\n+ \"id\": \"beb72b13\",\n \"metadata\": {},\n \"source\": [\n \"## 5. Towards lossy compression of single crystal diffraction data\\n\",\n \"\\n\",\n \"For now only available as OpenCL code. \\n\",\n \"\\n\",\n \"Also available as command line tool, see `man sparsify-Bragg`:\\n\",\n@@ -8164,15 +8164,15 @@\n \"* 2000 pixels with signal above the background\\n\",\n \"* 100 radial bins with intensity and associated deviation\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 13,\n- \"id\": \"3f4dc264\",\n+ \"id\": \"a0f5e6c1\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n \"IntegrationMethod(1d int, no split, CSR, cython)\\n\",\n@@ -8198,15 +8198,15 @@\n \"%time sep = peak_finder(img, error_model=\\\"poisson\\\")\\n\",\n \"print(f\\\"Number of Bragg pixels found: {len(sep.index)}\\\")\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 14,\n- \"id\": \"035462aa\",\n+ \"id\": \"28c61ced\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n \"CPU times: user 349 ms, sys: 27.6 ms, total: 377 ms\\n\",\n@@ -8225,15 +8225,15 @@\n \"restored_flat[sep.index] = sep.intensity\\n\",\n \"restored = numpy.round(restored).astype(numpy.int32)\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 15,\n- \"id\": \"dc981b81\",\n+ \"id\": \"31061779\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"data\": {\n \"application/javascript\": [\n \"/* Put everything inside the global mpl namespace */\\n\",\n \"/* global mpl */\\n\",\n@@ -9212,15 +9212,15 @@\n \"jupyter.display(restored, label=\\\"Restored\\\", ax=ax[1])\\n\",\n \"pass\"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 16,\n- \"id\": \"16a9e8dc\",\n+ \"id\": \"7d92ad70\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n \"The compression ratio would be : 160.968x\\n\"\n@@ -9231,30 +9231,30 @@\n \"raw_size = img.nbytes\\n\",\n \"cmp_size = sep.index.nbytes + sep.intensity.nbytes + sep.background_avg.nbytes + sep.background_std.nbytes\\n\",\n \"print(f\\\"The compression ratio would be : {raw_size/cmp_size:.3f}x\\\")\"\n ]\n },\n {\n \"cell_type\": \"markdown\",\n- \"id\": \"0aabac00\",\n+ \"id\": \"06af60ce\",\n \"metadata\": {},\n \"source\": [\n \"## 6. Conclusion\\n\",\n \"\\n\",\n \"This tutorial explains how single crystal diffraction images can be treated to separate the amorphous content from Bragg peaks.\\n\",\n \"The first method has extensively been described in `J Kieffer & J.P. Wright; Powder Diffraction (2013) 28 (S2), pp339-350`\\n\",\n \"Subsequent ones have been developed with Gavin Vaughan (ESRF ID15) and Daniele De Sanctis (ESRF ID29).\\n\",\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\",\n \"First experimentation shows a limited degradation of \"\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 17,\n- \"id\": \"dc24ad42\",\n+ \"id\": \"58234d2d\",\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n \"Total execution time: 9.682s \\n\"\n"}]}]}]}]}]}]}