{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Variance of SAXS data\n", "\n", "There has been a long discussion about the validity (or not) of pixel splitting regarding the propagation of errors [#520](https://github.com/silx-kit/pyFAI/issues/520) [#882](https://github.com/silx-kit/pyFAI/issues/882) [#883](https://github.com/silx-kit/pyFAI/issues/883).\n", "So we will develop a mathematical model for a SAXS experiment and validate it in the case of a SAXS approximation (i.e. no solid-angle correction, no polarisation effect, and of course small angled $\\theta = sin(\\theta) = tan(\\theta)$)\n", "\n", "## System under study\n", "\n", "Let's do a numerical experiment, simulating the following experiment:\n", "\n", "* Detector: 1024x1024 square pixels of 100µm each, assumed to be poissonian. \n", "* Geometry: The detector is placed at 1m from the sample, the beam center is in the corner of the detector\n", "* Intensity: the maximum signal on the detector is 10 000 photons per pixel, each pixel having a minimum count of a hundreed.\n", "* Wavelength: 1 Angstrom\n", "* During the first part of the studdy, the solid-angle correction will be discarded, same for polarisation corrections.\n", "* Since pixel splitting is disabled, many rebinning engines are available and will be benchmarked:\n", " - numpy: the slowest available in pyFAI\n", " - histogram: implemented in cython\n", " - nosplit_csr: using a look-up table\n", " - nosplit_csr_ocl_gpu: which offloads the calculation on the GPU.\n", " \n", " We will check they all provide the same numerical result\n", " \n", "Now we define some constants for the studdy. The dictionary *kwarg* contains the parameters used for azimuthal integration. This ensures the number of bins for the regrouping or correction like $\\Omega$ and polarization are always the same." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/usr/bin/python3\n", "3.9.1+ (default, Feb 5 2021, 13:46:56) \n", "[GCC 10.2.1 20210110]\n" ] } ], "source": [ "%matplotlib inline\n", "import time\n", "start_time = time.perf_counter()\n", "import sys\n", "print(sys.executable)\n", "print(sys.version)\n", "import os\n", "os.environ[\"PYOPENCL_COMPILER_OUTPUT\"] = \"0\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "pix = 100e-6\n", "shape = (1024, 1024)\n", "npt = 1000 \n", "nimg = 1000\n", "wl = 1e-10\n", "I0 = 1e4\n", "kwargs = {\"npt\":npt, \n", " \"correctSolidAngle\":False, \n", " \"polarization_factor\":None,\n", " \"safe\":False}\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pyFAI version: 0.21.0-dev0\n", "Detector Detector\t Spline= None\t PixelSize= 1.000e-04, 1.000e-04 m\n" ] } ], "source": [ "import numpy\n", "from scipy.stats import chi2 as chi2_dist\n", "from matplotlib.pyplot import subplots\n", "from matplotlib.colors import LogNorm\n", "import logging\n", "logging.basicConfig(level=logging.ERROR)\n", "import pyFAI\n", "print(f\"pyFAI version: {pyFAI.version}\")\n", "from pyFAI.detectors import Detector\n", "from pyFAI.azimuthalIntegrator import AzimuthalIntegrator\n", "from pyFAI.method_registry import IntegrationMethod\n", "from pyFAI.gui import jupyter\n", "detector = Detector(pix, pix)\n", "detector.shape = detector.max_shape = shape\n", "print(detector)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define in *ai_init* the geometry, the detector and the wavelength. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Detector Detector\t Spline= None\t PixelSize= 1.000e-04, 1.000e-04 m\n", "Wavelength= 1.000000e-10m\n", "SampleDetDist= 1.000000e+00m\tPONI= 0.000000e+00, 0.000000e+00m\trot1=0.000000 rot2= 0.000000 rot3= 0.000000 rad\n", "DirectBeamDist= 1000.000mm\tCenter: x=0.000, y=0.000 pix\tTilt=0.000 deg tiltPlanRotation= 0.000 deg\n", "Solid angle: maxi= 9.999999925000007e-09 mini= 9.693768051738431e-09, ratio= 0.9693768124441685\n" ] } ], "source": [ "ai_init = {\"dist\":1.0, \n", " \"poni1\":0.0, \n", " \"poni2\":0.0, \n", " \"rot1\":0.0,\n", " \"rot2\":0.0,\n", " \"rot3\":0.0,\n", " \"detector\":detector, \n", " \"wavelength\":wl}\n", "ai = AzimuthalIntegrator(**ai_init)\n", "print(ai) \n", "\n", "#Solid consideration:\n", "Ω = ai.solidAngleArray(detector.shape, absolute=True)\n", "\n", "print(\"Solid angle: maxi= {} mini= {}, ratio= {}\".format(Ω.max(), Ω.min(), Ω.min()/Ω.max()))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Validation of the flatness of a flat image integrated\n", "flat = numpy.ones(detector.shape)\n", "res_flat = ai.integrate1d(flat, **kwargs)\n", "crv = jupyter.plot1d(res_flat)\n", "crv.axes.set_ylim(0.9,1.1)\n", "pass" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "| Method | error | time(ms)|\n", "+------------------------------------------------------------------------+----------+---------+\n", "| no split, histogram, python | 0.00e+00 | 47.518 |\n", "| no split, histogram, cython | 0.00e+00 | 12.640 |\n", "| bbox split, histogram, cython | 0.00e+00 | 28.754 |\n", "| full split, histogram, cython | 0.00e+00 | 107.455 |\n", "| no split, CSR, cython | 0.00e+00 | 7.579 |\n", "| bbox split, CSR, cython | 0.00e+00 | 7.848 |\n", "| no split, CSR, python | 0.00e+00 | 17.903 |\n", "| bbox split, LUT, cython | 0.00e+00 | 12.144 |\n", "| no split, LUT, cython | 0.00e+00 | 8.817 |\n", "| pseudo split, LUT, cython | 0.00e+00 | 8.471 |\n", "| full split, CSR, cython | 0.00e+00 | 7.547 |\n", "| no split, histogram, OpenCL, Portable Computing Language / pthread-AMD | 0.00e+00 | 18.354 |\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/pyopencl/__init__.py:266: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.\n", " warn(\"Non-empty compiler output encountered. Set the \"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "| no split, histogram, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Pro | 0.00e+00 | 13.585 |\n", "| no split, histogram, OpenCL, AMD Accelerated Parallel Processing / gfx | 5.96e-08 | 10.087 |\n", "| no split, histogram, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 11.399 |\n", "| no split, histogram, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 5.701 |\n", "| no split, histogram, OpenCL, Portable Computing Language / GeForce GTX | 0.00e+00 | 11.946 |\n", "| no split, histogram, OpenCL, Portable Computing Language / GeForce GT | 0.00e+00 | 5.775 |\n", "| bbox split, CSR, OpenCL, Portable Computing Language / pthread-AMD EPY | 0.00e+00 | 11.497 |\n", "| no split, CSR, OpenCL, Portable Computing Language / pthread-AMD EPYC | 0.00e+00 | 9.417 |\n", "| bbox split, CSR, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Process | 0.00e+00 | 9.271 |\n", "| no split, CSR, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Processor | 0.00e+00 | 7.591 |\n", "| bbox split, CSR, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 1.19e-07 | 3.931 |\n", "| no split, CSR, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 5.96e-08 | 3.742 |\n", "| bbox split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 2.046 |\n", "| no split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 1.866 |\n", "| bbox split, CSR, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 3.751 |\n", "| no split, CSR, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 3.340 |\n", "| bbox split, CSR, OpenCL, Portable Computing Language / GeForce GTX 750 | 0.00e+00 | 2.140 |\n", "| no split, CSR, OpenCL, Portable Computing Language / GeForce GTX 750 T | 0.00e+00 | 1.948 |\n", "| bbox split, CSR, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 3.816 |\n", "| no split, CSR, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 3.439 |\n", "| full split, CSR, OpenCL, Portable Computing Language / pthread-AMD EPY | 0.00e+00 | 11.647 |\n", "| full split, CSR, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Process | 0.00e+00 | 8.941 |\n", "| full split, CSR, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 1.19e-07 | 3.672 |\n", "| full split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 2.010 |\n", "| full split, CSR, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 3.719 |\n", "| full split, CSR, OpenCL, Portable Computing Language / GeForce GTX 750 | 0.00e+00 | 2.083 |\n", "| full split, CSR, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 3.778 |\n", "| bbox split, LUT, OpenCL, Portable Computing Language / pthread-AMD EPY | 0.00e+00 | 11.376 |\n", "| no split, LUT, OpenCL, Portable Computing Language / pthread-AMD EPYC | 0.00e+00 | 8.326 |\n", "| bbox split, LUT, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Process | 0.00e+00 | 11.335 |\n", "| no split, LUT, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Processor | 0.00e+00 | 8.315 |\n", "| bbox split, LUT, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 1.19e-07 | 7.133 |\n", "| no split, LUT, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 5.96e-08 | 6.889 |\n", "| bbox split, LUT, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 4.693 |\n", "| no split, LUT, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 3.808 |\n", "| bbox split, LUT, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 5.723 |\n", "| no split, LUT, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 4.845 |\n", "| bbox split, LUT, OpenCL, Portable Computing Language / GeForce GTX 750 | 0.00e+00 | 5.394 |\n", "| no split, LUT, OpenCL, Portable Computing Language / GeForce GTX 750 T | 0.00e+00 | 3.705 |\n", "| bbox split, LUT, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 6.216 |\n", "| no split, LUT, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 4.867 |\n", "| full split, LUT, OpenCL, Portable Computing Language / pthread-AMD EPY | 0.00e+00 | 10.888 |\n", "| full split, LUT, OpenCL, Intel(R OpenCL / AMD EPYC 7262 8-Core Process | 0.00e+00 | 10.367 |\n", "| full split, LUT, OpenCL, AMD Accelerated Parallel Processing / gfx900 | 1.19e-07 | 8.047 |\n", "| full split, LUT, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti | 1.19e-07 | 4.744 |\n", "| full split, LUT, OpenCL, NVIDIA CUDA / GeForce GT 1030 | 1.19e-07 | 5.714 |\n", "| full split, LUT, OpenCL, Portable Computing Language / GeForce GTX 750 | 0.00e+00 | 5.448 |\n", "| full split, LUT, OpenCL, Portable Computing Language / GeForce GT 1030 | 0.00e+00 | 6.226 |\n", "+------------------------------------------------------------------------+----------+---------+\n", "\n", "The fastest method is IntegrationMethod(1d int, no split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti) in 1.866 ms/1Mpix frame\n" ] } ], "source": [ "#Equivalence of different rebinning engines ... looking for the fastest:\n", "fastest = sys.maxsize\n", "best = None\n", "print(f\"| {'Method':70s} | {'error':8s} | {'time(ms)':7s}|\")\n", "print(\"+\"+\"-\"*72+\"+\"+\"-\"*10+\"+\"+\"-\"*9+\"+\")\n", "for method in IntegrationMethod.select_method(dim=1):\n", " res_flat = ai.integrate1d(flat, method=method, **kwargs)\n", " #print(f\"timeit for {method} max error: {abs(res_flat.intensity-1).max()}\")\n", " m = str(method).replace(\")\",\"\")[26:96]\n", " err = abs(res_flat.intensity-1).max()\n", " \n", " tm = %timeit -o -r1 -q ai.integrate1d(flat, method=method, **kwargs)\n", " tm_best = tm.best\n", " print(f\"| {m:70s} | {err:6.2e} | {tm_best*1000:7.3f} |\")\n", " if tm_best" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Generation of a \"SAXS-like\" curve with the shape of a lorentzian curve\n", "\n", "q = numpy.linspace(0, res_flat.radial.max(), npt)\n", "I = I0/(1+q**2)\n", "fig, ax = subplots()\n", "ax.semilogy(q, I, label=\"Simulated signal\")\n", "ax.set_xlabel(\"q ($nm^{-1}$)\")\n", "ax.set_ylabel(\"I (count)\")\n", "ax.set_title(\"SAXS-like curve with good statistical characteristics\")\n", "ax.legend()\n", "pass" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Reconstruction of diffusion image:\n", "\n", "img_theo = ai.calcfrom1d(q, I, dim1_unit=\"q_nm^-1\", \n", " correctSolidAngle=False, \n", " polarization_factor=None)\n", "fig, ax = subplots()\n", "ax.imshow(img_theo, norm=LogNorm())\n", "ax.set_title(\"Diffusion image\")\n", "pass" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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X5GRkU5HAXCdBQUFqWjRovL390/xPJQ9AACADGL//v3KlSuXSpQoIWOM03EAXCfWWh0/flz79+9XyZIlUzwfh3ECAABkEJGRkbrxxhspekAWY4zRjTfeeMV79Sl7AAAAGQhFD8iaruZnn7IHAACAFHvzzTdVuXJlhYSEqFq1alq2bJkkqW/fvtq4cWOqrKNEiRI6duxYstP873//u+LljhkzRgMHDkzRtAcPHlTnzp2veB2pmQG4VpyzBwAAgBRZsmSJZsyYoVWrVikwMFDHjh1TdHS0JGnEiBHXNcv//vc/DR48OM2WX6RIEU2ePDnNlg9cD+zZAwAAQIocOnRI+fPnV2BgoCQpf/78KlKkiCSpcePGWrFihSQpZ86cevbZZ1WjRg01b95cy5cvV+PGjVWqVClNmzZN0qV7uNq1a6d58+Zdss7bb79dNWrUUOXKlTV8+HBJ0nPPPadz586pWrVq6t69uyTp22+/Ve3atVWtWjX1799fcXFxkqTRo0erXLlyatSokRYtWpTo65o/f76qVaumatWqqXr16jp9+rR2796tKlWqSJIiIiJ09913KyQkRF26dFGdOnUueK0vvPCCqlatqrCwMB0+fFiSNH36dNWpU0fVq1dX8+bN44cD1xNlDwAAACnSsmVL7du3T+XKldOAAQM0f/78RKc7e/asGjdurJUrVypXrlx68cUXNWfOHP300096+eWXr2ido0aN0sqVK7VixQoNHTpUx48f19tvv61s2bJpzZo1Gj9+vDZt2qTvv/9eixYt0po1a+R2uzV+/HgdOnRIQ4YM0aJFizRnzpwkDzN9//339dlnn2nNmjVasGCBsmXLdsH4zz//XPny5dO6dev00ksvaeXKlRe81rCwMK1du1YNGzbU119/LUmqX7++li5dqtWrV6tr16569913r+h1A6mBwzgBAAAyoFenb9DGg6dSdZmViuTWkPaVkxyfM2dOrVy5UgsWLNDcuXPVpUsXvf322+rdu/cF0wUEBKh169aSpODgYAUGBsrf31/BwcHavXv3FWUaOnSofvrpJ0nSvn37tG3bNt14440XTPPHH39o5cqVqlWrliTp3LlzKliwoJYtW6bGjRurQIECkqQuXbpo69atl6yjXr16GjRokLp376477rhDRYsWvWD8woUL9dhjj0mSqlSpopCQkAtea7t27SRJNWrU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4R6/EiVKaPDgwapbt65q1qypVatWqVWrVipdurS+/PJLSdKZM2fUrFkzhYaGKjg4WD///HP8sl5//XVVqFBBLVq0ULdu3eL3CO3YsUOtW7dWjRo11KBBA23evPmSHFu3blVgYKDy589/ybik5t+xY4fCwsJUq1Ytvfzyy/F7u5LL+M033ygkJERVq1ZVjx49dPr0aZUsWVIxMd6jyU6dOqUSJUrEP0+4nR566CE1adJEpUqV0vz583X//ferYsWK6t27d/x0ib3viX0+JOmFF15Q1apVFRYWpsOHD0uS9uzZo2bNmikkJETNmjXT3r17JUm7du1S3bp1VatWLb300kuJvpcJffHFF3rmmWfin48ZM0aPPPKIli9frjJlyqhUqVIKCAhQ165dL9g+5xUsWFC1atWSv7//BcM3bdqksLAwZc+eXX5+fmrUqJF++uknSVLx4sV1/Phx/fvvv5fNl6astRn2UaNGDZuVnIk4Y98Y18vWHVnJhoyubAcOb2L3HdrmdCwAAHCdbNy40ekINkeOHNZaa+fOnWtz585t9+3bZ+Pi4mxYWJhdsGCBtdba4sWL26NHj1prrT169Kht0KCBPXPmjLXW2rffftu++uqr9ty5c7Zo0aJ2586d1lpru3btatu2bWuttXbIkCE2NDTURkREWGutPXv2rD137py11tqtW7fa898B586dGz+PtdZ+9dVX9vXXX7fWWhsZGWlr1Khhd+7caadMmWKbN29uY2Nj7YEDB2yePHnspEmTLnltvXr1ih9evHhx+/nnn1trrX388cdtcHCwPXXqlD1y5IgtUKCAtdbamJgYGx4eHv86S5cubT0ej/37779t1apVbUREhD116pQtU6aMfe+996y11jZt2tRu3brVWmvt0qVLbZMmTS7JMWrUKDto0KD450OGDLns/G3btrUTJkyw1lr7xRdfxL9PSWX8559/bLly5eLfp+PHj1trre3du7f96aef4rdnwhwJt1OXLl2sx+OxU6dOtbly5bLr1q2zcXFxNjQ01K5evTrJ9/38tj2/XmutlWSnTZtmrbX26aefjn8P27VrZ8eMGWOttXbkyJG2Y8eO1lpr27dvb8eOHWuttXbYsGHxrzUpR44csaVLl45/3rp1a7tgwQI7adIk26dPn/jh33zzjX344YeTXE7C98Fa789j2bJl7bFjx+zZs2dtWFiYHThwYPz4vn372smTJyeb7Uol9jtA0gqbRF9y4gItuEo5suXQC/eOUa/DW/XetIc03/+w1s7sqK552+vBjm9yERcAALKSWc9J/65P3WXeFCy1SfmhZ7Vr11bRokUlSdWqVdPu3btVv379C6ZZunSpNm7cqHr16kmSoqOjVbduXW3evFmlSpVSyZIlJUndunXT8OHD4+fr0KGDsmXLJkmKiYnRwIEDtWbNGrndbm3dujXRPLNnz9a6devi986Fh4dr27Zt+uuvv9StWze53W4VKVJETZs2TdHr69DBe2X04OBgnTlzRrly5VKuXLkUFBSkkydPKkeOHBo8eLD++usvuVwuHThwQIcPH9bChQvVsWPH+Pzt27eX5N3LtnjxYt11113x64iKirpkvYcOHVKBAgUuGZ7c/EuWLNHUqVMlSffcc0/8IYfW2kQz/vnnn+rcuXP83sMbbrhBktS3b1+9++67uv322zV69Gh9/fXXiW6b9u3byxij4OBgFSpUSMHBwZKkypUra/fu3dq/f3+i73tiAgIC4vfq1qhRQ3PmzIl/TT/+6D2arUePHvF75xYtWqQpU6bED3/22WcTXe55BQoUUKlSpbR06VKVLVtWW7ZsUb169RI9b9OYxO4Sl7iKFSvq2WefVYsWLZQzZ05VrVpVfn7/X68KFiyogwedvelAhix7xpj2ktqXKVPG6SiOKFqonD554A/NXvqDPl//hr44/YuWjfhTz7b4UpVKhTodDwAAZBGBgYHx/3a73YmeX2etVYsWLfTdd99dMHz16tXJLjtHjhzx//7oo49UqFAhrV27Vh6PR0FBQYnOY63Vp59+qlatWl0wfObMmVf0Jf6886/P5XJd8FpdLpdiY2M1fvx4HT16VCtXrpS/v79KlCihyMhIeXe2XMrj8Shv3rxas2ZNsuvNli2bwsPDr3r+hJLLmNg2qVevnnbv3q358+crLi5OVapUSXS5l9s2brc70fc9Mf7+/vFZkvocSRcWsSt9P7t06aIffvhBFSpUUKdOnWSMUdGiRbVv3774afbv368iRYpc0XL79OmjPn36SJIGDx4c/8cPSYqMjIwv/E7JkOfsWWunW2v75cmTx+kojmoZdre+77VMd7mqaENAhPrO66FPJw9K8hcMAADIRNq8Ld33S+o+rmCvXnJy5cql06dPS5LCwsK0aNEibd++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t25d1axZU6tWrVKrVq1UunRpffnll5K8N05v1qyZQkNDFRwcfMFNzF9//XVVqFBBLVq0ULdu3eL3IO3YsUOtW7dWjRo11KBBA23evPmSHFu3blVgYKDy588vSTp8+LA6deqkqlWrqmrVqvGv/8MPP1SVKlVUpUoVffzxx5K8BbhixYoaMGCAQkNDtWDBggue79u3T++99178NhoyZEj8er/55huFhISoatWq6tGjhxYvXqxp06bp6aefVrVq1bRjx44k8+/atUt169ZVrVq19NJLLyW6fXfv3q0KFSqob9++qlKlirp3767ff/9d9erVU9myZbV8+XJJ0tmzZ3X//ferVq1aql69un7++WdFR0fr5Zdf1vfff69q1arp+++/lyRt3LhRjRs3VqlSpTR06ND4dSW2bSTpzTffVPny5dW8eXNt2bIl0ZzneTwelShRQidPnowfVqZMGR0+fFg///yzevXqJUnq3Lmz/vjjD118S7vs2bPH/wwEBAQoNDRU+/fvl6Rk57/99ts1fvz4ZLOlmLU2wz5q1KhhcW027FhhOwyvYkNGV7bvTujrdBwAAJCMjRs3Oh3B5siRw1pr7dy5c23u3Lntvn37bFxcnA0LC7MLFiyw1lpbvHhxe/ToUWuttUePHrUNGjSwZ86csdZa+/bbb9tXX33Vnjt3zhYtWtTu3LnTWmtt165dbdu2ba211g4ZMsSGhobaiIgIa621Z8+etefOnbPWWrt161Z7/jvg3Llz4+ex1tqvvvrKvv7669ZaayMjI22NGjXszp077ZQpU2zz5s1tbGysPXDggM2TJ4+dNGnSJa+tV69e8cOLFy9uP//8c2uttY8//rgNDg62p06dskeOHLEFChSw1lobExNjw8PD419n6dKlrcfjsX///betWrWqjYiIsKdOnbJlypSx7733nrXW2qZNm9qtW7daa61dunSpbdKkySU5Ro0aZQcNGhT//O6777YfffSRtdba2NhYe/LkSbtixQpbpUoVe+bMGXv69GlbqVIlu2rVKrtr1y5rjLFLliyx1tpLnv/222/2gQcesB6Px8bFxdm2bdva+fPn23/++ceWK1cu/n07fvz4Jdskufzt27e3Y8eOtdZaO2zYsPjPSUK7du2ybrfbrlu3zsbFxdnQ0FB73333WY/HY6dOnWo7duxorbX2+eeft+PGjbPWWnvixAlbtmxZe+bMGTt69Gj78MMPxy9vyJAhtm7dujYyMtIePXrU3nDDDTY6OjrJbXN++NmzZ214eLgtXbp0/PuSlEcffdSOGjUq/vU2a9bMWmtt5cqV7b59++KnK1WqVPy2S8yJEydsyZIl7Y4dOy47//79+22VKlUSXU5ivwMkrbBJ9CW/1KmMyKgqlaqhr/PO1qBJ7fWNWaoTozrpjV6T5XK7nY4GAACS8c7yd7T5v0v3Cl2LCjdU0LO1Ez8cLTG1a9dW0aJFJUnVqlXT7t27Vb9+/QumWbp0qTZu3Kh69epJkqKjo1W3bl1t3rxZpUqVUsmSJSVJ3bp10/Dhw+Pn69Chg7JlyyZJiomJ0cCBA7VmzRq53W5t3bo10TyzZ8/WunXr4vfOhYeHa9u2bfrrr7/UrVs3ud1uFSlSRE2bNk3R6+vQoYMkKTg4WGfOnFGuXLmUK1cuBQUF6eTJk8qRI4cGDx6sv/76Sy6XSwcOHNDhw4e1cOFCdezYMT5/+/btJXn3BC5evFh33XVX/Dqioi69QvqhQ4dUoECB+Od//vmnvvnmG0mS2+1Wnjx5tHDhQnXq1Ek5cuSQJN1xxx1asGCBOnTooOLFiyssLCx+/oTPZ8+erdmzZ6t69erxmbZt26a1a9eqc+fO8XsTb7jhhktyJZd/0aJFmjJliiSpR48eSR7WWLJkSQUHB0uSKleurGbNmskYo+Dg4Pjz1mbPnq1p06bF7w2NjIzU3r17E11e27ZtFRgYqMDAQBUsWDB++ye2bTwejzp16qTs2bNL+v/3NzldunTRa6+9pvvuu08TJ05Uly5dJOmSvXiSZIxJdBmxsbHq1q2bHn30UZUqVeqy8xcsWFAHDx68bLaUoOxBBW8orOG95mvQN600PXC7zoxqoQ96zZJ/QKDT0QAAQDoWGPj/3xXcbnei59dZa9WiRQt99913FwxfvXp1sss+/0Vdkj766CMVKlRIa9eulcfjUVBQUKLzWGv16aefqlWrVhcMnzlzZpJfxJNz/vW5XK4LXqvL5VJsbKzGjx+vo0ePauXKlfL391eJEiUUGRmZ6Bd5yXtYYN68ebVmzZpk15stWzZd7toUSa1DunDbXfzcWqvnn39e/fv3v2CaoUOHXnYbXS5/Srbxxdsx4TY+//mx1mrKlCkqX778BfMuW7Ys2eWd/wwmt22u9HNQt25dbd++XUePHtXUqVP14osvSpKKFi2qffv2qWjRooqNjVV4eHiiBVmS+vXrp7Jly+rxxx+PH5bc/JGRkfF/KLhWGfKcPaS+7EE59Hmf+WoVW1RzA47qwTGNdDaCC+AAAJBePVv7WY1uPTpVH1eyVy85uXLl0unTpyVJYWFhWrRokbZv3y7Je4XCrVu3qkKFCtq5c2f83pzz52AlJjw8XIULF5bL5dK4ceMUFxd3yXokqVWrVvriiy8UExMjyXvu29mzZ9WwYUNNnDhRcXFxOnTokObOnZsqrzM8PFwFCxaUv7+/5s6dqz179kiS6tevr+nTpysyMlJnzpzRL7/8IknKnTu3SpYsqUmTJknylpq1a9destyKFSvGby9Jatasmb744gtJUlxcnE6dOqWGDRtq6tSpioiI0NmzZ/XTTz+pQYMGl83cqlUrjRo1Kv68yQMHDujIkSNq1qyZfvjhBx0/flyS9N9//0m6cBsnl79evXqaOHGiJF3z+WatWrXSp59+Gl/azv9h4OL3OylJbZuGDRvqp59+0rlz53T69GlNnz49fp5hw4Zp2LBhlyzLGKNOnTpp0KBBqlixom688UZJ3r2CY8eOlSRNnjxZTZs2TbRIvvjiiwoPD7/gvMHLzb9161ZVqVLlsq8zJSh7iOdyu/V+n1m6U1W0PPCsHvi2iY6fSJ1dyAAAIOvo16+f2rRpoyZNmqhAgQIaM2aMunXrppCQEIWFhWnz5s3Kli2bPv/8c7Vu3Vr169dXoUKFlNTF9wYMGKCxY8cqLCxMW7dujd9TFRISIj8/P1WtWlUfffSR+vbtq0qVKik0NFRVqlRR//79FRsbq06dOqls2bIKDg7WQw89pEaNGqXK6+zevbtWrFihmjVravz48apQoYIkqVatWurQoYOqVq2qO+64QzVr1ox/bePHj9fIkSNVtWpVVa5c+YKLupzXsGFDrV69Or7sfPLJJ5o7d66Cg4NVo0YNbdiwQaGhoerdu7dq166tOnXqqG/fvvGHZianZcuWuueee1S3bl0FBwerc+fOOn36tCpXrqwXXnhBjRo1UtWqVTVo0CBJUteuXfXee++pevXq2rFjR5L5P/nkE3322WeqVavWZfdKXs5LL72kmJgYhYSEqEqVKvEXfGnSpIk2btx4wQVaEpPUtgkNDVWXLl1UrVo13XnnnReU482bN8cXuYt16dJF3377bfwhnJLUp08fHT9+XGXKlNGHH36ot99+O35ctWrVJEn79+/Xm2++qY0bNyo0NFTVqlXTiBEjLjv/3Llz1bZt2yvfcIkwye3mTO9q1qxpV6zgPnFp4f2JA/Vt5DyVjHFpWMepurlgKacjAQCQ5W3atEkVK1Z0OkaqOXPmjHLmzClrrR5++GGVLVtWTzzxhNOxUsX51xYREaGGDRtq+PDhCg0NTfH8jz32mNq3b59ubgWR2bVr104//vijAgICnI6ihg0b6ueff1a+fPkuGZfY7wBjzEprbc3ElsWePSTqqa7D9FDeO7TH36MBP3fU7oOJnwgNAABwtb7++mtVq1ZNlStXVnh4+CXnkWVk/fr1U7Vq1RQaGqo777zzioqeJA0ePPi63JgeXjNmzEgXRe/o0aMaNGhQokXvarBnD8n6ZuZb+uTweBWONfqg5QSVLx7sdCQAALKszLZnD8CVYc8eUlXP257X0zffp3/9rJ6Y3U0bd65yOhIAAACAFKDs4bK6tnxSg0s8qGN+VoP+7Kn12/92OhIAAFlWRj4qC8DVu5qf/QxZ9owx7Y0xw6/1Sj9IuTuaDNSLpR7TCbfVk/Pu05oti5yOBABAlhMUFKTjx49T+IAsxlqr48ePJ3mPyaRwzh6uyC8LR+mNrR8oh0d659bPVaNS6ly6GAAAXF5MTIz279+vyMhIp6MAuM6CgoJUtGhR+fv7XzA8uXP2/K5LMmQabevfL7fLX69tfltPLxmgt+M+Ue1gLgkMAMD14O/vr5IlSzodA0AGkSEP44SzWt/aQ69WGqJoIz2z/DEtWfer05EAAAAAXISyh6vSIuxuvR78mmKN9PzfT2rpujlORwIAAACQAGUPV61JrTv1RsjrijXS4L8f198b/nA6EgAAAAAfyh6uSeOad+jVKq8oykjPLn1UqzbNdzoSAAAAAFH2kAqa1b5Lr1R6WZFGembxAK3bssDpSAAAAECWR9lDqmgR1kUvlx+sCCMNWvCg/tm+xOlIAAAAQJZG2UOqaV2vu14o97zOuqQn5z2grbvXOB0JAAAAyLIoe0hVbevfq2dLD9IJt9UTc3po5/5NTkcCAAAAsiTKHlLd7Y366Kmi/XXYz+qJWXdr/5HdTkcCAAAAshzKHtLE3S0e1WM3dddef6vHpnbUoeMHnI4EAAAAZCmUPaSZHm2e18AbOmlHQJyemNxOJ04fdzoSAAAAkGVkyLJnjGlvjBkeHh7udBRcRp8Or+uBXC21MTBGj0xopdNnTzkdCQAAAMgSMmTZs9ZOt9b2y5Mnj9NRkAIP3/mhegXdqrVBUXr02xY6FxXhdCQAAAAg08uQZQ8Zz5Ndh6uru6pWBEXo8TEtFRMb43QkAAAAIFOj7OG6eeHeb3W7ymlxULieGNVSnrg4pyMBAAAAmRZlD9fVaz0mqU1sMc0PPKanRrel8AEAAABphLKH68q4XHq793Q1jS6oOf4H9OLYzk5HAgAAADIlyh6uO5fbrQ/v/1X1o/Jqunu7Xv3mHqcjAQAAAJkOZQ+OcLv99Unv31U7Kocm2/V6e0IfpyMBAAAAmQplD44JCAjUpz3mqHpkoMbHLNcnkx51OhIAAACQaVD24Kjs2XLp0+6zVSXKT6PO/qmvpj7vdCQAAAAgU6DswXF5ct6gYXfPUtlot748OV1jf3nD6UgAAABAhkfZQ7pwY96b9EmnaSoe7dKnRyZq0u9DnY4EAAAAZGiUPaQbNxcorg9v+14FY6X3932lXxaOcToSAAAAkGFR9pCulCpaUR80G6s8cUZvbn1Pc/+e4nQkAAAAIEOi7CHdqViqht6+9TMFWGnIupe1bP3vTkcCAAAAMhzKHtKl0EqN9Hr1t+Ux0gvLHtO6bUudjgQAAABkKBmy7Blj2htjhoeHhzsdBWmoQWh7vVTxBZ1xS8/M76ute9c7HQkAAADIMDJk2bPWTrfW9suTJ4/TUZDGWtW9R8+WfETH3NJTv92j/Yd3OR0JAAAAyBAyZNlD1tKp8YMaVLin9vlbPfbz7Tpy4qDTkQAAAIB0j7KHDOGe1s/o4XwdtT0gTo/90E4nT//ndCQAAAAgXaPsIcPo2/FN9cnRVP8ExeixCa109txZpyMBAAAA6RZlDxnKo3cN1b3+NbUqKFKPf9NC0THRTkcCAAAA0iXKHjKcZ+8ZrTtUXkuDTmvQ6FaKi41zOhIAAACQ7lD2kCG90uMHtYkrpvmBx/TMmPay1jodCQAAAEhXKHvIkIzLpbd7TVeTmPya7b9PL465y+lIAAAAQLpC2UOG5XK79dF9s3VrVG5Nc23R6+N6Ox0JAAAASDcoe8jQ3G5/fdJrtmpEZdMPnpV6/7tHnI4EAAAApAuUPWR4QYE5NOze31Qlyl/joubqsykvOB0JAAAAcBxlD5lCzuz59FmXX1Q22q2Rp3/WqOlvOR0JAAAAcBRlD5nGDXkKa1inqSoaY/T5sfEa/+uHTkcCAAAAHEPZQ6ZyU4GSGtZusgrFGn18aJQm//G505EAAAAAR1D2kOncUri8Pmk1XvnjpPf2fqYZC0Y5HQkAAAC47ih7yJTK3BKi95uMUZ44oze3faA5y8Y7HQkAAAC4rih7yLQql66pdxt8pRweaciG/2nByilORwIAAACuG8oeMrVq5evpjbBhCrLS82tf1rJ1052OBAAAAFwXlD1kemFVmmhI9Q/lZ6VnVjyn1ZtmOx0JAAAASHMZsuwZY9obY4aHh4c7HQUZRKPQVnq+yluyVhq0+Alt2DrX6UgAAABAmsqQZc9aO91a2y9PnjxOR0EG0qpOBz1dfohijPTogoHasmux05EAAACANJMhyx5wtdrXv1uPl3xWEUYa+Ec/7djzt9ORAAAAgDRB2UOW07lJTz12yyCddls9POc+7T2wzulIAAAAQKqj7CFL6tq8jwYWflj/ua0enNVdB/7d5HQkAAAAIFVR9pBl3dt6gB4q+ICOuK0enH63/j263elIAAAAQKqh7CFLu6/t4+p3Q08d8rPqP/UOHT2+2+lIAAAAQKqg7CHL69fxGd2ft4v2+XvU/8cOOn5in9ORAAAAgGtG2QMkDej0knrn7KRd/h49OLmdToYfcjoSAAAAcE0oe4DPo51fV49sbbXNP04P/nCbzpw97nQkAAAA4KpR9oAEBnV5R/cENNcm/xj1n9BCEedOOh0JAAAAuCqUPeAiz9zzsbr4NdR6/2g9OK65Is+dcjoSAAAAcMUoe0AiBt/7uTq7wrQ6MEoPfdtcUVFnnY4EAAAAXBHKHpCEl3p8rU62ulYEnNOAb5opOvqc05EAAACAFKPsAUkwxujVXmN1uydYywPOauCYZoqJjnI6FgAAAJAilD0gGcYYvdZ7vDp4KmhJ4Gk9Oqa5YmNjnI4FAAAAXBZlD7gMY4ze6P2D2sWV1sLAk3psVAvFxcY5HQsAAABIFmUPSAFjjN7sNUVt4orrr8DjepzCBwAAgHSOsgekkMvt1tu9flbr2KKaF3hUj43ikE4AAACkX5Q94Aq43G6903uG2sQV0/zAY3qUwgcAAIB0irIHXCHvHr7pahtXUgsC/9PAUU25SicAAADSHcoecBVcbrfevn+a2seV0aLAk9yWAQAAAOkOZQ+4Bv+7/yd18JTT4sBwDRjTRFHceB0AAADpBGUPuEZv3jdFt9tKWhp4WgPGNNG5yLNORwIAAAAoe0BqeL3397pTwVoeeFYDxjZRxLnTTkcCAABAFkfZA1LJK70mqIurulYEndOD3zTV6bMnnY4EAACALCxDlj1jTHtjzPDw8HCnowAXeLHHN+ruV0urgyL10LfNdfL0f05HAgAAQBaVIcuetXa6tbZfnjx5nI4CXOK57qPUK/BWrQ2K0oAJzXU8/JjTkQAAAJAFZciyB6R3T3X9Sn2yNdI/gdEaMLGFDh3b73QkAAAAZDGUPSCNPH73MD2Yq5W2BMbo4R/bat+/O5yOBAAAgCyEsgekoQF3fqBHbrhDuwPiNGD67dqx9x+nIwEAACCLoOwBaaxPh9f05E299K+f1cDZXbVpx3KnIwEAACALoOwB10H31k/rueIP64Tb6pG592nVprlORwIAAEAmR9kDrpM7mz6kl8o+r0iXNGjxQC1cPd3pSAAAAMjEKHvAddS2/r16LfgNWUnPrX5Ovy2Z4HQkAAAAZFKUPeA6a1qrk96p9bGCPNKQzW/qx7lfOR0JAAAAmRBlD3BAWEgLfdhopPLGGb21+1N9++v7TkcCAABAJkPZAxwSUjZMn7acoEKxRh/+O0bDp77sdCQAAABkIpQ9wEFlbwnRlx1+UokYlz4/+aM+/P5RpyMBAAAgk6DsAQ4rWqiMht/5qypGB2h05Fy9+k03pyMBAAAgE6DsAelA/huK6Ovuc1UrMocm23/09Mg28sTFOR0LAAAAGRhlD0gncubIoy/vm6/G0QX0q99+PTyqsaKizzkdCwAAABkUZQ9IRwICAvXJ/XPUNra0FgacVL8xDRV++qjTsQAAAJABUfaAdMblduvtPlPV1VVLqwPOqe93LXTgyE6nYwEAACCDoewB6dQLPUapf6622h4Qq/4/d9TmXSudjgQAAIAMhLIHpGMP3/mOnrqpt476eTTwj55auu43pyMBAAAgg6DsAelc99ZP6eWyzyrKJT29YpB+XTze6UgAAADIACh7QAbQtn5PvVvzAwV6pCFb/qfvZn/kdCQAAACkc5Q9IIOoG9Janzb9RgViXXrv4Eh98dPzTkcCAABAOkbZAzKQiqVq6IsOP6tUtFtfhE/Xm+N6Ox0JAAAA6RRlD8hgihUqpRFdf1f1qOya6FmpJ0e0VmxsjNOxAAAAkM5Q9oAMKG/uAvr6vgVqEl1Qs/0PqP+oBjp19j+nYwEAACAdoewBGVRAQKA+vn+27jTBWh54Vn3GN9X+Q9udjgUAAIB0grIHZGAut1uv9JygB3O20Y6AWD3wy+1atXG+07EAAACQDlD2gEzg4Tvf1QvFBijcZfX4kgGatWic05EAAADgMMoekEnc2WyA3q3+jgIkvbz1HY2e/rrTkQAAAOAgyh6QidSv3k6fNx+vIrFGHx//Xu9MeMDpSAAAAHAIZQ/IZMoVr6aRd/2mkKggfRuzVE+PbMutGQAAALIgyh6QCeXPW0Qj7lugRtE36le/veo/soFOnj7mdCwAAABcR5Q9IJMKDMimoff/oc6msv4OPKP7v2uq7XvXOR0LAAAA1wllD8jEXG63hvScqIfz3q69/h49OKeb5q/4yelYAAAAuA4oe0AW0P/2N/Rq2WcVK+mZ9S/q21nvOB0JAAAAaSxDlj1jTHtjzPDw8HCnowAZRtv6PTS04UgVjHXp/cPj9Pb4Pk5HAgAAQBrKkGXPWjvdWtsvT548TkcBMpSQsmEaccevCo4K0vjY5Xr86xaKiop0OhYAAADSQIYsewCuXqEbb9bI+xapeUxh/RHwr/qOqa9Dx/Y7HQsAAACpjLIHZEEBAYH6qO9s3etfW+sDI9XvpzZas2WR07EAAACQiih7QBb27D0j9cxNPXXUz6NHF/XT1HnDnY4EAACAVELZA7K4e1o/ow+qv6Mgj9Fru4fq4x8ecToSAAAAUgFlD4DqVWunkW1/Urkof408N09Pjmit6Ogop2MBAADgGlD2AEiSihUuq1G9FqpJdAHN9j+g+0fX04Eje5yOBQAAgKtE2QMQL3tQDg194E/1CAjThsBIPfBzWy1ZN9vpWAAAALgKlD0Al3im29d6sVh/hbutnlzxhL6Z+Y7TkQAAAHCFKHsAEnVns0c07NbPdUOcSx8cGachY7vKExfndCwAAACkEGUPQJKqV2iksXfNVo3oHPpRG9RvZH0dP/mv07EAAACQApQ9AMm6MW9hjeizWHeoopYHnFbvSS20evN8p2MBAADgMih7AC7L5Xbr1V4/6KkC9+i426OBiwfo+9kfOB0LAAAAyaDsAUixnm0H64OaHytvnEv/Ozhar43rznl8AAAA6RRlD8AVqRvSQiM6zVL1qBya5Fmn/iMa6L/wI07HAgAAwEUoewCuWOH8RTWyz2LdbstrWeAp3fdDM63YyHl8AAAA6QllD8BVcfu59XrvyXqqYDcdcXv06NIBGjPjTadjAQAAwIeyB+Ca9LztBX1a51Plj3Ppg+MT9fyoDoqOjnI6FgAAQJZH2QNwzWpWbqpvus5Vvai8muHepd5j6mrPwc1OxwIAAMjSKHsAUkXeXPn1eZ956hFwqzYHROu+WXdq1qIxTscCAADIsih7AFKNy+3WM92+0utlnpHLSoO3va/3JvaR9XicjgYAAJDlUPYApLq29XtqeOufVCkqUN9ELdeDIxroRPhhp2MBAABkKZQ9AGmiVNFyGn3/ErWPK6slAeHq8UNzLVn3q9OxAAAAsgzKHoA0E+AfoP/d/6OeLtRDJ9wePb7ySX310wtOxwIAAMgSKHsA0lyPNs/qi/pfqUiMW8NOTdMTI1rp7LkzTscCAADI1Ch7AK6LkHL1Na77AjWJLqDf/Q+qx7h6Wr15odOxAAAAMi3KHoDrJmeOPBr6wJ8amPs2HfCP1cOL+2vUtCFOxwIAAMiUKHsArrv+nd7RsFqfqECcSx+d+FGDRrRUxLnTTscCAADIVCh7ABxRq0pzjeu2QE2iC2qO/yHdO66eVm2a73QsAACATIOyB8AxuXPm1dAH/tCA3O110D9ODy8ZoOFTX3Q6FgAAQKZA2QPguIc6/U/Dag9ToTi3Pg3/WY993UKnz55yOhYAAECGRtkDkC7UrNxE396zQM1jbtKfAf+qx/j6WrSGm7ADAABcLcoegHQjZ448+qjvHA268Q4d9YvT46uf0gcTB8gTF+d0NAAAgAznisqeMSaHMcadVmEAQJLua/eqRjQaq9Ix/hoTtUB9R9TT/iM7nY4FAACQoSRb9owxLmPMPcaYX4wxRyRtlnTIGLPBGPOeMabs9YkJIKupWLqmxvVeqk6qqNWBZ9RzentNnfeF07EAAAAyjMvt2ZsrqbSk5yXdZK0tZq0tKKmBpKWS3jbG3JvGGQFkUf4BgXqt1w96rfRT8rdGQ3Z/psFjOioq6qzT0QAAANI9Y61NeqQx/tbamGQXkIJp0krNmjXtihUrnFg1gOvs0NH9GvJjVy0JCle5KJdeajhU1So0cjoWAACAo4wxK621NRMbl+yevfMlzhgzLpGFjks4DQCkpcIFiuqrfgvUN3tLHfSLVf8lA/TZlCedjgUAAJBupfQCLZUTPvFdpKVG6scBgKQZY/TYXR/o07AvVCzGT1+ema1+w+vp32P7nI4GAACQ7lzuAi3PG2NOSwoxxpzyPU5LOiLp5+uSEAAuUrNSQ43rtUTt4kprWUC4ekxto2nzRzodCwAAIF1J9py9+ImMecta+/x1yHNFOGcPwNS5X2nYzqE65jZq6ymnl7pPUFBgkNOxAAAArourPmfvPGvt88aYm40xtxpjGp5/pG5MALhytzfpr286/KKa0bk0zb1N946to+X//OF0LAAAAMeldM/e25K6StooKc432FprO6Rhtstizx6A86zHo89+elLjw2crzkh3Bd2qJ+/+Ui632+loAAAAaSa5PXspLXtbJIVYa6NSO9y1oOwBuNj67Uv1vz8f0j+BsaoaFaCXW36tciVCnY4FAACQJq75ME5JOyX5p14kAEgbwWXCNO7+5eriqqHN/lHq/WcPffnTM07HAgAAuO5SWvYiJK0xxnxljBl6/pGWwQDgavn5+evFHmP0cfX3dVOsW5+dmqW+w+tq/6HtTkcDAAC4blJa9qZJel3SYkkrEzwAIN2qX621xvdaqg6ecloZcFr3zuyocbPedjoWAADAdZGic/bSK87ZA5BSvy4er083vK29AVKj6Pwa0nm8CuQr4nQsAACAa3LN5+wZY3YZY3Ze/EjdmACQdlrf2l0Tus1Xy5ib9Zf/UXWf0lI/zv3K6VgAAABpJqWHcdaUVMv3aCBpqKRv0yoUAKSFPDlv0Ad9f9WQYg/JI6tX93yqJ0e0UfiZ/5yOBgAAkOpSelP14wkeB6y1H0tqmrbRACBt3NnsYU3oNFv1Y27UbP/96jqxoWb8NcLpWAAAAKkqpYdxhiZ41DTGPCgpVxpnA4A0U/DGm/XZA/P1XKGeijZWg3d+rEEjWunkqaNORwMAAEgVKb2p+twET2Ml7Zb0vrV2SxrlShEu0AIgNRw6ul9v/tRD8wOPqUiM1YOlB6hTkwFOxwIAALis5C7QwtU4AcDnu9kfa9TeETrsJzWJuUkv3/Wtbsx7k9OxAAAAkpQaV+PMY4z50Bizwvf4wBiTJ3VjAoCzurV8XOPvnK0mMTfpz4DD6ja5uX6YM9TpWAAAAFclpVfjHCXptKS7fY9TkkanVSgAcErBfEX0yQO/a0jRByVJrx/8Wo983USHjx9wOBkAAMCVSWnZK22tHWKt3el7vCqpVFoGAwAndW72sL6/a66axxTWfP+j6v5TS43/7QOnYwEAAKRYSsveOWNM/fNPjDH1JJ1LzSDGmIrGmC+NMZONMQ+l5rIB4Grky1NAH/WdrddLPCZ/Gb397xgNGN5I+w7vdDoaAADAZaW07D0k6TNjzG5jzG5JwyQ9eLmZjDGjjDFHjDH/XDS8tTFmizFmuzHmOUmy1m6y1j4o72GiiZ5gCABO6Nj4AX3XZZ5axRbT4oDj6j6jvb6a+rw8cXFORwMAAEhSSm+qvsZaW1VSiKQQa211a+3aFMw6RlLrhAOMMW5Jn0lqI6mSpG7GmEq+cR0kLZT0R4pfAQBcB3lz5df7fWbqnXIvKJ/HpWHhM9R7ZB2t377U6WgAAACJSunVOP9njMlrrT1lrT1ljMlnjHnjcvNZa/+S9N9Fg2tL2u479y9a0kRJHX3TT7PW3iqp+5W9DAC4Plrd2k0Tey5TZxOiTf6R6rugj94a31vR0VFORwMAALhASg/jbGOtPXn+ibX2hKTbrnKdN0val+D5fkk3G2MaG2OGGmO+kjQzqZmNMf3O3wLi6NGjVxkBAK5etsDsGtJzvL6s85nKRAdpQuxKdR1TS3P/nuJ0NAAAgHgpLXtuY0zg+SfGmGySApOZPjkmkWHWWjvPWvuotba/tfazpGa21g631ta01tYsUKDAVUYAgGtXo1Ijjeu7XP1ytNBRvzgN2jBEz4xqp5OnjzkdDQAAIMVl71tJfxhj+hhj7pc0R9LYq1znfknFEjwvKungVS4LABzlcrv1SOcPNa71T6oTnVez3HvU5fvG+n7Ox05HAwAAWVxKL9DyrqQ3JFWUVFnS675hV+NvSWWNMSWNMQGSukqadpXLAoB0oUSRcvqy30INLnyfrKQ3Do7Ug8MbaO/BbU5HAwAAWZSx1iY90hhjk5vgMtMYY76T1FhSfkmHJQ2x1o40xtwm6WNJbkmjrLVvXk34mjVr2hUrVlzNrACQZk6cOqb/TeqlOe49yuWx6pyrmR654yO53G6nowEAgEzGGLPSWpvoresuV/bmSZoi6Wdr7d4EwwMk1ZfUS9Jca+2Y1AycUpQ9AOnZ78sm6fO1b2hboEeVotwaWPM1NQjt4HQsAACQiVxL2QuSdL+8t0IoKemkpGzyHv45W9Jn1to1qZw3xSh7ANK7mNgYfTRpoKaeW6hzLqPmcbfo+TtH64a8hZyOBgAAMoGrLnsXLcRf3sMxzyW8DYOTKHsAMood+zbovVkPalHgSRWK8eieQnfr/vZDnI4FAAAyuOTKXkqvxilrbYy19lB6KXoAkJGULlZZX/ZboFeKPqRA69JH/01Wz+G1tHrzAqejAQCATCrFZQ8AcO3ubDZAP9y7VHeaytrkf04PLHlIQ8berbMRp52OBgAAMpkMWfaMMe2NMcPDw8OdjgIAVyxHthx6pedEjbj1K1WJzq4ftUl3ja+rSb8PdToaAADIRFJ8zl56xDl7ADKD0dNf1/jDE3XY36W6Ubn1VMvPVK5ENadjAQCADOBarsZ5WlJiExhJ1lqbO3UiXh3KHoDM4kT4Ub015T7Nce1WgLVq666qJzt/pRzZczkdDQAApGNXfYEWa20ua23uRB65nC56AJCZ5MtTQO/eP0Nf1vhQZaOzaZJdr84T6mrCb+85HQ0AAGRQGfKcPQDIrOoEt9S3/Vdo0I13K07SW/9+o95f1daqjfOdjgYAADIYyh4ApEP3tXtJk7r+pdttBW0IiFC/ZQ/r+dEddfLUUaejAQCADIKyBwDpVJ6cN+j13pM0qv5IVYvJpRmunbpzUmMNnzpYnrg4p+MBAIB0jrIHAOlccNk6GtFviV6+ub+yeVz6NHy6uo+spQWrpjsdDQAApGOUPQDIIO5qPlCTey7TPX41tccvSo+se15PjGipA0f3OB0NAACkQ5Q9AMhAggKz6/nuo/Vty8mqF51ff/gdVLfpt+nd7/orKirS6XgAACAdyZBlzxjT3hgzPDw83OkoAOCIUkUr6rN+8/ReuedVKNZf46IXq/M3tfTd7I+cjgYAANKJZG+qnt5xU3UAkDxxcfp6+ouadGyaDvu7VD0ySA/VfVN1Q1o6HQ0AAKSxq76pOgAg/XO53ep/+1ua0nWB7lBFbQmI0IBVg/TEiJba9+9Op+MBAACHUPYAIJPIk/MGvdrrB41rOl51Y270ns83s73eGn+/zkVFOB0PAABcZ5Q9AMhkyhWvps8fmK8PKrysm2MDNCH2b935TW2Nm/WO09EAAMB1RNkDgEyqRdjd+q7PCj2Wr5NijfTukW9171c1NH/lNKejAQCA64CyBwCZmMvtVt8Or2lKt4W6ywRrh3+kHl0/WAOGN9KmnSudjgcAANIQZQ8AsoBcOfLq5Z4T9F2rKWoaW0RLAo6rx/xeem5UBx0+vs/peAAAIA1Q9gAgCylxcwV91He2vq41TNVicukX9y51/rm13hp/vyIizzodDwAApCLKHgBkQTUrN9aIfkv0dumnVTjWXxNi/1anb+vo659fkCcuzul4AAAgFVD2ACALa1u/pyb2WaknbrhbbisNPTlNd40M1c/zhzsdDQAAXCPKHgBkcS63W/e3f0k/9lyungH1dNwdqxd3f6r7vqqtpetmOR0PAABcJWOtdTrDFTPGtJfUvkyZMg9s27bN6TgAkKkcPfGvPp76sH7XZkUZo4YxBfVoq49V5pYQp6MBAICLGGNWWmtrJjouI5a982rWrGlXrFjhdAwAyJS27lmvT2c/poX+R+RvrZrbcnrs9mEqdMPNTkcDAAA+yZU9DuMEACSqXPFgffrAn/qs+vuqHJNT093bddfUlnpjXE+dOnPS6XgAAOAyKHsAgGTdWrW1RvdbprdKPqbCsQH63rNanb6vpw+/f1iRURFOxwMAAEmg7AEAUqRdw76a2Helnr+pl3J53Bod+Zc6jautr6Y+r7i4GKfjAQCAi1D2AAApZlwu3dPqKf14/2o9krejjJWGhc/QHaNC9e2st2Q9HqcjAgAAH8oeAOCKudxu9ev4hn7quUJ9sjVVhLF658gE3T0iVNPmfel0PAAAIMoeAOAaBAYG6fG7P9GP3Rarm7uWjrhj9MKez3Tv8Br6Y/lEp+MBAJClcesFAECqOXrisIZOfVR/2H902u1S7agcur/Oy6pX9TanowEAkClxnz0AwHW17/BuDfvlUc01OxRljOpG59MDDd5SjYr1nY4GAECmQtkDADhi+95/9NnsQfrLfVDWSPViCqlfk7cVXKaW09EAAMgUKHsAAEdt2LFUX/z5nBb5H5PLSvVjb9KDzd5TxVLVnY4GAECGRtkDAKQLqzfP19cLXtJi///kZ6UGcUX0UIv3Va54iNPRAADIkCh7AIB0ZcWGPzRi0RAtCTgpfys1iiuqh1t9oFLFKjsdDQCADCXTlT1jTHtJ7cuUKfPAtm3bnI4DALhKS9fP1qglr2pZQLgCrNTYU0wDWn2gkkUrOR0NAIAMIdOVvfPYswcAmcOiNbM0ZtnrWhZ4SkHWqpGnhAa0/lAlby7vdDQAANI1yh4AIENYsHqGxv79ppYHnFY2a9XQU0L9W76rMhzeCQBAoih7AIAMZcGqaRq74i0tDzitQCs1iLtZ/Zu/o/IlqjkdDQCAdIWyBwDIkJasnanRy97UsoBw+ftu2fBA07dUuTT36QMAQKLsAQAyuL//maNRi1/TkoATckmqF1NQDzR6QyHlbnU6GgAAjqLsAQAyhVUb52vUwiFaFHBMknRrzI3qU+81hVZq5HAyAACcQdkDAGQq67Yu1oj5L2qh/xF5JIVF51PPOi/p1qotnY4GAMB1RdkDAGRKG3as0Nd/Pq+FfocUY6QaUTnVNeQJtazbxeloAABcF5Q9AECmtn3vOg2f87zmu3YrwuVS1cgAdSrTR3c0fUjGGKfjAQCQZih7AIAs4cDR3fpy5tOaF7dRJ90uVYhyq93Nd6lH6+fkcrudjgcAQKqj7AEAspQT4Uf1xYyn9Xvk3zrq51KJaKnNjW3Ut93rCggIdDoeAACphrIHAMiSIs6d1lfTn9fsU/O039+oSIxVi5z11b/928qVI6/T8QAAuGaUPQBAlhYTG6PRM17RzCPTtSPQKn+sR00Dquuh9u8qf94iTscDAOCqUfYAAJDkiYvTd3M+0LS932ljYKxyx3nUUOX0QMv/qVTRik7HAwDgilH2AAC4yM/zRmjK1q+0OjBSgR6rW2MLqsetL6lW5SZORwMAIMUyXdkzxrSX1L5MmTIPbNu2zek4AIAMbMGqaZqw4n0tDfhPHnnv1de58gDdVr+n09EAALisTFf2zmPPHgAgtWzeuVIj576khWaPzrhdqhjlVtubO+ve1s/K7fZ3Oh4AAImi7AEAkEKHj+/TVzOf07zoNTrq59It0VLzPI3Ur91bypE9l9PxAAC4AGUPAIArFBF5ViOmv6DZJ//QngDpxliPGvsHq3+bd1S4QHGn4wEAIImyBwDAVfPExWn87Pc1c99E/RMYq+wej+rHFdN9jV9VlTJ1nI4HAMjiKHsAAKSCXxdP0OT1n2pF4GkZSbWi8+iOKgPU+tbuTkcDAGRRlD0AAFLRqs0LNG7ha1rsPqgIl/diLi1v6qCerV9QQECg0/EAAFkIZQ8AgDRw6Ogeff3rYP0VtUaH/V0qHGPVKKim+rX9nwrkK+J0PABAFkDZAwAgDUVGRWjMzNc15+hMbQ30KGecR7d6blGvRkMUUjbM6XgAgEyMsgcAwHUy7a+R+nnT11oZeEaSVCM6l+6o1F9t6/d2NhgAIFOi7AEAcJ2t27pYY/96TYvc+3TW5VL5KJdaFLhNvdu+rMCAbE7HAwBkEpQ9AAAccvj4AY2YNVjzI1fqkL9RoViPGgZU0/2t3lTRgiWcjgcAyOAoewAAOCw6OkpjZ72p2YenaXNgnII8VnViC6hLjSfUILSD0/EAABkUZQ8AgHRk9pLv9NP6z7Xc/4SiXUZVovzUvHBH9Wj1PLduAABcEcoeAADp0K4DmzX695e0MHajjvq5dFOMVf2AEN3f8nUVu6m00/EAABkAZQ8AgHQsMipCY2e+rj+OztKm84d4xuRX5xqPq3GN252OBwBIxyh7AABkEL8vm6Qf136q5f7/KcplVDnST80Ld1CPVs8rMDDI6XgAgHSGsgcAQAaz+8Bmjf79ZS2I3aCjfi4VivGovn+w7mvxmooXKed0PABAOkHZAwAgg4qMitA3s97UH0d+0cbAOAV6rGrG5FOHyg/otno9nY4HAHAYZQ8AgExg7t9T9OOaYVrud0QRLpdKRxs1zF1f97V+VfnyFHA6HgDAAZmu7Blj2ktqX6ZMmQe2bdvmdBwAAK6rQ8f2acxvQ7Qw4m/tDZByxXlUx3Oz7q49SHVDWjsdDwBwHWW6sncee/YAAFmZJy5OU+Z9qd92fKuVAacVa4yqRPmrSaHb1LP1YAUFZnc6IgAgjVH2AADI5LbuXqNv5r6uxZ7NOurnUv5Yj251lVOPxi+rQsnqTscDAKQRyh4AAFlEZFSEvv3tHc09NEPrgqLlZ62qR+VUq1JddVfTR+Ryu52OCABIRZQ9AACyoOXrf9f3y97XEtc+nXa7VCzaql5QDfVsOUTFCpVyOh4AIBVQ9gAAyMJOnj6mMbNe1fyT87U90CrQY1UjJq/alO2hDg37srcPADIwyh4AAJAk/bZkgqb/87X+9t2+oVi01a1B1dWz+Uu6pTA3aweAjIayBwAALnD0xEF9M/sNLQpfqG2BVgEeq9CY3Gpd+h51avwQe/sAIIOg7AEAgCTNWfaDpq/7Usv9Duusy6WiMVZ1A0LUo9nLKnlzBafjAQCSQdkDAACX9V/4EY399XUtCv9LWwI98rdW1aNzqWWJLurc7GG53f5ORwQAXISyBwAArsjcFT/q59Wfa7n7kE67XSoSY1U3oIp6NH5RpW+p4nQ8AIAPZQ8AAFyVE6eO6Zvf3tDCE/O0OTDOe9++6BxqXryz7m72uPz82NsHAE6i7AEAgGu2YPUM/bhyqJa7DuiU26VCMR7VdpXTXbc+qeoV6jsdDwCyJMoeAABINeFn/tO3v/1Pi479qX8CoyVJlaMDVO/Gprq35XPKmyu/wwkBIOug7AEAgDSxZstCTVr8gZbFbdVhf5dyxXlUI66Q2lbuo5Z1unILBwBIY5Q9AACQpmJjYzT5z0/1x+7JWuV/StEuoxLRUp2g6uredDC3cACANELZAwAA182+f3dq/J9vaunZv7UjwMZf1KVx0Y7q2vxJBQQEOh0RADINyh4AAHDEH8sma8b64frbdUDhbpfyx3pU25RS59qPqVaV5k7HA4AMj7IHAAAcdfrsSU2Y864WHJ6t9YGR8hijilFuheWpr3tbDlbBfEWcjggAGRJlDwAApBsbdvytiQve1fLYTTrobxTksaoek0dNStypOxs/zGGeAHAFKHsAACDd8cTFadqCEZqzbYJW+h3TWZdLBWI9qqkS6lhjoOpVa+N0RABI9yh7AAAgXTt5+pgmzHlXi4/+ofWBUfIYo7JRRrVz1FT3ps+rWOGyTkcEgHSJsgcAADKMLbtX6/u/3tPyqPXaEyD5W6uqUTnUoMht6triKWUPyuF0RABINyh7AAAgw/HExemPvydr5j8jtcJ1QCfdLuWJ86imp7DaVL5fLWp34abtALI8yh4AAMjQIiLP6vvfP9SCgzO0JuCsYoxR8WipVmAVdan/lCqUquF0RABwBGUPAABkGvv+3aHxf76l5Wf+1rZAj1zWqnJUgGrnq6euTZ/RTfmLOR0RAK6bTFf2jDHtJbUvU6bMA9u2bXM6DgAAcMiSdb/q5xWfa6Vnp/71Nwr0WFWNzql6RW5Tl2ZPKEf2XE5HBIA0lenK3nns2QMAAJL3/L7pC0bpj23faZX7sMLdLuWO8yg0rqCalu2iDg36yO32dzomAKQ6yh4AAMgyIiLP6oc/PtTC/TO1JuC0olxGhWI9qmFKql21/moQ2t7piACQaih7AAAgSzp8/IAm/vGulp9YqH989+8rGS3VDAzWXfUGqWLpRL8fAUCGQdkDAABZ3tbda/TDgg+18twabQ+0MtaqUrS/aue5Vfc0e1Y35b/F6YgAcMUoewAAAAksXvurpq/8Qqs8O3TQ3yjAY1U1Jofq3tRSXZs9qVw58jodEQBShLIHAACQCE9cnGYsGqM/tnynVe5DOul2KVecR9Vi86te8Y7q3HiAAgODnI4JAEmi7AEAAFxGZFSEJv05VAv2TdNa/3BFuFzKF+tRNU8hNSp9lzo27Cs/P67oCSB9oewBAABcgZOnjuqHuR9p6eE/tM7/rKJcRgViPapmi6p5he5qXbe7XG630zEBgLIHAABwtY4cP6Dv536gv/9boPUB5xRrjArHWFVzlVCb4N5qXOMOGZfL6ZgAsijKHgAAQCrY9+9OTZr/vlaEL9XGgGjFGaNi0VbV/cqqfY1+Cgtp43REAFkMZQ8AACCVbdv7j6Ys+Eirzq7U5oBYWd89/EIDK+r22g+rWoVGTkcEkAVQ9gAAANLQ+u1/66cln2jNuXXaFuj9blU2yqh6thB1qvuYqpSp5XBCAJkVZQ8AAOA6Wb5hnmas+FxrozdpZ4BkrFWFaD9VzVZNt9d7VJVLhTodEUAmQtkDAABwwJK1s/TLquFaHbtde33Fr3y0n6pmC9HtdR9hjx+Aa0bZAwAAcNiiNTM0a/VIrYndrj0B3mHlo1ze4hc2UMFl6zgbEECGRNkDAABIR5asnalfVo/U2pit2u0rfuWiXKqWLVgd6wxQSLlbnQ0IIMOg7AEAAKRTS9b9ppmrRmhtzGbt8hW/slFG1YKqqEPth1StQgNnAwJI1yh7AAAAGcCy9bP1y6qvtTZ6s3b6il+ZKKNqQZXUruZDqlGJ2zkAuBBlDwAAIINZ/s8f+mXlcK2N2qQdvts5lIqWgv3Kq1W1+1S/2m0yxjicEoDTKHsAAAAZ2KqN8zV9xZdaF7lRWwM9kqRi0VbB7pJqUuEetaxzt1xut8MpATiBsgcAAJBJbNqxQlOXfqa1Z9doU0CMPMaoUIxHISqqBqXvVLsG98nfz9/pmACuE8oeAABAJrT7wGb9uHCoVp9crg2BkYoxRjfEehTiKai6t7RTx4YPKke2HE7HBJCGKHsAAACZ3L/H9mrKX0O18tgCrfc/q0iXUa44j4Jj86l24Rbq3OQR5cl5g9MxAaQyyh4AAEAWcvL0MU2ZO1TL//1T6/xO6Izbpewej6pE51Jo/ga6o+FAFS5Q3OmYAFIBZQ8AACCLijh3WlPnf6nF+37ROvdRnXC75GetKkYHKCRndXWo85AqlU70eyKADICyBwAAAMVER+mXxWO1YPtP+kf7dNDfe+uGMlFGVQLKqXlwDzWo1o4rewIZCGUPAAAAF/DExWnRulmas26s/onaom2+e/kVibGqoptVr1Qntat/nwICAh1OCiA5lD0AAAAka9POlZq29AutO71aGwOjFGuM8sZ5VCX2BtUq3FydGj2sfLnzOx0TwEUoewAAAEixf4/t009/DdOqY3/pH79TOuN2KchjVTk6u0Ly1lGn+gNV8ubyTscEIMoeAAAArlLEudOa+tdXWrp3pta7DuuYn0tua1U+2l9VslVRmxp9VbNSI6djAlkWZQ8AAADXzBMXp9nLJmje5kn6J26X9gR4hxePliq5b1H90rerTd2e8uc8P+C6oewBAAAg1a3Y8KdmrRqlDec2aHNAjOJ85/lVjs2n0IINdXuDh1XwxpudjglkapQ9AAAApKn9h3fp54Wfa82xRdrgH67Tbpf8rVWF6AAF5whRqxp9FFqhgdMxgUyHsgcAAIDr5lxUhH5ZOFpLdk3XRu3Xft/9/IpHS5Vct6hemU5qU7cHt3UAUgFlDwAAAI5Zsm625qwdqw3nNmrLRYd7Vi/YSB3rP6Sb8hd1OiaQIWW6smeMaS+pfZkyZR7Ytm2b03EAAACQQvsO79S0hZ9rzfFF2uB36v8P94wKUOUcIWpTo69CK9Z3OiaQYWS6sncee/YAAAAyrsioCP2ycJQW75qhDdqvAwkO96zoKqawkm3Vtt59CgrM7nBSIP2i7AEAACDdW7b+N81e80384Z6xxihnnEeVYnMpJF8ttavTX6VvqeJ0TCBdoewBAAAgQzl0bJ+mLfhSa47+pY3u//Sfn0vGWpWOdqmif2nVL9tJLcO6yc/P3+mogKMoewAAAMiwYmNj9PvySVq4ZYo2xWzXtoA4WWOUL86jirH5VK1AfbW/9UEVLVTC6ajAdUfZAwAAQKax68BmTV/8pdafWBZ/kRe3tSoX7aeKgRXUuFJXNQptL5fb7XRUIM1R9gAAAJApRUWf06zF47Rk5zRtitujXQHe4QVjPaoYV1DVb2qiDg36qUC+m5wNCqQRyh4AAACyhE07Vmjm3yO0/tQqbfQ/q3Mu760dykcHqGJQBTWufJfqV+vAXj9kGpQ9AAAAZDlnI8I1Y+EI/b1vjjZ7DmiPb69f/liPKnpuVPWC9dXu1n4qXKCEozmBa0HZAwAAQJa3ftsy/bpijDaeWqXN/md0xneuX5lotyoElFH9creree2uXOETGQplDwAAAEggIjJCsxZ/o+W7ftGWuD3aEej9TpwnzqOKsXkUnK+2bqvTV2W4rx/SOcoeAAAAkIyte9fr12Wj9M+J5drkd1In3S5JUukoo/J+xVW7xG26rV4vZQvM7nBS4EKUPQAAACCFvPf1+0ELt/6oLdE7tC0gVnHGKGecRxVicqpi7mpqGdpb1crXdToqQNkDAAAArtaBo7v1y+KvtfbIQm1yHdNRP+9ev2LRVuVNEYUWaaa29fvohtz5HU6KrIiyBwAAAKQCT1ycFq2dqXkbvtemcxu1OSBaMcYowGNVLsZf5QLLqUH529WkVme53VzoBWmPsgcAAACkgRPhh/XL4tFadWCuttqD8bd3yBPnUYXY3KqUp7pahPZQcFkO+UTaoOwBAAAA18HGnWs0e8UYbTyxQlv9Tui475DPm2OsyttCqnpTfbW7ta8K3ljM4aTILCh7AAAAwHUWFxun+aunaeGmKdp6brO2BEQq0mXi7+1Xzr+kwkrdppZh3RUUmMPpuMigKHsAAACAw06fPaWZi8dq5d7ftC1ur3YGeOQxRtk9HlWIzq4KOauoSfDdqlOllYzL5XRcZBCUPQAAACCd2XNou2YuHaV/ji7WNtcxHfI3kqQCsR6Vj7tRwfnr6LY696nEzZUcTor0jLIHAAAApGPWWi3fMFdz132nLafXaYv/GZ323di9VLRUzlVMNYo102317lPuHDc4nBbpCWUPAAAAyECioiI1e9l3WrpjhrbFeG/sHmuMAj1W5aIDVC5bOd1atpOa1LpD/n7c4iEro+wBAAAAGdjh/w5o1uIxWvPvfG21B7UvwHvIZ544j8rG5FT5nMFqWKWzwqq0kMvtdjgtrifKHgAAAJCJbN61UrNXfKONJ1Zqq/uEjvpu8VAg1qOysflUPm91Nat+j6qW4/5+mR1lDwAAAMikrMejFRvnat76idp8er22+J1WuO98vyIxVmU9+VUpfx21qtVTpYtVdjgtUhtlDwAAAMgi4uJi9Neqn7Vo88/e+/v5RyjCdyuHEtFSGVNYIYUaqE3d3ropPzd3z+goewAAAEAWFRkVod+Xf69lO2Zqe/QObfOPVpTv5u6lot0q41dMoUWbqnXdnsqbK7/TcXGFKHsAAAAAJEnhZ/7Tb0vGadW+P7Q9do+2B8QpzhgFeKzKxvirjH8p1SrZRs3rdFOObDmcjovLoOwBAAAASNTh4wf069IxWnvoL223B7UrwDs8u8ejMtFBKh1UWjVLtlKzWl0pf+kQZQ8AAABAiuw+sFm//f2NNh5dpu06or2XlL8yqlmylZrX7qLsQZQ/p1H2AAAAAFyVnfs2aM7Kb7Xx6PJEy1+Z8+WvTldlC8zubNgsiLIHAAAAIFXs2PuPfl85XhuOLdMOHdFe3w3eE5a/WqXaqHntuxVE+UtzlD0AAAAAaWLb3nX6Y+V32njMe9jnvgTlr2x0kMoElVWt0q3VrBblLy1Q9gAAAABcF1v3rNMfq7zlbwflL81R9gAAAAA4Yuuedfpj5XhtPL5cO3T0gvLnveBLKVW/pbma1+6iXDnyOhs2A6LsAQAAAEgXtuxZqz9WTtDG48u1M0H5C/RYlYrxUym/WxRyc0O1rHOP8uct4nDa9I+yBwAAACBd2nVgs/5YOUEbjizVLs+/2hXgkccYua1VyWiXSrmKqHKhOmpRq7uK3VTO6bjpDmUPAAAAQIbw77F9mvP3BK0/tFC7Yvdpp3+sol3evX/Fo6VSKqCKN9ZQ0+pdVb5kDYfTOo+yBwAAACBDCj/zn+Ysm6g1e//Uzuid2hEQpQiXS5JUOMaqtCefyucNUcPgO1W9fGMZ37isgrIHAAAAIFOIiIzQ3JU/auWOWdp5bpu2+59VuNtb8G6I9ahMXC6Vy1lRt1Zor1urtpfb7e9w4rRF2QMAAACQKcXGxmnBmulatuUXbT+zQTv9wnXUz1v+csV5VCY2u8pkK6NaJVuoSa0uCgrM4XDi1EXZAwAAAJAleOLi9PemhVq0YYq2nVyjXe7/dMDfe85fkMeqdIy/SvuXUNWijdSidjfly1PI4cTXhrIHAAAAIMvauHOt5q35TpuPr9BuHdZufytrjPysVYlol0q6blKlArXVNLSLShULdjruFaHsAQAAAIDP/sO79PvfE7Tx8BLtjtuvHQmu+HlzjFVJTz6Vyxui+pU6qkbFZnK53Q4nThplDwAAAACScOrMSf25YrJW7/lduyJ3aKd/RPxFX/LGeVQ6NoduLdxV/doPcjjppZIre37XOwwAAAAApCe5c+bV7Y376nb1lSTFxcZp0bpZWrplhnac+ke73Ce1+cAeh1NeOcoeAAAAACTg9nOrYWg7NQxtFz/sbGS0g4muTta64yAAAAAAXIUcQQFOR7hilD0AAAAAyIQoewAAAACQCVH2AAAAACATouwBAAAAQCZE2QMAAACATIiyBwAAAACZEGUPAAAAADIhyh4AAAAAZEKUPQAAAADIhCh7AAAAAJAJUfYAAAAAIBNKV2XPGHO7MeZrY8zPxpiWTucBAAAAgIwqzcueMWaUMeaIMeafi4a3NsZsMcZsN8Y8J0nW2qnW2gck9ZbUJa2zAQAAAEBmdT327I2R1DrhAGOMW9JnktpIqiSpmzGmUoJJXvSNBwAAAABchTQve9bavyT9d9Hg2pK2W2t3WmujJU2U1NF4vSNplrV2VVpnAwAAAIDMyqlz9m6WtC/B8/2+YY9Iai6pszHmwcRmNMb0M8asMMasOHr0aNonBQAAAIAMyM+h9ZpEhllr7VBJQ5Ob0Vo7XNJwSapZs6ZNg2wAAAAAkOE5Vfb2SyqW4HlRSQevdCErV648ZozZk2qpUk9+ScecDgEkg88o0jM+n0jv+IwiveMzmrUUT2qEU2Xvb0lljTElJR2Q1FXSPVe6EGttgdQOlhqMMSustTWdzgEkhc8o0jM+n0jv+IwiveMzivOux60XvpO0RFJ5Y8x+Y0wfa22spIGSfpO0SdIP1toNaZ0FAAAAALKKNN+zZ63tlsTwmZJmpvX6AQAAACArcupqnJndcKcDAJfBZxTpGZ9PpHd8RpHe8RmFJMlYywUtAQAAACCzYc8eAAAAAGRClL1UZoxpbYzZYozZbox5zuk8wHnGmGLGmLnGmE3GmA3GmMeczgQkxhjjNsasNsbMcDoLcDFjTF5jzGRjzGbf79O6TmcCzjPGPOH7f/w/xpjvjDFBTmeCsyh7qcgY45b0maQ2kipJ6maMqeRsKiBerKQnrbUVJYVJepjPJ9Kpx+S9UjOQHn0i6VdrbQVJVcVnFemEMeZmSY9KqmmtrSLJLe/tzZCFUfZSV21J2621O6210ZImSurocCZAkmStPWStXeX792l5v6Dc7Gwq4ELGmKKS2koa4XQW4GLGmNySGkoaKUnW2mhr7UlHQwEX8pOUzRjjJym7pIMO54HDKHup62ZJ+xI83y++TCMdMsaUkFRd0jKHowAX+1jSM5I8DucAElNK0lFJo32HGo8wxuRwOhQgSdbaA5Lel7RX0iFJ4dba2c6mgtMoe6nLJDKMy50iXTHG5JQ0RdLj1tpTTucBzjPGtJN0xFq70uksQBL8JIVK+sJaW13SWUmcn490wRiTT94jykpKKiIphzHmXmdTwWmUvdS1X1KxBM+Lit3nSEeMMf7yFr3x1tofnc4DXKSepA7GmN3yHgbf1BjzrbORgAvsl7TfWnv+qIjJ8pY/ID1oLmmXtfaotTZG0o+SbnU4ExxG2Utdf0sqa4wpaYwJkPek2GkOZwIkScYYI+95JpustR86nQe4mLX2eWttUWttCXl/f/5preWv0kg3rLX/StpnjCnvG9RM0kYHIwEJ7ZUUZozJ7vt/fjNxAaEsz8/pAJmJtTbWGDNQ0m/yXgFplLV2g8OxgPPqSeohab0xZo1v2GBr7UznIgFAhvOIpPG+P+rulHSfw3kASZK1dpkxZrKkVfJegXu1pOHOpoLTjLWcUgYAAAAAmQ2HcQIAAABAJkTZAwAAAIBMiLIHAAAAAJkQZQ8AAAAAMiHKHgAAAABkQpQ9AAAAAMiEKHsAAAAAkAlR9gAAuM6MMaWMMSN9N0AGACBNUPYAAEjAGJPNGDPfGONOq3VYa3daa/tctN4AY8xfxhi/tFovACBr4X8oAABc6H5JP1pr4651QcaYYElvXbx8a+2Ri6e11kYbY/6Q1EXS+GtdNwAAlD0AQJZhjHlBUk9J+yQdlbTSWvv+RZN1l3RPgnl+krRBUiNJZSXda6393RgzSdJhSdUkFfPN109SmKQF1to+1tr1ktpdQcSp8pZDyh4A4JpxGCcAIEswxtSQ1FVSdUl3SKqVyDQBkkpZa3cnGFxF0klrbQNJA+QtdZIULGmntba+pLGSRkp61jf9HcaYwGSy3GiM+VJSdWPM8wlG/ZNYLgAArgZ79gAAWUUDST9ZayMkyRgzLZFp8ks6ef6JMSa7pDySPvIN8pN00hgTJCmvpI99w89JGmmtPeSbL0JSdFJBrLXHJT2YyPA4Y0y0MSaXtfb0lbw4AAAuxp49AEBWYi8z/pykoATPK8t7qOf58/dC5N37VlnSKmutxze8qqRlkmSMKSrpoLX2cutKSqCkyKucFwCAeJQ9AEBW8ZekTr6rbeaS1P7iCay1JyS5fXvuJO8hmWsSTBIiaZ28h3CuTWS45C1+63QVjDE3SjpqrY25mvkBAEiIsgcAyBKstaskfS9veZsiaUESk86WVN/372BdWPaqyLtnL364rxhm8xVF6cLid6WaSJp5lfMCAHABc/VHmQAAkHEZY16RdObiq3EaY6pLGmSt7eFAph8lPW+t3XK91w0AyHzYswcAQALW2tWS5qblTdUT47sS6FSKHgAgtbBnDwAAAAAyIfbsAQAAAEAmRNkDAAAAgEyIsgcAAAAAmRBlDwAAAAAyIcoeAAAAAGRClD0AAAAAyIQoewAAAACQCVH2AAAAACATouwBAAAAQCb0f2zP9wc7mQjCAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = subplots(figsize=(15,8))\n", "ax.semilogy(q, I, label=\"Simulated signal\")\n", "ax.set_xlabel(\"q ($nm^{-1}$)\")\n", "ax.set_ylabel(\"I (count)\")\n", "res_ng = ai.integrate1d_ng(img_theo, **kwargs)\n", "res_legacy = ai.integrate1d_legacy(img_theo, **kwargs)\n", "ax.plot(*res_legacy, label=\"Integrated image (legacy method, v0.19)\")\n", "ax.plot(*res_ng, label=\"Integrated image (corrected method, v0.20)\")\n", "ax.set_title(\"Comparison between the theortical and the integrated signal\")\n", "#Display the error: commented as it makes the graph less readable\n", "#I_bins = I0/(1+res.radial**2)\n", "#ax.plot(res.radial, abs(res.intensity-I_bins), label=\"error\")\n", "ax.legend()\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Construction of a synthetic dataset\n", "\n", "We construct now a synthetic dataset of thousand images of this reference image with a statistical distribution which is common for photon-counting detectors (like Pilatus or Eiger): The Poisson distribution. The signal is between 100 and 10000, so every pixel should see photons and there is should be no \"rare-events\" bias (which sometimes occures in SAXS).\n", "\n", "### Poisson distribution:\n", "The Poisson distribution has the peculiarity of having its variance equal to the signal, hence the standard deviation equals to the square root of the signal. \n", "\n", "\n", "**Nota:** the generation of the images is slow and takes about 1Gbyte of memory !\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8000.0 MBytes (1000, 1024, 1024)\n", "CPU times: user 56.8 s, sys: 12.7 s, total: 1min 9s\n", "Wall time: 1min 9s\n" ] } ], "source": [ "%%time\n", "\n", "if \"dataset\" not in dir():\n", " dataset = numpy.random.poisson(img_theo, (nimg,) + img_theo.shape)\n", "# else avoid wasting time\n", "print(dataset.nbytes/(1<<20), \"MBytes\", dataset.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Validation of the Poisson distribution.\n", "\n", "We have now thousand images of one magapixel. It is interesting to validate if the distribution actually follows the Poisson distribution. For this we will check if the *signal* and its *variance* follow a $\\chi^2$ distribution. \n", "\n", "For every pair of images I and J we calculate the numerical value of $\\chi ^2$:\n", "\n", "$$\n", "\\chi^2 = \\frac{1}{nbpixel-1}\\sum_{pix}\\frac{(I_{pix} - J_{pix})^2}{\\sigma(I_{pix})^2 + \\sigma(J_{pix})^2)}\n", "$$\n", "\n", "The distibution is obtained by calculating the histogram of $\\chi^2$ values for every pair of images, here almost half a milion. \n", "\n", "The calculation of the $\\chi^2$ value is likely to be critical in time, so we will shortly investigate 3 implementation: *numpy* (fail-safe but not that fast), *numexp* and *numba*\n", "Do not worry if any of the two later method fail: they are faster but provide the same numerical result as numpy." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of paires of images: 499500\n" ] } ], "source": [ "print(\"Number of paires of images: \", nimg*(nimg-1)//2)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "𝜒² value calculated from numpy on the first pair of images: 0.9992275974307884\n", "5.76 ms ± 11.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "#Numpy implementation of Chi^2 measurement for a pair of images. Fail-safe implementation\n", "\n", "def chi2_images_np(I, J):\n", " \"\"\"Calculate the Chi2 value for a pair of images with poissonnian noise \n", " Numpy implementation\"\"\"\n", " return ((I-J)**2/(I+J)).sum()/(I.size - 1)\n", "\n", "img0 = dataset[0]\n", "img1 = dataset[1]\n", "print(\"𝜒² value calculated from numpy on the first pair of images:\", chi2_images_np(img0, img1))\n", "%timeit chi2_images_np(img0, img1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "𝜒² value calculated from numexpr on the first pair of images: 0.9992275974307884\n", "Timing when using 1 threads: \n", "5.17 ms ± 38.4 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 2 threads: \n", "4.66 ms ± 12.6 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 4 threads: \n", "3.44 ms ± 53.1 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 8 threads: \n", "1.87 ms ± 58.4 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 16 threads: \n", "1.6 ms ± 9.57 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)\n", "Timing when using 32 threads: \n", "1.57 ms ± 8.58 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)\n" ] } ], "source": [ "#Numexp implementation of Chi^2 measurement for a pair of images. \n", "import numexpr\n", "from numexpr import NumExpr\n", "expr = NumExpr(\"((I-J)**2/(I+J))\", signature=[(\"I\", numpy.float64),(\"J\", numpy.float64)])\n", "\n", "def chi2_images_ne(I, J):\n", " \"\"\"Calculate the Chi2 value for a pair of images with poissonnian noise\n", " NumExpr implementation\"\"\"\n", " return expr(I, J).sum()/(I.size-1)\n", "\n", "img0 = dataset[0]\n", "img1 = dataset[1]\n", "print(\"𝜒² value calculated from numexpr on the first pair of images:\",chi2_images_ne(img0, img1))\n", "for i in range(6):\n", " j = 1<= 11005. Found TBB_INTERFACE_VERSION = 7001. The TBB threading layer is disabled.\u001b[0m\n", " warnings.warn(problem)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "𝜒² value calculated from numba on the first pair of images: 0.9992275974307945\n", "268 µs ± 17.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], "source": [ "#Numba implementation of Chi^2 measurement for a pair of images. \n", "from numba import jit, njit, prange\n", "\n", "@njit(parallel=True)\n", "def chi2_images_nu(img1, img2):\n", " \"\"\"Calculate the Chi2 value for a pair of images with poissonnian noise\n", " Numba implementation\"\"\"\n", " I = img1.ravel()\n", " J = img2.ravel()\n", " l = len(I)\n", " #assert len(J) == l\n", " #version optimized for JIT\n", " s = 0.0\n", " for i in prange(len(I)):\n", " a = float(I[i])\n", " b = float(J[i])\n", " s+= (a-b)**2/(a+b)\n", " return s/(l-1)\n", "\n", "img0 = dataset[0]\n", "img1 = dataset[1]\n", "print(\"𝜒² value calculated from numba on the first pair of images:\", chi2_images_nu(img0, img1))\n", "%timeit chi2_images_nu(img0, img1)\n", "\n", "#May fail if numba is not installed. \n", "# The numerical value, may differ due to reduction algorithm used, should be the fastest." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Select the prefered algorithm for calculating the numerical value of chi^2 for a pair of images.\n", "chi2_images = chi2_images_nu\n", "#numexpr.set_num_threads(16)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 40min 35s, sys: 1.86 s, total: 40min 36s\n", "Wall time: 2min 35s\n" ] } ], "source": [ "%%time \n", "\n", "#Calculate the numerical value for chi2 for every pair of images. This takes a while\n", "\n", "c2i = []\n", "for i in range(nimg):\n", " img1 = dataset[i]\n", " for img2 in dataset[:i]:\n", " c2i.append(chi2_images(img1, img2))\n", "c2i = numpy.array(c2i)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEICAYAAABfz4NwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA9/ElEQVR4nO3deXgUZbb48e/pJIAQEGUTAQkqKBAwrKIILriAMoLbDHoVGREUvfeOd356jaMzMo7MZUZHlBn3cQFHcUFZFFFBZN8Msm+SQCCRyL6vSdf5/VGVTBOyJ53qTs7nefrpyltVb5/qTvepet+qt0RVMcYYYwJ+B2CMMSYyWEIwxhgDWEIwxhjjsYRgjDEGsIRgjDHGYwnBGGMMYAnBFENEhojIfL/jKA8RuUhElovIIRH57wLmTxeRe/2IzU8islZErqpur20KZwmhihKRdBG5tpTrJIiIikhsuOIqCxGZLSL3l6OK/wVmq2pdVR2bf6aq9lPVceWo31feZ31MRA6LyA4ReUdE4otbT1Xbq+rsSggxbK8tIrd7yf6giKwQke4VEF61ZQnBVActgbV+BxFmv1DVeKAz0A14yud4KktTYBhwFvAB8K6v0UQ5SwjVgIhcKCJzROSAiOwWkY8KWXSu97zf29u8LKSO50Vkn4hsEZF+IeVnishbIpIlIj+JyLMiElNIHN1FJMXbm9shIi+EzOshIgtFZL+IrMxtThCRUUAv4B9eTP8opO6bvWaI/d4RRVuvfBZwdcj6bQpYN+8IxGsiWyAiY7y6NovI5V55hojsDG1eEpGbQvZQM0RkZL66B4vIVhHZIyK/Dz1yE5GAiCSLSJo3/2MROdubV0tE/uWV7xeR70WkSSGfWx5V/QmYDiQW9b5480JjKfCzKSoOETlXRKaKyF4RSRWRYSF1j/S2Z7y4TXVrRaRrEa+9yKs/S0T+ISI1QpZVEXlQRDZ5/4Mvi4h42/t3VU1R1SAwDyj2PTJFUFV7VMEHkA5c601PAJ7E3QGoBVxRyDoJgAKxIWVDgGzcvbAYYASwHRBv/mTgdaAO0BhYCjxQSP2LgHu86XighzfdDNgD3OjFeJ33dyNv/mzg/iK2tQ1wxFsvDreJKBWoUcL18+Z725sD/Nrb3meBbcDLQE3geuAQEO8tfxXQwYu7I7ADGOjNawccBq4AagDPe+9l7ufyCLAYaO7V/TowwZv3APA5UNuLowtQrwSfdQvco6E/leB9CV2vsM+m0DiAOcAruP9TScAuoI83byRw3PtMY4D/AxYXEnMXoAcQi/s/uB54JGRZBb4A6gPnea/TN997UMfbhr/5/d2L5ocdIVQP2bjNJueq6nFVLW0n8VZVfVPdvbBxuIfpTbw9xX64X94jqroTGAMMKiKOC0WkoaoeVtXFXvndwJeq+qWqOqo6A0jB/TEpiV8B01R1hqpm4/7wngFcXsrtzLVFVd/xtvcj3B/ZZ1T1hKp+A5wELgRQ1dmqutqLexVu8r3Sq+d24HNVna+qJ4E/4P645XoAeFJVM1X1BO6P6O3i9uFkAw2AC1U1qKrLVPVgETFPFpH9wHzcH+o/l/J9KeyzKTAOEWmBm+ge9/6nVgD/BO4JqXO+95kGgfeASwoK3KtzsarmqGo6bmK8Mt9io1V1v6puA77DTUChPsbdUXm8iPfIFMMSQvXwv4AAS71D9/tKuf7PuROqetSbjMdNMnFAlne4vx/3y9y4kHqG4u61bvCaHvp75S2BO3Lr8Oq5AjfxlMS5wNaQGB0gA/fIoyx2hEwf8+rMXxYPICKXish3IrJLRA4ADwINQ+LKCInrKO6RT66WwKSQbV4PBHGbPd4DvgY+FJHtIvJXEYkrIuaBqlpfVVuq6kOqeozSvS+FfTaFxXEusFdVD4XUsTVf3T+HTB8FakkBJyyISBsR+UJEfhaRg7jJrGG+xfLXFR+6Pm4CuUdVcwrYNlNClhCqAVX9WVWHqeq5uHulr4jIhQUtWsqqM4ATQEPvx6i+qtZT1faFxLFJVe/ETRh/ASaKSB2vnvdC6qivqnVUdXQJ49qO++MKgNe+3AL4qZTbUxYfAFOBFqp6JvAabvIFyMJtDsqN6wzcve1cGUC/fNtdS1V/UtVsVf2jqrbD3aPvDwwuZWwlfl8K+2yKiGM7cLaI1A2p5ryC6i6BV4ENQGtVrQf8jn+/hyXRFNgfsrNiysgSQjUgIneISO4P0z7cH9hgAYvuAhzg/JLUq6pZwDfA30SkntdJeoGI5D/cz43jbhFp5O2p7veKg8C/gF+IyA0iEuN1ZF4VEvOOYmL6GLhJRPp4e6//DzdRLSzJdpRTXdw95ePinvJ4V8i8ibjbdbnXSfpHTv2hew0YJSItAUSkkYgM8KavFpEO4nbQH8RtuinoMytKid+Xwj6bwuJQ1Qyvnv/zPq+OuEcZ75cyRnDfw4PAYRG5GLefqjQWAZ3K8LomH0sI1UM3YImIHMbdm/2Nqm7Jv5C3hzUKWOA1Y/QoQd2DcTtM1+Emm4kU3tTTF1jrxfESMMhrf84ABuDuGe7C3XN+jH//f76E27a+T0QKuo5gI24/xN+B3cAvcE/DPFmC+MvrIeAZETmE20fwcUhca4H/Aj7EPVo4BOzE/VEGd7umAt946y8GLvXmnYP7Xh7EbUqag5s4S6yU70uBn00xcdyJ2wm8HZgEPO31/5TWo7iJ9BDwJm6/TWlcitt3Ysop90wRY0yYiXux2H7cppHTErIxfrMjBGPCSER+ISK1vb6S54HVuKdcGhNxLCEYE14DcJtUtgOtcZti7LDcRCRrMjLGGAPYEYIxxhhPRI1qWRoNGzbUhIQEv8MwxpiosmzZst2q2qigeVGbEBISEkhJSfE7DGOMiSoisrWwedZkZIwxBrCEYIwxxmMJwRhjDBDFfQjGVCfZ2dlkZmZy/Phxv0MxUaJWrVo0b96cuLiiBsk9lSUEY6JAZmYmdevWJSEhAe9mYcYUSlXZs2cPmZmZtGrVqsTrWZORMVHg+PHjNGjQwJKBKRERoUGDBqU+orSEYEyUsGRgSqMs/y+WEIwxxgCWEIwxxnisU9mYYiQkT8ubTh99k4+RGBNelhCMKcqR3QwIzCcGx/17YwBaXw+BGH/jiiCTJ09m2rRp7Ny5k4cffpjrr7/e75BMGVmTkTEFCebAkjfg7515qcYrvFDjNV6o8RpMGARvXg0ZS/2OMGIMHDiQN998k3fffZePPir+7pcjR47k+eefz/v78ssvL3TZ/fv388orrxRZ3+WXX056ejqJiYklD7qQuouKpTqwhGBMfjvWsf6PnWD6Y8w70oIBJ56h14kx9DoxBm59Ew7vhLeugykPQ86J4uurJp599lkefvjhUq+3cOHCQucVlRBUFcdxily/KAXVXda6qgpLCMaEOrgd/nUrDeQgD5x8hHuyn2ClXkiGNiFDm5DwQR3a73qW13J+Acv/BVP/C6rJTaaOHDlCs2bN+N3vfgfA999/T1JSEseOHePxxx+nX79+dO7cucB1R40axUUXXcS1117Lxo0bT5kXHx/PkSNHuOmmm7jkkktITEzMO9JITk4mLS2NpKQkHnvsMdLT02nbti0PPfQQnTt3JiMjg/j4eABycnK499576dixI7fffjtHjx4FOO3o4fnnn2fkyJGn1Z0bS64XXniBxMREEhMTefHFF/Pqatu2LcOGDaN9+/Zcf/31HDt2rALe3chgCcEYT7vkT1nzfD8OHdzPPSeT+drpDpx+LvcRzmB0zp08l/1LWPURLzx1f+UH64M6deqwatUqJkyYwNGjR7nvvvt49913efPNN5k5cyYTJ07ktddeO229ZcuW8eGHH7J8+XI+++wzvv/++9OW+eqrrzj33HNZuXIla9asoW/fvgCMHj2aCy64gBUrVvDcc88BsHHjRgYPHszy5ctp2bJlXh0bN25k+PDhrFq1inr16hXb1FRQ3aExv/POOyxZsoTFixfz5ptvsnz5cgA2bdrEww8/zNq1a6lfvz6ffvpp6d7ICGadysYAOEFeivsHbWUrQ7MfY6OeV+wqLwcH0CrwM7+Nmwir+kLHOyohUGB6Mvy8umLrPKcD9Btd7GINGjSgdu3aDB06lHvuuYekpCSSkpL47//+70LXmTdvHrfccgu1a9cG4Oabbz5tmQ4dOvDoo4/y+OOP079/f3r16lVofS1btqRHjx6nlbdo0YKePXsCcPfddzN27FgeffTRYrepIPPnz+eWW26hTp06ANx6663MmzePm2++mVatWpGUlARAly5dSE9PL9NrRCI7QjAGYO7zXBfzAyNz7mW2k1TClYQnsu9nsdMWpjwEO9eHM8KI0bFjR7Kyskr1Y1vcVbNt2rRh2bJldOjQgSeeeIJnnnmm0GVzf6SLe43cv2NjY3EcJ6+8JMM5FHWv+Zo1a+ZNx8TEkJOTU2x90cKOEIzZvw3mv8DnwR68FyzdKZPZxDLi5G9YXjsZpj8Og6dAuIeYKMGefLjs2rWL7777jqeeeopAoGT7k71792bIkCEkJyeTk5PD559/zgMPPHDKMtu3b+fss8/m7rvvJj4+nnfffReAunXrcujQoRK9zrZt21i0aBGXXXYZEyZM4IorrgCgSZMm7Ny5kz179hAfH88XX3xB3759i6w7NGZVZdKkSbz33nsliiOa2RGCMd88BQh/zv6PMq2+j3pw9ZOwZQ5s+KJiY4swQ4cO5ZprrmHlypUlXqdz58786le/Iikpidtuu63A5qDVq1fTvXt3kpKSGDVqFE899RTgNlH17NmTxMTEvI7fwrRt25Zx48bRsWNH9u7dy4gRIwCIi4vjD3/4A5deein9+/fn4osvLrbuzp07M2TIELp3786ll17K/fffT6dOnUq8zdFKijo0imRdu3ZVu6eyKa87f/dXJtQYxd+yb+fvwVvLXE/6qBvg9V5w8gg8vBTialVglLB+/Xratm1boXWW1uuvv86sWbN4/vnn6devH2vWrPE1HlO8gv5vRGSZqnYtaHk7QjDVVzCHp2PHk+E04o1g//LVFRMLfUfD/q2w6O8VE18E2bRpEy+88AKvvfYaLVq0oGnTpnZFchVkfQim+vphHBcHMnjw5COcoEb56zv/Smj7C5j3AiTdDfWalr/OCNG6detTrh+YMWOGj9GYcCn2CEFE3haRnSKyJqTsIxFZ4T3SRWSFV54gIsdC5r0Wsk4XEVktIqkiMla8UwBEpKZXX6qILBGRhIrfTGPyCebAghdJcdrwldOt4uq97hnIOQ5LTj8f35hIV5IjhHeBfwDjcwtU9Ve50yLyN+BAyPJpqppUQD2vAsOBxcCXQF9gOjAU2KeqF4rIIOAvwK8KWN+YirPhc9i/jTdy/oeCLj4rrVNGRO38C1j2DvR+DGrGF7GWMZGl2CMEVZ0L7C1onreX/0tgQlF1iEhToJ6qLlK3F3s8MNCbPQAY501PBPrkHj0YEw4JyV+w4qM/scVpwkynS8W/wGX/BccPuENbGBNFytup3AvYoaqbQspaichyEZkjIrnnlzUDMkOWyfTKcudlAKhqDu7RRoOCXkxEhotIioik7Nq1q5yhm+qqq2wkKZDGW8EbccJxXkWLbtDiUlj8its0ZUyUKO+34U5OPTrIAs5T1U7Ab4EPRKQeBR+T557vWtS8UwtV31DVrqratVGjRuUI21Rnw2K/ZJ/GMzHYOyz1JyRP44G0y2H/Vh76/R/D8hrGhEOZE4KIxAK3AnkDoKvqCVXd400vA9KANrhHBM1DVm8ObPemM4EWIXWeSSFNVMaU2540rgss41/BazlOzeKXL6MZThfSnSYMi/2y2oyGaqJfeY4QrgU2qGpeU5CINBKRGG/6fKA1sFlVs4BDItLD6x8YDEzxVpsK3OtN3w7M0mi9Ws5EviWvk00M43PCew69Q4C3gv3oFEiFzNNH9zQmEhV7lpGITACuAhqKSCbwtKq+BQzi9M7k3sAzIpIDBIEHVTV3b38E7hlLZ+CeXTTdK38LeE9EUnGPDAaVZ4OMKVTOCVj1EV873dhF/bC/3GfBXiTHTqDO8n9Bi+4VWnfoWU0VoarfKzo+Pp7Dhw8XuczIkSOJj4/n0Ucf5Q9/+AO9e/fm2muvLXDZyZMn06ZNG9q1awdwyvIJCQmkpKTQsGHDEsWWnp7OwoULueuuuwBISUlh/PjxjB07thRbWDGKTQiqemch5UMKKPsUKHBwcFVNAU67x52qHgcqadxgU61tnA7H9/NJ8MpKebkjnMF051JuXzvJvYq5Ru1Ked3qIicnh9jY8FxbW9Roq+AmhP79++clhOKWL0p6ejoffPBBXkLo2rUrXbsWOLJE2NnQFaZaSEiexswPXyRLz2aBU7p775bHxGBvOHEQNlTsHn1lS09P5+KLL+b+++8nMTGR//iP/2DmzJn07NmT1q1bs3Spe4/pI0eOcN9999GtWzc6derElClT8tbv1asXnTt3pnPnznm3qszKyqJ3794kJSWRmJjIvHnzgFPvXDZx4kSGDBkCwJAhQ/jtb3/L1VdfzeOPP05aWhp9+/alS5cu9OrViw0bNgCwZcsWLrvsMrp168bvf//7QrersDu5DRkyhIkTJwLuXdvatWtHx44defTRR1m4cCFTp07lscceIykpibS0tFOWB3juuefo3r073bt3JzU19bQ6Q7cxOTmZefPmkZSUxJgxY5g9ezb9+7tDqezdu5eBAwfSsWNHevTowapVqwD3aOa+++7jqquu4vzzz6+wowkbusJUC43Yz1WBlbwe7B+eU00LscS5GOqfByver7wb6IRJamoqn3zyCW+88QbdunXjgw8+YP78+UydOpU///nPTJ48mVGjRnHNNdfw9ttvs3//frp37861115L48aNmTFjBrVq1WLTpk3ceeedpKSk8MEHH3DDDTfw5JNPEgwG8257WZQff/yRmTNnEhMTQ58+fXjttddo3bo1S5Ys4aGHHmLWrFn85je/YcSIEQwePJiXX365wHpC7+SWk5ND586d6dLl1OtS9u7dy6RJk9iwYQMiwv79+6lfvz4333wz/fv35/bbby+w7nr16rF06VLGjx/PI488whdfFD4K7ujRo3n++efzlpk9e3bevKeffppOnToxefJkZs2axeDBg1mxYgUAGzZs4LvvvuPQoUNcdNFFjBgxgri4uGLfv6LYEYKpFgbELCBWHD4N06mmhVECvLi7K07a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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = subplots()\n", "h,b,_ = ax.hist(c2i, 100, label=\"measured distibution\")\n", "ax.plot()\n", "size = numpy.prod(shape)\n", "y_sim = chi2_dist.pdf(b*(size-1), size)\n", "y_sim *= h.sum()/y_sim.sum()\n", "ax.plot(b, y_sim, label=r\"$\\chi^2$ distribution\")\n", "ax.set_title(\"Is the set of images Poissonian?\")\n", "ax.legend()\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This validates the fact that our set of image is actually a Poissonian distribution around the target image displayed in figure 3.\n", "\n", "## Integration of images in the SAXS appoximation:\n", "\n", "We can now integrate all images and check wheather all pairs of curves (with their associated error) fit or not the $\\chi^2$ distribution. \n", "\n", "It is important to remind that we stay in SAXS approximation, i.e. no solid angle correction or other position-dependent normalization. The pixel splitting is also disabled. So the azimuthal integration is simply:\n", "\n", "$$\n", "I_{bin} = \\frac{1}{count(pix\\in bin)} \\sum_{pix \\in bin} I_{pix}\n", "$$\n", "\n", "The number of bins in the curve being much smaller than the number of pixel in the input image, this calculation is less time-critical. So we simply define the same kind of $\\chi^2$ function using numpy." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def chi2_curves(res1, res2):\n", " \"\"\"Calculate the Chi2 value for a pair of integrated data\"\"\"\n", " I = res1.intensity\n", " J = res2.intensity\n", " l = len(I)\n", " assert len(J) == l\n", " sigma_I = res1.sigma\n", " sigma_J = res2.sigma\n", " return ((I-J)**2/(sigma_I**2+sigma_J**2)).sum()/(l-1)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.94 s, sys: 0 ns, total: 3.94 s\n", "Wall time: 3.93 s\n" ] } ], "source": [ "%%time\n", "#Perform the azimuthal integration of every single image\n", "\n", "integrated = [ai.integrate1d_legacy(data, variance=data, **kwargs)\n", " for data in dataset]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "13.9 µs ± 44 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n" ] } ], "source": [ "#Check if chi^2 calculation is time-critical:\n", "%timeit chi2_curves(integrated[0], integrated[1])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 7.07 s, sys: 7.97 ms, total: 7.08 s\n", "Wall time: 7.07 s\n" ] } ], "source": [ "%%time \n", "c2 = []\n", "for i in range(nimg):\n", " res1 = integrated[i]\n", " for res2 in integrated[:i]:\n", " c2.append(chi2_curves(res1, res2))\n", "c2 = numpy.array(c2)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEICAYAAABfz4NwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABBK0lEQVR4nO3deXhU5fXA8e+ZJICsKjsEDSCLEDDsCIIgWtFSl6o/USvuuFVrrdrYWkuttlj3pdJatYobuIEoogKKrAJhCzsGCBDZInuAhGTm/P64N+kkTJIh251Jzud55snMe7czNzP3zH3fe99XVBVjjDHG53UAxhhjIoMlBGOMMYAlBGOMMS5LCMYYYwBLCMYYY1yWEIwxxgCWEEwlEJEEEVERifU6loogIlki0s7rOGqKqtzfIvIvEflTVWwrGlhCqCIiki4i54c57ywRubWyYyph+2NE5B2vth9pVLW+qm4qy7IicouIrBORQyKyS0SmikiDIvMMcRPoQ0XKe4jIARE5I6isl4jsF5EE9/U5IjLfnW+viMwTkT5liTVSlGd/l0REbhSRuUW2dYeq/rWitxWtLCHUMNXoV7uISER/fkXkXOBvwDWq2gA4E/ggxKw3AHvdvwVUdRnwT+A/7vuNA94AHlXVdBFpCHwOvAScCrQG/gLkVNJbCks0/G9MMVTVHlXwANKB893nNwJzgaeBfcBm4CJ32hOAH8gGsoCX3fLOwHScA8d64P+C1t0Y+Aw4CCwGHgfmBk1X4G7gB2CzW/YCsM1dZgkwyC0fDhwDct3tr3DLGwGvAzuAH91txLjTYtz38hOwyd2WArHF7Is2wCdAJrAn6D2OAd4Jmi8heD3ALHf/zAOOAo8AKUXW/Vtgivu8thvXVmAX8C/gJHdaE5yD6X53n84BfMXEq8AZ7vM3cQ7SU4FDwEKgfTHLPQBMLuVzUdddz0h3v/cuMr02sA64Hfiz+9597rTewP4T+Az2BRa473kH8DJQq8j7vNf9H/4EPBW0rRvdbb8EHHBjGha0bNH/zRnAAJzP4wH37wB33qvdbTR0X18E7ASaFrO/XwGm4Xwe5wEtgOdxvjvrgB5BcSQDG919uga43C0/E+c75XfXsz9o/Y8HLX8bkOZ+JqYArYrsnztwvkf73M+BeH1sqdDjlNcB1JQHxyeEXPfDFwPcCWzP/3C5X65bg5ath3PwvgmIBXq6X9iu7vQJ7qMu0MWdt2hCmI7zKzL/gPgrnEQSC/zO/ULWcaeNIejA7JZNBv7txtIMWATc7k67w/1itnG38S3FJAT3/a4AnnPXVQc4J9R2CZ0QtgJd3bgbuV/8DkHLLAZGus+fd7/UpwINcJLm391pf8dJEHHuY1BxX26OP0DtxTm4xgLvAhOKWW4QzsHxL8BAoHaIea7HOTjHuPG9GGKegTgH8YNA56DyhjgJ9S2cg+oppXwGewH93bgTgLXAfUXe57fu/joN2ID7OcT5zObhJNw4nIP6AeDUYv43zXEOmte7r69xXzd253/X3ZeNcT77I0rY3z+5sdcBvsH5ATXK3WePA98GLXsV0Aqn9uNq4DDQMug9zC2yT97ETQjAee62euIk4peA2UXi+hw42d0/mcBwr48tFXqc8jqAmvLg+ISQFjStrvtha+G+nkXhhHA1MKfI+v6N84sxBie5dAqaFuoM4bxS4tsHnOU+H0PhA3NznGqIk4LKrsn/Irpf0juCpv2M4hPC2e4XKdS0ottN4PiE8FiRZd7BqUIB6ICTIOoC4h4M2hfZ9mb3+WPAp/kHnlL2TdED1GtB0y4G1pWw7EU4B/r9OL9Mn8U9s3KnzwCeD9qnmUBckXU0cg9U80Ks/0w3pgycA/YUoHmYn8n7gElF3ufwoNd3ATODPrMFP1rcskXA9aH+NziJYFGR7S0AbnSfn4yTQFYC/y5lf/8naNo9wNqg190o4SwJWA5cGvQeSkoIrwP/CJpWH+e7lRAU1zlB0z8AksPZ19HysHo+7+zMf6KqR9yn9YuZ93Sgn9uYuF9E9gPX4Zw6N8X5BbYtaP5tx6+icJmI/E5E1rqNkftxDjpNSth+HLAjaPv/xjlTAOcXWfD6txSzHnDOIraoal4J85Sk6Ht7D+dACnAtThXNEZz9UhdYEhTzl245ONUhacDXIrJJRJJPIIadQc+PUPz/DVWdpqq/wPnVfSnOQelWABFpAwzF+bUMToKqA/y8yGqeAb4D4kVkZJH1r1XVG1U1HkjE+V88HyoWEekoIp+LyE4ROYjTvlH0f170/9gq6PWP6h4Ji5kevGwrjv8cbMFp50BV9wMfujE/EyreILuCnh8N8bpg/4vIKBFZHvQ/T6T4z3VRhWJW1SycM7DWQfOE/b+PRpYQIpMWeb0N+E5VTw561FfVO3F+UeYB8UHztylpnSIyCPg98H841Qwn45z+SwnbzwGaBG2/oap2dafvKLLN00p4b9uA04pp3D6McxDP16Kk9+H6GmgiIkk4ieE9t/wnnINF16CYG6lqfQBVPaSqv1PVdsAvgPtFZFgJcZeLqgZUdSbO2VSiW3w9znfwMxHZiVOvXgenOgQAN6ZLcarl7gBeEJFTi9nGOpxfvImhpgPjcKr2OqhqQ+AP/O9/nq/o/3F70OvWIiIlTA/+32zH+SER7DSc9ifc/9fNwPvAi8XEe0JE5HTgP8CvcaqmTgZWUfznuqhCMYtIPZwqrR8rIr5oYAkhMu0Cgq/D/hzoKCLXi0ic++gjImeqqh+ngXaMiNQVkc4EHVCK0QAniWQCsSLyKE59dPD2E/KvFFHVHTgH3mdEpKGI+ESkvXsVDTinzveKSLyInILTsFecRTgJZKyI1BOROiIy0J22HBgsIqeJSCPg4VLeB+6Zxkc4v/hPxWkrQVUDOAeH50SkGYCItBaRC93nI0TkDPcAdxCnsdFf2vZOhIhcKiIjReQU98qbvsC5wPfuLKNw2heSgh5XAD8XkcbuAek/OPX8mao6zX1/z7nr7+ye6cW7r9vgJMX89RfVwH2vWe7n5M4Q8zzoxtsG+A0wMWhaM5z/c5yIXIVTXfVFMdv6Aucze62IxIrI1TjtW5+LSB2cqr4/4LSLtRaRu4pZz4moh3PQzwQQkZsonBx34Zxl1Spm+feAm0QkSURq45xBLVTV9AqILSpYQohMLwBXisg+EXlRVQ/h1MuPxPkVsxN4EqfhC5xfRI3c8rdxfnWVdOnhVzhXbWzAOUXOpvDp/ofu3z0istR9PgqohXPlxj6cg3BLd9p/3HWuAJbiJKiQ3AT2C5yrULbi1H1f7U6bjnMASsW58unzEt5DsPeA84EPi1RF/R6nWuh7t4pkBtDJndbBfZ2FU7f9iqrOCnN74dqHc+HADzgH4neAp1T1XRHpj9NG8k9V3Rn0mOLGfA3OAWmdqr4btM77gItE5Gc47SX9gIUichgnEazCuUgglAdwqtUO4fzPJoaY51Ocfb8c50qq14OmLcTZbz/hXFF0paruCbUht3yEG8se4CGchuOfcBr0M1R1nKrm4Fzg8LiIdCgm7rCo6hqc6qcFOAf/bjhXJeX7BlgN7BSRn0IsPxP4E/Axzo+W9jjfuRoj/6oWU42IyJM4DdQ3eB2LiR4iojjVSWkhpt2Ic6HDOVUemKkydoZQDbhVB92DqiVuASZ5HZcxJrpUi7tWDQ1wqolaAbtxTps/9TQiY0zUsSojY4wxgFUZGWOMcUVtlVGTJk00ISHB6zCMMSaqLFmy5CdVbRpqWtQmhISEBFJSUrwOwxhjooqIFNuTgFUZGWOMASwhGGOMcVlCMMYYA4TRhuD2aTIep6OxAPCqquZ3sDUR5/b7dJwBW/a5yzyMc3OUH7hXVb9yy3vhdL51Ek5fJ79RVXX7DRmP0+f5HuDqmtR/iDHhyM3NJSMjg+zsbK9DMVGgTp06xMfHExcXF/Yy4TQq5wG/U9Wl4owFu0REpuN04ztTVce6XQcnA78XkS44/X90xblRaoaIdHT7sBkHjMbpc+ULnNG5puEkj32qeobbve+TuP3bGGMcGRkZNGjQgISEBAp3OmpMYarKnj17yMjIoG3btmEvV2qVkaruUNWl7vNDOKMstcbpkvctd7a3gMvc55fijCCVo6qbcTrq6isiLXGGzFvg9qk+vsgy+ev6CBgm9ok3ppDs7GwaN25sycCUSkRo3LjxCZ9NnlAbgogkAD1wej1s7naLnN89cv5gKa0p3HNmhlvW2n1etLzQMm5vlQdw+iEvuv3RIpIiIimZmZknErox1YIlAxOusnxWwk4IIlIfp1vY+1T1YEmzhijTEspLWqZwgeqrqtpbVXs3bRryvgpjjDFlFFZCEJE4nGTwrqrm93W/y60Gwv272y3PoPCoS/E4ffhnUHhUr/zyQsu4I2k1whnI3BgTQXbu3MnIkSNp3749Xbp04eKLL2bDhg3MmjWLESNGhFzm1ltvZc2aNYXKbr/9durVq8c333xTqPzZZ5+lS5cudO/enWHDhrFlS0mjsTrGjBnD008/DcCjjz7KjBkzip138uTJx8US7F//+hfjx48HYMiQISd08+v+/ft55ZVXCl5v376dK6+8MuzlI0E4VxkJziAZa1X12aBJU4AbgLHu30+Dyt8TkWdxGpU74Ay27ReRQ+7AIAtxBlx5qci6FgBXAt8UGbvVmIiQkDw1ZHn62KLDIFc/qsrll1/ODTfcwIQJEwBYvnw5u3btKnG51157rdDrxx9/nH379rFw4UKuuuoqJk6cSPfu3QHo0aMHKSkp1K1bl3HjxvHQQw8xcWKocXxCe+yxx0qcPnnyZEaMGEGXLl2Om5aXl8cdd9wR9raKyk8Id93lDP7WqlUrPvroozKvzwvhnCEMxBn79Tx38OrlInIxTiK4QER+AC5wX6Oqq3GGVFyDM6j53e4VRuAM2fcaTkPzRpwrjMBJOI1FJA24n5KHYDQmYsTg51QOQlb1b9P69ttviYuLK3TQTEpKYtCgQQBkZWVx5ZVX0rlzZ6677jryf9MF/9J+6623WLVqFe+99x6JiYlMmTKF2267jW3bnGbHoUOHUreuM6x2//79ycgIbnb8nyeeeIJOnTpx/vnns379+oLyG2+8seAgnJycXHC28cADDzB//nymTJnCgw8+SFJSEhs3bmTIkCH84Q9/4Nxzz+WFF14odLYB8M477zBgwAASExNZtGgRwHHzJCYmkp6eTnJyMhs3biQpKYkHH3yQ9PR0EhOdETyzs7O56aab6NatGz169ODbb78F4M033+SXv/wlw4cPp0OHDjz00ENl/fdUiFLPEFR1LqHr+AFCDkquqk/gDLFXtDyFEAOAq2o2cFVpsRgTCXwEuCNmCrfFfsEpkuUUPg2T/QN4MvcaFowtbUjrCjAtGXaurNh1tugGF40tdvKqVavo1atXsdOXLVvG6tWradWqFQMHDmTevHmcc07hAdZuuOEGbrjhfwP5dejQgYULF4Zc3+uvv85FF110XPmSJUuYMGECy5YtIy8vj549ex4X1969e5k0aRLr1q1DRNi/fz8nn3wyl1xyCSNGjChUlbN//36+++47wDnYBzt8+DDz589n9uzZ3HzzzaxatarY9z927FhWrVrF8uXLAUhPTy+Y9s9//hOAlStXsm7dOn72s5+xYcMGwDnLWrZsGbVr16ZTp07cc889tGnTpujqq0TUdm5njBdak8mztcbRz7eO6f6erAy04wD1aCl7uTHmS4bXXgzfbINzH4KY8G8Iqg769u1LfLzTTJiUlER6evpxCSFc77zzDikpKQUH6mBz5szh8ssvLziTuOSSS46bp2HDhtSpU4dbb72Vn//858W2bwBcfXXxtzxdc801AAwePJiDBw+yf//+E3wnjrlz53LPPfcA0LlzZ04//fSChDBs2DAaNWoEQJcuXdiyZYslBGMiVX67QV9Zy7TazyAovz12J5MC5xB88jw+7wKS497nktn/gCM/wc+fhcq6TLSEX/KVpWvXriXWideuXbvgeUxMDHl5eWXazowZM3jiiSf47rvvCq0zWGmXVMbGxrJo0SJmzpzJhAkTePnll49rwM5Xr169YtdTdDsiQmxsLIFAoKAsnGv9S2oSraj9VhGsLyNjwtCU/fyz1otkaiMuPvY3JgUGUbQmdTtNuDf3Hsbl/QJS3uAvj9xTbCN0NDrvvPPIycnhP//5T0HZ4sWLQ/6KL6tly5Zx++23M2XKFJo1axZynsGDBzNp0iSOHj3KoUOH+Oyzz46bJysriwMHDnDxxRfz/PPPF1TjNGjQgEOHDoUdT36D9ty5c2nUqBGNGjUiISGBpUuXArB06VI2b95c6roHDx7Mu+++C8CGDRvYunUrnTp1CjuOqmIJwZhS+AjwXNw/acAR7sr9Ddu0eYnz/yPvar709+GR2HcY6ltWRVFWPhFh0qRJTJ8+nfbt29O1a1fGjBlDq1atKmwbDz74IFlZWVx11VUkJSWFrA7q2bMnV199NUlJSVxxxRUFjdrBDh06xIgRI+jevTvnnnsuzz33HAAjR47kqaeeokePHmzcuLHUeE455RQGDBjAHXfcweuvvw7AFVdcwd69e0lKSmLcuHF07NgRgMaNGzNw4EASExN58MEHC63nrrvuwu/3061bN66++mrefPPNYs9+vBS1Yyr37t1bbYAcUxWe/eMt3B/3EQ/l3sYH/qFhLXMS2XxQ6zHayk7q3zsfGrcvdxxr167lzDPPLPd6TM0R6jMjIktUtXeo+e0MwZiSbJnPfbEf84n/HD7wDwl7saPU4dZjD6AIfPXHyovPmApkjcrGhODU/SuTa/2JJtKYR3Jvpvirr0Pbxam8nHcZD294n+v+MJZ5gW414gY2E73sDMGYYlzgW0KSbxMv5P2SI9Qp0zr+6x/O1kBTHol9Bx+B0hcwxkOWEIwJQQhwf+yHbAy05BP/8Y2W4TpGHH/Pu5Yzfdu4OubbCozQmIpnCcGYEH7h+54zfdt4Pu8K/MSUa13TAn1ZGOjM72I/hOwDFRShMRXP2hCMceXfMxBLHtNrfcjawGl8HuhfAWsWHs/9FZ/VfgQWvw6D7q+AdRpT8SwhGFPE5TFzaevbxa3HfodW0En0Sm3HXH9Xzln8Ggy4p0K6tajom97CafAWEX71q1/x9ttvA04PoS1btqRfv358/vnnFRpPRapfvz5ZWVklzjNmzBjq16/PAw88wKOPPsrgwYM5//zzQ847efJkOnbsWNBravD8CQkJpKSk0KRJk7BiS09PZ/78+Vx77bUApKSkMH78eF588cUTeIcVw6qMjCliVMzXrA20YUagZ4Wu9w3/RXDwR1g7pULXW5Xq1avHqlWrOHr0KADTp0+ndevWpSxVOSqzi4fHHnus2GQAx4+rUNr8JUlPT+e9994reN27d29PkgFYQjCmkG6yiW6+dN71n8+JXmZamm8DSXBqO/h+XIWut6pddNFFTJ3qnJ28//77BR3AgdM76M0330yfPn3o0aMHn37qDJOSnp7OoEGD6NmzJz179mT+/PkA7Nixg8GDB5OUlERiYiJz5swBnF/0+T766CNuvPFGwOne+v7772fo0KH8/ve/Z+PGjQwfPpxevXoxaNAg1q1bB8DmzZs5++yz6dOnD3/605+KfS8V1Y128PwATz31FH379qVv376kpaUdt87g95icnMycOXNISkriueeeKzTY0N69e7nsssvo3r07/fv3JzU1FXDOZm6++WaGDBlCu3btKiyBWEIwJsh1MTM4rLWZ7B9Y4etWfDy6axBkLObyh5+v8PVXlZEjRzJhwgSys7NJTU2lX79+BdOeeOIJzjvvPBYvXsy3337Lgw8+yOHDh2nWrBnTp09n6dKlTJw4kXvvvReA9957jwsvvJDly5ezYsUKkpKSSt3+hg0bmDFjBs888wyjR4/mpZdeYsmSJTz99NMFg9P85je/4c4772Tx4sW0aNEi5HqCu9H+5JNPWLx48XHz5HejvXr1alJTU3nkkUcYMGAAl1xyCU899RTLly+nffvj70Jv2LAhixYt4te//jX33Xdfie9n7NixDBo0iOXLl/Pb3/620LQ///nP9OjRg9TUVP72t78xatT/ulZft24dX331FYsWLeIvf/kLubm5pe26UllCMMbVgCNcErOAKf4BZFG3Urbxkf9cDmpdbor9slLWXxW6d+9Oeno677//PhdffHGhaV9//TVjx44lKSmJIUOGkJ2dzdatW8nNzeW2226jW7duXHXVVQXVLX369OG///0vY8aMYeXKlTRo0KDU7V911VXExMSQlZXF/PnzC/o9uv3229mxYwcA8+bNKzhzuf7660OuJ7gb7YYNG5bajfYnn3xS0OV2afK3fc0117BgwYKwlgll7ty5BfGfd9557NmzhwMHnCvVfv7zn1O7dm2aNGlCs2bN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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = subplots()\n", "h,b,_ = ax.hist(c2, 100, label=\"Measured distibution\")\n", "y_sim = chi2_dist.pdf(b*(npt-1), npt)\n", "y_sim *= h.sum()/y_sim.sum()\n", "ax.plot(b, y_sim, label=r\"Chi^2 distribution\")\n", "ax.set_title(\"Integrated curves in SAXS approximation\")\n", "ax.legend()\n", "pass" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.889452976157626 1.1200681344576493\n", "Expected outliers: 2497.5 got 2454 below and 2375 above\n" ] } ], "source": [ "low_lim, up_lim = chi2_dist.ppf([0.005, 0.995], nimg) / (nimg - 1)\n", "print(low_lim, up_lim)\n", "print(\"Expected outliers: \", nimg*(nimg-1)*0.005/2, \"got\", \n", "(c2up_lim).sum(), \"above\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integration of images with solid angle correction/polarization correction\n", "\n", "PyFAI applies by default solid-angle correction which is needed for powder diffraction. \n", "On synchrotron sources, the beam is highly polarized and one would like to correct for this effect as well. How does it influence the error propagation ? \n", "\n", "If we enable the solid angle normalisation (noted $\\Omega$) and the polarisation correction (noted $P$), this leads us to:\n", "\n", "$$\n", "I_{bin} = \\frac{1}{count(pix\\in bin)} \\sum_{pix \\in bin} \\frac{I_{pix}}{\\Omega_{pix} P_{pix}}\n", "$$\n", "\n", "Flatfield correction and any other normalization like pixel efficiency related to sensor thickness should be accounted in the same way.\n", "\n", "**Nota:** The pixel splitting remains disabled. " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IntegrationMethod(1d int, no split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti)\n" ] }, { "data": { "image/png": "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MzOTDh06MH36dOD4WQrHjBnDzTffDMDNN9/Mb3/7W8455xweeugh1q1bx4ABA+jatSt9+/Zl1apVAKxfv55evXpxxhln8Pjjjxf4XgKBQMSZDm+++WbGjBkDODM0tmvXjk6dOvHAAw8wc+ZMxo0bx4MPPkhmZibr1q0jKyuLnj170qlTJ6688kp27twJODNIdurUiV69evHggw8enaVx5MiRXHvttVx66aVccMEF7Nu3j/POO48uXbrQsWPH485bmzZtuP322+nQoQO/+tWv+Oqrr+jTpw8tW7Zk7tz4fCatIDGpZfsq2LEG2l1eaoc8TAUmB0/nQv88/ASK3qGcGzRoEKNHj+bQoUMsWbKEHj16HF33zDPPcO655zJv3jymTJnCgw8+yP79+2nQoAGTJk1i4cKFvPfee0cnwXr33Xe58MILycrKYvHixUcniyrMd999x1dffcVzzz3HkCFD+Pvf/86CBQsYMWIE99xzDwD33nsvd999N/PmzePkkwu+WbWomQ5//vlnxo4dy/Lly1myZAmPPfYYvXv35rLLLuPZZ58lKyuLFi1aMHjwYP7yl7+wZMkSOnbsyJNPPgnALbfcwquvvsqsWbPw+4/vXThr1izefPNNJk+eTKVKlRg7diwLFy5kypQp3H///UfnQ1m7di333nsvS5YsYdWqVbz77rvMmDGDESNG8Kc//anoP1gUEjln+79FZJuILAtLey9s2t0NIpLlpmeIyMGwda+G7dNVRJaKyFoRecmdtx13bvf33PQ5IpKRqPdiypEV4wCBNpeW6mE/C3Snjuyjh29lqR43GXXq1IkNGzYwatQoLrroouPWTZw4keHDh5OZmcnZZ5/NoUOH2LRpE7m5udxxxx107NiRa6+99mi10BlnnMF//vMfhg0bxtKlS6levei5ZK699lr8fj/79u1j5syZXHvttWRmZnLnnXeSk5MDwLfffnv0SunGG28sMK+iZjqsUaMGlSpV4vbbb+ejjz46OsNjuN27d7Nr1y7OOussAG666SamTZvGrl272Lt3L7179wbgl788fhif/v37U6dOHcCZROvRRx+lU6dOnH/++WzZsoWtW7cejbFjx474fD7at2/Peeedh4jQsWPHuA1pn8iWv5HAP4C3Qgmqel1oWUSeA3aHbb9OVTMj5PMKMASYDXwGDMCZs/02YKeqniYig4C/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kwargs = {\"npt\":npt, \n", " \"correctSolidAngle\": True, \n", " \"polarization_factor\": 0.9,\n", " \"error_model\": \"poisson\", \n", " \"safe\":False}\n", "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n", " split=\"no\", \n", " algo=\"csr\", \n", " impl=\"opencl\",\n", " target_type=\"gpu\")[1]\n", "print(kwargs[\"method\"])\n", "# Since we use \"safe\"=False, we need to reset the integrator manually:\n", "ai.reset()\n", "\n", "def plot_distribution(ai, kwargs, nbins=100, integrate=None, ax=None):\n", " ai.reset()\n", " results = []\n", " c2 = []\n", " if integrate is None:\n", " integrate = ai._integrate1d_legacy\n", " for i in range(nimg):\n", " data = dataset[i, :, :]\n", " r = integrate(data, **kwargs)\n", " results.append(r) \n", " for j in results[:i]:\n", " c2.append(chi2_curves(r, j))\n", " c2 = numpy.array(c2)\n", " if ax is None:\n", " fig, ax = subplots()\n", " h,b,_ = ax.hist(c2, nbins, label=\"Measured histogram\")\n", " y_sim = chi2_dist.pdf(b*(npt-1), npt)\n", " y_sim *= h.sum()/y_sim.sum()\n", " ax.plot(b, y_sim, label=r\"$\\chi^{2}$ distribution\")\n", " ax.set_title(f\"Integrated curves with {integrate.__name__}\")\n", " ax.set_xlabel(\"$\\chi^{2}$ values (histogrammed)\")\n", " ax.set_ylabel(\"Number of occurences\")\n", " ax.legend()\n", " return ax\n", "\n", "a=plot_distribution(ai, kwargs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The normalisation of the raw signal distorts the distribution of error, even at a level of a few percent correction ! (Thanks Daniel Franke for the demonstration)\n", "\n", "## Introducing the *new generation* of azimuthal integrator ... in production since 0.20\n", "\n", "As any normalization introduces some distortion into the error propagation, the error propagation should properly account for this. Alessandro Mirone suggested to treat normalization within azimuthal integration like this :\n", "\n", "$$\n", "I_{bin} = \\frac{\\sum_{pix \\in bin} I_{pix}}{\\sum_{pix \\in bin} \\Omega_{pix}P_{pix}}\n", "$$\n", "\n", "This is under investigation since begining 2017 https://github.com/silx-kit/pyFAI/issues/520 and is now available in production.\n", "\n", "**Nota:**\n", "This is a major issue as almost any commercial detector comes with flatfield correction already applied on raw images; making impossible to properly propagate the error (I am especially thinking at photon counting detectors manufactured by Dectris!). The detector should then provide the actual raw-signal and the flatfield normalization to allow proper signal and error propagation.\n", "\n", "Here is a comparison between the *legacy* integrators and the *new generation* ones:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#The new implementation provides almost the same result as the former one:\n", "ai.reset()\n", "fig, ax = subplots()\n", "data = dataset[0]\n", "ax.set_yscale(\"log\")\n", "jupyter.plot1d(ai.integrate1d_legacy(data, **kwargs), ax=ax, label=\"version<=0.19\")\n", "jupyter.plot1d(ai.integrate1d_ng(data, **kwargs), ax=ax, label=\"verision>=0.20\")\n", "ax.legend()\n", "pass\n", "# If you zoom in enough, you will see the difference !" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Validation of the error propagation without pixel splitting but with normalization:\n", "a=plot_distribution(ai, kwargs, integrate = ai.integrate1d_ng)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Validation of the error propagation without pixel splitting with azimuthal error assessement\n", "kw_azim = kwargs.copy()\n", "kw_azim[\"error_model\"] = \"azimuthal\"\n", "kw_azim[\"correctSolidAngle\"] = False\n", "kw_azim[\"polarization_factor\"] = None\n", "\n", "\n", "a=plot_distribution(ai, kw_azim, integrate = ai.integrate1d_ng)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#what if we use weights (solid-angle, polarization, ...) together with azimuthal error assessement ?\n", "#Validation of the error propagation without pixel splitting with azimuthal error assessement\n", "kw_azim = kwargs.copy()\n", "kw_azim[\"error_model\"] = \"azimuthal\"\n", "kw_azim[\"correctSolidAngle\"] = True\n", "kw_azim[\"polarization_factor\"] = 0.95\n", "\n", "\n", "a=plot_distribution(ai, kw_azim, integrate = ai.integrate1d_ng)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The azimuthal error model is not correct yet ... work needs to go on in that direction.\n", "\n", "## Azimuthal integration with pixel splitting\n", "\n", "Pixels splitting is implemented in pyFAI in calculating the fraction of area every pixel spends in any bin. This is noted $c^{pix}_{bin}$. The calculation of those coeficient is done with some simple geometry but it is rather tedious, this is why two implementation exists: a simple one which assues pixels boundary are paralle to the radial and azimuthal axes called ```bbox``` for bounding box and a more precise one calculating the intersection of polygons (called ```full```. The calculation of those coefficient is what lasts during the initialization of the integrator as this piece of code is not (yet) parallelized. The total number of (complete) pixel in a bin is then simply the sum of all those coeficients: $\\sum_{pix \\in bin} c^{pix}_{bin}$.\n", "\n", "The azimuthal integration used to be implemented as (pyFAI <=0.15):\n", "\n", "$$\n", "I_{bin} = \\frac{ \\sum_{pix \\in bin} c^{pix}_{bin} \\frac{I_{pix}}{\\Omega_{pix} P_{pix}}}{\\sum_{pix \\in bin}c^{pix}_{bin}}\n", "$$\n", "\n", "With the associated error propagation (with the error!):\n", "\n", "$$\n", "\\sigma_{bin} = \\frac{\\sqrt{\\sum_{pix \\in bin} c^{pix}_{bin} \\sigma^2_{pix}}}{\\sum_{pix \\in bin}c^{pix}_{bin}}\n", "$$\n", "\n", "\n", "The *new generation* of integrator in production since version 0.20 (in 1D at least) are implemented like this:\n", "\n", "$$\n", "I_{bin} = \\frac{\\sum_{pix \\in bin} c^{pix}_{bin}I_{pix}}{\\sum_{pix \\in bin} c^{pix}_{bin}\\Omega_{pix}P_{pix}}\n", "$$\n", "\n", "the associated variance propagation should look like this: \n", "\n", "$$\n", "\\sigma_{bin} = \\frac{\\sqrt{\\sum_{pix \\in bin} (c^{pix}_{bin})^2 \\sigma^2_{pix}}}\n", " {\\sum_{pix \\in bin}c^{pix}_{bin}\\Omega_{pix}P_{pix}}\n", "$$\n", "\n", "Since we have now tools to validate the error propagation for every single rebinning engine. Let's see if pixel splitting induces some error, with coarse or fine pixel splitting:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IntegrationMethod(1d int, bbox split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#With coarse pixel-splitting, new integrator:\n", "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n", " split=\"bbox\", \n", " algo=\"csr\", \n", " impl=\"opencl\",\n", " target_type=\"gpu\")[1]\n", "print(kwargs[\"method\"])\n", "a = plot_distribution(ai, kwargs, integrate = ai.integrate1d_ng)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IntegrationMethod(1d int, full split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#With fine pixel-splitting, new integrator:\n", "# so we chose the nosplit_csr_ocl_gpu, other methods may be faster depending on the computer\n", "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n", " split=\"full\", \n", " algo=\"csr\", \n", " impl=\"opencl\",\n", " target_type=\"gpu\")[1]\n", "print(kwargs[\"method\"])\n", "a = plot_distribution(ai, kwargs, integrate = ai.integrate1d_ng)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With those modification available, we are now able to estimate the error propagated from one curve and compare it with the \"usual\" result from pyFAI:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The integrated curves are now following the $\\chi^2$ distribution, which means that the errors provided are in accordance with the data." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Python histogramming without pixels splitting.\n", "\n", "kwargs = {\"npt\":npt, \n", " \"method\": (\"no\", \"histogram\", \"python\"),\n", " \"correctSolidAngle\": True, \n", " \"polarization_factor\": 0.9,\n", " \"safe\": False,\n", " \"error_model\": \"poisson\"}\n", "a = plot_distribution(ai, kwargs, integrate=ai._integrate1d_ng)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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QkcpHDFiBL179wagd+/ePP7441x22WU89dRTbNiwga5du9KqVSsuueQSVq9eDcCmTZvo0KEDbdq04bnnnsv0tfj9/rAjHfbu3ZsRI5ybSJOSkmjSpAktWrTgySefZNasWYwePZr+/fuTmJjIhg0bWLJkCe3bt6dFixbceOON7Nu3D3BGkGzRogUdOnSgf//+J0dpHDx4MLfccgvXXXcdV111FYcPH6ZLly60bNmS5s2bn3LcGjVqxP3330+zZs244447mDhxIh07dqRBgwbMmzcvF//J33nVRnIJ8Kuqrgspqysii0VkqogEu/asAaSELJPilgXnbQNQ1XTgAFAl3M5EpI+ILBCRBbt3787L12GKMlVY/g0zA834lcr5sstR/o6AQPJX+bK/aOjZsyfDhg3j+PHjJCcn065du5PzXn75ZS6//HLmz5/PlClT6N+/P0eOHOHss89mwoQJLFq0iOHDh58cBOvLL7/k6quvZsmSJSxduvTkYFFZWbt2LRMnTuS1116jT58+vPPOOyxcuJBBgwbx8MMPA/Doo4/St29f5s+fzznnnJPptrIb6XDv3r2MHDmSFStWkJyczLPPPstFF13E9ddfz6uvvsqSJUuoX78+vXr14pVXXiE5OZnmzZvzwgsvAHDPPffwwQcfMHv2bOLiTu0iZ/bs2Xz++edMnjyZkiVLMnLkSBYtWsSUKVN44oknTo6Hsn79eh599FGSk5NZvXo1X375JTNmzGDQoEH84x//yP4fFgGv7my/nVPPRnYCtVV1j9smMkpEmgLhzjCC3RVnNe/UQtWPgI/A6f03x1EbE2rHIti/hR8CffJtl79QhRn+JtSc/CmdxzVj88Du+bbvvNKiRQs2b97M0KFDueaaa06ZN378eEaPHs2gQYMAZwCprVu3cu655/LII4+wZMkS4uLiWLt2LQBt2rTh3nvvJS0tjR49ekSUSG655Rbi4uI4fPgws2bN4pZbbjk578SJEwDMnDnzZFK46667eOqpp8JuK7uRDsuXL0/JkiW5//77ufbaa+ne/fT/14EDB9i/fz+XXnopAHfffTe33HIL+/fv59ChQ1x00UUA/PGPfzylHenKK6+kcmXnB4yq8swzzzBt2jR8Ph/bt2/n119/PRlj8+bNAWjatCldunRBRGjevHmedWmf74lERIoBN+E0kgOgqieAE+7jhSKyAWiIcwZSM2T1msAO93EKUAtIcbdZgUyq0ozJawlJY3im2P/oHRfHT/6wPWtHzUj/JbxW/ANayrrsF45R119/PU8++SQ///wze/bsOVmuqnzzzTecf/75pyw/YMAAqlWrxtKlSwkEApQs6XRB06lTJ6ZNm8aYMWO466676N+/P7169TplpMOMoxkGR0cMBAJUrFiRJUuWhI0xkpryjCMdBqu2gooVK8a8efOYNGkSw4YN491332Xy5MnZbheyHmERTh3l8X//+x+7d+9m4cKFxMfHk5CQcPJ1h8bo8/lOPvf5fHnWvuJF1dYVwGpVPVllJSJVRSTOfVwPp1F9o6ruBA6JSHu3/aMX8J272mjgbvfxzcBkLWqDqxjPCAGujZvD9EALDlI2+xXy0LhAG45pcW6Km56v+81L9957L88///zJX8pBV199Ne+8887JL9HFixcDzq/26tWr4/P5GDJkCH6/H4AtW7Zw9tln88ADD3DfffexaNEiwBnRcNWqVQQCAUaOHBk2hvLly1O3bl2+/vprwPniDg621bFjR4YNGwY4X9I5dfjwYQ4cOMA111zDm2++eTJphY6sWKFCBSpVqnSyfWfIkCFceumlVKpUiXLlyjFnjtM1TjCecA4cOMDZZ59NfHw8U6ZMYcuW/L1xNZqX/w4FOgNniUgK8DdV/QToyemN7J2AF0UkHfADD6lq8OyiL79f/vujOwF8AgwRkfU4ZyI9o/VajMnoQllPDdnDIH/OBq7KjSOUYlygDd3j5kD6CShWIvuVwvBy1MWaNWvy6KOPnlb+3HPP8dhjj9GiRQtUlYSEBH744Qcefvhh/vCHP/D1119z2WWXnfw1/vPPP/Pqq68SHx9P2bJl+eKLLwAYOHAg3bt3p1atWjRr1uy0S3eD/ve//9G3b19eeukl0tLS6NmzJxdccAFvvfUWf/zjH3nrrbf4wx/+kOPXeejQIW644QaOHz+OqvLGG28ATjvRAw88wNtvv82IESP4/PPPeeihhzh69Cj16tXjs88+A+CTTz7hgQceoEyZMnTu3JkKFSqE3c8dd9zBddddR+vWrUlMTDw5gmN+sRESjcmBT5+9jTviJtHqxPscpnS+77+TbylfFH8Fbh0CTa6PaJ1YGCHRnJnDhw+fvAJt4MCB7Ny5k7feeivq+7UREo2JtkCAa+Lm8nPgAk+SCMDMQDP2aDlYNdqT/Zv8MWbMmFMubX722We9DiksG4/EmDO1dTbnyD5e9rf3LAQ/cUzwt6Ln2p8gPRWK5W2PwyY23Hbbbdx2221eh5EtOyMx5kytHMUxLc6kQEtPwxgXaAMnDsKmaRGvU9Sqss2Zy8l7xBKJMWdCFdaMY0agOUfzaBTEnJoVaAbFI6/eKlmyJHv27LFkYjKlquzZs+fk5dWRsqotY87ErlVwYCsTA7kfkz23UomHhlfB6jHQ/Q3wxWW5fM2aNUlJScF6dzBZKVmyJDVr1sx+wRCWSIw5E2udq8+n+BO9jSOo8XWw/BtnGN6EjlkuGh8fT926dfMpMFOUWNWWMWdi7U9QPZFdVPI6Esd5V0JcCVj1vdeRmCLMEokxEbowaSiBrfN4c1s9r0P5XYmycF4XJ5FY24fxiCUSYyLU2bcUnygT/d5erRUqIWkMTyyrDQdTYMdir8MxRZQlEmMi1CVuEb9qRVZogtehnGJioCV+FVgz1utQTBFlicSYSKSn0smXzGT/hWiMfWwOUJaF2tBpvzHGA7H1iTAmVm2dTXk55vlNiJmZ4r8QfkmGgzu9DsUUQZZIjInE2p84ofHMDDT1OpKwJgcSnQfrJ3gahyma7D4SY7KQkOSMLT6++Ch+0UYc8/hu9sys0VpQvgasGw8te3kdjili7IzEmGycwx4a+rYzLdDC61CyINDgKtjws9OJozH5KNtEIiL/EpHyIhIvIpNE5DcRuTM/gjMmFlwStwyAGYHm2SzprftnV4bUQ9z+/Jteh2KKmEjOSK5S1YNAd5xx0hsC/aMalTEx5GLfcnZrBVZrLa9DydLMQFNOaDyX++x+EpO/Ikkk8e7fa4ChIUPgZklEPhWRXSKyPKRsgIhsF5El7nRNyLynRWS9iKwRkatDyluJyDJ33tvu2O2ISAkRGe6WzxWRhEjiMuZMCAEu9i1jWqA5IF6Hk6VjlGROoLElEpPvIkkk34vIaqA1MElEqgLHI1hvMNA1TPkbqproTmMBRKQJzpjrTd113hORYFem7wN9gAbuFNzmfcA+VT0PeAN4JYKYjDkjTWQLVeQQM/yxXa0VNCWQSH3fTti70etQTBGSbSJR1SSgA9BaVdOAo8ANEaw3DYjo7MXd3jBVPaGqm4D1QFsRqQ6UV9XZ6gyi8AXQI2Sdz93HI4AuwbMVY/JKJ1+wfaSZx5FEZkrwMuB1dhmwyT+RNLaXBvrhnBkAnItzdpJTj4hIslv1FexCtQawLWSZFLeshvs4Y/kp66hqOnAAqJKLuIw5zcW+ZawK1GZ3rPT2m40teg6bAtVgw2SvQzFFSCRVW58BqcBF7vMU4KUc7u99oD6QCOwEXnPLw51JaBblWa1zGhHpIyILRGSBDepjIpZ6hNa+NUyP8au1MpoeaAGbpttlwCbfRJJI6qvqv4A0AFU9Rg5bHVX1V1X1q2oA+Bho685KAUIviakJ7HDLa4YpP2UdESkGVCCTqjRV/UhVW6tq66pVq+YkdFMUbZlFCUkvgImkOaQdgZR5XodiiohIEkmqiJTC/bUvIvWBEznZmdvmEXQjELyiazTQ070Sqy5Oo/o8Vd0JHBKR9m77Ry/gu5B17nYf3wxMVhuM2uSlDZM5ofHMCzTyOpIzMjvQBCTOqrdMvomki5S/AeOAWiLyP6Aj0Du7lURkKNAZOEtEUtztdBaRRJyktBl4EEBVV4jIV8BKIB3op6p+d1N9ca4AKwX86E4AnwBDRGQ9zplIzwheizGR2ziV+YGGnKC415GckcOUhlptnUTS5XmvwzFFQLaJRFUniMgioD1OldajqvpbBOvdHqb4kyyWfxl4OUz5AuC0S2ZU9ThwS3ZxGJMjR36DXSuYFbjV60hypv7lMOUfcGQPlLFrUEx0RXLV1o1AuqqOUdUfgHQR6RH1yIzxSELSGB5++S0A5gSaeBxNzvQYVwJQHnn5Da9DMUVAJG0kf1PVA8Enqrofp5rKmEKrg28lh7UkyRpD47OfgWStxwEtzSXufTDGRFMkiSTcMtb9vCnULvKtYF6gEekF9K0ewMeMQDMuiUsGuwbFRFkkiWSBiLwuIvVFpJ6IvAEsjHZgxnjlbPZR37fTufqpAJseaMG5shd2r/E6FFPIRZJI/oRzQ+Jw4Gucfrb6RTMoY7zUwbcCgFkxOhpipE52e2+XAZsoi+SqrSNAUj7EYkxM6OBbyQEtzSqt43UouZKiVdkYOId6G3+GDg97HY4pxLJNJCLSEHgSSAhdXlUvj15YxnjnIt8K5gSaECgEA4jOCjSl3paZ4E+DuPjsVzAmByJpSfwa+AD4D+DPZlljCrZ9W6jt280naddkv2wBMCPQnDtTJ8H2hVC7vdfhmEIqkkSSrqrvZ7+YMYXA5ukABb6hPch5HQIbp1oiMVET6cBWD4tIdRGpHJyiHpkxXtg0nd+0PGu1ZvbLFgAHKAvVL4CNP3sdiinEIjkjCXaMGDpOuwIF804tYzKjCptnMCfQmFgfVveM1LsUZr8HJw5DibJeR2MKoUhGSKwbZrIkYgqffZvhYEqB7RYlU/U6QyANts72OhJTSEU0QqKIPCsiH7nPG4hI9+iHZkw+2zITgLmBxh4HksdqtYe44la9ZaImv0dINCZ2bZ4JpauwTmtkv2wBkvD8FGalnsfKmd97HYoppPJ1hERjYlVC0hhSloxn7KH6FMa398xAM5r4tjjd4xuTx/J1hERjYlUNdlNTfit81VqumQF3SJ9NU70NxBRKEXUjz6kjJE4C/i+qURmTz9r5VgGFsH3EtUzrclBLO/eTGJPHsrz8V0R8QCXgJs5whERjCpL2vlXs07KsKST3j2TkJ465gcZcuWma16GYQijLMxJVDQCPqOqe4AiJkSYREflURHaJyPKQsldFZLWIJIvISBGp6JYniMgxEVniTh+ErNNKRJaJyHoReVtExC0vISLD3fK5IpKQg9dvDOCckcwLNEILQf9amZkVaAL7NsH+rV6HYgqZSD41E0TkSRGpdYZ3tg8GumbcFtBMVVsAa4GnQ+ZtUNVEd3oopPx9oA/QwJ2C27wP2Keq5wFvAK9EEJMxpzuQQh3frkJbrRV0slt8OysxeSySRHIvzvgj03AGtFoILMhuJVWdBuzNUDZeVdPdp3OALOsRRKQ6UF5VZ6uqAl8APdzZNwCfu49HAF2CZyvGnJHNhfT+kQzWaC0ofZYlEpPnIhmPpG6U9n0vzmBZQXVFZDFwEHhWVacDNXDuWwlKcctw/25zY0wXkQNAFeC0qjcR6YNzVkPt2rXz+GWYAm/LDHf8kcL+3hCo28lpcFcF+91l8kgk45H0Cleuql/kdKci8lcgHfifW7QTqK2qe0SkFTBKRJoS/oL+4ADUWc3LGOtHwEcArVu3tgGszak2z2R+4PxCMf5Itup2ghXfwm/roGpDr6MxhUQkn5w2IdMlwADg+pzuUETuBroDd7jVVajqCVXd4z5eCGwAGuKcgYRWf9UEdriPU4Ba7jaLARXIUJVmTLYO/QJ7NxT6aq2gTt84v6OeffM9jyMxhUkkVVt/Cn0uIhWAITnZmYh0BZ4CLlXVoyHlVYG9quoXkXo4jeobVXWviBwSkfbAXKAX8I672micnolnAzcDk4OJyZiIFdb+tTKxVc8mRc+io2959gsbE6FIupHP6CjOF32WRGQo0Bk4S0RScG5sfBoogXMlGMAc9wqtTsCLIpKOMwrjQ6oaPLvoi3MFWCngR3cC+AQYIiLrcc5EeubgtZgiLCFpDC8WG8pNcSVZoQleh5NPhNn+JlwZtxACAfAVgeo8E3WRtJF8z+9tDz6gCfBVduup6u1hij/JZNlvgG8ymbcAaBam/DhwS3ZxGJOVtr7VLAw0xE+c16Hkm5mBZtxSbBr8uswZ9MqYXIrkjGRQyON0YIuqpmS2sDEFRSUO0si3jdFpHbwOJV+dvJ9k41RLJCZPRHJeuxWYq6pTVXUmsMfuIjeFQRvfGqDotI8E7aIS6wPnWgeOJs9Ekki+BgIhz/1umTEFWjvfao5rPMuK4ICfswJNYctsSE/1OhRTCESSSIqp6sl3m/u4ePRCMiZ/tPWtYlGgAanEex1KvpsZaAppR2DHIq9DMYVAJIlkt4icvG9ERG4gzN3jxhQoxw/QRLYwTxt5HYknnHHpxbqVN3kikkTyEPCMiGwVka0494E8GN2wjImyrXOJEy1y7SNBBygL1VtYv1smT0RyQ+IGoL2IlAVEVQ9FPyxjomzLDFI1jsWB87yOxDt1L4W5H0DqUShe2utoTAGW7RmJiPxDRCqq6mFVPSQilUTkpfwIzpio2TKLZK3PcUp4HYl36l4K/lTYNsfrSEwBF0nVVjdV3R98oqr7gGuiFpEx0ZZ6BHYsZm6gaLaPnFSnA/iKWTuJybVIEkmciJz82SYipaAo/4wzBd62uRBIL7LtIycVLwM129j9JCbXIkkk/wUmich9InIvziiHn2ezjjGxa/NMkDgWBop2N+oJSWN4c2N1/NuXwLF9XodjCrBsE4mq/gt4CWiM08/W390yYwqmLTPh3ESOUMrrSDw309+MONGTo0QakxORdv25GJgK/Ow+NqZAOj9pJCe2zOfDLed4HUpMWKLncVRLWPWWyZVIrtq6FZiHM+bHrcBcEbk52oEZEw0tfesoIdY+EpRGMeYFGtn9JCZXIun9969AG1XdBScHoZoIjIhmYMZEQzvfKgIqLAic73UoMWNmoCmdd38JB3dC+epeh2MKoEiqtnzBJOLaE+F6xsScdrKalVqHg5TxOpSYMTPgDvdj1VsmhyJJCONE5CcR6S0ivYExwNjohmVMFKSf4ELfOqvWymCV1obSVWDjz16HYgqoSK7a6g98CLQALgA+UtWnsltPRD4VkV0isjykrLKITBCRde7fSiHznhaR9SKyRkSuDilvJSLL3HlviztGr4iUEJHhbvlcGyPFZGv7QkpKmt2ImIHic+5y3/gzqGa7vDEZRVRFparfqurjqvoXVR0Z4bYHA10zlCUBk1S1ATDJfY6INMEZc72pu857IhIc+/R9oA/OOPENQrZ5H7BPVc8D3gBeiTAuU1RtcS5xnWeJ5HT1OsOhnfDbWq8jMQVQ1No6VHUasDdD8Q38fjPj50CPkPJhqnpCVTcB64G2IlIdKK+qs1VVgS8yrBPc1gigS/BsxZiwNs9kVaAW+ynndSSxp15n569Vb5kcyO9G82qquhPA/Xu2W14D2BayXIpbVsN9nLH8lHVUNR04AFQJt1MR6SMiC0Rkwe7du/PopZgCJT0Vts219pHMVKoDlRIskZgcyTSRiMgk929+VBmFO5PQLMqzWuf0QtWPVLW1qrauWrVqDkM0BdqORZB2lNmBJl5HErvqdYZN08Gf7nUkpoDJ6oykuohcClwvIheKSMvQKYf7+9WtrsL9G7ysOAWoFbJcTWCHW14zTPkp64hIMaACp1elGePYPB2w9pEs1esMqYds+F1zxrK6IfF5nMbwmsDrGeYpcHkO9jcauBsY6P79LqT8SxF5HTgXp1F9nqr6ReSQiLQH5gK9gHcybGs2zl33k912FGNOt2k6VGvGvi3lvY4kJiUkjaESx1lYQvBtnAq12nodkilAMk0kqjoCGCEiz6nq3890wyIyFOgMnCUiKcDfcBLIVyJyH7AVuMXd1woR+QpYCaQD/VTV726qL84VYKWAH90J4BNgiIisxzkT6XmmMZqioWHSKJaWmM0w/2VehxLT9lGeFVqH5hsmw6X9vQ7HFCCRDLX7dxG5HujkFv2sqj9EsN7tmczqksnyLwMvhylfADQLU34cNxEZk5ULZAOlJNXaRyIwPdCC5ilj4cQhKGFXt5nIRNJp4z+BR3HOFlYCj7plxhQIHXwrCajYFVsRmB5oDoF0pyrQmAhFcvnvtcCVqvqpqn6Kc0PgtdENy5i80963klVamwOU9TqUmLcw0BDiS8OGyV6HYgqQSO8jqRjyuEIU4jAmOtKO08q3zqq1IpRKPCRcYonEnJFIupH/J7BYRKbg3LvRCXg6qlEZk1e2L6CEpFkiORP1L4d1P8G+zc5NisZkI5JOG4cC7YFv3amDqg6LdmDG5IlN0/GrMN/uH4ncee71MHZWYiIUaaeNO1V1tKp+p6q/RDsoY/LM5ums0AQbf+RMVDkPKtSyRGIiZgNUmcIr9SikzLdqrTMlAvUvg43TrLsUExFLJKbw2job/KnMCpx2G5LJQkLSGPrOqQQnDsD2hV6HYwqALBOJiPhCB6YypqBISBrDB4M/I1XjmGfjs5+xmYGm+FWsestEJMtEoqoBYKmI1M6neIzJMx19y1isDThGSa9DKXAOUpalWh/WT/Q6FFMARFK1VR1YISKTRGR0cIp2YMbkRkUO0VS2MMNv1Vo59bM/0anaOrLH61BMjIvkPpIXoh6FMXmsg28lPlFmWvtIjk0JJPI4I2DDJGhxq9fhmBgWyX0kU4HNQLz7eD5gAxaYmNbRt5xDWopkred1KAXWck2AMlVh3XivQzExLpJOGx/AGRP9Q7eoBjAqijEZk2sX+VYwN9CI9IhOuk04ig/Ou9JpJwn4s1/BFFmRtJH0AzoCBwFUdR2/j7VuTOzZv416vl/sst+80OBKOLYPUhZ4HYmJYZEkkhOqmhp84g5rayMRmti1aSoAMyyR5F79y0DirHrLZCmSRDJVRJ4BSonIlcDXwPfRDcuYXNj4M7u1Amu1pteRFHylKkGtdpZITJYiSSRJwG5gGfAgMBZ4Nqc7FJHzRWRJyHRQRB4TkQEisj2k/JqQdZ4WkfUiskZErg4pbyUiy9x5b4uI5DQuU0iowsapzAo0xems2uRagyvhl2Q4uNPrSEyMimSo3YCIfA7MxanSWqOqOa7aUtU1QCKAiMQB24GRwD3AG6o6KHR5EWmCMx57U+BcYKKINHTHdH8f6APMwUlwXfl9THdTFP2yDI7sYpr/Jq8jKRQSksbQSEoxrgROo3vLu7wOycSgSK7auhbYALwNvAusF5FuebT/LsAGVd2SxTI3AMNU9YSqbgLWA21FpDpQXlVnu4ntC6BHHsVlCqoNkwCYFmjucSCFx2qtxU6t7IxRYkwYkVRtvQZcpqqdVfVS4DLgjTzaf09gaMjzR0QkWUQ+FZFKblkNYFvIMiluWQ33ccby04hIHxFZICILdu/enUehm5i0fhJUa85uKmW/rImQMMWfCBumQPoJr4MxMSiSRLJLVdeHPN8I7MrtjkWkOHA9TuM9ONVU9XGqvXbiJDAIX9GtWZSfXqj6kaq2VtXWVatWzU3YJoY1TRpB2qZZvL89wetQCp3xgVaQehg2Tfc6FBODMm0jEZFgJfMKERkLfIXzRX0Lzt3tudUNWKSqvwIE/7r7/hj4wX2aAtQKWa8msMMtrxmm3BRRHXwriRc/0wItvA6l0JkdaArxZWDNGGhwhdfhmBiT1RnJde5UEvgVuBTojHMFV17UG9xOSLWW2+YRdCMQ7L5+NNBTREqISF2gATBPVXcCh0SkvXu1Vi/guzyIyxRQl/qWckRLsMC6jc9zJygO510Oa36EQMDrcEyMyfSMRFXvidZORaQ0cCXO5cRB/xKRRJyzns3Beaq6QkS+AlYC6UA/94otgL7AYKAUztVadsVWUaXKpb6lzAo0Jc26RYmO86+FVd/DzsVQo5XX0ZgYku0nzj0L+BOQELq8ql6f052q6lGgSoayTK8rVNWXgZfDlC8A7PZlA3s3Utu3m4/SunsdSeHV8GrnLvfVYy2RmFNE8tNtFPAJzt3sdk5rYpM7ANNUax+JntKVoXYHWDMWujzndTQmhkSSSI6r6ttRj8SY3Fg/kU2BamzTal5HUrg1ugZ+egb2boLKdb2OxsSISC7/fUtE/iYiHUSkZXCKemTGRCrtOGyeYVdr5Yfz3XuR14z1Ng4TUyI5I2kO3AVczu9VW+o+N8Z7m6ZB2lEmB+z3TTQlJI0B4KfiNTl/9Vjo0M/jiEysiCSR3AjUC+1K3piYsvZHKF6W2cebeB1JkTAu0Ibzt34Hh3dBWRuayERWtbUUqBjlOIzJGVVYMw7qX0Yq8V5HUySM9bcDDcCq0V6HYmJEJImkGrBaRH4SkdHBKdqBGRORnUvh0A5omFf9iJrsrNFaUKUBrBjldSgmRkRStfW3qEdhTE6tHQcINLgKmOd1NEWEQNMeMP01OLwbylr/dUVdtmckqjo13JQfwRmTneTJw1gYOI+ElyyJ5KsmPax6y5wUyXgkh9xRDA+KyHER8YvIwfwIzpgsHdxJC98mJvrtLut8V62pW7010utITAyI5IyknKqWd6eSwB9wBrgyxltrxwEw0S77zX/iVm9tmelUb5kiLZLG9lOo6ijsHhITC9b8yNZAVdZp2PHMTBQlJI2h64QqVr1lgMg6bQwd/NoHtCaTAaSMyTepR2DTVCYFLiX8GGcm2lZrLTYEqlN/xUhoc5/X4RgPRXLV1nUhj9Nxuni/ISrRGBOptT9B+nHG+dt6HUkRJvwQaM+jm0fBwR1Q/lyvAzIeyTaRRHNcEmNybOV3UOZs5h+3Qay8NNJ/MY8WGwnLvoaOj3odjvFIVkPtPp/Feqqqf49CPMZkL/UorBsPF9xOYMYZN/OZPLRZq0ON1rB0uCWSIiyrT+GRMBPAfcBTUY7LmEz1HTAQ0o5y+6xzvA7FAFzQE3atgF+WeR2J8UimiURVXwtOwEc4w9neAwwD6uVmpyKyWUSWicgSEVngllUWkQkiss79Wylk+adFZL2IrBGRq0PKW7nbWS8ib7tjt5tC7tq4ufym5ZkbaOx1KAag6U3gKwZLh3kdifFIlvUC7pf7S0AyTjVYS1V9SlV35cG+L1PVRFVt7T5PAiapagNgkvscEWkC9ASaAl2B90Qkzl3nfaAP0MCduuZBXCaWpR7lMt9ifvK3IXDmV6+baChTxemiZtnX4E/3OhrjgUw/iSLyKjAfOAQ0V9UBqrovirHcAHzuPv4c6BFSPkxVT6jqJmA90FZEqgPlVXW2qirwRcg6prBaP5EycoIxgXZeR2JCtbgNDv8Km372OhLjgax+0j0BnAs8C+wI6SblUB50kaLAeBFZKCJ93LJqqroTwP0bHOigBrAtZN0Ut6yG+zhjuSnMVo5ij5azaq1Y07ArlKzgNLqbIifTq7ZUNZr1Bh1VdYeInA1MEJHVWSwbrt1Dsyg/fQNOsuoDULt27TON1cSKtGOw9id+8rfBT1z2y5v8E1/SaStZOgyOH3CSiikyPKlkVtUd7t9dwEigLfCrW12F+zfYDpMC1ApZvSawwy2vGaY83P4+UtXWqtq6alXr8rrAWj0GUg/zfeAiryMxIRKSxpCQNIbrZtWH9GOQ/JXXIZl8lu+JRETKiEi54GPgKmA5MBq4213sbuA79/FooKeIlBCRujiN6vPc6q9DItLevVqrV8g6pjBaOgzK12SOVWvFpGVaD6pfAAs+c0auNEWGF2ck1YAZIrIUZySiMao6DhgIXCki64Ar3eeo6grgK2AlMA7op6p+d1t9gf/gNMBvAH7Mzxdi8tGhX2HDJLjgNtSu1opdre5x7ilJme91JCYfRdLXVp5S1Y3ABWHK9wBdMlnnZeDlMOULgGZ5HaOJQcu+dnqabdETJqzzOhqTmeY3w/hnnbOSWtYPWlFhP+1MgbBy3EcsCdQn4TVLIjGtRDlofgus+BaORfNuARNLLJGY2PfLMpr4tvCN/xKvIzHZSEgaw7WzGkD6cbsUuAixRGJi39JhpGocP/jbex2JicAKTWBJoB4stEb3osISiYlt/nRI/oopgQvZR3mvozER+q//Sti9GjZM9joUkw8skZjYtnYcHNll1VoFzGj/RVC2Gsx+1+tQTD6wRGJi2/z/QPmaTAq09DoScwZSiYe2fZwzkl9XeB2OiTJLJCZ2/bYeNk6B1r2tS5SCqPW9EF8aZv/b60hMlFkiMbFrwafgi4cLe3kdicmJ0pUh8Q6ny5SDO72OxkSRJRITm1KPcmD2Z4xOa03Cywu8jsbkQELSGDrNaELAnw7zPvI6HBNFlkhMbFo+ggpylCHpV3odicmFrVqNnwKtYcEncDy3o0+YWGWJxMQeVZj3MasDtZiv53sdjcml99JvcLqWn/uB16GYKLFEYmLP1jnwSzL/9V9B+GFnTEGyTOvB+dfArHfh2H6vwzFRYInExJ4Zr0PpKozwd/I6EpNXOj8NJw7AnPe8jsREgSUSE1t2JsO68dC+L8cp4XU0Jq9UbwGNr4fZ78HRvV5HY/KYJRITW2a8AcXLQZsHvI7E5KGEpDFctaQjgROHYdY7Xodj8pglEhM79mzAv3wk7x/tTMILM72OxuSxtVqLMYF2MPdDOPSL1+GYPGSJxMSOmW+SRjE+Sb/G60hMlAxKvxX8qTDxBa9DMXnIizHba4nIFBFZJSIrRORRt3yAiGwXkSXudE3IOk+LyHoRWSMiV4eUtxKRZe68t92x201BdCAFlgzlK39nfqOC19GYKNmi50CHh2Hpl5BiN5oWFl6ckaQDT6hqY6A90E9Emrjz3lDVRHcaC+DO6wk0BboC74lIsOOl94E+QAN36pqPr8Pkpckvgfj4ML2715GYaOvU3+kZ+Mf/g0DA62hMHsj3RKKqO1V1kfv4ELAKqJHFKjcAw1T1hKpuAtYDbUWkOlBeVWerqgJfAD2iG72Jip3JsHQYtHuQ7VT1OhoTbSXKwRUDYPtCSB7mdTQmD3jaRiIiCcCFwFy36BERSRaRT0WkkltWA9gWslqKW1bDfZyx3BQw0957mH1ahhaTm3sdiskHCUljqDusHEsC9WHiALtJsRDwLJGISFngG+AxVT2IU01VH0gEdgKvBRcNs7pmUR5uX31EZIGILNi9e3duQzd5af1EOsUt4530GzlIGa+jMflE8fFc2j1w5Df46a9eh2NyyZNEIiLxOEnkf6r6LYCq/qqqflUNAB8Dbd3FU4BaIavXBHa45TXDlJ9GVT9S1daq2rpqVas6iRkBP4x/ni2Bsxnit84Zi5plWg8ufgyW/BfW/uR1OCYXvLhqS4BPgFWq+npIefWQxW4ElruPRwM9RaSEiNTFaVSfp6o7gUMi0t7dZi/gu3x5ESZvzP8Edq3gX+k9SaOY19EYL1z6FJzdFEb/2e54L8C8OCPpCNwFXJ7hUt9/uZfyJgOXAX8BUNUVwFfASmAc0E9V/e62+gL/wWmA3wD8mL8vxeTY/q1O/Xj9Ls5NaqZoKlYCerwHR3+DcUleR2NySJwLnoqO1q1b64IFdv26p1Thv39wevntN4eEgcu8jsh47LFiI3is2Ldw44dwQU+vwzFhiMhCVW0dbp7d2W7y3eN/TYINk3j+6M2WRAwA76TfCHUuhu8fg1/sPVHQWCIx+evQLzwfP4T5gYbWwG5O8hMHt3wGpSrB8Dvh2D6vQzJnwBKJyT/+dBhxLyVIIyntAdTefiZU2bPh1s/hwHb4to9zVZ8pEOyTbPLPpBdgy0yeTrufDWr3jppTJSSNIeHfu3n2xJ3OmDRj+zvtaSbmWSIx+WPlaJj1NrS5n1GBi72OxsSw//qvhI6PwoJPYMo/vA7HRMAu3jfRt3sNh4b3YYPW59bpl3gdjSkIrnjBua9k2r+gdGVo39friEwW7IzERNe+LfBFD44Tz8Opj5JKvNcRmQIg4emx1J99FT/62zj3l8x53+uQTBYskZjoOfQrDOkBaUe4K/UZdnCW1xGZAsRPHI+mPQKNujvJZOIL1mYSoyyRmOg4updVr17B0T3buenAX1ittb2OyBRAqcTDrV9Ay7thxusw+k/gT/M6LJOBJRKT9/Zugk+uop7soE/a4yzShl5HZAqwhGfGkTDrKt5O7wGLh8Dn18HBsP2zGo9YIjF5a/tC+ORKOLKbO1OfYUbAxhgxeUF4Pf1W/pzazxkI7YOLYcNkr4MyLkskJm+owtLhHPuoK1sPweUHnmW+NvI6KlPIjA50pMvhAaw5XIrAFzfB2P+D4we9DqvIs0Ricu/YPhhxL4zswzKty02pL7JRz/U6KlNIbdAa3JD6d77wXwnzPoJ/t4NV31tDvIcskZicU4VVP7BzYEvSln/Hv9Juo2fqc/xGBa8jM4XccUowIL033D/Ruc9k+J0w+FrYPNPr0IokuyHR5Mz2hTD+Odgyk4NakwfSHme51vM6KlPEJLz7K8X4P/4YN4kX94yDwddAvc7OnfF1O4PPfivnBxuPxEROFTZNhTkfwNof2a3leSP9Fob7Ozu9txrjoRKkcmfcBB4q9j1V5SBUrg9t7oMWt0EZu4cpt7Iaj8QSicnewR2w8jtWj/03jXzb+E3LMyT9Sj7xd+Mwpb2OzphTFCeNbr659Co2gVa+dSA+SLgYmvSAhl2hgnUYmhOWSEJYIolAwA87l8Cm6cwb/yVtfWsAWB5I4HP/VYz2X8QJinsbozEROF+20j1uDtf45lLft9MpPKsh1L0U6nSAGq2gYh0Q8TbQAqBQJxIR6Qq8BcQB/1HVgVktb4kkg7RjsG8z7FrpXJ//SzKkLIQTBwBYFajNGH87xgba2ZVYpgBTGkoKl/iSudi3nHa+1ZSWE86s0lWgWjOo2giqng9V6jvJpUJNiLO+4YIKbSIRkThgLXAlkALMB25X1ZWZrVOoE0nAD2lHIe04pB6GE4ecv8f2w9E9cGwvHN4Fh3bCwZ2wfysc3A4474FUjWOd1mRpoB6zA02ZE2jCbip6+YqMiYpipHO+bOMC30YukA2c79tKA9lOmWByAfwqxJWvDuWqQdlznHaW0pWdxFOyIpQsDyXKQYnyEF8K4ku7U0koVhLiShSqxv6sEklBv2qrLbBeVTcCiMgw4AYg00SSY8tGwILPMpmZSTI+JUlr5uWqp//VgPs44DwP+EH9zt9A+u+TPxXSU8F/wnmejWNanF+0EruoxHZNYHOgPZv1HDbouazVmqQV+LeEMdlLpxgrtC4r/HX5ki5uqXIue6jj+5Waspuaspvq+/Zy9v79VJMVVJGDVOQQxeUMRm70FYO44s6Zja/Y75PEgc+dxOdOwcfiVrVl9xfncdAp1XOZlHfoB42uPYMjFZmC/q1RA9gW8jwFaJdxIRHpA/Rxnx4WkTVRjuss4Lco7yMXPAktxo+JZ+y4hOfJcdkCzM7vnUYuD47Jj7lZuU5mMwp6IgnXQnba6YGqfgR8FP1wHCKyILNTwKLKjkl4dlzCs+Nyulg+JgW9Ai8FqBXyvCZg3YIaY0w+KuiJZD7QQETqikhxoCcw2uOYjDGmSCnQVVuqmi4ijwA/4Vz++6mqrvA4LMjHarQCxI5JeHZcwrPjcrqYPSYF+vJfY4wx3ivoVVvGGGM8ZonEGGNMrlgiySER6Soia0RkvYgkhZlfQUS+F5GlIrJCRO7xIs78FsFxqSQiI0UkWUTmiUgzL+LMTyLyqYjsEpHlmcwXEXnbPWbJItIyv2P0QgTHpZGIzBaREyLyZH7H54UIjskd7nskWURmicgF+R1jOJZIcsDtmuXfQDegCXC7iDTJsFg/YKWqXgB0Bl5zrywrtCI8Ls8AS1S1BdALp5+0wm4w0DWL+d2ABu7UB3g/H2KKBYPJ+rjsBf4MDMqXaGLDYLI+JpuAS93Pz9+JkQZ4SyQ5c7JrFlVNBYJds4RSoJyICFAW50ORfR8mBVskx6UJMAlAVVcDCSJSLX/DzF+qOg3n/5+ZG4Av1DEHqCgi1fMnOu9kd1xUdZeqzgfS8i8qb0VwTGap6j736Ryce+c8Z4kkZ8J1zZJxkIN3gcY4N0guAx5V1UD+hOeZSI7LUuAmABFpi9PtQkx8GDwUyXEzJqP7yGWfJ3nFEknORNI1y9XAEuBcIBF4V0TKRzcsz0VyXAYClURkCfAnYDGF/0wtOxF19WNMkIhchpNInvI6FijgNyR6KJKuWe4BBqpzo856EdkENALm5U+Insj2uKjqQZxjg1vtt8mdijLr6sdETERaAP8BuqnqHq/jATsjyalIumbZCk7/1G4bwPnAxnyNMv9le1xEpGLIRQf3A9Pc5FKUjQZ6uVdvtQcOqOpOr4MysUdEagPfAnep6lqv4wmyM5IcyKxrFhF5yJ3/Ac4VFYNFZBlO1cVTqlqouwuP8Lg0Br4QET/OuDH3eRZwPhGRoThX7p0lIinA34B4OHlMxgLXAOuBo7hnbIVddsdFRM4BFgDlgYCIPAY0Kcw/PCJ4rzwPVAHec07oSY+FHoGtixRjjDG5YlVbxhhjcsUSiTHGmFyxRGKMMSZXLJEYY4zJFUskxhhjcsUSiTHGmFyxRGJimoj0EJGPReQ7EbnK63iMMaezRGJimqqOUtUHgN7AbXmxTRE5nBfbyWL7pURkqojEiUhCFmNLzMpiGxVF5OHoRektERkQHGNERIqLyDQRsRukCyhLJKageBZnrJOC4F7gW1X1Z7WQql6UxeyKQJ4lErf7lZj8vLtDDkwij34omPwXk28sU/SISBkR2S4i/3CftxGRJe6v+1eAH1V1UZj1Xgn95e7+0n3CfTxKRBa6I1T2CbPuKWcLIvKkiAxwH9/pjuC4REQ+dAftCsY5RpyRL5eLSLgvvzuA70Kex7nVcytEZLyIlHK3dTiLbQ4E6rv7f9Vd7nF3/nK3u5Bg3M+JyGoRmSAiQ0N+6SeIyCoReQ9YBNQKd0zc5VaLyH/cbf9PRK4QkZkisk6c7v7PZLnMjt1fxRk9cyJO33OhRrnHzRREqmqTTTEx4fQhtAkojTOGSyLOCHkLgQ+Ah8KscyEwNeT5SqC2+7iy+7cUsByo4j4/7P5NAJaHrPskMACnP7DvgXi3/D2gl/v4D8DHIetUyBBPceCXkOcJON3kJ7rPvwLuzBDHadsME1sr95iUwRkobYX72lvjDFdQCigHrAOeDNl3AGgfsp3TjklIjM1xflwuBD7F6SPuBmBUhteS6XKZHbuQ+Evj9J21Phinu1wcsNvr96BNOZusTtLEDFXdIyJHgU+AIaq6BOdL8u0s1lksImeLyLlAVWCfqm51Z/9ZRG50H9fCGco2km63u+B88c13O8YrBexy5y0DBrlnST+o6vQM654F7M9Qtsl9LeB8+SZkmH/aNkWkUoZlLgZGquoRABH5FrgE5wv9O1U95pZ/n2G9LeqMuhgU7pj84sa4zN3GCmCSqqo4nY6Gxpvdcpkdu8pu/EfddU/pFVpV/SKSKiLlVPUQpkCxRGJiTTJQnTOr5hgB3AycgzO8LyLSGbgC6KCqR0XkZ6BkhvXSObV6NzhfgM9V9emMO1LVtSLSCqe33n+KyHhVfTFkkWNh9nMi5LEf58s1y20CX2TYRrjBr7IqDzpycsGsj0lojIGQ5wFO/Z7Ibrmwx86tisuuh9gSwPFsljExyNpITMwQkarAZcAIPbNhiYfhjH1yM05SAad6aJ/7hdkIaB9mvV+Bs0WkioiUALq75ZOAm0XkbDeuyiJSx318LnBUVf8LDAJahm5QnfG040QkYzLJVCbbPIRTVRU0DeghIqVFpAxwIzAdmAFcJyIlRaQscG0Wu4rkmORWZsduGnCj2+ZVDrgudCURqYJTtVVkxmcvTOyMxMSST4DJwAVnspI6Y56UA7br7wNCjQMeEpFkYA0wJ8x6aSLyIjAXp21mtVu+UkSeBcaLc6VTGtAP2ILTPvCqiATc8r5hQhqPUxU1McKXcNo23Wq+me7FAD+qan8RGczvI2z+R1UXw8lqoqVufAuAA5nsJ9tjkluZHTtVnSMiw3GqKrfgJMFQl+GMy2IKIBuPxMQEEXkQuBynwftHVW3mcUg5JiIXAo+r6l35tL+yqnpYRErj/PLvo2GucItlbpvP06q6xutYzJmzMxLjORFpADyOc3XRPhHZ6bY9FMg72d0LAKaISJxmcy9JHvlIRJrgtHd8XgCTSHGcK8MsiRRQdkZijDEmV6yx3RhjTK5YIjHGGJMrlkiMMcbkiiUSY4wxuWKJxBhjTK5YIjHGGJMrlkiMMcbkiiUSY4wxuWKJxBhjTK78P23bJynKZkw8AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Cython histogramming without pixels splitting.\n", "\n", "kwargs = {\"npt\":npt, \n", " \"method\": (\"no\", \"histogram\", \"cython\"),\n", " \"correctSolidAngle\": True, \n", " \"polarization_factor\": 0.9,\n", " \"safe\": False,\n", " \"error_model\": \"poisson\"}\n", "a = plot_distribution(ai, kwargs, integrate=ai._integrate1d_ng)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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0y+zWFtwlPJkUIr12oC70v/Ir08/BT+vh+F3Q3rR/lLJSYUKFVi2bBnDhg3j+PHjPPTQQwwZMoQPP/yQiRMnMnLkSN5///2z1lu0aBHDhw9nyZIlfP311yxYsOCsZX744Qfq1avH0qVLWbFiBT179gRg4MCBNG3alNTUVF5//XUA1q5dy/3338+SJUto3Lhx5jbWrl1Lv379WLZsGZUrV861SizctkNj/vjjj5k3bx5z587lww8/ZMmSJQCsX7+e/v37s3LlSqpWrcpXX32VtwMZZ0pcN/LGFJaklLE8nDCWPyV+y6sZ9zDYn90VWsK3ga6cPFaa/5x+izF/vZXfpvdny8AbYhfcuBT4aXl0t1mnHfQamOtiNWrUoHz58jz88MPcd999JCcnk5yczG9+85ts15kxYwa33HIL5cuXB+Cmm246a5l27drxzDPPMGDAAG644QYuvfTSbLfXuHFjunTpclZ5w4YN6datGwD33nsv77zzDs8880yurymcmTNncsstt1ChQgUAbr31VmbMmMFNN91EkyZNSE5OBuDCCy9ky5Yt+dpHvLAzEmNipKOs4blSwxjnv4jB/utyXX5CoCODMn5F74TZPJkwphAi9E779u3ZtWtXnr6kc7tRrkWLFixatIh27drx3HPP8de//jXbZYNf7rntI/i8VKlSBAKBzPJI7vzO6U6EMmXKZE4nJCSQkZGR6/bimZ2RGBMLR/fw/0q/w3atxR/SHyN8Jwxne9d/Ey182/lD4gjYcj8kXRKb+CI4c4iVvXv3MmXKFF544QV8vsh+y3bv3p2+ffuSkpJCRkYG3377LY899tgZy+zcuZPq1atz7733UrFiRYYMGQJApUqVOHLkSET72bZtG3PmzOHiiy9m2LBhXHKJc/xr167Nnj172LdvHxUrVuS7776jZ8+eOW47NGZVZdSoUQwdOjSiOIoaSyTGRFHwxsNBie9zo+8YD6SncITyediCkJL+KB1962jww3PQbxpE+GVbVDz88MNcccUVLF26NOJ1OnTowJ133klycjKNGzcOW221fPlynn32WXw+H4mJibz33nuAU5XWrVs32rZtS69evXK8KqxVq1Z88sknPPbYYzRv3pwnnngCgMTERF588UU6d+5MkyZNaNmyZdhth7aTdOjQgb59+9KpUycAHnnkES644IIiX40VjpS0G8E7duyoNtSuiZWklLE0kzR+LD2Awf7reDXjnnxt5ybfbN4p/W/o/R4k3x2V2FavXk2rVq2isq38+s9//sPkyZMZNGgQvXr1YsWKFZ7GY8IL914RkUWq2jHc8sXrp44xceCZUl9ynLK8l3FjvrcxJnAxqYGm7Br1R1qlFO0reoLWr1/Pm2++yfvvv0/Dhg2pW7eu3cFeTFgiMSaKkmUDPRMW8GHG9RygcgG2JPwt/V7qyn4eTfg+avF5qXnz5qxdu5Zq1ZxBUSdMmMD48eM9jspEgyUSY6Lo2VIj+FkrM9jfq8DbWqTn8Z2/M4+X+rbY36hoijZrbDemgIIN7F19K/i89Er+kn4fxygXlW3/I6MPvUrPh3nvw9V/ico2jYk2OyMxJkoeTRjLbq3KZ/6rorbNbVqbHwMXwaIhcPp41LZrTDRZIjEmChrIHnr4ljHcfwWnSYzqtj/O6AknD8Ky4VHdrjHRYonEmCi4J2ESAYRhGZdHfdsL9Dyoez7M+4/Td5cxccYSiTEFVJp0fpUwlUmBDvxEjRjsQfjd1oth7xru/eNrMdi+MQVjicSYAurpm08NOcL/otg2ktV3gYvZq1V4MOGHmO3DmPyK5ZjtHwE3AHtUta1bNgI4z12kKnBQVZNFJAlYDQQHGZirqo+761zIL8Psfg88raoqImWAT4ELgX3Anaq6JVavx5js3FtqIlsCtZkZyNvoenlxmkQ+81/Jb0t9DT9vgJrNCrzN7MaRz69Ixp8XEe69997MPqcyMjKoW7cunTt35rvvvotqPNFUsWJFjh49ekbZli1buOGGG8Lenf/iiy/SvXt3rroq/I+L0aNH06JFC1q3bh2TeAtbLM9IhgA9QwtU9c7gsLvAV8DXIbM3hgzJ+3hI+XtAP6C5+whu82HggKo2A94C7JzfFL7dK+nkW8v//FehMT7B/yzjKjLUB0uKbsd/FSpUYMWKFZkDOU2YMIH69et7Eksse9z961//mm0SASeRrFq1Kir7ioeeg2M5Zvt0YH+4eeL0zfwrYFhO2xCRukBlVZ3jjtP+KdDbnX0z8Ik7PRK4UnLrZ9qYaFs8lFOayEh/95jvai9VmR5oD8u/hJAuzYuaXr16MXasczY0bNgw7rrrrsx5x44d46GHHuKiiy7iggsu4JtvvgGcX/+XXnopHTp0oEOHDpnD2e7atYvu3buTnJxM27ZtmTFjBnDmKIUjR46kb9++APTt25ff/e53XH755QwYMICNGzfSs2dPLrzwQi699FLWrFkDwObNm7n44ou56KKL+NOf/pTta/H7/WFHOuzbty8jR44EnBEaW7duTfv27XnmmWeYPXs2Y8aM4dlnnyU5OZmNGzeSmppKly5daN++PbfccgsHDhwAnBEk27dvz8UXX8yzzz6bOUrjkCFDuOOOO7jxxhu55pprOHr0KFdeeSUdOnSgXbt2Zxy3li1b8sgjj9C2bVvuueceJk6cSLdu3WjevDnz588vwH/yF161kVwK7FbV9SFlTURkiYhME5Fg1571gbSQZdLcsuC87QCqmgEcgpi0dBoTXsAPK79mciCZg1QqlF2O8l8Ch3fA1pmFsr9Y6NOnD8OHD+fkyZMsW7aMzp07Z8575ZVXuOKKK1iwYAFTpkzh2Wef5dixY5xzzjlMmDCBxYsXM2LEiMxBsD7//HOuvfZaUlNTWbp0aeZgUTlZt24dEydO5I033qBfv37861//YtGiRQwaNIgnn3wSgKeffponnniCBQsWUKdOnWy3ldtIh/v372fUqFGsXLmSZcuW8cILL9C1a1duuukmXn/9dVJTU2natCn3338/r732GsuWLaNdu3b85S/OzacPPvgg77//PnPmzCEhIeGMbc+ZM4dPPvmEyZMnU7ZsWUaNGsXixYuZMmUKv//97zPHQ9mwYQNPP/00y5YtY82aNXz++efMnDmTQYMG8eqrr+b+D4uAV3e238WZZyO7gEaqus9tExktIm0IP4hD8PrHnOadQUT64VSP0ahRo3wHbcwZts6Go7v51n9noe1yfKAjlK4ES0dAk9ifBcVC+/bt2bJlC8OGDeO6684c8Gv8+PGMGTOGQYMGAc4AUtu2baNevXo89dRTpKamkpCQwLp16wC46KKLeOihh0hPT6d3794RJZI77riDhIQEjh49yuzZs7njjjsy5506dQqAWbNmZSaF++67jwEDBoTdVm4jHVauXJmyZcvyyCOPcP3113PDDWePenno0CEOHjxIjx49AHjggQe44447OHjwIEeOHKFr164A3H333We0I1199dVUr14dcAbRev7555k+fTo+n48dO3awe/fuzBjbtWsHQJs2bbjyyisREdq1axe1Lu0L/YxEREoBtwIjgmWqekpV97nTi4CNQAucM5AGIas3AHa602lAw5BtViGbqjRV/UBVO6pqx1q1akX3BZkSKSllLJ8NfotjWobJgQsKbb+nKM0XxztwZMlXtEz5OvcV4tRNN93EM888c0a1FjhfiF999RWpqamkpqaybds2WrVqxVtvvUXt2rVZunQpCxcu5PTp04AzeNT06dOpX78+9913H59++ilw5kiHWUczDI6OGAgEqFq1aua+UlNTWb16deZykdSU5zbSYalSpZg/fz633XYbo0ePzhxHPhK5DfEROsrjZ599xt69e1m0aBGpqanUrl0783WHxujz+TKf+3y+qLWveFG1dRWwRlUzq6xEpJaIJLjT5+I0qm9S1V3AERHp4rZ/3A984642BnjAnb4dmKwlbXAV45lSZNArYR4TAxdykjK5rxBFowKXUElOcLVvUaHuN5oeeughXnzxxcxfykHXXnst//rXvzK/RJcsWQI4v9rr1q2Lz+dj6NCh+P1+ALZu3co555zDo48+ysMPP8zixYsBZ0TD1atXEwgEGDVqVNgYKleuTJMmTfjyyy8B54s7ONhWt27dGD7c6Ungs88+y/frPHr0KIcOHeK6667jn//8J6mpqcCZozZWqVKFatWqZbbvDB06lB49elCtWjUqVarE3LlzATLjCefQoUOcc845JCYmMmXKFLZu3ZrvmPMjlpf/DgMuA2qKSBrwZ1UdDPTh7Eb27sBfRSQD8AOPq2rw7OIJfrn8d5z7ABgMDBWRDThnIn1i9VqMyaqrbyXV5Sjf+i8u9H3PDbRih9bgloSCtZNEcrlurDRo0ICnn376rPI//elP/Pa3v6V9+/aoKklJSXz33Xc8+eST3HbbbXz55Zdcfvnlmb/Gp06dyuuvv05iYiIVK1bMPCMZOHAgN9xwAw0bNqRt27ZnXbob9Nlnn/HEE0/w8ssvk56eTp8+fTj//PN5++23ufvuu3n77be57bbb8v06jxw5ws0338zJkydRVd566y3AaSd69NFHeeeddxg5ciSffPIJjz/+OMePH+fcc8/l448/BmDw4ME8+uijVKhQgcsuu4wqVaqE3c8999zDjTfeSMeOHUlOTs4cwbGw2AiJxuTDly/cyLUJC+l46r2o960ViT+UGk6/hO8o9exaqHhOROvEwwiJJm+OHj2aeQXawIED2bVrF2+//XbM92sjJBoTaxmnuDZhIT/6O3qSRAC+9l9CKQnAytGe7N8U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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# OpenCL histogramming without pixels splitting.\n", "\n", "kwargs = {\"npt\":npt, \n", " \"method\": (\"no\", \"histogram\", \"opencl\"),\n", " \"correctSolidAngle\": True, \n", " \"polarization_factor\": 0.9,\n", " \"safe\": False,\n", " \"error_model\": \"poisson\"}\n", "a = plot_distribution(ai, kwargs, integrate=ai._integrate1d_ng)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "PyFAI's historical version (version <=0.16) has been providing proper error propagation ONLY in the case where any normalization (solid angle, flatfield, polarization, ...) and pixel splitting was DISABLED. \n", "This notebook demonstrates the correctness of the new integrator.\n", "Moreover the fact the normalization is performed as part of the integration is a major issue as almost any commercial detector comes with flatfield correction already applied." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total execution time: 589.027 s\n" ] } ], "source": [ "print(f\"Total execution time: {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.1+" } }, "nbformat": 4, "nbformat_minor": 1 }