{ "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": [ "/users/kieffer/.venv/py39/bin/python\n", "3.9.5 (default, Jun 4 2021, 12:28:51) \n", "[GCC 7.5.0]\n" ] } ], "source": [ "%matplotlib inline\n", "# use `widget` instead of `inline` for better user-exeperience. `inline` allows to store plots into notebooks.\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: 2023.1.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-10 m\n", "SampleDetDist= 1.000000e+00 m\tPONI= 0.000000e+00, 0.000000e+00 m\trot1=0.000000 rot2=0.000000 rot3=0.000000 rad\n", "DirectBeamDist= 1000.000 mm\tCenter: x=0.000, y=0.000 pix\tTilt= 0.000° tiltPlanRotation= 0.000° 𝛌= 1.000Å\n", "Solid angle: maxi= 9.999999925000007e-09 mini= 9.69376805173843e-09, ratio= 0.9693768124441684\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 | 50.878 |\n", "| no split, histogram, cython | 0.00e+00 | 16.077 |\n", "| bbox split, histogram, cython | 0.00e+00 | 30.840 |\n", "| full split, histogram, cython | 0.00e+00 | 229.377 |\n", "| no split, CSR, cython | 0.00e+00 | 15.635 |\n", "| bbox split, CSR, cython | 0.00e+00 | 16.784 |\n", "| no split, CSR, python | 0.00e+00 | 21.419 |\n", "| bbox split, CSR, python | 0.00e+00 | 22.093 |\n", "| no split, CSC, cython | 0.00e+00 | 10.927 |\n", "| bbox split, CSC, cython | 0.00e+00 | 13.812 |\n", "| bbox split, LUT, cython | 0.00e+00 | 18.660 |\n", "| no split, LUT, cython | 0.00e+00 | 16.976 |\n", "| full split, LUT, cython | 0.00e+00 | 18.715 |\n", "| full split, CSR, cython | 0.00e+00 | 15.879 |\n", "| full split, CSR, python | 0.00e+00 | 21.790 |\n", "| full split, CSC, cython | 0.00e+00 | 14.660 |\n", "| no split, histogram, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 8.278 |\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/users/kieffer/.venv/py39/lib/python3.9/site-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 / Intel(R Xeon(R CPU E5-16 | 0.00e+00 | 18.985 |\n", "| no split, histogram, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 8.438 |\n", "| no split, histogram, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-16 | 0.00e+00 | 19.117 |\n", "| no split, histogram, OpenCL, Intel(R FPGA Emulation Platform for OpenC | 0.00e+00 | 21.750 |\n", "| bbox split, CSR, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 2.159 |\n", "| no split, CSR, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 2.074 |\n", "| bbox split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 13.216 |\n", "| no split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v4 | 0.00e+00 | 9.917 |\n", "| bbox split, CSR, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 2.891 |\n", "| no split, CSR, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 2.673 |\n", "| bbox split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 12.807 |\n", "| no split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v4 | 0.00e+00 | 9.743 |\n", "| bbox split, CSR, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM | 0.00e+00 | 27.026 |\n", "| no split, CSR, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM / | 0.00e+00 | 22.370 |\n", "| full split, CSR, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 2.047 |\n", "| full split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 13.301 |\n", "| full split, CSR, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 3.011 |\n", "| full split, CSR, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 12.584 |\n", "| full split, CSR, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM | 0.00e+00 | 27.325 |\n", "| bbox split, LUT, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 4.419 |\n", "| no split, LUT, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 3.702 |\n", "| bbox split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 18.735 |\n", "| no split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v4 | 0.00e+00 | 13.759 |\n", "| bbox split, LUT, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 5.462 |\n", "| no split, LUT, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 4.434 |\n", "| bbox split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 16.971 |\n", "| no split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v4 | 0.00e+00 | 14.108 |\n", "| bbox split, LUT, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM | 0.00e+00 | 17.540 |\n", "| no split, LUT, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM / | 0.00e+00 | 13.576 |\n", "| full split, LUT, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000 | 1.19e-07 | 4.701 |\n", "| full split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 13.908 |\n", "| full split, LUT, OpenCL, NVIDIA CUDA / Quadro M2000 | 1.19e-07 | 5.646 |\n", "| full split, LUT, OpenCL, Intel(R OpenCL / Intel(R Xeon(R CPU E5-1650 v | 0.00e+00 | 14.343 |\n", "| full split, LUT, OpenCL, Intel(R FPGA Emulation Platform for OpenCL(TM | 0.00e+00 | 18.871 |\n", "+------------------------------------------------------------------------+----------+---------+\n", "\n", "The fastest method is IntegrationMethod(1d int, full split, CSR, OpenCL, NVIDIA CUDA / NVIDIA RTX A5000) in 2.047 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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ffsUFRXldBQAN1FISIgKFSqkwMDAJM9D2QMAAEhD9u3bp2zZsqlo0aIyxjgdB8BNYK3VsWPHtG/fPhUrVizJ83EaJwAAQBoSFRWlW2+9laIHZCDGGN16663XfESfsgcAAJDGUPSAjOd6fu8pewAAALgmb775pipUqKCwsDBVrlxZy5YtkyT16dNHERERybKOokWL6ujRo1ec5n//+981L3f06NEaMGBAkqY9cOCAOnbseM3rSM4MwI3gO3sAAABIsiVLlmjGjBlavXq1goODdfToUcXExEiShg8fflOz/O9//9MLL7yQYssvUKCAJk+enGLLB1IaR/YAAACQZAcPHlTu3LkVHBwsScqdO7cKFCggSWrYsKFWrlwpScqaNaueeeYZVahQQU2bNtXy5cvVsGFDFS9eXNOmTZN06RGuNm3aaN68eZes86677lLVqlVVoUIFDRs2TJL0/PPP69y5c6pcubK6desmSfrmm29Uo0YNVa5cWf369ZPH45EkjRo1SqVLl1aNGjW0aNGiRLdr/vz5qly5sipXrqwqVaro1KlT2r17typWrChJOnv2rO69916VL19eHTp0UM2aNS/Y1hdffFGVKlVSrVq1dOjQIUnS9OnTVbNmTVWpUkVNmzaNHw7cLJQ9AAAAJFnz5s21d+9elS5dWv3799f8+fMTne7MmTNq3LixNm7cqGzZsumll17S7Nmz9eOPP+rll1++pnWOHDlSq1at0sqVK/XJJ5/o2LFjevvtt5UpUyatXbtW48eP16ZNm/Tdd99p0aJFWrt2rdxut8aPH6+DBw9q8ODBWrRokRYuXHjZ00zff/99ffbZZ1q7dq0WLFigTJkyXTD+888/V65cuRQREaHXX39dq1atumBba9WqpXXr1qlBgwb6+uuvJUn16tXT0qVLtWbNGnXp0kXvvvvuNW03cKM4jRMAACCNenX6RkUcOJmsyyxfILsGt61w2fFZs2bVqlWrtGDBAs2dO1edO3fW22+/rV69el0wXVBQkFq2bClJCg0NVXBwsAIDAxUaGqrdu3dfU6ZPPvlEP/74oyRp79692rZtm2699dYLppkzZ45WrVql6tWrS5LOnTunvHnzatmyZWrYsKHy5MkjSercubO2bt16yTrq1q2rgQMHqlu3brr77rtVqFChC8YvXLhQTzzxhCSpYsWKCgsLu2Bb27RpI0mq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sqpVq6bVq1erRYsWKlGihL788ktJ0unTp9WkSROFh4crNDRUP/30U/yyXn/9dZUpU0b16tVT165d44/M7dixQy1btlTVqlVVv359bd68+ZIcW7duVXBwsHLnzn3JuMvNv2PHDtWqVUuhoaF66aWX4o92XSnj2LFjFRYWpkqVKql79+46deqUihUrpthY3xllJ0+evOB5wv30yCOPqFatWipevLjmzZunBx98UOXKlVOvXr3ip0vsdU/s/SFJL774oipVqqRatWrp0KFDknxlvnHjxgoLC1OTJk20Z88eSdKuXbtUu3bt+G29mi+//FLPPPNM/PPRo0drwIABWr58uUqWLKnixYsrKChIXbp0uWD/nFe0aFGFhYXJ5bqwPkVERKhBgwYKCAhQlixZFBYWpl9//VWSVL9+ff3+++9X/GNFirPWptlH1apVbUZy+uxp+8a4nrb2iPI2bFQFO2BYI7v34DanYwEAgJsoIiLC6Qg2S5Ys1lpr586da7Nnz2737t1rPR6PrVWrll2wYIG11toiRYrYI0eOWGutPXLkiK1fv749ffq0tdbat99+27766qv23LlztlChQnbnzp3WWmu7dOliW7duba21dvDgwTY8PNyePXvWWmvtmTNn7Llz56y11m7dutWe/xw4d+7c+Hmstfarr76yr7/+urXW2qioKFu1alW7c+dOO2XKFNu0aVMbFxdn9+/fb3PkyGEnTZp0ybb17NkzfniRIkXs559/bq219sknn7ShoaH25MmT9vDhwzZv3rzWWmtjY2NtZGRk/HaWKFHCer1eu3z5clupUiV77tw5e/LkSVuyZEn73nvvWWutbdy4sd26dau11tqlS5faRo0aXZJj5MiRduDAgfHPBw8efNX5W7dubSdMmGCttfaLL76If50ul/Gvv/6ypUqVin+djh07Zq21tlevXvbHH3+M358JcyTcT507d7Zer9dOnTrVZsuWza5fv956PB4bHh5u16xZc9nX/fy+Pb9ea62VZKdNm2attfaZZ56Jfw3btGljR48eba21dsSIEbZ9+/bWWmvbtm1rx4wZY621dujQofHbejmHDx+2JUqUiH/esmVLu2DBAjtp0iTbu3fv+OFjx461jz766GWXk/D9Ya21v/32m61Tp449c+aMPXLkiC1WrJh9//3348c3bdrUrly58orZrkViv/+SVtrL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GqTKlSurWrVqWr16tVq0aKESJUroyy+/lOS7cXqTJk0UHh6u0NDQC25i/vrrr6tMmTKqV6+eunbtGn8EaceOHWrZsqWqVq2q+vXra/PmzZfk2Lp1q4KDg5U7d25J0qFDh9ShQwdVqlRJlSpVit/+Dz/8UBUrVlTFihX10UcfSfIV4DJlyqhHjx6qWLGiFixYcMHzvXv36r333ovfR4MHD45f79ixYxUWFqZKlSqpe/fuWrx4saZNm6ZnnnlGlStX1o4dOy6bf9euXapdu7ZCQ0P10ksvJbp/d+/erbJly6pXr14qXbq0unXrpt9//11169ZVqVKltHz5cknSmTNn9OCDD6pGjRqqUqWKfvrpJ8XExOjll1/Wd999p8qVK+u7776TJEVERKhhw4YqXry4Pvnkk/h1JbZvJOnNN99U6dKlVa9ePW3ZsiXRnOd5vV4VLVpUJ06ciB9WqlQpHTp0SD/99JN69uwpSerYsaPmzJmji29rlz9//vj7K2bLlk3lypXT/v37JemC+Xv27KmpU6dKkowxatiwoWbMmHHFbElirU2zj6pVq1rcmI07Vtp2wyrasFEV7LsT+jgdBwAAXEVERITTEWyWLFmstdbOnTvXZs+e3e7du9d6PB5bq1Ytu2DBAmuttUWKFLFHjhyx1lp75MgRW79+fXv69GlrrbVvv/22ffXVV+25c+dsoUKF7M6dO6211nbp0sW2bt3aWmvt4MGDbXh4uD179qy11tozZ87Yc+fOWWut3bp1qz3/OXDu3Lnx81hr7VdffWVff/11a621UVFRtmrVqnbnzp12ypQptmnTpjYuLs7u37/f5siRw06aNOmSbevZs2f88CJFitjPP//cWmvtk08+aUNDQ+3Jkyft4cOHbd68ea211sbGxtrIyMj47SxRooT1er12+fLltlKlSvbcuXP25MmTtmTJkva9996z1lrbuHFju3XrVmuttUuXLrWNGjW6JMfIkSPtwIED45/fe++9dsiQIdZaa+Pi4uyJEyfsypUrbcWKFe3p06ftqVOnbPny5e3q1avtrl27rDHGLlmyxFprL3n+22+/2Yceesh6vV7r8Xhs69at7fz58+1ff/1lS5UqFf+6HTt27JJ9cqX8bdu2tWPGjLHWWjt06ND490lCu3btsm63265fv956PB4bHh5uH3jgAev1eu3UqVNt+/btrbXW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\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 59.1 s, sys: 8.69 s, total: 1min 7s\n", "Wall time: 1min 8s\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: 1.003433501798063\n", "9.74 ms ± 179 µ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: 1.003433501798063\n", "Timing when using 1 threads: \n", "5.83 ms ± 375 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 2 threads: \n", "4.17 ms ± 158 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 4 threads: \n", "2.67 ms ± 97.1 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)\n", "Timing when using 8 threads: \n", "1.81 ms ± 6.49 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)\n", "Timing when using 16 threads: \n", "1.69 ms ± 53.5 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)\n", "Timing when using 32 threads: \n", "1.82 ms ± 63.9 µ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<" ] }, "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 4.09 s, sys: 13.9 ms, total: 4.11 s\n", "Wall time: 4.13 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": [ "11 µs ± 75.5 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 5.66 s, sys: 2.97 ms, total: 5.66 s\n", "Wall time: 5.66 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": "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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 2385 below and 2907 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 / Quadro M2000)\n" ] }, { "data": { "image/png": "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ujYJafk38M19cFJfuHUKNO5y5PKmPeG2qdD+SvjhH7D8W3/iLEeuuuoqPvzwQw4ePMiCBQvo0uW3Y/7EE09w1llnMXPmTCZOnMh9993Hvn37OO644xg3bhxz587lo48+4q677gLggw8+4LzzziM9PZ358+eTmppa6P4zMjKYNm0azzzzDEOGDOGFF15gzpw5PP3009x+++0A/OlPf+K2225j4cKF1K9fP9+8VqxYwR133MHixYupWbMmn3322RHLt23bxsiRI1m8eDELFixg2LBhdO/enQEDBvDUU0+Rnp5O8+bNGThwIE8++SQLFiygXbt2/O1vfwPghhtu4JVXXiE9PZ2kpKQj8p47dy6ffvopkyZNolKlSowcOZK5c+cyceJE7rnnHrKn+Vi5ciX33HMPy5YtY9myZXzwwQf8+OOPPP300/zjH/8o/A9WiJgWIiKSgitA3lfV7Pm0N3vVVHjPW7z0DUCjsM0bemkFpTfMI/0oqvqqqnZS1U516x41fphJVHu3wJd3wvHt4Ip3oUrtvNdLqeyqs45vDyNvgR1xPSW279q3b8+aNWsYMWIE559//hHLxo4dy/Dhw0lNTeWMM87g4MGDrFu3jszMTAYPHky7du24/PLLc9oTTj/9dN566y0effRRFi5cSPXq1Qvd/+WXX05SUhJ79+5l2rRpXH755aSmpnLLLbewaZOrJJk6dWrOFdJ1112Xb17NmjXLKbhOO+001qxZc8TyY445hkqVKnHTTTfx+eefU6VKlaPy2LVrFzt37qRPH1ddev311zN58mR27tzJnj176NatGwB/+MMfjtjunHPOoXZt951VVR566CHat2/P2WefzYYNG9i8eXNOjO3atSMQCNCmTRv69u2LiNCuXbuj4i2OWPbOEuANYKmqPhO2aBSQ3cPqen6bWW8UMNDrpdUV2OVVe30HnCsitbwG9XOB77xlu0Wkq7evgdgsfSZSqq4AObQHfvcaJFcseP2USq6gUYVProesQ0XaXdOhX+c8DAwYMIB77733iKoscCfDzz77jPT0dNLT01m3bh2tWrXi2WefpV69esyfP5/Zs2dz+PBhAHr37s3kyZNp0KABgwYN4t133wWO7GGUu7tq1apVAQiFQtSsWTNnX+np6SxdujRnvUh6KVWs+Nv3JikpiaysrCOWJycnM3PmTC677DJGjx5Nv37R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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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McOHD+dPf/oTAF9++SVXX301ycnJLF26lKSkpDz3n5aWxuzZs3njjTfo168f//nPf1i0aBGDBg2if//+ADzyyCP8/ve/Z/ny5dStWzfHba1fv56HH36YlStXUr16db755puTnt+zZw8jR45k5cqVLFu2jGeeeYbOnTtz7bXX8tprr5GcnEyTJk246667ePXVV1m2bBmJiYm8+OKLANxzzz28//77JCcnExcXd9K2Fy9ezIgRI5g2bRrly5dn5MiRLF68mClTpvDoo48SvNohJSWFRx99lDVr1rBmzRq+/PJLZs6cyaBBg/jHP/6R9xuWh6idA6nqTJxJasK5PMzyCjycw7YGA4PDlC8EwldKGlPUMk/A2Mdh8RA490par7iJg8cqw89Qlju4OW4qD8d/B5/0hjtHQuNuXkfsidatW5OamsrQoUPp1avXSc9NmDCB0aNHM2jQIMDpUbZlyxbOPvts/vCHP2R9ma5btw6ACy+8kHvvvZeMjAyuv/76iJLITTfdRFxcHIcPH2b27NncdNNNWc+dOOFMjT5r1qyshHDnnXfy5JNPht1W48aNs/Z5wQUXkJqaetLz1apVo3z58tx333307t07bNvPgQMH2L9/P5dccgkAd999NzfddBP79+/n0KFDXHTRRQD87ne/44cffsha78orr6RmzZqA0zX36aefZvr06fh8PrZt28bOnTuzYkxMTASgZcuWXH755YgIiYmJp8RbEHbFujGFIRCA4Xc4CaTrX+F3wznIr1Uq6ZThc/+VXH1iIOsyz+TgJzdz5VPvexiwt6699loee+yxk6qywPky/Oabb0hOTiY5OZktW7bQvHlz3nzzTerUqcPSpUtZuHAh6enpAFx88cVMnz6devXq0bdvXz799FPg5B5G2burVqpUCYBAIED16tWz9pWcnMzq1auzloukl1K5cuWy7sfFxZGZefKsuPHx8cyfP58bb7yRH374gR49ekRyeCISfB0AX3zxBbt372bRokUkJydTp06drNcdGqPP58t67PP5Tom3ICyJGFMYFnwE6ydAj1fhiufBFxd2sYNU5p70JzhOWT4p+yoc3B52uZLu3nvv5fnnn8/6hRx09dVX85///CerKmbJkiWA82u9bt26+Hw+PvvsM/x+PwCbN2+mTp06PPDAA9x///0sXrwYgDp16rB69WoCgQAjR4af5r1q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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": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEcCAYAAAAGD4lRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAABDS0lEQVR4nO3dd3xUVfr48c8zSei9Sg8inUBAVGzYVgUW69p2baira9ldv7vqiq5tLbv4E3V1i90VG6goiIIKKoiKIMVQkoB0CAJBeifJPL8/7p0whElyEzJzZzLP+/WaV2bO3PLcmck8c8859xxRVYwxxpjKCPgdgDHGmMRlScQYY0ylWRIxxhhTaZZEjDHGVJolEWOMMZVmScQYY0ylWRIxCUNE0kVERSTV71hiRUTai8guEUkpYxkVkWM8bu9eEXm56iJMXCJyuojk+R1HorMkkuBEZJWI/MLjstNE5LfRjqmM/T8kIm/6tf9EpKprVLWeqhbBkb+Hqvp3VfW0vt/vV2W+5EXkRRFZIiJBERkWpdBMGEsipkpUl7MDcdj/RZRF8XWeD9wKzIvCtk0kqmq3BL4Bq4BfuPeHAd8AI4GtwEpgsPvcY0ARsA/YBfzbLe8GTAG2AEuAy8K23RT4CNgBzAYeBb4Je16B24ClwEq37BlgrbvOXOBUt3wQcAAocPc/3y1vCLwCrAfWuftIcZ9LcY/lZ2CFuy8FUkt5LdoBHwCbgM1hx/gQ8GbYcunh2wGmua/Pt8Be4G5gTolt/wmY4N6v6ca1BtgIPA/Udp9rBnwMbHNf06+BQIRY/wb8y72fBuwGnnAf13bfpybhsZbxHipws/s+bAP+A0gpr1HxaxG27WvdY/kZ+OsRvl9PuttZCfy+nNf5GOA6IBfY6b7Hv3OXresuE3T3vwtojfPDdziw3H2P3wWaRDjOb4BhJcpqA6/h/G/kAHcBeR7/x+4EFgDbgXeAWmHP/8V9PX4Cfuse8zF+fzfE7DvI7wDsdoRv4OFJpAC40f2HvsX9YIv7/DTgt2Hr1sX5wr/O/ZLq634B9HCfH+Pe6gA93GVLJpEpOF92oS/Rq3CSTypwB7Ah9A9HiS9zt2wc8IIbSwvg+7AvkpuBxTjJoQkwlVKSiHu884Gn3W3VAk6JtF8iJ5E1QE837obul1rnsHVmA1e4958GJrgx1cdJtP9wn/sHTlJJc2+nEuELHTgTWOjePwnnS3FW2HPzy4j1tyW2pTiJqxHQHieJDirl81L8WoRt+yWcL9g+wH6g+xG8XzlAW6Ax8Hk5r3Ma8EugEyDAacAeoJ+7/OmU+JIHbgdmuvuo6cYyOsJxRkoiI3CSehOcz9Siktsv43/se5wk1gQn6d3sPjcI5zPeE+f/5E2SLInYaXv1s1pVX1KnDn0U0ApoWcqyQ4FVqvo/VS1U1R+A94FL3YbcXwEPquoeVc1xt1fSP1R1i6ruBVDVN1V1s7u9J3H+0btG2rmItASGAP+nqrtVNR/nC/oKd5HLgH+q6lpV3YLzBV2a43H+ye9yt7VPVb8pY/mSXlPVbDfu7cCHwK/dODvjnLFNEBEBbgL+5B73TuDvYTEX4LzmHVS1QFW/VvfbpoTvgM4i0hQYiPPrvo2I1MP5Mv2qArEDjFDVbaq6BifZZlZg3b+p6l5VnY+TiPtEWsjj+/WMquap6lacL+2Swl/nAlWdqKrL1fEVMBkn8ZbmZpyzpTxV3Y+T6C7xWJ16GfCY+76tBZ71sE7Is6r6k/s5/IiDr+9lwP/cY9rjxpNULIlUPxtCd9wPNUC9UpbtAJwgIttCN+BK4CigOc6vxbVhy689fBOHlonInSKSKyLb3e01xKniKW3/acD6sP2/gPMLF5ykEL791aVsB5xflqtVtbCMZcpS8tjexk0iwG+A8e7r2RznF+fcsJg/dcsBngCWAZNFZIWIDI+0MzfpzsFJGANxksYM4GQql0Q2hN3fQ+nv+ZGsW9H3y8vnZbCIzBSRLe72hlD65yUUw7iw/efiVPGV9kMpXEU+TyWV9hp5OeZqrVo0hhrPSv4iXgt8papnl1zQPRMpxKk2+NEtblfWNkXkVJz64bOAbFUNishWnKqK0va/H2hWypf/+hL7bB/poMK21V5EUiNsazfOF3/IUWUdh2sK0FxEMnGSyZ/c8p9x6up7quq6wzbinJncAdwhIr2AL0Vktqp+EWGfX+FUXfXFqS77CjgX56xqeinHGcthtyvzfrUNe1ze56UmzpnvNcCHqlogIuMp/fMSiuF6Vf3W0xEcHl87INt9XNbnqSLbLO+YqzU7E0kuG4Gjwx5/DHQRkatFJM29HSci3d3qsA+Ah0Skjoh0w/lnL0t9nMSzCUgVkQeABiX2nx7qlaOq63GqL54UkQYiEhCRTiJymrv8u8AfRaStiDTGaVAtzfc4/9AjRKSuiNQSkZPd57KAge41Fw2Be8o5DlS1AHgP58yiCU5SQVWDOG0IT4tICwARaSMi57r3h4rIMW6113acX8nBUnbzFc5rmqOqB3DbO3A6KWwqZZ2S72E0Veb9ut19PRrhdFAoSw2c6s5NQKGIDAbOKbH/pu57FvI88JiIdAAQkeYickHoSRGpISK1cBJRmvs5CH3PvQvcIyKNRaQt8IcKvh6RvAtcJyLdRaQOcH8VbDOhWBJJLs/g1B9vFZFn3V/N5+DUaf+Ec8r+OM4/Nji9axq65W8Ao3F+iZbmM5yqnR9xqgr2cejp/Xvu380iEuqCeQ3Ol0kOTq+ZsThtCuB8WX+GU08/DyepReQmvfNwevysAfKAy93npuD0qFmA02Ps4zKOIdzbwC+A90r88r4bp8pqpojswGlADrX7dHYf78Jp9/ivqk4tZfszcBq0Q2cdOTivWWlnIVDiPfR4HJVVmfdrMs7r/AMwCedHRVGkjbufvz/ifBFvxak2nBD2/GKcz9wKt/qqNc7xT8CpLtyJ08h+QthmJ+OcKZ4EvOjeH+g+9zecz+VKd7k3KvRqRD6GT3DaVqbifibcp8r6P6lWQr12jCmXiDwOHKWq1/odi4l/7pnF86rawe9YYkVEuuP0+qp5BO1zCcXOREypRKSbiPR2Lww7HrgBp4unMYcRkdoiMkREUkWkDfAgSfB5EZGLRKSmW+X6OPBRsiQQsCRiylYfpwppN0510JM4XV+NiURwqoy24lRn5QIP+BqRB3JwfLJINy+N778D8nGu9SnCuT4raVh1ljHGmEqzMxFjjDGVZknEGGNMpSXdxYbNmjXT9PR0v8MwxpiEMnfu3J9VtXnJ8qRLIunp6cyZM8fvMIwxJqGISMRhYqw6yxhjTKVZEjHGGFNplkSMMcZUWtK1iRiTrAoKCsjLy2Pfvn1+h2LiWK1atWjbti1paWmelrckYkySyMvLo379+qSnp+MMMmzMoVSVzZs3k5eXR8eOHT2tY9VZxiSJffv20bRpU0sgplQiQtOmTSt0tmpJxJgkYgnElKeinxFLIiYxFeyFea/Dp/fCm5fA6xfAlpV+R2XKISJcddVVxY8LCwtp3rw5Q4cO9TGq8tWrd/iMwatWraJXr14Rl3/ggQf4/PPPS93e+PHjycnJqbL4/GRtIiYxfXQ7LHgHUmtD02Ng2xp46xK4YQrUaeJ3dAkhffjEKt3eqhG/LHeZunXrsmjRIvbu3Uvt2rWZMmUKbdq0qdI4vCosLCQ1NTpfgQ8//HCZz48fP56hQ4fSo0ePI95XNI/DCzsTMYkne7yTQAbeBff+BLd8w6U7bmf/z6uZPeJc5yzFxK0hQ4YwcaKTwEaPHs2vf/3r4ud2797N9ddfz/HHH0/fvn358ENn5oFVq1Zx6qmn0q9fP/r168eMGTMAWL9+PQMHDiQzM5NevXrx9ddfA4eeOYwdO5Zhw4YBMGzYMG6++WZOOOEE/vKXv7B8+XIGDRrEsccey6mnnsrixYsBWLlyJSeeeCIZGRncd999pR5LUVERN954Iz179uScc85h7969xfsZO3YsAMOHD6dHjx707t2bO++8kxkzZjBhwgTuuusuMjMzWb58OVlZWQwYMIDevXtz0UUXsXXrVgBmz55N7969yczM5K677io+83nttdc4//zzOfPMMznrrLPYtWsXZ511Fv369SMjI+OQ161bt24MGzaMLl26cOWVV/L5559z8skn07lzZ77//vsjeCcdlkRMYtm5AT7+E7TuC6fdDQHnIzxbu/Hngls4LvAjfHATBEub1tz47YorrmDMmDHs27ePBQsWcMIJB2e3feyxxzjzzDP5/vvvmTp1KnfddRe7d++mRYsWTJkyhXnz5vHOO+/wxz/+EYC3336bc889l6ysLObPn09mZma5+8/Ly2PGjBk89dRT3HTTTfzrX/9i7ty5jBw5kltvvRWA22+/nVtuuYWFCxfSqlWrUre1dOlSbrvtNrKzs2nUqBHvv//+Ic9v3ryZcePGkZ2dzYIFC7jvvvs46aSTOP/883niiSfIysqiU6dOXHPNNTz++OMsWLCAjIwM/va3vwFw3XXX8cILL5CVlUVKSsoh2543bx5jx47lq6++olatWowbN4558+YxdepU7rjjDkLTfCxbtow77riDxYsXs3jxYt5++22++eYbRo4cyd///vfy37ByWHWWSRyqMOEPULAHLnoRUg7txz4xOIC2BZu4J3c0LJkI3c/zKVBTlt69e7Nq1SpGjx7NkCFDDnlu8uTJTJgwgZEjRwJOj7I1a9bQunVrfv/73xd/mf74448AHHfccVx//fUUFBRw4YUXekoil156KSkpKezatYsZM2Zw6aWXFj+3f78zNfq3335bnBCuvvpq7r777ojb6tixY/E+jz32WFatWnXI8w0bNqRWrVrccMMNDB06NGLbz/bt29m2bRunnXYaANdeey2XXnop27ZtY+fOnZx44okA/OY3v+Hjjz8uXu/ss8+mSROn6lZVuffee5k+fTqBQIB169axcePG4hgzMjIA6NmzJ2eddRYiQkZGxmHxVoYlEZM4Fr0PSyfDoMeheZeIi7xcNIRrUiez+u2/85uCgKd6ehN7559/PnfeeSfTpk1j8+bNxeWqyvvvv0/Xrl0PWf6hhx6iZcuWzJ8/n2AwSK1atQAYOHAg06dPZ+LEiQwbNow///nPXHPNNYf0MCrZXbVu3boABINBGjVqRFZWVsQYvfRSqlmzZvH9lJSU4uqskNTUVL7//nu++OILxo4dy7///W++/PLLcrfrReg4AN566y02bdrE3LlzSUtLIz09vfi4w2MMBALFjwOBAIWFRz6Lr1VnmcQx53/QpBMcfxPgNAyHbiFFpPBW4S84KSWHLrLWr0hNOa6//noefPDB4l/IIeeeey7/+te/iqtifvjhB8D5td6qVSsCgQBvvPEGRUVFAKxevZqWLVty44038tvf/pZ58+YB0LJlS3JzcwkGg4wbF3ma9wYNGtCxY0fee+89wElg8+fPB+Dkk09mzJgxgPMFXVm7du1i+/btDBkyhKeffrp4+/Xr12fnzp2Ac7bSuHHj4vacN954g9NOO41GjRpRv359Zs2aBVAcTyTbt2+nRYsWpKWlMXXqVFavjjjgblRYEjGJYesqWP0NZP6muB2kNKOLzmC/pnFtyuTYxGYqrG3btsXtGuHuv/9+CgoK6N27Nz179uT+++8H4NZbb2XUqFH06dOHxYsXF/8KnzZtGn369KFv376888473H777QCMGDGCoUOHctJJJ5XZpvHWW2/xyiuv0KdPH3r27FncIP3MM8/wn//8h4yMDNatW1fp49y5cydDhw6ld+/enHLKKTz11FOA0y70xBNP0LdvX5YvX86oUaO466676N27N1lZWTzwgDM1/SuvvMKNN95IZmYmu3fvpmHDhhH3c+WVVzJnzhwyMjJ4/fXX6datW6Vjrqikm2O9f//+avOJJKBpI5zbnxZBw7ZA2V1U/1/qCwxNmUmd4UugduNYRRnXcnNz6d69u99hmArYtWtXcU+zESNGsH79ep555pmo7zfS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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": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEcCAYAAAAGD4lRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAABDMUlEQVR4nO3dd3xUVfr48c8zSSAgvYq0IKK0hIAIiHXVVUAWy1rXhr3trrurrOjXwrrq4s+26rr2vnYURbEhAhakd5IoLXSSSO8kmef3x70ThzBJbkImdybzvF+veWXmzC3PnZnMM/ecc88RVcUYY4ypioDfARhjjIlflkSMMcZUmSURY4wxVWZJxBhjTJVZEjHGGFNllkSMMcZUmSUREzdEJE1EVESS/Y6lpohIBxHZISJJ5SyjInKEx+3dKSIvVl+E8UtEThaRNX7HEe8sicQ5EckVkdM8LjtZRK6Jdkzl7H+UiPzPr/3HI1VdpaoNVLUYDv49VNUHVdXT+n6/X1X5kheR50XkJxEJisjwKIVmwlgSMdWitpwdiMP+L6Isiq/zfOAmYE4Utm0iUVW7xfENyAVOc+8PB74HHgE2AyuAwe5zDwDFwB5gB/Aft7wrMAHYBPwEXBC27ebAJ8A2YCZwP/B92PMK3AwsAVa4ZU8Aq911ZgMnuOWDgH1Aobv/+W55Y+AlYD2w1t1HkvtcknssvwDL3X0pkFzGa9Ee+BAoADaGHeMo4H9hy6WFbweY7L4+PwC7gduBWaW2/VdgnHu/rhvXKiAPeBao5z7XAvgU2OK+pt8BgQix/gN4yr2fAuwEHnYf13Pfp2bhsZbzHipwg/s+bAGeBqSM16jktQjb9hXusfwC/N9Bvl+PuttZAfyxgtf5COBKIBvY7r7H17vLHuIuE3T3vwM4DOeH70hgmfsevwc0i3Cc3wPDS5XVA17F+d/IAkYAazz+j90GLAC2Au8CqWHP/919PdYB17jHfITf3w019h3kdwB2O8g38MAkUghc6/5D3+h+sMV9fjJwTdi6h+B84V/pfkn1dr8AurvPv+Pe6gPd3WVLJ5EJOF92oS/RS3GSTzJwK7Ah9A9HqS9zt2ws8JwbSytgRtgXyQ1ADk5yaAZMoowk4h7vfOBxd1upwPGR9kvkJLIK6OHG3dj9UusSts5M4CL3/uPAODemhjiJ9l/uc//CSSop7u0EInyhA6cAC937A3G+FKeHPTe/nFivKbUtxUlcTYAOOEl0UBmfl5LXImzbL+B8wfYC9gLdDuL9ygLaAU2Bryt4nVOAM4HOgAAnAbuAPu7yJ1PqSx64BZjm7qOuG8vbEY4zUhIZjZPUm+F8phaV3n45/2MzcJJYM5ykd4P73CCcz3gPnP+T/5FgScRO22uflar6gjp16K8BbYDWZSw7FMhV1VdUtUhV5wIfAOe7Dbm/B+5V1V2qmuVur7R/qeomVd0NoKr/U9WN7vYexflHPyrSzkWkNTAE+Iuq7lTVfJwv6IvcRS4A/q2qq1V1E84XdFn64fyTj3C3tUdVvy9n+dJeVdXFbtxbgY+Bi904u+CcsY0TEQGuA/7qHvd24MGwmAtxXvOOqlqoqt+p+21Tyo9AFxFpDpyI8+u+rYg0wPkynVKJ2AFGq+oWVV2Fk2wzK7HuP1R1t6rOx0nEvSIt5PH9ekJV16jqZpwv7dLCX+dCVR2vqsvUMQX4CifxluUGnLOlNaq6FyfRneexOvUC4AH3fVsNPOlhnZAnVXWd+zn8hF9f3wuAV9xj2uXGk1AsidQ+G0J33A81QIMylu0I9BeRLaEbcAlwKNAS59fi6rDlVx+4if3LROQ2EckWka3u9hrjVPGUtf8UYH3Y/p/D+YULTlII3/7KMrYDzi/LlapaVM4y5Sl9bG/hJhHgD8BH7uvZEucX5+ywmL9wywEeBpYCX4nIchEZGWlnbtKdhZMwTsRJGlOB46haEtkQdn8XZb/nB7NuZd8vL5+XwSIyTUQ2udsbQtmfl1AMY8P2n41TxVfWD6Vwlfk8lVbWa+TlmGu1WtEYajwr/Yt4NTBFVX9bekH3TKQIp9rgZ7e4fXnbFJETcOqHTwUWq2pQRDbjVFWUtf+9QIsyvvzXl9pnh0gHFbatDiKSHGFbO3G++EMOLe84XBOAliKSiZNM/uqW/4JTV99DVdcesBHnzORW4FYR6Ql8IyIzVXVihH1Owam66o1TXTYFOAPnrOrbMo6zJofdrsr71S7scUWfl7o4Z76XAx+raqGIfETZn5dQDFep6g+ejuDA+NoDi93H5X2eKrPNio65VrMzkcSSBxwe9vhT4EgRuUxEUtzbMSLSza0O+xAYJSL1RaQrzj97eRriJJ4CIFlE7gEaldp/WqhXjqqux6m+eFREGolIQEQ6i8hJ7vLvAX8WkXYi0hSnQbUsM3D+oUeLyCEikioix7nPzQNOdK+5aAzcUcFxoKqFwPs4ZxbNcJIKqhrEaUN4XERaAYhIWxE5w70/VESOcKu9tuL8Sg6WsZspOK9plqruw23vwOmkUFDGOqXfw2iqyvt1i/t6NMHpoFCeOjjVnQVAkYgMBk4vtf/m7nsW8izwgIh0BBCRliJyVuhJEakjIqk4iSjF/RyEvufeA+4QkaYi0g74UyVfj0jeA64UkW4iUh+4uxq2GVcsiSSWJ3DqjzeLyJPur+bTceq01+Gcsj+E848NTu+axm75G8DbOL9Ey/IlTtXOzzhVBXvY//T+fffvRhEJdcG8HOfLJAun18wYnDYFcL6sv8Spp5+Dk9QicpPe73B6/KwC1gAXus9NwOlRswCnx9in5RxDuLeA04D3S/3yvh2nymqaiGzDaUAOtft0cR/vwGn3+K+qTipj+1NxGrRDZx1ZOK9ZWWchUOo99HgcVVWV9+srnNd5LvAZzo+K4kgbdz9/f8b5It6MU204Luz5HJzP3HK3+uownOMfh1NduB2nkb1/2Ga/wjlTHAg8794/0X3uHzifyxXucm9U6tWIfAyf47StTML9TLhPlfd/UquEeu0YUyEReQg4VFWv8DsWE/vcM4tnVbWj37HUFBHphtPrq+5BtM/FFTsTMWUSka4ikuFeGNYPuBqni6cxBxCReiIyRESSRaQtcC8J8HkRkXNEpK5b5foQ8EmiJBCwJGLK1xCnCmknTnXQozhdX42JRHCqjDbjVGdlA/f4GpEH8uv4ZJFuXhrfrwfyca71Kca5PithWHWWMcaYKrMzEWOMMVVmScQYY0yVJdzFhi1atNC0tDS/wzDGmLgye/bsX1S1ZenyhEsiaWlpzJo1y+8wjDEmrohIxGFirDrLGGNMlVkSMcYYU2WWRIwxxlRZwrWJGJOoCgsLWbNmDXv27PE7FBPDUlNTadeuHSkpKZ6WtyRiTIJYs2YNDRs2JC0tDWeQYWP2p6ps3LiRNWvW0KlTJ0/rWHWWMQliz549NG/e3BKIKZOI0Lx580qdrVoSMSaBWAIxFansZ8SSiIlfxYWw7Bv49K/wv99Dwc8Vr2N8JSJceumlJY+Liopo2bIlQ4cO9TGqijVocOCMwbm5ufTs2TPi8vfccw9ff/11mdv76KOPyMrKqrb4/GRtIiY+LZ8C710Oe7ZASn1ISoFXh8Dl46B1d7+jiwtpI8dX6/ZyR59Z4TKHHHIIixYtYvfu3dSrV48JEybQtm3bao3Dq6KiIpKTo/MVeN9995X7/EcffcTQoUPp3v3gP6vRPA4v7EzExJ99u2DcH6F+c7jobfj7ck7dehd5OwrZ+N/TYcNCvyM05RgyZAjjxzsJ7O233+biiy8ueW7nzp1cddVV9OvXj969e/Pxx87MA7m5uZxwwgn06dOHPn36MHXqVADWr1/PiSeeSGZmJj179uS7774D9j9zGDNmDMOHDwdg+PDh3HDDDfTv35+///3vLFu2jEGDBnH00UdzwgknkJOTA8CKFSs49thjSU9P56677irzWIqLi7n22mvp0aMHp59+Ort37y7Zz5gxYwAYOXIk3bt3JyMjg9tuu42pU6cybtw4RowYQWZmJsuWLWPevHkMGDCAjIwMzjnnHDZv3gzAzJkzycjIIDMzkxEjRpSc+bz66qsMGzaMU045hVNPPZUdO3Zw6qmn0qdPH9LT0/d73bp27crw4cM58sgjueSSS/j666857rjj6NKlCzNmzDiId9JhScTEnykPwZZVMOwp6DoEUuqxTNtywb572EMdeHUobF3rd5SmDBdddBHvvPMOe/bsYcGCBfTv/+vstg888ACnnHIKM2bMYNKkSYwYMYKdO3fSqlUrJkyYwJw5c3j33Xf585//DMBbb73FGWecwbx585g/fz6ZmZkV7n/NmjVMnTqVxx57jOuuu46nnnqK2bNn88gjj3DTTTcBcMstt3DjjTeycOFC2rRpU+a2lixZws0338zixYtp0qQJH3zwwX7Pb9y4kbFjx7J48WIWLFjAXXfdxcCBAxk2bBgPP/ww8+bNo3Pnzlx++eU89NBDLFiwgPT0dP7xj38AcOWVV/Lcc88xb948kpKS9tv2nDlzGDNmDFOmTCE1NZWxY8cyZ84cJk2axK233kpomo+lS5dy6623kpOTQ05ODm+99Rbff/89jzzyCA8++GDFb1gFLImY+JK3GH78D2ReCmnH7ffUSj2US/fdCXu3w7T/+hSgqUhGRga5ubm8/fbbDBkyZL/nvvrqK0aPHk1mZiYnn3wye/bsYdWqVRQWFnLttdeSnp7O+eefX9KecMwxx/DKK68watQoFi5cSMOGDSvc//nnn09SUhI7duxg6tSpnH/++WRmZnL99dezfv16AH744YeSM6TLLruszG116tSpJHEdffTR5Obm7vd848aNSU1N5eqrr+bDDz+kfv36B2xj69atbNmyhZNOOgmAK664gm+//ZYtW7awfft2jj32WAD+8Ic/7Lfeb3/7W5o1awY4XXPvvPNOMjIyOO2001i7di15eXklMaanpxMIBOjRowennnoqIkJ6evoB8VaFtYmY+BEMwid/gbqN4LeR65xXaBs+KurPaVNfZOCkXiwYfUHNxmg8GTZsGLfddhuTJ09m48aNJeWqygcffMBRRx213/KjRo2idevWzJ8/n2AwSGpqKgAnnngi3377LePHj2f48OH87W9/4/LLL9+vh1Hp7qqHHHIIAMFgkCZNmjBv3ryIMXrppVS3bt2S+0lJSSXVWSHJycnMmDGDiRMnMmbMGP7zn//wzTffVLhdL0LHAfDmm29SUFDA7NmzSUlJIS0treS4w2MMBAIljwOBAEVFBz+Lr52JmPixaAysmQGn3w+HNCdt5PiSW7gXis6kgezh4qTq+Wc11e+qq67i3nvvJT09fb/yM844g6eeeqqkKmbu3LmA82u9TZs2BAIB3njjDYqLiwFYuXIlrVu35tprr+Waa65hzpw5ALRu3Zrs7GyCwSBjx0ae5r1Ro0Z06tSJ999/H3AS2Pz58wE47rjjeOeddwDnC7qqduzYwdatWxkyZAiPP/54yfYbNmzI9u3bAedspWnTpiXtOW+88QYnnXQSTZo0oWHDhkyfPh2gJJ5Itm7dSqtWrUhJSWHSpEmsXBlxwN2osCRi4sfcN6BpJ8j8Q7mLLdZO/FDcgyuTv4CifTUUnKmMdu3albRrhLv77rspLCwkIyODHj16cPfddwNw00038dprr9GrVy9ycnJKfoVPnjyZXr160bt3b959911uueUWAEaPHs3QoUMZOHBguW0ab775Ji+99BK9evWiR48eJQ3STzzxBE8//TTp6emsXVv19rXt27czdOhQMjIyOP7443nssccAp13o4Ycfpnfv3ixbtozXXnuNESNGkJGRwbx587jnHmdq+pdeeolrr72WzMxMdu7cSePGjSPu55JLLmHWrFmkp6fz+uuv07Vr1yrHXFkJN8d637591eYTiUPb1sNj3eCkv8Nv7gTK76J6UmA+r9V5CM5+psKkkyiys7Pp1q2b32GYStixY0dJT7PRo0ezfv16nnjiiajvN9Jn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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 / Quadro M2000)\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 / Quadro M2000)\n" ] }, { "data": { "image/png": "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sHUpNOsDOVmwZQks/goypsAVw6FqnTINKXnImFLdXsawCwpd5phjjmHhwoUcOHCAqlWrMm7cOBo1alSqcUQqOzubxMTofAU+8cQTBT7/5ZdfMmDAANq2bVvifUXzOCJhZyLGRNvP78ObZ8GBnXDdZzDwa7jpO7h7Nlz8MmT8BG+dA7+u9DvSMtG/f3/GjHET2Icffsg111yT+9y+ffu46aab6NatG506deKrr9yZBzIyMujduzedO3emc+fOTJs2DYCNGzfSp08fUlNTad++PVOmTAGOPHP49NNPGTRoEACDBg3i9ttv59RTT+XPf/4zq1atom/fvpxyyin07t2bpUuXArBmzRp69OhBSkoKQ4cOzfdYcnJyuPXWW2nXrh3nnXceBw4cyN3Pp59+CsCQIUNo27YtHTp04P7772fatGmMGjWKBx54gNTUVFatWkV6ejrdu3enQ4cOXHrppezYsQOA2bNn06FDB1JTU3nggQdyz3yGDx/ORRddxFlnncXZZ5/N3r17Ofvss+ncuTMpKSlHvG6tW7dm0KBBtGzZkmuvvZbx48fTq1cvWrRowaxZs0rwn3RZEjEmmrYsgdH3QtMecOd0OPmcI5/vdJ2bVA7sgHfOh735Ta1eflx99dV89NFHHDx4kPnz53Pqqb/NbvvUU09x1llnMWvWLCZOnMgDDzzAvn37OO644xg3bhxz585l5MiR/PGPfwTggw8+4Pzzzyc9PZ158+aRmppa6P4zMzOZNm0azz//PIMHD+bf//43c+bM4dlnn+XOO+8E4J577uGOO+5gwYIFNGzYMN9trVixgrvuuotFixZRu3ZtPvvssyOe37ZtG1988QWLFi1i/vz5DB06lJ49e3LRRRfxzDPPkJ6eTvPmzbnhhht4+umnmT9/PikpKfz1r38F4MYbb+T1118nPT2dhISEI7Y9d+5cPv30UyZNmkSVKlX44osvmDt3LhMnTuS+++4jOM3HypUrue+++1i6dClLly7lgw8+YOrUqTz77LP8/e9/L/wfVgirzjImWrIPw+eDoXINTllyDduemH7UIhnDLnATzMDR8HofGPsQ/O4tH4ItOx06dCAjI4MPP/yQ/v37H/Hc999/z6hRo3j22WcBt0fZunXrOOGEE7j77rtzv0yXL18OQNeuXbnpppvIysrikksuiSiJXHHFFSQkJLB3716mTZvG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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": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEcCAYAAAAGD4lRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAABJ/ElEQVR4nO3dd3hUZfbA8e+ZhN5BRKQFEZASCAhIFQVFQFbRtWBHEXTVXXfXhq697OLaVvfnWlhd0VVAcUFUlCYgHQKE3nuQJr2TzJzfH/cmDGEmmQyZ3JTzeZ77ZOa97cydyZy573vv+4qqYowxxkTD53UAxhhjCi9LIsYYY6JmScQYY0zULIkYY4yJmiURY4wxUbMkYowxJmqWREyhISIJIqIiEu91LPlFROqKyGERictmGRWRCyPc3lMi8u+8i7DwEpHLRCTV6zgKO0sihZyIbBKRKyJcdqqI3BvrmLLZ//Mi8l+v9l8YqeoWVS2vqn44+/dQVf+qqhGt7/X7Fc2XvIh8KCKrRSQgIv1jFJoJYknE5ImicnYgDvu/iLEYHufFwAPAwhhs24SiqjYV4gnYBFzhPu4PzABeB/YBG4Fe7rxXAD9wHDgM/J9bfhEwEdgLrAZuCtp2NeBb4CAwH3gZmBE0X4EHgbXARrfsbWCru84CoItb3hM4CaS5+1/sllcCPgK2A9vcfcS58+Lc1/IrsMHdlwLxYY5FHeB/wG5gT9BrfB74b9ByCcHbAaa6x2cmcAx4AkjOsu0/AWPdx6XcuLYAO4H3gTLuvHOA74D97jGdDvhCxPoC8E/3cQngCPCa+7yM+z5VDY41m/dQgfvd92E/8C4gYY5R5rEI2vZd7mv5FfjLWb5fb7jb2Qg8lMNxvhC4G1gJHHLf4/vcZcu5ywTc/R8Gzsf54TsYWO++x18CVUO8zhlA/yxlZYBPcP43VgCPAakR/o89CiwBDgAjgdJB8x93j8cvwL3ua77Q6++GfPsO8joAm87yDTwziaQBA91/6N+5H2xx508F7g1atxzOF/7d7pdUK/cLoKk7f4Q7lQWaustmTSITcb7sMr5Eb8dJPvHAI8COjH84snyZu2WjgQ/cWM4F5gV9kdwPrMJJDlWBKYRJIu7rXQy85W6rNNA51H4JnUS2AM3cuCu5X2oNg9aZD/RzH78FjHVjqoCTaP/mzvsbTlIp4U5dCPGFDnQDlrqPO+J8Kc4Nmrc4m1jvzbItxUlclYG6OEm0Z5jPS+axCNr2UJwv2JbACaDJWbxfK4DaQBVgUg7HuQRwNdAAEKArcBRo7S5/GVm+5IGHgTnuPkq5sQwP8TpDJZEhOEm9Ks5nalnW7WfzPzYPJ4lVxUl697vzeuJ8xpvh/J/8l2KWROy0vejZrKpD1alDHwbUBGqEWbYPsElV/6Oq6aq6CPgauNFtyP0t8JyqHlXVFe72svqbqu5V1WMAqvpfVd3jbu8NnH/0xqF2LiI1gN7AH1X1iKruwvmC7ucuchPwD1Xdqqp7cb6gw2mH80/+mLut46o6I5vls/pEVZe7cR8AvgFuceNsiHPGNlZEBBgE/Ml93YeAvwbFnIZzzOupapqqTlf32yaL2UBDEakGXIrz676WiJTH+TKdlovYAYao6n5V3YKTbJNyse4LqnpMVRfjJOKWoRaK8P16W1VTVXUfzpd2VsHHOU1Vv1fV9eqYBkzASbzh3I9ztpSqqidwEt0NEVan3gS84r5vW4F3Ilgnwzuq+ov7OfyWU8f3JuA/7ms66sZTrFgSKXp2ZDxwP9QA5cMsWw+4RET2Z0zAbcB5QHWcX4tbg5bfeuYmTi8TkUdFZKWIHHC3Vwmniifc/ksA24P2/wHOL1xwkkLw9jeH2Q44vyw3q2p6NstkJ+tr+wI3iQC3AmPc41kd5xfngqCYf3TLAV4D1gETRGSDiAwOtTM36SbjJIxLcZLGLKAT0SWRHUGPjxL+PT+bdXP7fkXyeeklInNEZK+7vd6E/7xkxDA6aP8rcar4wv1QCpabz1NW4Y5RJK+5SCsSjaEmYll/EW8FpqnqlVkXdM9E0nGqDda4xXWy26aIdMGpH+4OLFfVgIjsw6mqCLf/E8A5Yb78t2fZZ91QLypoW3VFJD7Eto7gfPFnOC+71+GaCFQXkSScZPInt/xXnLr6Zqq67YyNOGcmjwCPiEhz4CcRma+qk0PscxpO1VUrnOqyacBVOGdVP4d5nfnZ7XY071ftoOc5fV5K4Zz53gl8o6ppIjKG8J+XjBjuUdWZEb2CM+OrAyx3n2f3ecrNNnN6zUWanYkULzuBC4Kefwc0EpE7RKSEO7UVkSZuddj/gOdFpKyIXITzz56dCjiJZzcQLyLPAhWz7D8h46ocVd2OU33xhohUFBGfiDQQka7u8l8CfxCR2iJSBadBNZx5OP/QQ0SknIiUFpFO7rwU4FL3notKwJM5vA5UNQ34CufMoipOUkFVAzhtCG+JyLkAIlJLRK5yH/cRkQvdaq8DOL+SA2F2Mw3nmK5Q1ZO47R04FynsDrNO1vcwlqJ5vx52j0dlnAsUslMSp7pzN5AuIr2AHln2X819zzK8D7wiIvUARKS6iFybMVNESopIaZxEVML9HGR8z30JPCkiVUSkNvD7XB6PUL4E7haRJiJSFngmD7ZZqFgSKV7exqk/3ici77i/mnvg1Gn/gnPK/irOPzY4V9dUcss/A4bj/BINZzxO1c4anKqC45x+ev+V+3ePiGRcgnknzpfJCpyrZkbhtCmA82U9HqeefiFOUgvJTXq/wbniZwuQCtzszpuIc0XNEpwrxr7L5jUE+wK4Avgqyy/vJ3CqrOaIyEGcBuSMdp+G7vPDOO0e/1LVKWG2PwunQTvjrGMFzjELdxYCWd7DCF9HtKJ5vybgHOdFwDicHxX+UBt3P39/wPki3odTbTg2aP4qnM/cBrf66nyc1z8Wp7rwEE4j+yVBm52Ac6bYEfjQfXypO+8FnM/lRne5z3J1NEK/hh9w2lam4H4m3FnZ/Z8UKRlX7RiTIxF5FThPVe/yOhZT8LlnFu+raj2vY8kvItIE56qvUmfRPleo2JmICUtELhKRFu6NYe2AATiXeBpzBhEpIyK9RSReRGoBz1EMPi8icp2IlHKrXF8Fvi0uCQQsiZjsVcCpQjqCUx30Bs6lr8aEIjhVRvtwqrNWAs96GlEE5FT/ZKGmSBrf7wN24dzr48e5P6vYsOosY4wxUbMzEWOMMVGzJGKMMSZqxe5mw3POOUcTEhK8DsMYYwqVBQsW/Kqq1bOWF7skkpCQQHJystdhGGNMoSIiIbuJseosY4wxUbMkYowxJmqWRIwxxkQtZm0iIlIH+BSni2YFPlTVt0WkKs6Nawk4g73cpKr73A7r3sbpCvoozoAyC91t3QU87W76ZVUd5pZfjDNSWRmcfnoeDjN2gzHFXlpaGqmpqRw/ftzrUEwBVrp0aWrXrk2JEiUiWj6WDevpwCOqulBEKuCMvzARZ/S9yao6xB1rYTBOh3a9cDqva4jTodp7OGNdVMXpPqENTjJaICJj3UFv3sMZxW8uThLpCfwQw9dkTKGVmppKhQoVSEhIwPnNZszpVJU9e/aQmppK/fr1I1onZtVZqro940zC7a1zJVALuJZTI+QNA/q6j68FPnVHOJsDVBaRmjjjK0x0RyPbh9Mld093XkVVneOefXwatC1jTBbHjx+nWrVqlkBMWCJCtWrVcnW2mi9tIiKSgDPwzlyghjsuAThdjGeMSFaL07sNT3XLsitPDVEeav+DRCRZRJJ37w43TIMxRZ8lEJOT3H5GYp5ExBkz+muccZkPBs9zzyBi3oahqh+qahtVbVO9+hn3yhhj8omIcPvtt2c+T09Pp3r16vTp08fDqHJWvvyZIwZv2rSJ5s2bh1z+2WefZdKkSWG3N2bMGFasWJFn8XkppjcbikgJnATyuapmDCi0U0Rqqup2t0pql1u+jdOHlqztlm0DLstSPtUtrx1ieWMKnITB32c+3jTkag8jOSU4prwQyesqV64cy5Yt49ixY5QpU4aJEydSq1bICoSYS09PJz4+Nl+BL774Yrbzx4wZQ58+fWjatOlZ7yuWryMSMTsTca+2+ghYqapvBs0aC2QManQXp7oWHwvc6Y5d0R444FZ7jQd6uENaVsEZiW+8O++giLR393Un1k25KShSF8DE52DEbfBue74s+QKX+RaRv0OkF0y9e/fm+++dBDZ8+HBuueWWzHlHjhzhnnvuoV27drRq1YpvvnH+pTdt2kSXLl1o3bo1rVu3ZtasWQBs376dSy+9lKSkJJo3b8706dOB088cRo0aRf/+/QHo378/999/P5dccgmPP/4469evp2fPnlx88cV06dKFVatWAbBx40Y6dOhAYmIiTz/9NOH4/X4GDhxIs2bN6NGjB8eOHcvcz6hRowAYPHgwTZs2pUWLFjz66KPMmjWLsWPH8thjj5GUlMT69etJSUmhffv2tGjRguuuu459+/YBMH/+fFq0aEFSUhKPPfZY5pnPJ598wjXXXEO3bt3o3r07hw8fpnv37rRu3ZrExMTTjttFF11E//79adSoEbfddhuTJk2iU6dONGzYkHnz5p3FO+mIZXVWJ+AOoJuIpLhTb2AIcKWIrMUZenSIu/w4YAPOEJNDgQcAVHUv8BIw351edMtwl/m3u8567Mos4zVVmPsBfHQlzH4Xfl0LVetTk718UvI1Rpd8DjZO9zpKT/Xr148RI0Zw/PhxlixZwiWXnBrd9pVXXqFbt27MmzePKVOm8Nhjj3HkyBHOPfdcJk6cyMKFCxk5ciR/+MMfAPjiiy+46qqrSElJYfHixSQlJeW4/9TUVGbNmsWbb77JoEGD+Oc//8mCBQt4/fXXeeCBBwB4+OGH+d3vfsfSpUupWbNm2G2tXbuWBx98kOXLl1O5cmW+/vrr0+bv2bOH0aNHs3z5cpYsWcLTTz9Nx44dueaaa3jttddISUmhQYMG3Hnnnbz66qssWbKExMREXnjhBQDuvvtuPvjgA1JSUoiLiztt2wsXLmTUqFFMmzaN0qVLM3r0aBYuXMiUKVN45JFHyLjbYd26dTzyyCOsWrWKVatW8cUXXzBjxgxef/11/vrXv+b8huUgZudAqjoDZ5CaULqHWF6BB8Ns62Pg4xDlyUDoSklj8lvacfjuT7D4C2jUi8Qlv+XQ0bKQCiXox2/jfuah+DHwWV+4bRQ0uNzriD3RokULNm3axPDhw+ndu/dp8yZMmMDYsWN5/fXXAeeKsi1btnD++efz0EMPZX6ZrlmzBoC2bdtyzz33kJaWRt++fSNKIjfeeCNxcXEcPnyYWbNmceONN2bOO3HCGRp95syZmQnhjjvu4Iknngi5rfr162fu8+KLL2bTpk2nza9UqRKlS5dmwIAB9OnTJ2Tbz4EDB9i/fz9du3YF4K677uLGG29k//79HDp0iA4dOgBw66238t1332Wud+WVV1K1alXAuTT3qaee4ueff8bn87Ft2zZ27tyZGWNiYiIAzZo1o3v37ogIiYmJZ8QbDbtj3Zi8EAjAiFucBNJ1MPT7gkOUzZydRjwj/N3odWIIK9NrcujTW+j55HseBuyta665hkcfffS0qixwvgy//vprUlJSSElJYcuWLTRp0oS33nqLGjVqsHjxYpKTkzl58iQAl156KT///DO1atWif//+fPrpp8DpVxhlvVy1XLlyAAQCASpXrpy5r5SUFFauXJm5XCRXKZUqVSrzcVxcHOnpp4+KGx8fz7x587jhhhv47rvv6NmzZySHJyIZrwPg888/Z/fu3SxYsICUlBRq1KiR+bqDY/T5fJnPfT7fGfFGw5KIMXlh7vuw/ifo/Tpc/iT4Qv9rHaIsd598nMOU4T8l/w4Hiue1IPfccw/PPfdc5i/kDFdddRX//Oc/M6tiFi1aBDi/1mvWrInP5+Ozzz7D7/cDsHnzZmrUqMHAgQO59957WbhwIQA1atRg5cqVBAIBRo8OPcx7xYoVqV+/Pl999RXgJLDFixcD0KlTJ0aMGAE4X9DROnz4MAcOHKB379689dZbmduvUKEChw4dApyzlSpVqmS253z22Wd07dqVypUrU6FCBebOnQuQGU8oBw4c4Nxzz6VEiRJMmTKFzZtDdrgbE5ZEjDlbu1bBpOehUU9oe2+Oi++gGneffJzyHIPhN4M/LfYxFjC1a9fObNcI9swzz5CWlkaLFi1o1qwZzzzzDAAPPPAAw4YNo2XLlqxatSrzV/jUqVNp2bIlrVq1YuTIkTz88MMADBkyhD59+tCxY8ds2zQ+//xzPvroI1q2bEmzZs0yG6Tffvtt3n33XRITE9m2LfpEf+jQIfr06UOLFi3o3Lkzb77pXGPUr18/XnvtNVq1asX69esZNmwYjz32GC1atCAlJYVnn3WGpv/oo48YOHAgSUlJHDlyhEqVKoXcz2233UZycjKJiYl8+umnXHTRRVHHnFvFboz1Nm3aqI0nYvJM+kn4d3c4uA0emAPlz82cldMltFf55vFByX9Ar7/DJffFOFBYuXIlTZo0ifl+TN45fPhw5pVmQ4YMYfv27bz99tsx32+oz4qILFDVNlmXtTMRY87Gz3+HHUvgN++clkAiMT7Qlun+5uwf9wJJg8NXVZji6/vvvz/t8uXsLjf2SrEb2dCYPHNoJ8z6JyTeCE2cq25ydwOf8FL6HfxQcjB/ih8F9ItJmKbwuvnmm7n55pu9DiNblkSMidasd8B/kq7JHdg8P7q7v9doHf7rv4Lb4ybR48n3WaNOpw0F5a52Y3Ji1VnGROPIr5D8MSTeyGY976w29Vb6DRyiLM/Ef5ZHwRmTfyyJGBON2f8Hacegy6Nnvan9VOCf6X3pEreMlrIuD4IzJv9YEjEmt47uhXlDodl1UL1RnmxyhL8bB7UM98T/mCfbMya/WBIxJrfmvAcnD8OlZ38WkuEIZRjpv5zevrmcx548264xsWZJxJjcSD8B84dC46uhRrM83fQwfw98BLgzfmKebteYWLIkYkxurPoeju2Dtvfk+aZT9VwmBNpwa9xkOHk0z7dfkI0ZM4aBAwdy8803M2HCBK/DMblgScSY3Fj0GVSsDRfEpgfej9J7UVmOwOLhMdl+QdW3b1+GDh3K+++/z8iRI3Nc/vnnn8/s6RegY8eOYZfdv38///rXv7LdXseOHbMdqTA3284ulqLIkogxkdq/BdZPgVa3kfDUjyQM/j7PRwdM1sYsCdRn/bevkTD4uzzffkH38ssv8+CDIUeEyFbGIFWhZJdEVJVAIJDt+tkJte1ot1VYWRIxJlIpXzh/k26L4U6ET/09aODbzsWyJob78caRI0eoVasWTz31FOCM3JeUlMSxY8d44okn6NWrF61btw657iuvvEKjRo3o3Lkzq1evPm1e+fLlOXLkCFdffTUtW7akefPmmWc0gwcPZv369ZmjA27atInGjRtz55130rx5c7Zu3ZrZP1V6ejq33XYbTZo04YYbbuDoUadaMetZyuuvv87zzz9/xrYzYsnw5ptv0rx5c5o3b84//vGPzG01adIk5IiIhZElEWMiEQjAos/hgq5QpV5Md/WDvx3HtCTXx82I6X68UK5cOZYsWcLw4cM5evQo99xzD5988glDhw5l0qRJjBo1ivfff/+M9RYsWMCIESNISUlh3LhxzJ8//4xlfvzxR84//3wWL17MsmXLMsfuGDJkCA0aNCAlJYXXXnsNcEYkfOCBB1i+fDn16p16P1evXs0DDzzAypUrqVixYo7VYKG2HRzzf/7zH+bOncucOXMYOnRoZtf2OY2IWJjErNsTEfkY6APsUtXmbtlIoLG7SGVgv6omiUgCsBLI+HkxR1Xvd9e5GPgEKIMzhO7DqqoiUhUYCSQAm4CbVHVfrF6PKeY2ToUDW+CK52K+qyOUYXygDVfHzeGF9Dtjs5MfBsOOpXm7zfMSodeQHBerVq0aZcuWZcCAAdxxxx0kJSWRlJQUsmv4DNOnT+e6666jbFlnoK9rrrnmjGUSExN55JFHeOKJJ+jTpw9dunQJu7169erRvn37M8rr1KlDp06dALj99tt55513ePTR6C7lnjFjBtddd11mt/XXX38906dP55prrslxRMTCJJZnIp8Apw3jpao3q2qSqiYBXwP/C5q9PmNeRgJxvQcMBBq6U8Y2BwOTVbUhMNl9bkxsLPwMSleGi84c3jQWRvu7UFmOcLlvUb7sL7+1aNGCHTt2RP0FHUqjRo1YuHAhiYmJPP3007z44othlw0eFTBY1tEMM57Hx8cTCAQyy7OOlphbOY2IWJjEcoz1n90zjDOI887cBHTLbhsiUhOoqKpz3OefAn2BH4BrgcvcRYcBU4HQAyEbczZOHIbV46DVHVCidL7sckagObu1UuyqtCI4Y4iV3bt3M2XKFJ5++ml8YUaAzOrSSy+lf//+PPnkk6Snp/Ptt99y332nj8Hyyy+/ULVqVW6//XYqV67Mv//9b+D0UQRzsmXLFmbPnk2HDh344osv6Ny5M+CMlLhr1y727NlD+fLlM4e6zW7bXbp0oX///gwePBhVZfTo0Xz2WdHrH82rNpEuwE5VXRtUVl9EFonINBHJOA+tBaQGLZPqlgHUUNXt7uMdQI1wOxORQSKSLCLJu3fvzqOXYIqNtRMg/Tg065tvu/QTxxh/J+dM5OjefNtvfhgwYADdunXLHCo2Eq1bt+bmm2+mZcuW9OrVi7Zt256xzNKlS2nXrh1JSUm88MILmWNvVKtWjU6dOtG8efPMxu9wGjduzLvvvkuTJk3Yt28fv/vd7wAoUaIEzz77LO3atePKK6/MHDkwu223bt2a/v37065dOy655BLuvfdeWrVqFfFrLixiOrKheybyXUabSFD5e8A6VX3DfV4KKK+qe9w2kDFAM6ARMERVr3CX6wI8oap9RGS/qlYO2uY+Va2SU0w2sqHJta/6w6YZ8Mhq8MUBuR03JDpNZRPjSj3ljNvebuBZb68gjGz4wQcf8NNPP/H666/Tq1cvli1b5mk8JrTcjGyY7+OJiEg8cD1wcUaZqp4ATriPF4jIepwEsg2oHbR6bbcMYKeI1FTV7W611678iN8UM2nHYM0EaHETCU/lb+eIK7QeqwJ1uGjJyDxJIl5bu3Ytb731FrNnz6ZKlSrUrFmTHj162B3qhZwX1VlXAKtUNbOaSkSqi0ic+/gCnAb0DW511UERae+2o9wJfOOuNha4y318V1C5MXln3WRIOwJNz7waKPaEMf5OkDof9m3yYP95q2HDhqxatYoqVZwKg4kTJ1oCKQJilkREZDgwG2gsIqkiMsCd1Q/I2qfDpcASEUkBRgH3q2pGRfADwL+BdcB6nEZ1gCHAlSKyFicxeddSaIquFd9AmSqQEP5y0VgaF7gEgJdef63Y3b1uCodYXp11S5jy/iHKvsa55DfU8snAGR3aqOoeoPvZRWlMNtJPwJofock1EFfCkxC2aA1WBurQIy6Zj/y9PYnBmOzYHevGhLNhGpw46FFV1ikTAm1pK6s5hwOexmFMKJZEjAlnxTdQqiJccJmnYfzob4tPlCviFpz1tmJ5NaYpGnL7GbEkYkwoAb9zg2GjnhBfKuflY2il1mVLoDpX+c7sLyo3SpcuzZ49eyyRmLBUlT179lC6dOQ31eb7Jb7GFArbFsCxvdC4Z87LxpwwPtCWO+MmwPGDULpiVFupXbs2qamp2A23JjulS5emdu3aOS/osiRiTChrJ4D4oEG2PfPkm/H+NgyMH+fElXhDVNsoUaIE9evXz+PITHFn1VnGhLJ2AtRu51zeWwAs1Ebs1kqw8luvQzHmNJZEjMnq0E7YvhgaXul1JJkC+Jjov5gjy3+g8eDRds+IKTCsOsuYrNZNcv427FGgvqwnBC7m1vifaOdbxfRAC6/DMQawMxFjzrR2ApQ/zxlkqQCZE2jKcS3B5b4Ur0MxJpMlEWOC+dNg/RSnKivLAEVeO04pZgeacpklEVOAWBIxJtjWeXDiADTs4XUkIU0JJHGBbwcJsj3nhY3JB5ZEjAm2biL44j2/Sz2cqYEkAC7zRT6gkzGxZEnEmGBrJ0LdDlHf0BdrW7QG6wM1LYmYAsOSiDEZDu2EncvgwoLdOfTUQBIdfCvg5FGvQzEm5yQiIn8XkYoiUkJEJovIbhG5PT+CMyZfbZzm/L3gcm/jyMGUQBKlJA02Tfc6FGMiOhPpoaoHgT7AJuBCIPvR7o0pjDZMde5QP69g34MxL3ARR7WUcymyMR6L5GbDjGWuBr5S1QNSwC59NOasqTpJpP6lJDz1Q46Le+kkJZgZaMaVayc4cdv/o/FQJGci34nIKuBiYLKIVAeO57SSiHwsIrtEZFlQ2fMisk1EUtypd9C8J0VknYisFpGrgsp7umXrRGRwUHl9EZnrlo8UkZKRvmhjzrBnPRzcVmCvyspqaiAJ9m+h+1NDC9Rd9ab4yTGJqOpgoCPQRlXTgKPAtRFs+xMgVD/ab6lqkjuNAxCRpjhjrzdz1/mXiMSJSBzwLtALaArc4i4L8Kq7rQuBfcCArDsyJmIbpjh/C0kS+Tng3E3f2bcshyWNia1IGtbLAg8A77lF5wNtclpPVX8G9kYYx7XACFU9oaobgXVAO3dap6obVPUkMAK4Vpz6tG7AKHf9YUDfCPdlzJk2TIVKdaFK4egqfavWYFOgBp19S70OxRRzkVRn/Qc4iXM2ArANePks9vmQiCxxq7sy+tmuBWwNWibVLQtXXg3Yr6rpWcqNyb2A37nS6YKuhap9YUagOR18K4gnPeeFjYmRSJJIA1X9O5AGoKpHgWj/094DGgBJwHbgjSi3kysiMkhEkkUk2UZ1M2fYngLHDxSaqqwM0wOJlJfjtJJ1XodiirFIkshJESkDKICINABORLMzVd2pqn5VDQBDcaqrwDm7qRO0aG23LFz5HqCyiMRnKQ+33w9VtY2qtqlevXo0oZuibMNU52/9rp6GkVuzA83wq9A5zqq0jHciSSLPAT8CdUTkc2Ay8Hg0OxORmkFPrwMyWgXHAv1EpJSI1AcaAvOA+UBD90qskjiN72NVVYEpQMY4oXcB30QTkzFsmAo1mkP5wvUD4yDlWKwN6GLtIsZDOd4noqoTRWQh0B6nGuthVf01p/VEZDhwGXCOiKTiJKPLRCQJ56xmE3Cfu4/lIvIlsAJIBx5UVb+7nYeA8UAc8LGqLnd38QQwQkReBhYBH0X4mo05Je04bJkLbe/1OpKoTA8k8lDcGDi2H8pU9jgaUxzlmERE5DrgJ1X93n1eWUT6quqY7NZT1VtCFIf9olfVV4BXQpSPA8aFKN/AqeowY6KTOh/8J6D+pV5HEpUZ/kQejh/tXBjQ5Ddeh2OKoYiqs1T1QMYTVd2Pc1ZhTOG3aQaID+q29zqSqCzSCzmspWH9T16HYoqpSLo9CZVobGx2UzRsmgHntSDhhZleRxKVdOKZE2jChfO+57IZVwCwacjVHkdlipNIzkSSReRNEWngTm8CC2IdmDExl3bcqc5K6Ox1JGdleqAFCb6d1JZdXodiiqFIksjvcW42HOlOJ4AHYxmUMfkioz0koYvXkZyVGYHmAHTyLc9hSWPyXiRXZx0BBue0nDGFTkZ7SL0OwAyvo4naej2fnVqZjr7ljPQX7LFQTNETydVZjYBHgYTg5VW1W+zCMiYfbJoBNVtC6UpeR3KWhFmBZm5njOp1MKaYiaSB/CvgfeDfgD+24RiTT9KOQeo8uOQ+ryPJE7MCzbgubiYNJWzHDcbERCRJJF1V38t5MWMKkdT54D9Z6NtDMszyN4MS0Mm6hjf5LJKG9W9F5AERqSkiVTOmmEdmTCwV8vtDstpGdTYHzrXGdZPvIjkTucv9GzyuugIX5H04xuSTItMecsrMQDP6xM0BfzrE2a1cJn9EMrJh/RCTJRBTeKUdc6qz6nXyOpI8NTvQjIpyDLYv9joUU4xENLKhiDwtIh+6zxuKSJ/Yh2ZMjGxbUKTaQzLMCjRzHmyc5m0gpljxYmRDY7y1eRYgUPcSryPJU3uoxMpAHUsiJl/l98iGxnhv80xn/JAyVXJetpCZHWgGW+Y4XboYkw/ydWRDYzznT4Ot86Bex5yXLYRmBppB+nH6PfdPEgZ/T8Lg770OyRRxkVzCkXVkw05A/1gGZUzMbF8MaUehXsci+QU7L9AEvwodfCuYE2jqdTimGMj2TEREfEAV4HqcxDEcaKOqU2MemTGxsNnt8r2InokcoixLtT4d7H4Rk0+yTSKqGgAeV9U9qvq9qn4XydC4ACLysYjsEpFlQWWvicgqEVkiIqNFpLJbniAix0QkxZ3eD1rnYhFZKiLrROQdERG3vKqITBSRte7folfBbfLe5llQrSGUP9frSGJmTqAZSbKOMli7iIm9SNpEJonIoyJSJ5d3rH8C9MxSNhForqotgDXAk0Hz1qtqkjvdH1T+HjAQaOhOGdscDExW1YbAZKynYZOTgB82zy6yZyEZZgeaUlL8tPGt8ToUUwxEkkRuxhk/5GecwagWAMk5raSqPwN7s5RNUNV09+kcoHZ22xCRmkBFVZ2jqgp8CvR1Z18LDHMfDwsqNya0ncvhxIEid5NhVvMDjUnTODr4VngdiikGIhlPpH6M9n0PziBXGeqLyCLgIPC0qk4HagGpQcukumUANVR1u/t4B1AjRnGaomLzLOdvET8TOUppFmsDSyImX0QynsidocpV9dNodyoifwHSgc/dou1AXVXdIyIXA2NEpFmk21NVFZGwAymIyCBgEEDdunWjDdsUdptnQuW6ULmO15HE3KxAUx6IG0t5jnodiiniIqnOahs0dQGeB66Jdoci0h/oA9zmVlGhqidUdY/7eAGwHmiEc3d8cJVXbbcMYKdb3ZVR7RV2gGlV/VBV26hqm+rVq0cbuinMVJ0zkSJelZVhdqAZ8RKgrW+116GYIi6S6qzfBz93r6gaEc3ORKQn8DjQ1b3zPaO8OrBXVf0icgFOA/oGVd0rIgdFpD0wF7gT+Ke72licHoaHuH+/iSYmU0z8uhaO/gp1O3gdSb5YGGjICS1hVVom5qLpL/oIkGM7iYgMBy4DzhGRVJybFp8ESgET3St157hXYl0KvCgiaUAAuF9VMxrlH8C50qsM8IM7gZM8vhSRAcBm4KYoXospLrZktIcUjzORE5RkYaAhHX3LT7upctOQqz2MyhRFkbSJfMupgZt9QFPgy5zWU9VbQhR/FGbZr4Gvw8xLBpqHKN8DdM8pDmMApyqr3LlQrYHXkeSb2YGm/DH+aypxmAOU9zocU0RFcibyetDjdGCzqqaGW9iYAmnzbKjXgYQnx3kdSb6ZFWjKn2UU7X0rGR9o63U4poiKpGF9CzBXVaep6kxgj4gkxDYsY/LQ/i1wYEuxqcrKsFgv5KiWor21i5gYiiSJfIXTTpHB75YZUzhsnu38LSaN6hnSiCc50IiO1o+WiaFIkki8qp7MeOI+Lhm7kIzJY1tmQalKUCPiW4+KjNmBZjT2pXIOB7wOxRRRkSSR3SKSeV+IiFwLRNQJozEFwuZZziiGvjivI8l3s9zu4K1Ky8RKJEnkfuApEdkiIluAJ4D7YhuWMXnk8G74dU2R7+oknGVan4Naxu4XMTETyc2G64H2IlLefX445lEZk1e2uO0hxaxRPYOfOOYFLrLxRUzM5HgmIiJ/FZHKqnpYVQ+LSBUReTk/gjPmrG2ZDfFloGaS15F4ZnagGRf4dnAee7wOxRRBkVRn9VLV/RlPVHUf0DtmERmTlzbPhNptIL74Xgsy220XsSotEwuRJJE4ESmV8UREyuB0XWJMwXb8IOxYWmzbQzKs1Lrs0/J2qa+JiUjuWP8cmCwi/3Gf382pwaCMKbi2zgMNFLv7Q7JSfMwJNKFD3AqnN2On3zpj8kQkDeuvishi4Aq36CVVHR/bsIzJA5tngC+eJkP3cozvc16+CJsVaEavuPl0eeo/bFVn/DbrjNHkhUiqswAWAdOAqe5jYwq+zbPg/NYco7TXkXhuVsC50bKjtYuYPBbJ1Vk3AfOAG3C6W58rIjfEOjBjzsrJo7BtYbFvD8mwXs9np1amk2+Z16GYIiaSNpG/AG1VdRdkDiA1CRgVy8CMOSvbkiGQ5t4fkuZ1NAWAMCvQjM6+pTgjO1i7iMkbkVRn+TISiGtPhOsZ451NM0F8TncnBnCqtKrLQRrLVq9DMUVIJGciP4rIeGC4+/xmoPgMymAKp80z4bxEKF3J60gKjJn+5lACOvmWs9pf1+twTBGR4xmFqj4GfAC0cKcPVfWJSDYuIh+LyC4RWRZUVlVEJorIWvdvFbdcROQdEVknIktEpHXQOne5y68VkbuCyi8WkaXuOu+I2LWLBkg/Canzi21XJ+H8wjlsDNSgo7WLmDwUUbWUqv5PVf/sTqNzsf1PgJ5ZygYDk1W1ITDZfQ7QC2joToOA98BJOjjjs18CtAOey0g87jIDg9bLui9THP2yENKPWxIJYVagOZf4VhGH3+tQTBER07YNVf0Z2Jul+FpO3aw4DOgbVP6pOuYAlUWkJnAVMFFV97pdrkwEerrzKqrqHFVV4NOgbZnibPNM528xv8kwlJmBZlSQY7SU9V6HYooILxrIa6jqdvfxDqCG+7gWENzil+qWZVeeGqLcFHebZ0H1JlCumteRFDgZ/WhZFygmr4RNIiIy2f37aqx27p5BaKy2n0FEBolIsogk7969O9a7M17yp8OWOZBgVVmh7KMiywP16GRJxOSR7K7OqikiHYFrRGQEWS4sV9WFUe5zp4jUVNXtbpVUxuXD24A6QcvVdsu2AZdlKZ/qltcOsfwZVPVD4EOANm3axDxpGQ/tWAInD/PQzDJ8N714d3USzsxAc+6KG0/jwaM54Y50bV2gmGhlV531LPAMzpfzm8AbQdPrZ7HPsUDGFVZ3Ad8Eld/pXqXVHjjgVnuNB3q445hUAXoA4915B0WkvXtV1p1B2zLF1aYZAMwNNPE4kIJrVqAZpSSdtr7VXodiioCwZyKqOgoYJSLPqOpL0WxcRIbjnEWcIyKpOFdZDQG+FJEBwGacrlTAufekN7AOOIrTWzCquldEXgLmu8u9qKoZjfUP4FwBVgb4wZ1McbZpOpzTiN2plb2OpMCaF7iIkxpHZ98yZgQSvQ7HFHKR9OL7kohcA1zqFk1V1e8i2biq3hJmVvcQyyrwYJjtfAx8HKI8GWgeSSymGPCnw+bZ0OLG0y+5MKc5SmkWaiO3C5Rw/6LGRCaSDhj/BjwMrHCnh0Xkr7EOzJhc27EYTh6ChM5eR1LgTfcn0ty3iWoc8DoUU8hFconv1cCVqvqxe0bQE+gT27CMiYLbHkJCF2/jKARmBJwTeLtKy5ytSO8TqRz02DojMgXTxulwTmMof67XkRR4S/UC9ms5t0rLmOhF0gHj34BFIjIF5zLfSznVVYkxBYM/HbbMhhY3ex1JoRDAx8xAMzrHLYV0u+rdRC+ShvXhIjIVaOsWPaGqO2IalTG5tX0xnDxs7SG5MCOQyNVx82ggv3gdiinEIjkTwb0nY2yMYzEmepumO38tiURsunt5bxer0jJnwQaXMkXDphnWHpJLqXouGwM1rF3EnBVLIqbw86c57SF2FpJrMwKJdPCtcMZgMSYK2SYREYkTkVX5FYwxUfklxdpDojQ9kEg5OeEM4mVMFLJtE1FVv4isFpG6qrolv4IyJlc2TgWg9X9PsBfrdDE3Zgeaka4+4tdPtp6PTVQiaVivAiwXkXnAkYxCVb0mZlEZkxsbpkGNRPZuruh1JIXOIcqyQBtRbtrX9Jl4MWA9+prciSSJPBPzKIyJ1smjsHUutBvkdOdpcm2avyWPlxhJdfaxmyo5r2BMkBwb1lV1GrAJKOE+ng9EO5aIMXlr6xzwn4QLLvM6kkJraqAlAJfFLfY4ElMYRdIB40BgFPCBW1QLGBPDmIyJ3IZp4Iu38dTPwgqtx06tTFefJRGTe5Fc4vsg0Ak4CKCqawG7GN8UDBumQu12UKq815EUYsI0f0u6+JYSh9/rYEwhE0kSOaGqmReRi0g8+TAuujE5OrrX6e7kgq5eR1LoTQ20pJIcpZWs9ToUU8hEkkSmichTQBkRuRL4Cvg2tmEZE4FN0wGF+pZEztaMQCLp6rN2EZNrkSSRwcBuYClwH84wtk9Hu0MRaSwiKUHTQRH5o4g8LyLbgsp7B63zpIisc+9ZuSqovKdbtk5ErGfh4mbDNChZHmq38TqSQu8g5VioDbnM2kVMLkXSi29ARIYBc3GqsVa7Q9lGRVVXA0ng3BEPbANG44yp/paqvh68vIg0BfoBzYDzgUki0sid/S5wJc5gqPNFZKyqrog2NlPIbJwG9TpCXAmvIykSpvpb8niJL+HQTqhQw+twTCGRYxIRkauB94H1OOOJ1BeR+1T1hzzYf3dgvapuFpFwy1wLjFDVE8BGEVkHtHPnrVPVDW6cI9xlLYkUBwdSYc86XtrRno8G213qeWFaIInH+ZJHh7zBKL9TRWg3HpqcRFKd9QZwuapepqpdgcuBt/Jo//2A4UHPHxKRJSLysYhk3PVUC9gatEyqWxau3BQH66cAp4Z5NWdvudZjh1ahm2+R16GYQiSSJHJIVdcFPd8AHDrbHYtISeAanIZ6gPeABjhVXdtxkleeEJFBIpIsIsm7d+/Oq80aL62bxA6twmqt43UkRYgw2d+arr7FlMJ69TWRCZtEROR6EbkeSBaRcSLSX0TuwrkyKy+6/OwFLFTVnQCqulNV/aoaAIZyqspqGxD8TVHbLQtXfgZV/VBV26hqm+rVq+dB6MZT/nTYMIWf/S1walhNXpkYaE05OUF730qvQzGFRHZnIr9xp9LATqArcBnOlVpl8mDftxBUlSUiNYPmXQcscx+PBfqJSCkRqQ80BObhJLKGIlLfPavph42+WDxsWwDHDzDN7a7D5J3ZgWYc1VJc4VvgdSimkAjbsK6qd8dqpyJSDueqqvuCiv8uIkk4V4BtypinqstF5EucBvN04EFV9bvbeQgYD8QBH6vq8ljFbAqQdZNAfNYeEgMnKMnPgRZcEbeQZ9Jj9hVgipBIrs6qD/weSAhe/my6glfVI0C1LGV3ZLP8K8ArIcrH4dy3YoqT9ZOhVhsOrLOuTmJhUqA1PePm00w2eR2KKQQi6Qp+DPARTltIIKbRGJOTI3tg20K47ElYl/PiJvd+8rciEC9cGWdVWiZnkSSR46r6TswjMSYSG6YAChdeAezwOpoiaS8VWaAN6e6zER9MziK5xPdtEXlORDqISOuMKeaRGRPKuklQpiqcn+R1JEXaJP/FJPo2wYGQFzwakymSM5FE4A6gG6eqs9R9bkz+CQRg3WRo0A18cV5HU6RNCrTmSYbz9N9f47/+KwG7e92EFkkSuRG4ILg7eGM8sXMpHNnlVmWZWFqv57M+UJOevnmZScSYUCKpzloGVI5xHMbkbM14QJwzERNjwrjAJbT3raSqMx6dMSFFciZSGVglIvOBExmFZ3OJrzFRWT2OhYEGXP9KsteRFAs/+Nvx+/gx9IhLZoTfErcJLZIk8lzMozAmJwe3wy+LmOS/2etIio0VWo9NgRr09s21JGLCimQ8kWn5EYgx2VrzIwATAxd7HEhx4lRpDYr7jspn3+eqKaJybBMRkUPu6IMHReS4iPhFxCpJTf5a/QNUSWCtWm//+Wmcvx3xErAbD01YkZyJVMh4LM7IUdcC7WMZlDGnOXkENkyFtgNgu/Xam5+WaX22BqrTyzfP61BMARXJ1VmZ1DEGuCqnZY3JM+ungP8ENO7ldSTFkDAu0I7OvqVwbL/XwZgCKJIOGK8PeuoD2gDHYxaRMVmt/gFKV4K6HYAJXkdT7Pzgv4T74r/nzy/9jf8FLgXsxkNzSiRXZ/0m6HE6Tjft18YkGmOyCvidRvWGPSCuhNfRFEsp2oBUPYffxM3OTCLGZIikTcQGFTDeSU2Go79Co55eR1KMCd/4O3Jf3HecwwF+pZLXAZkCJGwSEZFns1lPVfWlGMRjzOlWfMMJjafN58ohvvc6mmJrtL8zD8aP5Tdxs/iP39qmzCnZNawfCTEBDACeiHFcxjgdLq74hp8DLThEWa+jKdbWaW2WBhLoGzfT61BMARM2iajqGxkT8CHOuOp3AyOAC852xyKySUSWikiKiCS7ZVVFZKKIrHX/VnHLRUTeEZF1IrIkuCt6EbnLXX6tiNx1tnGZAmRbMhxM5Xu/XVFeEIzxd6albwMNxLqHN6dke4mv+6X+MrAEp+qrtao+oaq78mj/l6tqkqq2cZ8PBiarakNgsvscoBfQ0J0GAe9lxIfTLcslQDvguYzEY4qA5aMhrhSTAjZ8TUEw1t8Bv4qdjZjThE0iIvIaMB84BCSq6vOqui/G8VwLDHMfDwP6BpV/6t6nMgeoLCI1ce5Xmaiqe93YJgLWAlsUBAKwfAxc2J3DVpVVIOymCjMDzenrm+m8P8aQ/ZnII8D5wNPAL0FdnxzKo25PFJggIgtEZJBbVkNVt7uPdwA13Me1gK1B66a6ZeHKTWGXOh8O/QLNrvM6EhNktL8zdXy7Yetcr0MxBUTYq7NUNVd3s0ehs6puE5FzgYkisirL/lVENC925CapQQB169bNi02aWHOrspxLe6d7HY1xjQ+05ah+zDdDX+XJ9IGA3XhY3MU6UYSlqtvcv7uA0ThtGjvdaircvxltL9uAOkGr13bLwpVn3deHqtpGVdtUr149r1+KyWuBAKwYAw2vhNIVvY7GBDlKab7zt+eauFmU45jX4ZgCwJMkIiLlRKRCxmOgB84IimOBjCus7gK+cR+PBe50r9JqDxxwq73GAz1EpIrboN7DLTOF2da5cGi7VWUVUMP93SgnJ7gmbpbXoZgCIJJuT2KhBjDa6RSYeOALVf3RHT3xSxEZAGwGbnKXHwf0BtYBR3EuNUZV94rISzgXAAC8qKp78+9lmJhYMpJjWpI2n8MRu8GwwFmkF7IyUIdb4yYz3N/d63CMxzxJIqq6AWgZonwPcManUlUVeDDMtj4GPs7rGI1H0o7Bsv8xLtCOI5TxOhoTkjDc340XSwyjuWzwOhjjMc/aRIwJadX3cOIAo/xdvY7EZGOMvzPHtCS3xv3kdSjGY5ZETMGyeDhUqsOcQBOvIzHZOEi5zAZ2TtjQucWZJRFTcBz8Bdb/BC1vQe2jWeAN93ejvByHpaO8DsV4yP5TTcGxZCRoAFr28zoSE4GF2pCVgTqsHPsGCYO/I2GwXQRRHFkSMQWDKqR84YxeWK2B19GYiAgf+3vRxLeVzr5lXgdjPGJJxBQM2xbAr2sg6VavIzG58I2/E7u1EvfGjfM6FOMRSyKmYEj+D0e1FM2/LGPVIoXISUowLL0Hl8UtpqGkeh2O8YAlEeO9I3tg6Vf8z9/ZeuwthD73d+eYlmSAnY0US5ZEjPcWDgP/CYb5r/I6EhOFfVTka38XroubAYfzaqghU1hYEjHe8qfD/I+g/qWs1dpeR2Oi9JG/N6UkHeYN9ToUk88siRhvrfkBDqZCu0E5L2sKrI1akx/9bTk47f9oMfhLa9cqRiyJGG/N/QAq1YFGvbyOxJylt9Ovp6IcZUD8D16HYvKRJRHjnZ0rYNN0aDsA4rzqUNrklZVaj3H+dtwT9wOVOOx1OCafWBIx3pn9fxzXErT67jyr/igi/pH+W8pxnIHx9n4WF/bzz3hj3yZYPILh/ivYh41eWFSs0Tp8H7iE/nHjaTV4eOZ7a0PoFl12JmK8MeMt8MXxfvpvvI7E5LF/pP+WspzgvvjvvA7F5ANLIib/HUiFRZ9DqzvYSVWvozF5bL3WYnSgM3fHjaeO7PQ6HBNjlkRM/pv5NqDQ+Y9eR2Ji5NW0fqTj4y/xX3gdiomxfE8iIlJHRKaIyAoRWS4iD7vlz4vINhFJcafeQes8KSLrRGS1iFwVVN7TLVsnIoPz+7WYKBzaAQuGOR0tVq7rdTQmRnZRhXfT+9Izbj4drYffIs2LM5F04BFVbQq0Bx4UkabuvLdUNcmdxgG48/oBzYCewL9EJE5E4oB3gV5AU+CWoO2Ygmr6GxBIh85/9joSE2Mf+XuxOXAuz8V/6vRMYIqkfE8iqrpdVRe6jw8BK4Fa2axyLTBCVU+o6kZgHdDOndap6gZVPQmMcJc1BdXu1TD/Iz5Lu5yEv6+wy3qLuBOU5JX022jsS4Xkj7wOx8SIp20iIpIAtALmukUPicgSEflYRKq4ZbWArUGrpbpl4cpD7WeQiCSLSPLu3bvz8iWY3Bj/FJQsz1vpN3gdicknEwJt+NmfyKFxz9Fx8DD74VAEeZZERKQ88DXwR1U9CLwHNACSgO3AG3m1L1X9UFXbqGqb6tWr59VmTW6snQjrJkHXx9lr94UUI8JT6QPwEeDVEh8C6nVAJo95kkREpAROAvlcVf8HoKo7VdWvqgFgKE51FcA2oE7Q6rXdsnDlpqDxpzlnIVUbWEeLxVCqnstf02+jS9wybo37yetwTB7z4uosAT4CVqrqm0HlNYMWuw7IuKRjLNBPREqJSH2gITAPmA80FJH6IlISp/F9bH68BpNL84bCr2sYsKMvCU9P9Doa44HP/d2Z7m/OX+L/6/RWYIoML7o96QTcASwVkRS37Cmcq6uScM53NwH3AajqchH5EliBc2XXg6rqBxCRh4DxQBzwsaouz7+XYSKyZz389BJT/C2ZHGjtdTTGM8LgtIH8WGowc9+6mdtOPkU68dYdShGQ70lEVWcAEmJW2LE1VfUV4JUQ5eOyW894LOCHMQ+ArwRPpt1L6LfdFBfbqM4zaXfzj5L/4on4EbySfrvXIZk8YHesm9iZ8y/YOgd6vcoOqnkdjSkAxgQ6Myz9SgbGj6OPb7bX4Zg8YEnExMbu1ZwY/wIT/BeTMKKC19GYAuTl9DtIDjRyrtbatdLrcMxZsiRi8t6Jw/BVf45QiqesGstkkUY8D5x8mCOUgeH94JB10liYWRIxeSsQgNH3we5V/CHt9/xKJa8jMgXQLqow8OSfObJ3Oytfu4IWg0d6HZKJkiURk7d+fg1WfQc9XmZGINHraEwBtlgvZFDan7lAfuHjkq/DySNeh2SiYEnE5J0VY2HqX6HlLdD+Aa+jMYXAzEAif0h7iFayFkbc6lSFmkLFkojJG2smwNcDWBS4kMZzryLhSbvy2kRmfKAdj6fdh3/9NFJeuZRWg4d7HZLJBUsi5uytnQQjb4Nzm3DXycc5QUmvIzKFzNeBS7k/7U9cJFsYVfIF2LfZ65BMhCyJmLOzbhIn/tuP5Wk1abnxQQ5S3uuITCE1MdCG208+yTlyAP7dHTZM9TokEwFLIiY6qjD3A/j8Jtbp+dx28ikOWAIxZylZL+L6ky+w7lAJAsP68tZf7nF6PjAFliURk3vpJ+HbP8APj0Ojq7j55DPsx24oNHljvdbimpMvMzrQiT+V+Bo+vdbpg80USJZETO7sWgkfXwULP+Wd9L7UX3wrhynrdVSmiDlKaR5J+x2PpQ3i4MZkTrxziXNWknbc69BMFpZETGTST8LUV+H9LrB/M/ef/CNvpt+E2kfIxIzwlf8yup94nfGBNs5Zyb/aw+IRNmZ7AWLfACZ7gQAs+x+83wmm/pWxaW1ovfcVfgy0y3ldY/LAbqrwh7Tfc8fJwazc44fR97H+heZOMkk/4XV4xZ6oFq/hKtu0aaPJycleh1Hw+dNg9TiY9nfYuQzOacyAX/owOXCx15GZYkwI0MO3gD/Gf00T3xZ+1YqM8nfl/j+/CFUv8Dq8Ik1EFqhqmzPKLYmY0+zdAIs+h0X/hcM72BiowT/Sf8u3gY4E7MTVFBBCgC6+pdwa9xNX+BYQLwEWBy7gR387nvjTY1CtAYh1/JmXLIm4LIlkkX4StqfAmvHOmceuFfhVmBJIYri/G1MDSfiJ8zpKY8KqwV76xs2kV9w8knzuVVyV6kD9rlC/C9S6GKo2AJ/9CDobRTaJiEhP4G2cIXL/rapDslu+WCeRtOPw6xrnCqudyyA1GX5ZCOnH8aswXy9iov9ixvkvYbsNImUKofP5lW5xi+joW04H3wqqiNsXV8kKULMlnHsRnNMIzmkIletBpdoQX8rboAuJIplERCQOWANcCaQC84FbVHVFuHWKTBIJ+CH9OJw8CicPO9PxA850bB8c2Q2Hd8HhnXAgFfZvgUPbM1c/qXGs0ASSA41IDjRmTqCJ3ethihQhQCNJpYVvA4mykUTfRhrINirKsdOWosJ5zlS+BpSrDmWrQdmqUKYKlKoIpSo4f0uWhRJloEQ5J/HEl4K4UsXmDCdcEsn3MdbzWDtgnapuABCREcC1QNgkErWJzzm/3DOFSb6nJWXNUq6nP878G3Aea+DUFPBDIN2d/BBIA/9Jp8E7/YTzPAdHtBS/aiW26TmkaiNStRPr9XxWa2026XmkF/q335jwFB+rtS6r/XX5issyS6uznwa+7dSW3dSW3dTa9yvV9x+guqykusyhMocoKbm4S95XAuLcyVcCfPHu5AOJcx/HgficCXHaa0ROPQ77N0Pw8zBtPWHbgILKr3sfKteJ/LVFoLB/i9QCtgY9TwUuybqQiAwCBrlPD4vI6jyM4Rzg1zzcXh7bDazL750W8GPiCTsmZ/LkmGwGCnBdRGyPyT11z2bteqEKC3sSiYiqfgh8GItti0hyqFO84syOyZnsmJzJjsmZCuMxKeyVeduA4HOz2m6ZMcaYfFDYk8h8oKGI1BeRkkA/YKzHMRljTLFRqKuzVDVdRB4CxuNc4vuxqi7P5zBiUk1WyNkxOZMdkzPZMTlToTsmhfoSX2OMMd4q7NVZxhhjPGRJxBhjTNQsiURIRHqKyGoRWScig0PMrysiU0RkkYgsEZHeXsSZnyI4JvVEZLJ7PKaKSG0v4swvIvKxiOwSkWVh5ouIvOMeryUi0jq/Y8xvERyTi0RktoicEJFH8zs+L0RwTG5zPx9LRWSWiLTM7xhzw5JIBNzuVd4FegFNgVtEpGmWxZ4GvlTVVjhXif0rf6PMXxEek9eBT1W1BfAi8Lf8jTLffQL0zGZ+L6ChOw0C3suHmLz2Cdkfk73AH3A+K8XFJ2R/TDYCXVU1EXiJAt7YbkkkMpndq6jqSSCje5VgClR0H1cCfsnH+LwQyTFpCvzkPp4SYn6Roqo/43wphnMtTlJVVZ0DVBaRmvkTnTdyOiaquktV5wM59+NTRERwTGap6j736Ryc+98KLEsikQnVvUqtLMs8D9wuIqnAOOD3+ROaZyI5JouB693H1wEVRKQ4dw8cyTEzJtgA4Aevg8iOJZG8cwvwiarWBnoDn4lIcT++jwJdRWQR0BWnN4Fc9GxnTPElIpfjJJEnvI4lO4X6ZsN8FEn3KgNw6zlVdbaIlMbpTG1XvkSY/3I8Jqr6C+6ZiIiUB36rqvvzK8ACyLrpMRERkRbAv4FeqrrH63iyU9x/KUcqku5VtgDdAUSkCVAapwvdoirHYyIi5wSdjT0JfJzPMRY0Y4E73au02gMHVHV7TiuZ4kVE6gL/A+5Q1TVex5MTOxOJQLjuVUTkRSBZVccCjwBDReRPOI3s/bUIdwcQ4TG5DPibiCjwM/CgZwHnAxEZjvOaz3Hbxp4DSgCo6vs4bWW9cfrmPwrc7U2k+SenYyIi5+H0zF4RCIjIH4GmqnrQm4hjL4LPybNANeBf4owRkl6Qe/a1bk+MMcZEzaqzjDHGRM2SiDHGmKhZEjHGGBM1SyLGGGOiZknEGGNM1CyJGGOMiZrdJ2IKNBHpC1yNcx/BR6o6wduIjDHB7EzEFGiqOkZVBwL3AzfnxTZF5HBebCeb7ZcRkWkiEiciCdmMGzErm21UFpEHYhelt0Tk+YzxQ0SkpIj8LCL2o7YQsiRiCounccYvKQzuAf6nqtl2NqmqHbOZXRnIsyTidrVSIP/f3aEEJpNHPxJM/iqQHypT/IhIORHZJiJ/dZ+3FZEU91f9q8APqrowxHpDROTBoOfBv3DHiMgCEVkuIoNCrHvaWYKIPCoiz7uPbxeReW4MH7iDcGXE+b2ILBaRZSIS6ovvNuCboOdxIjLUjWOCiJRxt3U4m20OARq4+3/NXe7P7vxlbvcgGXE/I84IkzNEZHjQ609wyz8FlgF1Qh0Td7lVIvKJiKwRkc9F5AoRmSkia0WkXS6XC3fs/uKuNwNonOWYjXGPmylsVNUmmwrEhNNf0EagLLAUSMIZ9W4B8D5wf4h1WgHTgp6vAOq4j6u6f8vgfIlWc58fdv8mAMuC1n0UZ1yYJsC3QAm3/F/Ane7j3wJDg9aplCWeksCOoOcJQDqQ5D7/Erg9SxxnbDNEbBe7x6QcUB5Y7r72tkAKToefFYC1wKNB+w4A7YO2c8YxCYoxEeeH5QKczjIFZyCtMVleS9jlwh27oPjL4rRvrcuI010uDtjt9WfQptxPVgdpCgxV3SMiR4GPgM9UNQXnC/KdbNZZJCLnisj5QHVgn6pmDPz0BxG5zn1cB2dY2ki61e6O86U33+0ArwynuvRfCrzhnh19p6rTs6x7DrA/S9lG97WA88WbkGX+GdsUkSpZlukMjFbVIwAi8j+gC86X+Teqehw4LiLfZllvszqjKGYIdUx2uDEudbe9HJisqioiS7PEm9Ny4Y5dVTf+o+66p/X4rKp+ETkpIhVU9RCm0LAkYgqaJcB55G7M7a+AG9z1RgKIyGXAFUAHVT0qIlNxfq0HS+f0Kt2M+QIMU9Uns+5IVdeISGuc3nhfFpHJqvpi0CLHQuznRNBjP84Xa7bbBD7N7gXnwpGMBzkck+AYA0HPA5z+PZHTciGPXXD1WzZKAccjWM4UINYmYgoMEakOXA58raqBXKw6Emc8kxtwEgo4VUL73C/Li4D2IdbbCZwrItVEpBTQxy2fDNwgIue6cVUVkXru4/OBo6r6X+A1oHXwBtUZGztOnEHJIhJmm4dwqqcyTAf6ikhZESmHM9zwdGAm8BsRKS3OwF99CC+SY3K2wh27n934y4hIBeA3wSuJM2zyr6pabMZaLyrsTMQUJB8BPwEtc7OSOuOYVAC26alBnn4E7heRlcBqYE6I9dLEGf9kHs4Ig6vc8hUi8jQwQZwrmtJwxkLZjNMe8JqIBNzy34UIaQJO9dOkCF/CGdt0q/Zmug3/P6jqYyLyiRsrwL9VdRFkVg0twUmKS4EDYfaT4zE5W+GOnarOEZGRwGKc6q35WVa9HPg+r+MxsWfjiZgCQUTuA7rhNG7/oKrNPQ4pam7V1J9U9Y582l95VT0sImVxfvEP0hBXshVkbhvPYC0EI/mZ09mZiPGciDQE/oRTV79PRLaLyARV7eF1bNFQ1YUiMkVE4jSHe0XyyIci0hSnfWNYIUwgJXGuALMEUgjZmYgxxpioWcO6McaYqFkSMcYYEzVLIsYYY6JmScQYY0zULIkYY4yJmiURY4wxUbMkYowxJmqWRIwxxkTNkogxxpio/T/nC4lDF00l2gAAAABJRU5ErkJggg==\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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//pXAL766iuuvPJKUlJSWLRoEUlJSTnuPzU1lZkzZ/Laa68xcOBA3nrrLebPn88rr7zCoEGDAHjggQf485//zJIlS6hZs2bYba1Zs4b77ruPZcuWUblyZb799ttT5u/evZtRo0axbNkyFi9ezBNPPEHHjh25+uqrefnll0lJSaFBgwbcfvvtvPTSSyxevJjExESeffZZAO68807ef/99UlJSiIuLO2XbCxYsYOTIkUydOpXSpUszatQoFixYwOTJk3nwwQfJuNth7dq1PPjgg6xcuZKVK1fy1VdfMX36dF555RX++c9/5vyG5SBm50CqOh1nkJpQuoVYXoH7wmzrE+CTEOXJQOhKSWPyW9ox+OHvsOgraNSTxMV/5OCRspAKJejLH+N+5f740fBFH7hlJDS41OuIPdGiRQs2btzIsGHD6NWr1ynzxo8fz5gxY3jllVcA54qyzZs3c+6553L//fdnfpmuXr0agLZt23LXXXeRlpZGnz59IkoiN9xwA3FxcRw6dIiZM2dyww03ZM47ftwZGn3GjBmZCeG2227j0UcfDbmt+vXrZ+7zwgsvZOPGjafMr1SpEqVLl6Z///707t07ZNvP/v372bdvH127dgXgjjvu4IYbbmDfvn0cPHiQDh06APCnP/2JH374IXO9K664gqpVqwLOpbmPP/44v/76Kz6fj61bt7Jjx47MGBMTEwFo1qwZ3bp1Q0RITEw8Ld5o2B3rxuSFQACG3+wkkK6Doe9XHKRs5uw04hnuv4yex4ewIr0mBz+/mR6PvethwN66+uqreeihh06pygLny/Dbb78lJSWFlJQUNm/eTJMmTXj99depUaMGixYtIjk5mRMnTgBw8cUX8+uvv1KrVi369evH559/Dpx6hVHWy1XLlSsHQCAQoHLlypn7SklJYcWKFZnLRXKVUqlSpTIfx8XFkZ5+6qi48fHxzJ07l+uvv54ffviBHj16RHJ4IpLxOgC+/PJLdu3axfz580lJSaFGjRqZrzs4Rp/Pl/nc5/OdFm80LIkYkxfmvAfrfoFer8Clj4Ev9L/WQcpy54lHOEQZPi35b9hfPK8Fueuuu3j66aczfyFnuPLKK3nrrbcyq2IWLlwIOL/Wa9asic/n44svvsDv9wOwadMmatSowYABA7j77rtZsGABADVq1GDFihUEAgFGjQo9zHvFihWpX78+33zz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PJknnngCX5gRILO6+OKL6devH4899hjp6el8//333HPPqWOw/Pbbb1StWpVbb72VypUr89FHHwGnjiKYk82bNzNr1iw6dOjAV199RefOnQFnpMSdO3eye/duypcvnznUbXbb7tKlC/369WPw4MGoKqNGjeKLL4pe/2hetYl0AXao6pqgsvoislBEpopIxnloLSA1aJlUtwyghqpucx9vB2qE25mIDBSRZBFJ3rVrVx69BFNsrBkP6cegWZ9826WfOEb7OzlnIkf25Nt+80P//v257LLLMoeKjUTr1q256aabaNmyJT179qRt27anLbNkyRLatWtHUlISzz77bObYG9WqVaNTp040b948s/E7nMaNG/P222/TpEkT9u7dy5///GcASpQowVNPPUW7du244oorMkcOzG7brVu3pl+/frRr146LLrqIu+++m1atWkX8mguLmI5s6J6J/JDRJhJU/i6wVlVfdZ+XAsqr6m63DWQ00AxoBAxR1cvd5boAj6pqbxHZp6qVg7a5V1Wr5BSTjWxocu2bfrBxOjy4CnxxQG7HDYlOU9nI2FKPO+O2txtwxtsrCCMbvv/++/zyyy+88sor9OzZk6VLl3oajwktNyMb5vt4IiISD1wHXJhRpqrHgePu4/kisg4ngWwFagetXtstA9ghIjVVdZtb7bUzP+I3xUzaUVg9HlrcSMLj+ds54nKtx8pAHS5YPCJPkojX1qxZw+uvv86sWbOoUqUKNWvWpHv37naHeiHnRXXW5cBKVc2sphKR6iIS5z4+D6cBfb1bXXVARNq77Si3A9+5q40B7nAf3xFUbkzeWTsJ0g5D09OvBoo9YbS/E6TOg70bPdh/3mrYsCErV66kShWnwmDChAmWQIqAmCURERkGzAIai0iqiPR3Z/UFsvbpcDGwWERSgJHAvaqaURE8CPgIWAusw2lUBxgCXCEia3ASk3cthaboWv4dlKkCCeEvF42lsYGLAHj+lZeL3d3rpnCI5dVZN4cp7xei7FucS35DLZ8MnNahjaruBrqdWZTGZCP9OKz+GZpcDXElPAlhs9ZgRaAO3eOS+djfy5MYjMmO3bFuTDjrp8LxAx5VZZ00PtCWtrKKs9jvaRzGhGJJxJhwln8HpSrCeZd4GsbP/rb4RLk8bv4ZbyuWV2OaoiG3nxFLIsaEEvA7Nxg26gHxpXJePoZWaF02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\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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\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: 743.369 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.5" } }, "nbformat": 4, "nbformat_minor": 4 }