{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Modeling of the thickness of the sensor\n", "\n", "In this notebook we will re-use the experiment done at ID28 and previously calibrated and model the detector in 3D.\n", "\n", "This detector is a Pilatus 1M with a 450µm thick silicon sensor. Let's first have a look at the absorption coefficients of this sensor material: \n", "\n", "Reference absorption coefficients are available from:\n", "https://physics.nist.gov/PhysRefData/XrayMassCoef/ElemTab/z14.html\n", "\n", "First we retrieve the results of the previous step, then calculate the absorption efficiency:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:10.236942Z", "iopub.status.busy": "2026-09-15T09:45:10.236800Z", "iopub.status.idle": "2026-09-15T09:45:10.581072Z", "shell.execute_reply": "2026-09-15T09:45:10.580605Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "# use `widget` instead of `inline` for better user-experience. `inline` allows to store plots into notebooks." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:10.582951Z", "iopub.status.busy": "2026-09-15T09:45:10.582825Z", "iopub.status.idle": "2026-09-15T09:45:11.904501Z", "shell.execute_reply": "2026-09-15T09:45:11.903573Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using pyFAI vesrion: 2026.9.0 on a AMD Ryzen Threadripper PRO 3975WX 32-Cores with 64 threads\n", "wavelength: 6.968e-11m,\t dist: 2.845e-01m,\t poni1: 8.865e-02m,\t poni2: 1.779e+01m,\t energy: 17.793keV\n" ] } ], "source": [ "import time\n", "import os\n", "from matplotlib.pyplot import subplots\n", "import numpy\n", "from scipy.sparse import save_npz\n", "import pyFAI\n", "import pyFAI.units\n", "import pyFAI.detectors\n", "from pyFAI.detectors.sensors import Si_MATERIAL\n", "import json\n", "from scipy.sparse import csr_matrix\n", "try:\n", " import cpuinfo\n", "except ImportError:\n", " cpu = \"\"\n", "else:\n", " cpu = cpuinfo.cpuinfo.get_cpu_info().get(\"brand_raw\")\n", "\n", "start_time = time.perf_counter()\n", "print(f\"Using pyFAI vesrion: {pyFAI.version} on a {cpu} with {os.cpu_count()} threads\")\n", "with open(\"id28.json\") as f:\n", " calib = json.load(f)\n", "\n", "thickness = 450e-6\n", "wavelength = calib[\"wavelength\"]\n", "dist = calib[\"param\"][calib[\"param_names\"].index(\"dist\")]\n", "poni1 = calib[\"param\"][calib[\"param_names\"].index(\"poni1\")]\n", "poni2 = calib[\"param\"][calib[\"param_names\"].index(\"poni2\")]\n", "energy = pyFAI.units.hc / (wavelength * 1e10)\n", "print(f\"wavelength: {wavelength:.3e}m,\\t \"\n", " f\"dist: {dist:.3e}m,\\t \"\n", " f\"poni1: {poni1:.3e}m,\\t \"\n", " f\"poni2: {energy:.3e}m,\\t \"\n", " f\"energy: {energy:.3f}keV\")\n", "mask = numpy.load(\"mask.npy\").astype(numpy.int8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Absorption coefficient at 17.8 keV" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:11.952875Z", "iopub.status.busy": "2026-09-15T09:45:11.952471Z", "iopub.status.idle": "2026-09-15T09:45:11.955839Z", "shell.execute_reply": "2026-09-15T09:45:11.955120Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "µ = 16.4 cm^-1 hence absorption efficiency for 450µm: 52.3 %\n" ] } ], "source": [ "print(\n", " f\"µ = {Si_MATERIAL.mu(energy, unit='cm'):.1f} cm^-1 \"\n", " f\"hence absorption efficiency for 450µm: {100 * Si_MATERIAL.absorbance(energy, thickness):.1f} %\"\n", ")\n", "mu = Si_MATERIAL.mu(energy, unit=\"m\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:11.957179Z", "iopub.status.busy": "2026-09-15T09:45:11.957088Z", "iopub.status.idle": "2026-09-15T09:45:12.116460Z", "shell.execute_reply": "2026-09-15T09:45:12.115738Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pyFAI.detectors.sensors import Si_MATERIAL\n", "\n", "depth = numpy.linspace(0, 1000, 100)\n", "res = [1 - Si_MATERIAL.absorbance(energy, d, \"µm\") for d in depth]\n", "fig, ax = subplots()\n", "ax.plot(depth, res, \"-\")\n", "ax.set_xlabel(\"Depth (µm)\")\n", "ax.set_ylabel(\"Residual signal\")\n", "ax.set_title(f\"Silicon @ {energy:.1} keV\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is consistent with:\n", "[henke.lbl.gov](http://henke.lbl.gov/optical_constants/filter2.html) or \n", "[web-docs.gsi.de](https://web-docs.gsi.de/~stoe_exp/web_programs/x_ray_absorption/index.php)\n", "\n", "Now we can model the detector\n", "\n", "## Modeling of the detector:\n", "\n", "The detector is represented as a 2D array of voxels. Let vox, voy, and voz denote the dimensions of the detector along the three axes.\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:12.118311Z", "iopub.status.busy": "2026-09-15T09:45:12.118212Z", "iopub.status.idle": "2026-09-15T09:45:12.121661Z", "shell.execute_reply": "2026-09-15T09:45:12.120999Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Detector Pilatus 1M\t PixelSize= 172µm, 172µm\t BottomRight (3)\n", "Voxel size: (x:0.000172, y:0.000172, z:0.00045)\n" ] } ], "source": [ "detector = pyFAI.detector_factory(calib[\"detector\"])\n", "print(detector)\n", "\n", "vox = detector.pixel2 # this is not a typo\n", "voy = detector.pixel1 # x <--> axis 2\n", "voz = thickness\n", "\n", "print(f\"Voxel size: (x:{vox}, y:{voy}, z:{voz})\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The intensity grabbed in this voxel is the triple integral of the absorbed signal coming from this pixel or from the neighboring ones.\n", "\n", "There are 3 ways to perform this integral:\n", "* Volumetric analytic integral. Looks feasible with a change of variable in the depth\n", "* Slice per slice, the remaining intensity depend on the incidence angle + pixel splitting between neighboring pixels\n", "* raytracing: the decay can be solved analytically for each ray, one has to throw many ray to average out the signal.\n", "\n", "For sake of simplicity, this integral will be calculated numerically using this raytracing algorithm.\n", "http://www.cse.yorku.ca/~amana/research/grid.pdf\n", "\n", "Knowing the input position for a X-ray on the detector and its propagation vector, this algorithm allows us to calculate the length of the path in all voxel it crosses in a fairly efficient way.\n", "\n", "To speed up the calculation, we will use a few tricks:\n", "* One ray never crosses more than 16 pixels, which is reasonable considering the incidence angle \n", "* we use numba to speed-up the calculation of loops in Python\n", "* We will allocate the needed memory by chunks of 1 million elements" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:12.123516Z", "iopub.status.busy": "2026-09-15T09:45:12.123425Z", "iopub.status.idle": "2026-09-15T09:45:13.047157Z", "shell.execute_reply": "2026-09-15T09:45:13.045982Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: numba in /users/kieffer/.venv/py313/lib/python3.13/site-packages (0.65.0)\r\n", "Requirement already satisfied: cython in /users/kieffer/.venv/py313/lib/python3.13/site-packages (3.3.0)\r\n", "Requirement already satisfied: llvmlite<0.48,>=0.47.0dev0 in /users/kieffer/.venv/py313/lib/python3.13/site-packages (from numba) (0.47.0)\r\n", "Requirement already satisfied: numpy>=1.22 in /users/kieffer/.venv/py313/lib/python3.13/site-packages (from numba) (2.4.6)\r\n" ] } ], "source": [ "! pip install numba cython" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Raytracing using numba" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:13.049487Z", "iopub.status.busy": "2026-09-15T09:45:13.049296Z", "iopub.status.idle": "2026-09-15T09:45:13.052911Z", "shell.execute_reply": "2026-09-15T09:45:13.052170Z" } }, "outputs": [], "source": [ "BLOCK_SIZE = 1 << 20 # 1 million\n", "BUFFER_SIZE = 16\n", "BIG = numpy.finfo(numpy.float32).max" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we are able to perform raytracing for any ray entering the detector, we can calculate the contribution to the neighboring pixels, using the absorption law (the length traveled is already known). \n", "To average-out the signal, we will sample a few dozens of rays per pixel to get an approximation of the volume integral. \n", "\n", "Now we need to store the results so that this transformation can be represented as a sparse matrix multiplication:\n", "\n", "b = M.a\n", "\n", "Where b is the recorded image (blurred) and a is the \"perfect\" signal. \n", "M being the sparse matrix where every pixel of a gives a limited number of contribution to b.\n", "\n", "Each pixel in *b* is represented by one line in *M* and we store the indices of *a* of interest with the coefficients of the matrix.\n", "So if a pixel i,j contributes to (i,j), (i+1,j), (i+1,j+1), there are only 3 elements in the line. \n", "This is advantageous for storage.\n", "\n", "We will use the CSR sparse matrix representation:\n", "https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_.28CSR.2C_CRS_or_Yale_format.29\n", "where there are 3 arrays:\n", "* data: containing the actual non zero values\n", "* indices: for a given line, it contains the column number of the associated data (at the same index)\n", "* idptr: this array contains the index of the start of every line." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:13.054755Z", "iopub.status.busy": "2026-09-15T09:45:13.054600Z", "iopub.status.idle": "2026-09-15T09:45:13.255588Z", "shell.execute_reply": "2026-09-15T09:45:13.254785Z" } }, "outputs": [], "source": [ "from numba.experimental import jitclass\n", "from numba import int8, int32, int64, float32, float64\n", "\n", "spec = [\n", " (\"vox\", float64),\n", " (\"voy\", float64),\n", " (\"voz\", float64),\n", " (\"mu\", float64),\n", " (\"dist\", float64),\n", " (\"poni1\", float64),\n", " (\"poni2\", float64),\n", " (\"width\", int64),\n", " (\"height\", int64),\n", " (\"mask\", int8[:, :]),\n", " (\"sampled\", int64),\n", " (\"data\", float32[:]),\n", " (\"indices\", int32[:]),\n", " (\"idptr\", int32[:]),\n", "]\n", "\n", "\n", "@jitclass(spec)\n", "class ThickDetector(object):\n", " \"Calculate the point spread function as function of the geometry of the experiment\"\n", "\n", " def __init__(self, vox, voy, thickness, mask, mu, dist, poni1, poni2):\n", " \"\"\"Constructor of the class:\n", "\n", " :param vox, voy: detector pixel size in the plane\n", " :param thickness: thickness of the sensor in meters\n", " :param mask:\n", " :param mu: absorption coefficient of the sensor material\n", " :param dist: sample detector distance as defined in the geometry-file\n", " :param poni1, poni2: coordinates of the PONI as defined in the geometry\n", " \"\"\"\n", " self.vox = vox\n", " self.voy = voy\n", " self.voz = thickness\n", " self.mu = mu\n", " self.dist = dist\n", " self.poni1 = poni1\n", " self.poni2 = poni2\n", " self.width = mask.shape[-1]\n", " self.height = mask.shape[0]\n", " self.mask = mask\n", " self.sampled = 0\n", " self.data = numpy.zeros(BLOCK_SIZE, dtype=numpy.float32)\n", " self.indices = numpy.zeros(BLOCK_SIZE, dtype=numpy.int32)\n", " self.idptr = numpy.zeros(self.width * self.height + 1, dtype=numpy.int32)\n", "\n", " def calc_one_ray(self, entx, enty):\n", " \"\"\"For a ray entering at position (entx, enty), with a propagation vector (kx, ky,kz),\n", " calculate the length spent in every voxel where energy is deposited from a bunch of photons entering the detector\n", " at a given position and and how much energy they deposit in each voxel.\n", "\n", " Direct implementation of http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.3443&rep=rep1&type=pdf\n", "\n", " :param entx, enty: coordinate of the entry point in meter (2 components, x,y)\n", " :return: coordinates voxels in x, y and length crossed when leaving the associated voxel\n", " \"\"\"\n", " array_x = numpy.empty(BUFFER_SIZE, dtype=numpy.int32)\n", " array_x[:] = -1\n", " array_y = numpy.empty(BUFFER_SIZE, dtype=numpy.int32)\n", " array_y[:] = -1\n", " array_len = numpy.empty(BUFFER_SIZE, dtype=numpy.float32)\n", "\n", " # normalize the input propagation vector\n", " kx = entx - self.poni2\n", " ky = enty - self.poni1\n", " kz = self.dist\n", " n = numpy.sqrt(kx * kx + ky * ky + kz * kz)\n", " kx /= n\n", " ky /= n\n", " kz /= n\n", "\n", " step_X = -1 if kx < 0.0 else 1\n", " step_Y = -1 if ky < 0.0 else 1\n", "\n", " X = int(entx / self.vox)\n", " Y = int(enty / self.voy)\n", "\n", " if kx > 0.0:\n", " t_max_x = ((entx // self.vox + 1) * (self.vox) - entx) / kx\n", " elif kx < 0.0:\n", " t_max_x = ((entx // self.vox) * (self.vox) - entx) / kx\n", " else:\n", " t_max_x = BIG\n", "\n", " if ky > 0.0:\n", " t_max_y = ((enty // self.voy + 1) * (self.voy) - enty) / ky\n", " elif ky < 0.0:\n", " t_max_y = ((enty // self.voy) * (self.voy) - enty) / ky\n", " else:\n", " t_max_y = BIG\n", "\n", " # Only one case for z as the ray is travelling in one direction only\n", " t_max_z = self.voz / kz\n", "\n", " t_delta_x = abs(self.vox / kx) if kx != 0 else BIG\n", " t_delta_y = abs(self.voy / ky) if ky != 0 else BIG\n", " self.voz / kz\n", "\n", " finished = False\n", " last_id = 0\n", " array_x[last_id] = X\n", " array_y[last_id] = Y\n", "\n", " while not finished:\n", " if t_max_x < t_max_y:\n", " if t_max_x < t_max_z:\n", " array_len[last_id] = t_max_x\n", " last_id += 1\n", " X += step_X\n", " array_x[last_id] = X\n", " array_y[last_id] = Y\n", " t_max_x += t_delta_x\n", " else:\n", " array_len[last_id] = t_max_z\n", " last_id += 1\n", " finished = True\n", " else:\n", " if t_max_y < t_max_z:\n", " array_len[last_id] = t_max_y\n", " last_id += 1\n", " Y += step_Y\n", " array_x[last_id] = X\n", " array_y[last_id] = Y\n", " t_max_y += t_delta_y\n", " else:\n", " array_len[last_id] = t_max_z\n", " last_id += 1\n", " finished = True\n", " if last_id >= array_len.size - 1:\n", " print(\"resize arrays\")\n", " old_size = len(array_len)\n", " new_size = (old_size // BUFFER_SIZE + 1) * BUFFER_SIZE\n", " new_array_x = numpy.empty(new_size, dtype=numpy.int32)\n", " new_array_x[:] = -1\n", " new_array_y = numpy.empty(new_size, dtype=numpy.int32)\n", " new_array_y[:] = -1\n", " new_array_len = numpy.empty(new_size, dtype=numpy.float32)\n", " new_array_x[:old_size] = array_x\n", " new_array_y[:old_size] = array_y\n", " new_array_len[:old_size] = array_len\n", " array_x = new_array_x\n", " array_y = new_array_y\n", " array_len = new_array_len\n", " return array_x[:last_id], array_y[:last_id], array_len[:last_id]\n", "\n", " def one_pixel(self, row, col, sample):\n", " \"\"\"calculate the contribution of one pixel to the sparse matrix and populate it.\n", "\n", " :param row: row index of the pixel of interest\n", " :param col: column index of the pixel of interest\n", " :param sample: Oversampling rate, 10 will cast 10x10 ray per pixel\n", "\n", " :return: the extra number of pixel allocated\n", " \"\"\"\n", " if self.mask[row, col]:\n", " return (\n", " numpy.empty(0, dtype=numpy.int32),\n", " numpy.empty(0, dtype=numpy.float32),\n", " )\n", "\n", " tmp_size = 0\n", " last_buffer_size = BUFFER_SIZE\n", " tmp_idx = numpy.empty(last_buffer_size, dtype=numpy.int32)\n", " tmp_idx[:] = -1\n", " tmp_coef = numpy.zeros(last_buffer_size, dtype=numpy.float32)\n", "\n", " pos = row * self.width + col\n", " self.idptr[pos]\n", " for i in range(sample):\n", " posx = (col + 1.0 * i / sample) * vox\n", " for j in range(sample):\n", " posy = (row + 1.0 * j / sample) * voy\n", " array_x, array_y, array_len = self.calc_one_ray(posx, posy)\n", "\n", " rem = 1.0\n", " for i in range(array_x.size):\n", " x = array_x[i]\n", " y = array_y[i]\n", " l = array_len[i]\n", " if (x < 0) or (y < 0) or (y >= self.height) or (x >= self.width):\n", " break\n", " elif self.mask[y, x]:\n", " continue\n", " idx = x + y * self.width\n", " dos = numpy.exp(-self.mu * l)\n", " value = rem - dos\n", " rem = dos\n", " for j in range(last_buffer_size):\n", " if tmp_size >= last_buffer_size:\n", " # Increase buffer size\n", " new_buffer_size = last_buffer_size + BUFFER_SIZE\n", " new_idx = numpy.empty(new_buffer_size, dtype=numpy.int32)\n", " new_coef = numpy.zeros(new_buffer_size, dtype=numpy.float32)\n", " new_idx[:last_buffer_size] = tmp_idx\n", " new_idx[last_buffer_size:] = -1\n", " new_coef[:last_buffer_size] = tmp_coef\n", " last_buffer_size = new_buffer_size\n", " tmp_idx = new_idx\n", " tmp_coef = new_coef\n", "\n", " if tmp_idx[j] == idx:\n", " tmp_coef[j] += value\n", " break\n", " elif tmp_idx[j] < 0:\n", " tmp_idx[j] = idx\n", " tmp_coef[j] = value\n", " tmp_size += 1\n", " break\n", " return tmp_idx[:tmp_size], tmp_coef[:tmp_size]\n", "\n", " def calc_csr(self, sample):\n", " \"\"\"Calculate the CSR matrix for the whole image\n", " :param sample: Oversampling factor\n", " :return: CSR matrix\n", " \"\"\"\n", " size = self.width * self.height\n", " allocated_size = BLOCK_SIZE\n", " idptr = numpy.zeros(size + 1, dtype=numpy.int32)\n", " indices = numpy.zeros(allocated_size, dtype=numpy.int32)\n", " data = numpy.zeros(allocated_size, dtype=numpy.float32)\n", " self.sampled = sample * sample\n", " pos = 0\n", " start = 0\n", " for row in range(self.height):\n", " for col in range(self.width):\n", " line_idx, line_coef = self.one_pixel(row, col, sample)\n", " line_size = line_idx.size\n", " if line_size == 0:\n", " pos += 1\n", " idptr[pos] = start\n", " continue\n", "\n", " stop = start + line_size\n", "\n", " if stop >= allocated_size:\n", " new_buffer_size = allocated_size + BLOCK_SIZE\n", " new_idx = numpy.zeros(new_buffer_size, dtype=numpy.int32)\n", " new_coef = numpy.zeros(new_buffer_size, dtype=numpy.float32)\n", " new_idx[:allocated_size] = indices\n", " new_coef[:allocated_size] = data\n", " allocated_size = new_buffer_size\n", " indices = new_idx\n", " data = new_coef\n", "\n", " indices[start:stop] = line_idx\n", " data[start:stop] = line_coef\n", " pos += 1\n", " idptr[pos] = stop\n", " start = stop\n", "\n", " last = idptr[-1]\n", " self.data = data\n", " self.indices = indices\n", " self.idptr = idptr\n", " return (self.data[:last] / self.sampled, indices[:last], idptr)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:13.257334Z", "iopub.status.busy": "2026-09-15T09:45:13.257227Z", "iopub.status.idle": "2026-09-15T09:45:18.849798Z", "shell.execute_reply": "2026-09-15T09:45:18.849117Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 4.06 s, sys: 453 ms, total: 4.51 s\n", "Wall time: 4.52 s\n" ] }, { "data": { "text/plain": [ "(array([0., 0., 0., ..., 0., 0., 0.], shape=(1902583,), dtype=float32),\n", " array([ 2, 2, 4, ..., 1023180, 1023181, 1023182],\n", " shape=(1902583,), dtype=int32),\n", " array([ 0, 0, 0, ..., 1902581, 1902582, 1902583],\n", " shape=(1023184,), dtype=int32))" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbthick = ThickDetector(\n", " vox, voy, thickness=thickness, mu=mu, dist=dist, poni1=poni1, poni2=poni2, mask=mask\n", ")\n", "%time nbthick.calc_csr(1)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:18.851837Z", "iopub.status.busy": "2026-09-15T09:45:18.851735Z", "iopub.status.idle": "2026-09-15T09:45:22.519516Z", "shell.execute_reply": "2026-09-15T09:45:22.518722Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.66 s, sys: 20.5 ms, total: 3.69 s\n", "Wall time: 3.66 s\n" ] }, { "data": { "text/plain": [ "(array([0.17449115, 0.10933631, 0.17465518, ..., 0.24611568, 0.03161056,\n", " 0.24604346], shape=(3410359,), dtype=float32),\n", " array([ 2, 2, 3, ..., 1023181, 1023182, 1023182],\n", " shape=(3410359,), dtype=int32),\n", " array([ 0, 0, 0, ..., 3410356, 3410358, 3410359],\n", " shape=(1023184,), dtype=int32))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%time nbthick.calc_csr(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Same implementation using Cython\n", "\n", "Cython is an ahead of time compiler for Python code. Thus it requires a compiler (gcc, msvc, ...) to be installed on your computer and available. This is usually already the case under Linux but requires some work under Windows or macOS." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:22.521514Z", "iopub.status.busy": "2026-09-15T09:45:22.521413Z", "iopub.status.idle": "2026-09-15T09:45:23.015316Z", "shell.execute_reply": "2026-09-15T09:45:23.014534Z" } }, "outputs": [], "source": [ "%load_ext Cython" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:23.017112Z", "iopub.status.busy": "2026-09-15T09:45:23.017010Z", "iopub.status.idle": "2026-09-15T09:45:28.444587Z", "shell.execute_reply": "2026-09-15T09:45:28.443832Z" } }, "outputs": [], "source": [ "%%cython --compile-args=-fopenmp --link-args=-fopenmp \n", "#cython: embedsignature=True, language_level=3, binding=True\n", "#cython: boundscheck=False, wraparound=False, cdivision=True, initializedcheck=False,\n", "## This is for developping:\n", "## cython: profile=True, warn.undeclared=True, warn.unused=True, warn.unused_result=False, warn.unused_arg=True\n", "##\n", "\n", "import cython\n", "import numpy\n", "from libc.math cimport sqrt, exp\n", "from cython.parallel import prange\n", "from libc.stdint cimport int8_t, uint8_t, int16_t, uint16_t, \\\n", " int32_t, uint32_t, int64_t, uint64_t\n", "\n", "ctypedef double float64_t\n", "ctypedef float float32_t\n", "\n", "cdef int32_t BUFFER_SIZE = 16\n", "cdef float64_t BIG = numpy.finfo(numpy.float32).max\n", "\n", "\n", "cdef class CythonThickDetector:\n", " \"Calculate the point spread function as function of the geometry of the experiment\"\n", " cdef:\n", " public float64_t vox\n", " public float64_t voy\n", " public float64_t voz\n", " public float64_t mu\n", " public float64_t dist\n", " public float64_t poni1\n", " public float64_t poni2\n", " public int oversampling\n", " public int buffer_size\n", " public int width\n", " public int height\n", " public int size\n", " public int8_t[:, ::1] mask\n", " \n", " def __init__(self, \n", " float64_t vox, \n", " float64_t voy, \n", " float64_t thickness, \n", " mask, \n", " float64_t mu, \n", " float64_t dist, \n", " float64_t poni1, \n", " float64_t poni2,\n", " int buffer_size=BUFFER_SIZE):\n", " \"\"\"Constructor of the class:\n", " \n", " :param vox, voy: detector pixel size in the plane\n", " :param thickness: thickness of the sensor in meters\n", " :param mask: \n", " :param mu: absorption coefficient of the sensor material\n", " :param dist: sample detector distance as defined in the geometry-file\n", " :param poni1, poni2: coordinates of the PONI as defined in the geometry \n", " \"\"\"\n", " self.vox = float(vox)\n", " self.voy = float(voy)\n", " self.voz = float(thickness)\n", " self.mu = float(mu)\n", " self.dist = float(dist)\n", " self.poni1 = float(poni1)\n", " self.poni2 = float(poni2)\n", " self.width = int(mask.shape[1])\n", " self.height = int(mask.shape[0])\n", " self.size = self.width*self.height\n", " self.mask = numpy.ascontiguousarray(mask, numpy.int8)\n", " self.oversampling = 1\n", " self.buffer_size = int(buffer_size)\n", " \n", " def calc_one_ray(self, entx, enty):\n", " \"\"\"For a ray entering at position (entx, enty), with a propagation vector (kx, ky,kz),\n", " calculate the length spent in every voxel where energy is deposited from a bunch of photons entering the detector \n", " at a given position and and how much energy they deposit in each voxel. \n", "\n", " Direct implementation of http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.3443&rep=rep1&type=pdf\n", "\n", " :param entx, enty: coordinate of the entry point in meter (2 components, x,y)\n", " :return: coordinates voxels in x, y and length crossed when leaving the associated voxel\n", " \"\"\"\n", " \n", " cdef:\n", " int last_id\n", " float64_t _entx = float(entx)\n", " float64_t _enty = float(enty)\n", " int32_t[::1] array_x = numpy.empty(self.buffer_size, dtype=numpy.int32)\n", " int32_t[::1] array_y = numpy.empty(self.buffer_size, dtype=numpy.int32)\n", " float32_t[::1] array_len = numpy.empty(self.buffer_size, dtype=numpy.float32)\n", " with nogil: \n", " last_id = self._calc_one_ray(_entx, _enty, \n", " array_x, array_y, array_len)\n", " if last_id>self.buffer_size:\n", " raise RuntimeError(f\"Temporary buffer size ({last_id}) larger than expected ({self.buffer_size})\")\n", " return (numpy.asarray(array_x[:last_id]), \n", " numpy.asarray(array_y[:last_id]), \n", " numpy.asarray(array_len[:last_id]))\n", " \n", " cdef int _calc_one_ray(self, \n", " float64_t entx, \n", " float64_t enty,\n", " int32_t[::1] array_x,\n", " int32_t[::1] array_y,\n", " float32_t[::1] array_len\n", " )noexcept nogil:\n", " \"\"\"Return number of entries in the array_x[:last_id], array_y[:last_id], array_len[:last_id]\"\"\"\n", " cdef:\n", " float64_t kx, ky, kz, n, t_max_x, t_max_y, t_max_z, t_delta_x, t_delta_y#, t_delta_z\n", " int step_X, step_Y, X, Y, last_id\n", " bint finished\n", "\n", " # reset arrays\n", " array_x[:] = -1\n", " array_y[:] = -1\n", " array_len[:] = 0.0\n", "\n", " # normalize the input propagation vector\n", " kx = entx - self.poni2\n", " ky = enty - self.poni1\n", " kz = self.dist\n", " n = sqrt(kx*kx + ky*ky + kz*kz)\n", " kx /= n\n", " ky /= n\n", " kz /= n\n", "\n", " step_X = -1 if kx<0.0 else 1\n", " step_Y = -1 if ky<0.0 else 1\n", "\n", " X = int(entx/self.vox)\n", " Y = int(enty/self.voy)\n", "\n", " if kx>0.0:\n", " t_max_x = ((entx//self.vox+1)*(self.vox)-entx)/ kx\n", " elif kx<0.0:\n", " t_max_x = ((entx//self.vox)*(self.vox)-entx)/ kx\n", " else:\n", " t_max_x = BIG\n", "\n", " if ky>0.0:\n", " t_max_y = ((enty//self.voy+1)*(self.voy)-enty)/ ky\n", " elif ky<0.0:\n", " t_max_y = ((enty//self.voy)*(self.voy)-enty)/ ky\n", " else:\n", " t_max_y = BIG\n", "\n", " #Only one case for z as the ray is travelling in one direction only\n", " t_max_z = self.voz / kz\n", "\n", " t_delta_x = abs(self.vox/kx) if kx!=0 else BIG\n", " t_delta_y = abs(self.voy/ky) if ky!=0 else BIG\n", " # t_delta_z = self.voz/kz\n", "\n", " finished = False\n", " last_id = 0\n", " array_x[last_id] = X\n", " array_y[last_id] = Y\n", "\n", " while not finished:\n", " if t_max_x < t_max_y:\n", " if t_max_x < t_max_z:\n", " array_len[last_id] = t_max_x\n", " last_id = last_id + 1\n", " X = X + step_X\n", " array_x[last_id] = X\n", " array_y[last_id] = Y\n", " t_max_x = t_max_x + t_delta_x\n", " else:\n", " array_len[last_id] = t_max_z\n", " last_id = last_id + 1\n", " finished = True\n", " else:\n", " if t_max_y < t_max_z:\n", " array_len[last_id] = t_max_y\n", " last_id = last_id +1\n", " Y = Y + step_Y\n", " array_x[last_id] = X\n", " array_y[last_id] = Y \n", " t_max_y = t_max_y + t_delta_y\n", " else:\n", " array_len[last_id] = t_max_z\n", " last_id = last_id +1\n", " finished = True\n", " if last_id>=self.buffer_size:\n", " return self.buffer_size\n", " return last_id\n", "\n", "\n", " def one_pixel(self, row, col, sample=0):\n", " \"\"\"calculate the contribution of one pixel to the sparse matrix and populate it.\n", "\n", " :param row: row index of the pixel of interest\n", " :param col: column index of the pixel of interest\n", " :param sample: Oversampling rate, 10 will cast 10x10 ray per pixel\n", " \"\"\"\n", " cdef:\n", " int entries = 0\n", " int _row = int(row)\n", " int _col = int(col) \n", " int32_t[::1] tmp_idx = numpy.empty(self.buffer_size, dtype=numpy.int32)\n", " float32_t[::1] tmp_coef = numpy.empty(self.buffer_size, dtype=numpy.float32)\n", " int32_t[::1] array_x = numpy.empty(self.buffer_size, dtype=numpy.int32)\n", " int32_t[::1] array_y = numpy.empty(self.buffer_size, dtype=numpy.int32)\n", " float32_t[::1] array_len = numpy.empty(self.buffer_size, dtype=numpy.float32)\n", "\n", " if sample:\n", " self.oversampling = sample\n", " with nogil:\n", " entries = self._one_pixel(_row, _col, tmp_idx, tmp_coef, array_x, array_y, array_len)\n", " if entries=self.height) or (x>=self.width):\n", " break\n", " elif (self.mask[y, x]):\n", " continue\n", " idx = x + y*self.width\n", " dos = exp(-self.mu*l)\n", " value = rem - dos\n", " rem = dos\n", " for j in range(self.buffer_size): \n", " if tmp_idx[j] == idx:\n", " tmp_coef[j] = tmp_coef[j] + value\n", " break\n", " elif tmp_idx[j] < 0:\n", " tmp_idx[j] = idx\n", " tmp_coef[j] = value\n", " tmp_size = tmp_size + 1\n", " break\n", " if tmp_size >= self.buffer_size:\n", " break\n", " return tmp_size\n", "\n", " def calc_csr(self, sample=0, int threads=0):\n", " \"\"\"Calculate the content of the sparse matrix for the whole image\n", " :param sample: Oversampling factor\n", " :param threads: number of threads to be used\n", " :return: spase matrix?\n", " \"\"\"\n", " cdef:\n", " int pos, i, current, next, size\n", " int32_t[::1] sizes, indptr = numpy.zeros(self.size+1, dtype=numpy.int32)\n", " int32_t[:, ::1] indices\n", " float32_t[:, ::1] data\n", " int32_t[::1] csr_indices\n", " float32_t[::1] csr_data\n", " int32_t[:, ::1] array_x\n", " int32_t[:, ::1] array_y\n", " float32_t[:, ::1] array_len\n", "\n", " if sample:\n", " self.oversampling = sample\n", " self.oversampling = sample\n", " data = numpy.zeros((self.size, self.buffer_size), dtype=numpy.float32)\n", " indices = numpy.zeros((self.size, self.buffer_size),dtype=numpy.int32)\n", " sizes = numpy.zeros(self.size, dtype=numpy.int32)\n", "\n", " #single threaded version:\n", " array_x = numpy.empty((self.size, self.buffer_size), dtype=numpy.int32)\n", " array_y = numpy.empty((self.size, self.buffer_size), dtype=numpy.int32)\n", " array_len = numpy.empty((self.size, self.buffer_size), dtype=numpy.float32)\n", "\n", " for pos in prange(self.size, num_threads=threads, nogil=True):\n", " size = sizes[pos] = self._one_pixel(pos//self.width, pos%self.width, \n", " indices[pos], data[pos], \n", " array_x[pos], array_y[pos], array_len[pos])\n", " size = numpy.sum(sizes)\n", " csr_indices = numpy.empty(size, numpy.int32)\n", " csr_data = numpy.empty(size, numpy.float32)\n", " current = 0\n", " for i in range(self.size):\n", " size = sizes[i]\n", " next = current + size\n", " indptr[i+1] = next\n", " csr_indices[current:next] = indices[i,:size]\n", " csr_data[current:next] = data[i,:size]\n", " current = next\n", " return (numpy.asarray(csr_data)/(self.oversampling*self.oversampling), \n", " numpy.asarray(csr_indices), \n", " numpy.asarray(indptr))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:28.446916Z", "iopub.status.busy": "2026-09-15T09:45:28.446660Z", "iopub.status.idle": "2026-09-15T09:45:29.482326Z", "shell.execute_reply": "2026-09-15T09:45:29.481577Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Performance of Cython implementation:\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 988 ms, sys: 44 ms, total: 1.03 s\n", "Wall time: 1.03 s\n" ] }, { "data": { "text/plain": [ "(array([0.17449115, 0.10933631, 0.17465518, ..., 0.35667214, 0.05905784,\n", " 0.35653958], shape=(3328700,), dtype=float32),\n", " array([ 2, 2, 3, ..., 1023181, 1023182, 1023182],\n", " shape=(3328700,), dtype=int32),\n", " array([ 0, 0, 0, ..., 3328697, 3328699, 3328700],\n", " shape=(1023184,), dtype=int32))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cythick = CythonThickDetector(\n", " 172e-6,\n", " 172e-6,\n", " thickness=thickness,\n", " mu=mu,\n", " dist=dist,\n", " poni1=poni1,\n", " poni2=poni2,\n", " mask=mask,\n", ")\n", "print(\"Performance of Cython implementation:\")\n", "%time cythick.calc_csr(4, threads=1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:29.483727Z", "iopub.status.busy": "2026-09-15T09:45:29.483635Z", "iopub.status.idle": "2026-09-15T09:45:33.169532Z", "shell.execute_reply": "2026-09-15T09:45:33.168699Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Performance of Numba implementation:\n", "CPU times: user 3.67 s, sys: 31.9 ms, total: 3.7 s\n", "Wall time: 3.68 s\n" ] }, { "data": { "text/plain": [ "(array([0.17449115, 0.10933631, 0.17465518, ..., 0.24611568, 0.03161056,\n", " 0.24604346], shape=(3410359,), dtype=float32),\n", " array([ 2, 2, 3, ..., 1023181, 1023182, 1023182],\n", " shape=(3410359,), dtype=int32),\n", " array([ 0, 0, 0, ..., 3410356, 3410358, 3410359],\n", " shape=(1023184,), dtype=int32))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Comparison with Numba, Cython is usually slightly faster\n", "print(\"Performance of Numba implementation:\")\n", "%time nbthick.calc_csr(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Validation of the CSR matrix obtained:\n", "\n", "For this we will build a simple 2D image with one pixel in a regular grid and calculate the effect of the transformation calculated previously on it. " ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:33.171303Z", "iopub.status.busy": "2026-09-15T09:45:33.171202Z", "iopub.status.idle": "2026-09-15T09:45:33.597052Z", "shell.execute_reply": "2026-09-15T09:45:33.596304Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 8.89 s, sys: 122 ms, total: 9.01 s\n", "Wall time: 422 ms\n" ] } ], "source": [ "%time csr = csr_matrix(cythick.calc_csr(10))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:33.598951Z", "iopub.status.busy": "2026-09-15T09:45:33.598854Z", "iopub.status.idle": "2026-09-15T09:45:33.917238Z", "shell.execute_reply": "2026-09-15T09:45:33.916601Z" } }, "outputs": [ { "data": { "image/png": "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yScRERERyYbJJxERERHJhsknEREREcmGyScRERERyYbJJxERERHJhsknEREREcmGyScRERERyYbJJxERERHJhsknEREREcmGyScRERERyYbJJxERERHJhsknEREREcmGyScRERERyYbJJxERERHJhsknEREREcnGtKwD0JX9D69ovY2ezt5ab6Mi0HYsOY7/w7HUHV38jFPRrs+vovU23Ddo197iXqLWMRgCnYzlH0ZatbeIStA6BkPAsdSd6/McyjoEAFz5JCIiIiIZMfkkIiIiItlofdg9Pz8f+/btQ0hICAYMGIBGjRqp1cnKysI///yD+/fvo27duujbty9MTEy07ZqIqMI4f/48Dh06hFatWqFbt25qnwshsH//fly9ehVOTk4YMGAAbGxsyiBSIiLtaLXyefDgQdStWxc//PADPv30U1y5ckWtTlJSElq1aoXFixfj3r17mDVrFrp27QqlUqlN10REFcKtW7fQokULTJ48GYGBgdi7d69anfz8fAwaNAjjxo1DVFQUAgMD0aRJEzx8+LAMIiYi0o5WK58ODg44dOgQ3N3dYWSk+WTegIAApKSkICwsDJUqVUJcXBwaNGiAn376CdOnT9emeyKics/MzAy//vormjdvDm9vb411/vzzT+zZswfXr1+Hh4cHlEolfH19MW/ePPz222+yxktEpC2tVj6bN28Od3f3Iuts2bIFQ4cORaVKlQAATk5O6Nu3L7Zs2aJN10REFYK7uzuaN29eZJ0tW7agc+fO8PDwAAAoFAqMGTMG27ZtgxBCjjCJiHRGrxccZWdn4+7du6hXr55Keb169XDjxo1C2ymVSqSkpKi8iIheVzdu3NA4j6ampiI2NlZjG86jRGSo9Jp8pqenQwgBOzs7lXJ7e3ukpaUV2i4gIAB2dnbSy9XVVZ9hEhEZtLS0NI3zaMFnmnAeJSJDpdfk08rKCgDU/uJOTk6GtbV1oe38/f2RnJwsvWJiYvQZJhGRQbO2ttY4jxZ8pgnnUSIyVHp9wpFCoYCbmxsiIyNVym/fvo369esX2U6hUOgzNCKicqN+/foa51Fra2vUrFlTYxvOo0RkqPR+k/lBgwZh8+bNyMjIAAA8efIEO3fuxKBBg/TdNRFRhTBo0CAcOXIE9+/fBwDk5OQgODgYAwYMgLExnxVCROWLViuf9+7dw/r166X3O3bswL1799CsWTP07t0bADB//nzs2bMH7dq1Q9euXbF7927Ur18fH374oXaRExFVAJmZmfjuu+8AAI8fP8bZs2exZMkSODs747333gMAjBw5En/88Qc6deqEQYMG4dy5c3jy5AkCAgLKMnQiolLRKvnMy8tDVlYWgOdJJvD8aUY5OTlSnSpVquDSpUv466+/EB0djUWLFmHw4MEwMzPTpmsiogpBCCHNo+PGjQPwfB598UEcJiYm2LVrF3bs2IGrV6/inXfewZAhQ6SLjoiIyhOtks86depgyZIlr6xnZWWFsWPHatMVEVGFZGVlVax51NjYGAMHDsTAgQNliIqISH94shARERERyYbJJxERERHJRq+3WpJTT2fvsg6hwuBY6g7HUne0HcuD+bqJoyKrfM5c623kWufpIJLyTydjacmxBIAqZ3UwllYcSwCock7L623e0UkYXPkkIiIiIvkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZmJZ1AEREZBicDsWVdQgVBsdSd6of5ljqiqGMJVc+iYiIiEg2TD6JiIiISDayHHbPzc1FSEgI4uPj4ezsjGbNmsHIyEiOromIKozw8HBER0ejcuXKaNGiBRQKRVmHRERUYnpPPq9du4bevXvDxMQEDRo0QGhoKGxtbbF//364uLjou3sionLv2bNn6NWrF6KiotCyZUvcuXMHSUlJ2Lp1K9q2bVvW4RERlYjeD7vPmzcPzs7OuHXrFnbt2oXbt28jNzcXS5Ys0XfXREQVQlBQEKKioqR59Nq1a/D19cXMmTPLOjQiohLTe/KZmZkJd3d3GBs/78rCwgIuLi7IysrSd9dERBVCZmYmHB0dYWdnBwAwMjKCp6cn51EiKpf0fth9yZIlGDp0KObPnw8vLy+cO3cOsbGx+Pnnnwtto1QqoVQqpfcpKSn6DpOIyGBNmzYNBw8exLhx49ClSxdERUVhy5YtWLt2baFtOI8SkaHSe/JZq1YttGzZEn/88QcaNGiAq1evomfPnqhevXqhbQICArB48WJ9h0ZEVC5UqVIFnTt3xubNm/Ho0SNERUXBy8sLderUKbQN51EiMlR6P+w+bNgwpKam4tatW9izZw9u3ryJK1euYNKkSYW28ff3R3JysvSKiYnRd5hERAZr7ty52LFjByIiIrBnzx5cv34djo6O6N27N4QQGttwHiUiQ6XX5DMvLw8nT57EW2+9BVPT54uslpaW6N+/Pw4fPlxoO4VCAVtbW5UXEdHr6ujRo+jVq5fKOZ9Dhw5FREQEHj9+rLEN51EiMlR6TT5NTEzg5OSEmzdvqpTfuHEDNWvW1GfXREQVhouLC27cuKFSduPGDZibm6Nq1aplFBURUeno/ZzP+fPnY8aMGRBCoEmTJjh79iw2bdqEP//8U99dExFVCHPmzEG3bt0wZswYdO/eHZGRkfj+++8xd+5c6agSEVF5ofdzPidPnowjR45ACIEDBw6gUqVKuHjxIgYPHqzvromIKoSOHTsiIiICtWrVwsGDB5GamoqtW7fygiIiKpdk+ZO5Xbt2aNeunRxdERFVSPXq1ePDOYioQtD7yicRERERUQEmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbWZPPBw8eIDY2Vs4uiYgqlCdPniAqKqqswyAiKjVZks9z586hcePGaNq0KTp37ozOnTvjwYMHcnRNRFQh3L9/H927d4eHhwd69+6Nhg0b4tKlS2UdFhFRiek9+bxz5w66d++O3r17Iz4+Hrdv38YXX3yBO3fu6LtrIqIKIT09Hd27d0elSpUQFxeH69evY+fOnZxHiahcMtV3B1988QVq1qyJL774AsbGz3Pdtm3b6rtbIqIKY82aNXjw4AHOnTsHa2trAICHhwc8PDzKODIiopLT+8rngQMH0LdvX+Tn5+PmzZt49uyZvrskIqpQDhw4gPbt26NKlSq4c+cO4uLiyjokIqJS0+vKpxACDx8+xLNnz1CvXj2YmJjg0aNHaNWqFdatW4eaNWtqbKdUKqFUKqX3KSkp+gyTiMigxcbGombNmvD19cXTp0+RlJSEGjVqYN26dWjRooXGNpxHichQ6XXl08jICCYmJvjrr7+w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LCzUTnG4fv268PDwELVr1xYNGzYUlStXlk6BKg0jIYQo3Zpp2UtJScGVK1fg5OSEevXqFVrv5s2biIuLg7u7u3Rz+Rc9ffoU169fR7Vq1VCnTh2Ympbbe++XWkJCAq5evYratWurHWIrEBISgry8POkpPJrk5eXh8uXLyMjIQPPmzVWeNPO6ePToEW7evIn69eujRo0aGuucOXMGlSpVUjt94UX3799HdHQ0atWqpXabm9fF/fv3ce/ePTRq1AgODg4a6zx9+hS3bt2CmZkZGjRogEqVKqnVycjIwKVLl2Bubo4WLVq8lj/jhVEqlQgJCYGlpSWaNGmicmeAFz148AC3b9+Gs7Mz6tWrJz0BrUBaWhrCw8NhbW2NevXqvRY3RH9Zeno6Ll++jCpVqsDLy0tjncjISERHR2s8hPyiiIgIxMfHo2HDhqhWrZo+wjVoSUlJCAsLQ82aNQt9wEZ4eDjS0tLQpk2bQrcTHx+PmzdvwsnJCR4eHqV+Ik959uTJE1y7dg0eHh5qd1IokJqaips3byI7Oxv16tXT+LCd3NxchISEQKlUokWLFtKDKEqjXCefRERERFS+lOsLjoiIiIiofGHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klERKRnoaGhmD59OmJjY8s6lBK7f/8+pk+fjvDwcJ1ud+/evVi0aBGmT5+O8+fPl7j92bNnMX36dDx9+lSncWnTT3n9d/7ss8+wbt062fpj8klERMWSnJyM6dOnS68ZM2Zg4cKF2LZtG5RKZam3O2fOHGzdulWHkRqe27dvIygoCE+ePNHL9i9duoTp06cjLi5O59t+9OgRgoKCcOfOHZ1t85NPPsHw4cORl5cHNzc32NjYaKxX1H5dvXoVQUFBSEpK0llcmpSkH33/O+vLmjVrsGfPHtn6Y/JJRETFkpqaiqCgIFy+fBlubm5wdXVFYmIixo4di8aNG5d6tWf58uU4evSojqM1LN7e3li6dClq1qypl+1fv34dQUFBel8F1JUffvgB48aNw+eff47p06fDy8tLY73ytl9UPKZlHQAREZUvzZo1w/Tp06X3Q4YMQadOnfDpp59izZo1ZReYAfP09FQZs9dZYmIiUlNTUaNGjbIOhcoIk08iItJKx44dYW9vj9OnT6t9lp6eju3bt+PatWswMTFBu3bt0LNnTxgZGSE9PR3z589HdnY2Tp06JSVn9evXxwcffAAAmDVrFjp16oQ333wTW7duRWhoKHr27IkuXboAeH4+3uHDh5GSkgI3NzcMHjwY1apVe2XMubm5mD17Nt5880106tQJGzduxO3bt+Hu7o6RI0eiUqVKGut26dIFmzdvxtWrV9G/f3+0bdsWAHDq1CkcPXoUaWlpqFOnDgYPHgwHBwdpG6GhoVi7di0+/vhjtdXPGzduYPfu3Xj8+DGqV6+OQYMGwd3dXS3mW7duYe/evXj06BFq166NAQMGoEaNGjh48CDWr18PAPjqq6+kft999100bdq0RP0IIbBjxw6cO3cOVapUwYgRI145li8raiz++ecf7Nq1CwCwc+dOxMbGwszMDN98843adoq7XwAQExODjRs3IikpCR06dECvXr00xlbcsS7MnTt38OeffyI9PR0dO3ZEz549X9lm37592LdvH7799luYmv4v7bp79y6CgoIwYcIEaeX37Nmz2LRpEz755BOkp6dj8+bNePToEb788ksEBwcjPj4e/v7+OHXqFA4dOoSqVatiypQpAJ6fFrN9+3bcvHkT5ubm6NSpE7p27aoWz9WrV/H3339DqVSie/fu6NSpU7H3X1d42J2IiLSWk5MDc3NzlbLz58/D09MTAQEBMDIyQlZWFsaMGYNevXohOzsbJiYmcHNzg5GRESpVqgQ3Nze4ubmhevXq0jaCgoJw6NAh9OvXDydPnoRSqURYWBiEEHj33XfRvn173L59G5aWlli7di3q1KmDffv2vTLe3NxcBAUF4ciRI+jVqxdCQ0NhbGyML7/8Eo0bN8a9e/cKrXvu3DlkZGQgIiICeXl5GDZsGLp27Yr79+/DwsICK1euhKenJ44dOyZto7BzAf39/dGoUSOcO3cOtra2OHv2LBo0aCAlXQXmzJmDN954A4cPH4a1tTWuXr2Kzp074+TJk7Czs4OjoyMAoGbNmtI4Wltbl6ifnJwc9O7dGyNHjkRycjJSUlLw1ltv4cqVK68cTwDFGovKlSvD1dVV+n83NzfUrl1b4/aKs1/A8+/ZqFGjkJGRgcePH6NPnz7w9/dX215xx7owJ06cwOjRo6FUKqV+Ro8eDSFEke3Onj2LoKAg5ObmqpTHxsYiKCgIUVFRUlnB+aU7d+7EyJEjkZKSgkuXLiE7Oxs7d+7E77//js8//xzffPMN8vPzce7cOQDAsWPHUKdOHQQFBcHU1BSpqakYPHgwhgwZgry8PGn7P//8M5o2bYrTp0/DzMwM3377Lb788sti7b9OCSIiomKIiYkRAMS0adNUyv/44w8BQMycOVMqS0lJEdWrVxedOnUSSqVSKo+KihKWlpZi0aJFUpm1tbX48MMPNfZpYmIi7OzsxKlTp6Sy5ORksXLlSgFArFu3TirPyckR3bt3F7a2tiIhIaHIfcnMzBQARJUqVcTly5el8vj4eFG9enXRo0cPtbqVK1cWISEhKnF8++23AoDYtm2bVJ6VlSXatWsnqlatKlJTU4UQQvz1118CgEpfv//+uwAgfv/9d5XYFi1aJBQKhbh//74QQojVq1cLAOLnn39WqZeWlibVCQ4OFgBEeHi42r4Wt5+vv/5aABCHDx9W2UcfHx8BQGzfvr3Q8RRCFHssHj16JACIb775psjtvWq/fv31VwFA9OrVS+U7NmvWLKFQKERcXFyJx0CTgn569OghsrKypPKNGzeqbVPTv/PChQsFAJGZmamy3ZMnTwoAYufOnWp9de/eXaqfkZEhcnJyRP/+/YWNjY345JNPpPrJyckiPj5e2NnZib59+4rc3Fzps/DwcGFqaioCAwOFEEJERkYKMzMzMWHCBJU4Zs2aJaysrMSwYcMKHQNdY/JJRETFUpB8ent7i2nTpomPPvpI9OnTR5iamorhw4eL9PR0qe6aNWsEAHHkyBG17YwcOVJ4enpK71+VfLZv316tvE2bNsLd3V3k5+erlB85ckQAEL/88osQQogff/xRTJs2TXqtXLlSCPG/hLJXr15q2/70008FABEbG6tS980331Sr27hxY9GwYUO18n/++UcAEBs3bhRCaE5KfH19Rb169dTaJicnCwDi22+/FUII0bx5c1GvXj21fX1RUUlacftp1KiR8PX1VasXFBRUrOSzuGOh6+Rzy5YtKuUnTpwQAMT+/fulsuKOgSYF/RTEXyA/P194eHiILl26SGW6Sj7Xr1+vFkf//v2FkZGRSExMVCn//vvvBQCVP4wK9OrVS/j4+AghhFiyZIkAIKKiolTqxMXFCQCyJp8855OIiErE1tYWbm5uyMnJQUJCAoyNjVGnTh1YWVlJdQruCfnXX39h9+7dEM8XOwA8P3fx7t27EELAyMjolf3Vr19frezWrVto1aqVWvuGDRtKnwPAli1bcPz4cenznj17YuLEidL7Bg0aqG37jTfeAPD8ULmzs/Mr4+jfv79a+ctxaBIeHo6aNWti9uzZACCNkRAC5ubm0uHYa9euoU+fPsUaK236uX37NoYNG6bWvmA8XkWbsdBGvXr1VN4XnLbx8OFDqay4Y1CUl78rRkZGaNCgAcLCwrTdBTWavmsAUK1aNVSuXFmlrOBnbd26ddiwYYPKz1pMTIx0F4rbt29DoVDAzc1NpX316tVRpUoVHe9B0UqVfEZGRuLKlSvw9fVFrVq1itUmLCwM9+/fR926dTX+sBMRUfnw8tXuvr6+mDZtGmrXro33338fAKREqVatWrCwsFBp//bbb+Ptt98udn/29vZqZSYmJirnshUoOK/OxMQEADBlyhQMGDBA+vzlX7xFbcPYWPWyCG3i0KTgXFcXFxe1z7766is0atRIiuPl8wVLoiT9FLUvr6LNWGjD0tJS5X3Bv9uLcRd3DIpS2L69/D15mZmZmVo8wPNblxVG03etsHIjIyMYGxvD1dVVLZb33ntPOhfb2NgY+fn5Gv/o0+b7VRolSj5DQkLg7++PO3fu4M6dOwgODsaoUaOKbJOdnY2hQ4fi5MmT8Pb2xoULFzBkyBCsWrWq1H/FERGR4Zg6dSqCg4MxZ84cDBkyBPb29vD29gYAtGnT5pVX05qYmLzyoo2XeXl5ITw8HHl5eSpJTcHFMQWrbW+99VaR29G0alVw8VFh9558OY7Q0FC1X+gvx6GJt7c3nj179spbMDVv3hyXL19Gbm6uytXSLyoYA03jWNx+GjZsWOh4FIc2Y1GYovarJIo7BkUJCwuDj4+P9D4vLw8RERFqV96/rODuBg8fPlRZpdXVE6O8vb2Rn5+Pbt26FRlLw4YNkZOTgxs3bqh8t+/du4eUlBSdxFJcJbraPSEhATNmzMDt27eL3SYwMBCnT59GaGgoDh8+jH///RcbN24s9tVlRERk2IyMjPB///d/ePbsGb7++msAz+/96enpiVmzZiEhIUGlfmJiIg4cOCC9d3Z2xqNHj0rU56RJk/Dw4UMEBgZKZampqVi8eDGcnJwwcODAYm3nxo0bOHTokPT+zp07WLVqldqtkoqKIzIyEr/88otUlpSUhCVLlqB27dqF3vIHAObOnYvr16/jq6++Uvvs/Pnz0qHg2bNn4/79+/jss89UkrDY2Fhcu3YNAKTTAzSNY3H7ef/99xEeHo4///xT+vzhw4fYsmVLkWNQQJuxKExR+1USxR2DomzYsAHPnj2T3i9btgyxsbEqp3Fo0qFDB5iYmGDDhg1S2YMHD3T2VK8xY8bA2dkZH330EZKTk1U+i4+Plx7gMHLkSFhbW2PBggXSKm5+fj6++OIL2Nra6iSW4irRymePHj1K3EFwcDCGDRsmLXU3bNgQfn5+CA4OxujRo0u8PSIiMjz/+c9/0LFjRwQFBeGjjz6Ck5MT9u/fj5EjR8LT0xNdu3aFg4MD7t69i9u3b2P+/PlS23fffRfz58/H8OHD4eTkpHKfz8IMGzYMERERmDt3Lnbt2gU3NzccO3YMubm52LFjR6GPa3zZu+++i6CgICxbtgzW1tbYu3cvPD09sWLFimK1HzduHK5fv44PP/wQW7ZsQc2aNXH48GGYmppix44dUCgUhbbt27cvVq9ejZkzZ2LDhg1o0aIFsrOzERERAUtLS2zcuBEA0L9/fyxbtgz//e9/sWPHDvj4+ODx48e4c+eOVKdNmzZo0KABJk6ciDfffBMKhUK6H2Zx+3n//fdx4cIFjBw5EuvWrYODgwMiIiIwa9asYp0moc1YFKao/SqJ4o5BUT788EN07doVTZs2RWxsLA4fPgx/f3/069evyHZ16tTBrFmz8Pnnn+Py5cuoVKkS7t+/j9mzZ2Po0KEl2g9N7OzscPDgQYwYMQKenp7o3Lkz7O3tcefOHdy9exdffPEFAKBGjRpYv349Ro0ahWbNmqFly5YIDQ3FlClTVP4YlIORKOVatpGR0SsPu+fm5sLCwgIrVqzAhAkTpPJFixZh5cqVhT6DVqlUqjwnOD8/H4mJiXBwcOCheiLSCyEEUlNT4ezs/MpzuF5XaWlpWLVqFZo1a6bxUPq1a9dw4MABdO7cWTrsDjw/ZevKlSvIy8tDnTp10KZNG7Xz9M6dO4crV64gKysLrq6uGDRoEIDnj2Fs1qwZOnTooDGmmJgYHD9+XLrJfNeuXdXOMdUkKysLlpaWWLhwIRYuXIhDhw4hMjIS7u7u6NGjh8qh/Ly8PPz4449o3bo1WrdurXF7d+/excmTJ6Ubq3fp0kXlvqdbtmzBkCFDcPnyZZWxAZ6P6/HjxxEdHY3KlSujUaNGGs9BTExMxNGjRxEfHw93d3d06tRJZRzT0tJw4MABxMbGIi8vD3369IGnp2eJ+wkJCcH58+dRpUoV9OrVC2lpadi0aRP69u2LOnXqvHJsXzUWGRkZ+OWXX9CxY0c0b978ldsrbL8iIiJw8OBBvPvuu7Czs5PqJycnY+3atejRo4faof7ijsGLXuxHCIHdu3cjPT0d7du3Vzs1IzIyErt27cLbb78t3aO0wPnz5xESEoJq1aqhd+/eSEhIwObNm9G/f3/pRveF7RPw/Kb8z549w5gxYzTGKYTA+fPncfXqVQDPn6rVpk0btfvvxsfHY//+/VAqlejcuTM8PT2xZs0a1KhRA35+fkWOhc6U9jJ5ACI4OLjIOs+ePRMAxObNm1XKf/jhB6FQKAptV3BbAr744osvuV8xMTGlnRapHCm4fdLChQtl6a/gnpDXr1+XpT8iQ6bXWy0VLLFnZGSolKelpRX5l6m/vz9mzpwpvU9OTkatWrUQExMj+3kJRPR6SElJgaurq8pjFYl0JSoqCqamptLTfYheZ3pNPi0tLeHk5ITo6GiV8ujoaHh4eBTaTqFQaDw3xNbWlsknEekVT+0hXYqMjERAQAA2b96MKVOmqD0akuh1pPMTm65du4Z//vlHeu/n54dt27YhPz8fwPPzbHbu3CnfeQVERAZMCIGDBw9i0KBBsLW1VbkQ50VZWVlYtGgRGjRoAGdnZ7z33ntqV5FT8ZmZmWHp0qV488039dqPhYUFWrZsib1792Lp0qV67YuovCjRymd8fDxOnDghvb9w4QIsLCzg7u6OFi1aAAA2b96MwMBAJCUlAQAWLFiAli1bYvDgwejVqxc2bdoEU1NTlcPqRESvq0OHDuHrr7/GxIkTcevWLZWLLQsIITBo0CDcu3cPq1atwhtvvIH9+/dj1apVmDNnThlEXf6ZmJhodc/H4nJxccGkSZP03g9ReVKiq93Dw8OxePFitfLu3btLP1ybN2/G7t278fvvv0ufx8TEYMWKFYiOjkbdunXx4Ycfql0FVpSUlBTY2dkhOTmZh92JSC8MYZ7x9vZG9+7d8e2336qU//XXXxg2bBiuXbvGJ8QRUblX6lstyckQfikQUcVmCPNMYcnniBEjEBUVhXPnzpVJXEREuqTXC46IiEh7kZGReOONNzBjxgxs2rQJ1tbW6Nq1K/7v//6v0KNIvF8yEclNFPN+yUw+iYgMXF5eHjZu3IiPP/4Yly5dQnx8PMaPH4+BAwfi1KlTGtsEBARoPE2KiEjfYmJipCdbasLkk4jIwDk5OSE+Ph4BAQEAnj/vOiAgAP/5z38QHR2NWrVqqbUp7H7JbVt+DFNTzY85VDqYaywvCev7aVq1N8rM1joGXchxLN7jOQvDsXxO23EEOJYFcqppfw9iYardUY9dO2cV+Xlx75fM5JOIyMC1bdsW165dUykzMzMD8HxVVJPC7pdsaqqAqanmh3zkmWn/S97UJEer9kYmhnFKgChkjIqLY/mctuMIcCwL6GIstU0+i3s+/KtO7eEDjImIDNz48eORlJSEpUuXIicnB3Fxcfjss8/g4+MjPROaiKi8YPJJRFSGEhISYGNjAxsbG4SHh+OHH36AjY0NOnbsKNVxcnLC/v37sWHDBlhZWaF+/fqoWrUq/v7777ILnIiolHjYnYioDDk4OCAuLk6t3MTEROV9q1atcPHiReTm5sLUlFM3EZVfnMGIiMqYjU3xL8pg4klE5R0PuxMRERGRbPgnNBHRayTf3AT5piYaP4tvrrm8JGqmWGnVXvGg7G9pAzwfJ21wLJ/TdhwBIL6Z9qlKzVQtxzLGEMZS+/XCp00032ZNblz5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZMPkkIiIiItkw+SQiIiIi2TD5JCIiIiLZmJZ1AEREJB/zxEyYmuRr/KxaiInW2zfOztN6G4bAPCFDq/Ycy+e0HUcAqHZZB2OprABj+VT7sXS8InQQifa48klEREREsmHySURERESyYfJJRFTG7t27h3nz5sHX1xdBQUFF1o2MjESrVq0wcOBAmaIjItItJp9ERGXo5MmT6Nq1K6ysrPDs2TPExMQUWjc7OxvDhw9HVlYWwsPDZYySiEh3eMEREVEZatGiBSIjI2FsbIwtW7YUWXfOnDlo0qQJnJ2dsWnTJpkiJCLSLa58EhGVISsrKxgbv3oq3r17N3bt2oUffvhBhqiIiPSHK59ERAbu4cOHGD9+PLZv3w4bG5titVEqlVAqldL7lJQUfYVHRFQiXPkkIjJg+fn5ePvttzFp0iS0bt262O0CAgJgZ2cnvVxdXfUYJRFR8TH5JCIyYNHR0Th27Bj+/vtv+Pj4wMfHB2vWrMGDBw/g4+OD48ePa2zn7++P5ORk6VXUhUxERHLiYXciIgPm7OyMCxcuqJT99NNPOHDgAFauXAlPT0+N7RQKBRQKhRwhEhGVCJNPIiIDZm5uDh8fH5WyGjVqQKFQqJUTEZUHTD6JiMpQcnIyunXrBgC4desW4uLicOzYMXh5eWHdunVlHB0Rke4x+SQiKkPW1tZYuXKlxvLCTJ48GcOHD9dnWEREesPkk4ioDJmampb48LmzszOcnZ31FBERkX7xanciIiIikg1XPomIXiNGmdkwMjHS+JnNtQSZozFcRpnZWrXnWD6n7TgCHMsCuhhLxW3DeNgEVz6JiIiISDalWvkMCwvD/fv3UbduXTRo0OCV9XNzcxESEoL4+Hg4OzujWbNmMDLS/Jc3EREREVVcJUo+s7OzMXToUJw8eRLe3t64cOEChgwZglWrVhWaTF67dg29e/eGiYkJGjRogNDQUNja2mL//v1wcXHRyU4QERERUflQosPugYGBOH36NEJDQ3H48GH8+++/2LhxI9avX19om3nz5sHZ2Rm3bt3Crl27cPv2beTm5mLJkiVaB09ERERE5UuJks/g4GAMGzZMWrFs2LAh/Pz8EBwcXGibzMxMuLu7w9j4eVcWFhZwcXFBVlaWFmETERERUXlU7MPuubm5uH79OqZOnapS3qRJE403SC6wZMkSDB06FPPnz4eXlxfOnTuH2NhY/Pzzz4W2USqVUCqV0vuUFMO4OouIiIiItFPs5DMtLQ15eXmoXLmySrmDgwOSkpIKbVerVi20bNkSf/zxBxo0aICrV6+iZ8+eqF69eqFtAgICsHjx4uKGRkRERETlRLEPuysUCgBARkaGSnlaWhosLCwKbTds2DCkpqbi1q1b2LNnD27evIkrV65g0qRJhbbx9/dHcnKy9IqJiSlumERERERkwIqdfFpaWsLJyQnR0dEq5dHR0fDw8NDYJi8vDydPnsRbb70FU1NTaTv9+/fH4cOHC+1LoVDA1tZW5UVERERE5V+JLjjy8/PDtm3bkJ+fDwDIysrCzp074efnJ9W5du0a/vnnHwCAiYkJnJyccPPmTZXt3LhxAzVr1tQ2diIiIiIqZ0p0n88FCxagZcuWGDx4MHr16oVNmzbB1NQUM2fOlOps3rwZgYGB0nmg8+fPx4wZMyCEQJMmTXD27Fls2rQJf/75p053hIiIiIgMX4lWPt3c3BASEoIGDRrg2LFj6NChAy5cuAAHBwepjpeXF/r37y+9nzx5Mo4cOQIhBA4cOIBKlSrh4sWLGDx4sO72goiIiIjKBSMhhCjrIF4lJSUFdnZ2SE5O5vmfRKQXFX2eKdi/bp7TYWqiKOtwiKgMGGVod4/1vdGBRX5e3Hm0RCufRERERETaYPJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsinRTeaJiEj3srKysHnzZhw6dAh+fn4YMWKEWp0zZ85g7969SEhIgJeXF9555x3Y2NiUQbRERNrhyicRURkKCQlBnTp1cODAARw9ehSXLl1Sq/Phhx/iv//9LxQKBRo1aoSNGzeiUaNGiI+PL4OIiYi0w5VPIqIy5OrqirCwMDg4OMDb21tjndmzZ8Pd3V16/+6778Ld3R0rV67EggULZIqUiEg3mHwSEZUhR0fHV9Z5MfEEAEtLS9SoUQNPnz7VV1hERHrDw+5EROXMmTNnEBoaih49ehRaR6lUIiUlReVFRGQImHwSEZUjMTExGDp0KIYNG4a+ffsWWi8gIAB2dnbSy9XVVcYoiYgKx+STiKicePjwIbp16wZvb2/8/vvvRdb19/dHcnKy9IqJiZEpSiKiovGcTyKicuDRo0fo0qULPD09sXXrVpibmxdZX6FQQKFQyBQdEVHxceWTiMjAxcXFSYnn9u3bmVQSUbnGlU8iojKUlpaGSZMmAQCio6OxZ88exMXFwcPDA5999hkA4J133sGtW7fQuHFjjBs3Tmrr4+OD6dOnl0XYRESlxuSTiKgMmZmZ4c033wQA6b8A4ODgIP3/jBkzMGrUKLW2vIiIiMojJp9ERGVIoVBoTCxf1LNnT5miISLSP57zSURERESy4conEdFrJMfRBsLUQuNnyqpFX0FfHNZ3U7Vqb5SZrXUMupBTrZJW7TmWz2k7jgDHskBOdVutt5FvZq99IDrAlU8iIiIikg2TTyIiIiKSDZNPIiIiIpINk08iIiIikg2TTyIiIiKSDZNPIiIiIpINk08iIiIikg2TTyIiIiKSDZNPIiIiIpINk08iIiIikg2TTyIiIiKSDZNPIiIiIpINk08iIiIikg2TTyIiIiKSDZNPIiIiIpINk08iIiIiko1pWQdARETyyTc3Qb6picbP4ptrLi+JmilWWrVXPMjWOgZdyDfXbiw4ls9pO44AEN9M+1SlZqqWYxljCGOp/Xrh0yYKHUSiPa58EhEREZFsmHwSERERkWx42J2IyACcP38ehw4dQqtWrdCtWze1z4UQ2L9/P65evQonJycMGDAANjY2ZRApEZF2uPJJRFSGbt26hRYtWmDy5MkIDAzE3r171erk5+dj0KBBGDduHKKiohAYGIgmTZrg4cOHZRAxEZF2mHwSEZUhMzMz/Prrr7h48SKcnZ011vnzzz+xZ88enDx5EitWrMDp06dRqVIlzJs3T+ZoiYi0x+STiKgMubu7o3nz5kXW2bJlCzp37gwPDw8AgEKhwJgxY7Bt2zYIIeQIk4hIZ5h8EhEZuBs3bqBevXoqZfXq1UNqaipiY2M1tlEqlUhJSVF5EREZglIln2FhYdi5cydu3LhR7DaZmZk4duwYjh8/jqysrNJ0S0T0WkpLS4OdnZ1Kmb29vfSZJgEBAbCzs5Nerq6u+g6TiKhYSpR8ZmdnY8CAAejSpQsCAwPh6+uLcePGvfKwz9atW+Hi4oLZs2fjyy+/hK+vL65fv65V4ERErwtra2u1lcvk5GTpM038/f2RnJwsvWJiYvQeJxFRcZToVkuBgYE4ffo0QkND4eLigoiICPj4+KBz584YPXq0xjaXLl3C8OHDsXz5ckyYMAEAcO/ePSQmJmofPRHRa6B+/fqIjIxUKbt9+zasra1Rs2ZNjW0UCgUUCsN4mgkR0YtKtPIZHByMYcOGwcXFBQDQsGFD+Pn5ITg4uNA2X331Fby9vaXEEwDc3NxeeYI9ERE9N2jQIBw5cgT3798HAOTk5CA4OBgDBgyAsTFP3Sei8qXYK5+5ubm4fv06pk6dqlLepEkTrFy5stB2x48fx4QJExAfH48LFy6gWrVqaNq0KczNzQtto1QqoVQqpfc8UZ6IKqrMzEx89913AIDHjx/j7NmzWLJkCZydnfHee+8BAEaOHIk//vgDnTp1wqBBg3Du3Dk8efIEAQEBZRk6EVGpFDv5TEtLQ15eHipXrqxS7uDggKSkJI1thBB48uQJwsPD0bJlS3h5eeHWrVswNjbG33//jYYNG2psFxAQgMWLFxd/L4iIyikhhHQR5rhx4wAAWVlZKn+Am5iYYNeuXdixYweuXr2Kd955B0OGDJEuOiIiKk+KnXwWnDuUkZGhUp6WlgYLCwuNbYyMjGBubo6zZ88iPDwcjo6OyM3NRe/evTFhwgScPn1aYzt/f3/MnDlTep+SksIrNYmoQrKyssKSJUteWc/Y2BgDBw7EwIEDZYiKiEh/ip18WlpawsnJCdHR0Srl0dHR0o2PNalTpw6aNGkCR0fH5x2ammLgwIGYNm0ahBAwMjJSa8MT5YmIiIgqphKdqe7n54dt27YhPz8fwPNDQzt37oSfn59U59q1a/jnn3+k93369MGtW7dUtnPr1i3UrFlTY+JJRERERBVXiW61tGDBArRs2RKDBw9Gr169sGnTJpiamqocIt+8eTMCAwOl80A//vhjbN68GcOGDUPv3r0RERGBFStWYM2aNTrdESIiejXzxEyYmuRr/KxaiInW2zfOztN6G4bAPCHj1ZWKwLF8TttxBIBql3Uxlpq/8+WJ+VPtx7JqqA4C0YESrXy6ubkhJCQEDRo0wLFjx9ChQwdcuHABDg4OUh0vLy/0799fel+1alVcvHgRjRo1woEDB5Cfn4/Tp09j5MiRutsLIiIiIioXSrTyCQCurq5F3t5j6NChGDp0qEqZg4MDPv3005JHR0REREQVCu9OTERERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyYfJJRERERLJh8klEREREsmHySURERESyMS3rAIiISD5GmdkwMjHS+JnNtQSZozFcRpnZWrXnWD6n7TgCHMsCuhhLi1spOohEe1z5JCIiIiLZMPkkIiIiItnwsDsRUTkRHh6O6OhoVK5cGS1atIBCoSjrkIiISozJJxGRgXv27Bl69eqFqKgotGzZEnfu3EFSUhK2bt2Ktm3blnV4REQlwuSTiMjABQUFISoqCrdu3YKdnR2EEBgwYABmzpyJ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zc3FoUOHYGtrW2R9hUIhJbtEREREVHGU6IIjPz8/bNu2Dfn5+QCArKws7Ny5E35+flKda9eu4Z9//pHep6Wl4c0330R2djYOHjwIe3t73UROREREROVOiW61tGDBArRs2RKDBw9Gr169sGnTJpiammLmzJlSnc2bNyMwMFA6D7Rv374ICwvD0qVLcfjwYamel5cXvLy8dLMXRERERFQulCj5dHNzQ0hICFasWIFjx46hQ4cO2LRpExwcHKQ6Xl5e6N+/v/S+Ro0a6NmzJ/bt26eyraFDhzL5JCIiInrNGImiHk9kIFJSUmBnZ4fk5ORXni9KRFQaFX2eKdi/bp7TYWrCc+qJXkdGGVlatd8bHVjk58WdR0t0zicRERERkTaYfBIRERGRbJh8EhEREZFsmHwSERERkWyYfBIRGbjU1FR8/fXX6NKlC5o0aYLhw4fj8uXLZR0WEVGpMPkkIjJwEydORGJiIhYuXIj169fD0dER7dq1Q2hoaFmHRkRUYiW6zycREclv3bp1MDX933T9448/4sCBA1i/fj2aNm1ahpEREZUcVz6JiAzci4lngby8PJiYmJRBNERE2uHKJxFRObNmzRrcu3cPQ4YMKbSOUqmEUqmU3qekpMgRGhHRK3Hlk4ioHDl27Bg+/PBDfPnll2jRokWh9QICAmBnZye9XF1dZYySiKhwTD6JiMqJU6dOoU+fPpg7dy5mz55dZF1/f38kJydLr5iYGJmiJCIqGg+7ExGVA6dPn4afnx9mzZqFhQsXvrK+QqGAQsFnuBOR4eHKJxGRgfv333/h5+eHmTNnYvHixWUdDhGRVph8EhEZuFmzZiEtLQ2///473NzcpNeECRPKOjQiohLjYXciIgO3detWlSvXC1hZWZVBNERE2mHySURk4GrUqFHWIRAR6QwPuxMRERGRbLjySUT0GslxtIEwtdD4WZaj9lfH20RpdzN7o8xsrWPQhZzqtlq1VzqYaR2D9d1UrdobwlhqO44Ax7KALsYy38xe+0B0gCufRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQbJp9EREREJBsmn0REREQkGyafRERERCQb07IOgIiI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dummy_image = numpy.ones(mask.shape, dtype=\"float32\")\n", "dummy_image[::5, ::5] = 10\n", "\n", "dummy_blurred = csr.T.dot(dummy_image.ravel()).reshape(mask.shape)\n", "fix, ax = subplots(2, 2, figsize=(8, 8))\n", "ax[0, 0].imshow(dummy_image)\n", "ax[0, 0].set_title(\"Original image\")\n", "ax[0, 1].imshow(dummy_blurred)\n", "ax[0, 1].set_title(\"Convolved image (i.e. blurred)\")\n", "ax[1, 1].imshow(csr.dot(dummy_blurred.ravel()).reshape(mask.shape))\n", "ax[1, 1].set_title(\"Retro-projected of the blurred\")\n", "ax[0, 0].set_xlim(964, 981)\n", "ax[0, 0].set_ylim(0, 16)\n", "ax[0, 1].set_xlim(964, 981)\n", "ax[0, 1].set_ylim(0, 16)\n", "ax[1, 1].set_xlim(964, 981)\n", "ax[1, 1].set_ylim(0, 16);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Least squares refinement of the pseudo-inverse" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:33.919128Z", "iopub.status.busy": "2026-09-15T09:45:33.919028Z", "iopub.status.idle": "2026-09-15T09:45:34.902575Z", "shell.execute_reply": "2026-09-15T09:45:34.901738Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/users/kieffer/.venv/py313/lib/python3.13/site-packages/scipy/sparse/linalg/_isolve/lsmr.py:415: RuntimeWarning: overflow encountered in cast\n", " condA = max(maxrbar, rhotemp) / min(minrbar, rhotemp)\n", "/users/kieffer/.venv/py313/lib/python3.13/site-packages/scipy/sparse/linalg/_isolve/lsmr.py:414: RuntimeWarning: overflow encountered in cast\n", " minrbar = min(minrbar, rhobarold)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 30.1 s, sys: 32.7 ms, total: 30.1 s\n", "Wall time: 615 ms\n" ] }, { "data": { "image/png": "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PHnyJCZNmgQTExOcO3cO3t7eqF27tta6Qgh4eHjg7Nmz6NWrF3r27ClLwERExdndu3cxduxYhIeHIyYmBiNHjoSzs3OO9adPn47ly5ejUqVK8PDweIuREhHJI197Ng0MDLBhwwb4+/u/se78+fNhYmKCTp06FTg4IqKSJiMjAzNmzEBwcDDs7e1zrXvgwAEcOHAAn3zyyVuKjohIfvlKNtu0aQMHB4c31vPz88PSpUuxZs2aAgdGRFQS1apVC126dIFKpcq13pMnTzB27Fhs3LgRpUuXfkvRERHJT/YLhJ4/fw53d3esXLkS1tbWeWqjVqsRHx+v8SAieldlZmbCw8MDkyZNQrNmzfLUhusoERVVsiebY8eOhYuLC3r16pXnNp6enjA3N5cebzq0RERUks2bNw8ZGRmYOnVqnttwHSWiokrWZNPX1xf//vsvqlatCi8vL3h5eeH+/fsIDQ2Fl5cXEhIStLabPn064uLipEdYWJicYRERFRtRUVH47rvv0KJFCyxduhReXl64cOEC4uLi4OXlhXv37mltx3WUiIoqWX9ByMrKCmPHjsX9+/elsqSkJOjr6yM4OBhpaWla2xkbG8PY2FjOUIiIiiUDAwOMGzcOL168QHBwMADg6dOnSEtLQ3BwMNq3b6+1HddRIiqqZE02GzduDC8vL42y+/fvo1SpUtnKiYgoOwsLi2zr5bfffovY2Fiuo0RULOUr2QwPD8fu3bul50eOHMHz58/RoEED3uKIiCgPUlJSsHr1agBATEwMgoKC4OXlhQoVKmDAgAGFHB0RkfzylWwmJSVJh3UmTJgAAAgODoaFhUWObVxcXGBoaKhDiEREJUdGRoa0jvbt2xfAy3U0OTk5xzatWrXiOkpExVa+ks06derk+zDOuHHj8lWfiKgkMzU1zfc66uLiAhcXF4UiIiJSluy3PiIiIiIiysJkk4iIiIgUI+vV6EREVHzY+EQUdgglRsWjnEu5cC7lU9G3aMwl92wSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFiCpRsRkRE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iOgdciRze67b4+PjYW5ujri4OJiZmb2lqPKmTZs2qFmzpsbFQJs3b4aHhweeP3+uNd6c1tEuNT6Dgb7xW4mbiEqWQ7d+yXV7XtdR2Q+jCyFgZGSkUWZkZJTrrY+MjY1hbMzFkIgIyH0dzWkt5TpKREWVrIfRVSoVXFxc8Oeff+L69esQQiAgIACrVq2Cq6urnEMREZVYH3zwAf7++2/4+vpCCIG7d+9i3rx5aN++PczNzQs7PCKifJF9z+by5csxdepUdOjQAXFxcbC0tIS7uzvmzZsn91BERCXS1KlTkZKSgmHDhiEyMhJlypRBz549sWDBgsIOjYgo32Q9Z/N16enpMDDIfz6bdQ4Az9kkooIqzudsvkrXdZTnbBJRQcl1zqaiv41ekAWSiIj+h+soERV3iiabRERERPRuY7JJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREilEk2UxNTcWiRYvQs2dP9OrVC97e3koMQ0RUom3duhV9+/ZF586d8csvvyAtLa2wQyIiyjfZk820tDR0794dK1aswJgxYzBt2jQcP34cO3bskHsoIqIS69NPP8Xnn38OFxcXzJ07F4mJifD09CzssIiI8s1A7g4XL16Mixcv4tatW6hUqRIAoEOHDlCr1XIPRURUIvn6+mLZsmU4deoU2rZtCwBwdnbmOkpExZLsezY3btyIPn36SIlmFmNjY7mHIiIqkTZu3IgGDRpIiWYWrqNEVBzJnmzeuHEDjRo1wuzZs9GuXTv069cPW7ZsybWNWq1GfHy8xoOI6F1148YNNGvWDCtWrECnTp3g4uKChQsXIjU1Ncc2XEeJqKiSNdkUQiA1NRXz5s1DSkoKfvzxR3Tt2hUff/wxfvrppxzbeXp6wtzcXHrY29vLGRYRUbGiVquxe/du+Pj4YNasWfDw8MCiRYswZMiQHNtwHSWiokolhBBydmhlZYUGDRrgxIkTUtmcOXOwcuVKPHnyRGsbtVqtcS5SfHw87O3t0RF9YKAylDM8InpHHMncnuv2+Ph4mJubIy4uDmZmZm8pqrzp2rUrLl++jMePH8PQ8OUauGvXLnz44YeIiIhAxYoVs7XJaR3tUuMzGOjz8DsR5d+hW7/kuj2v66jsFwg1b94c5ubmGmUVK1ZEXFwchBBQqVTZ2hgbG/NcJCKi/9e8eXOEhYVJiSYAKcF8/vy51mST6ygRFVWyn7M5btw4HD58GMHBwQCAuLg4rF+/Hl27dtWaaBIRkaZRo0bh/v37OHDgAAAgPT0dS5cuRbVq1VCrVq1Cjo6IKH9k37PZt29fTJ06FS1atICdnR3Cw8PRqlUrrFy5Uu6hiIhKpNq1a2Pjxo0YNmwYLCws8Pz5c9jY2GDXrl3Q0+MPvxFR8SJ7sgkAM2bMwKRJk/DgwQNUqlQJlpaWSgxDRFRi9e/fH3369MHt27dRvnx52NraFnZIREQFokiyCQBly5ZFw4YNleqeiKjEMzIyQoMGDQo7DCIinfB4DBEREREpRrE9m0o7/DhI5z562DbRuY+SQNe55Dz+D+dSPnK8xyl3N2da6NxH9U26tS91/5nOMRQFnEv53Jyh+6l31bfq1r7U3ac6x1AUyDGXcuCeTSIiIiJSDJNNIiIiIlIMk00iIiIiUgyTTSIiIiJSDJNNIiIiIlIMk00iIiIiUgyTTSIiIiJSDJNNIiIiIlIMk00iIiIiUgyTTSIiIiJSDJNNIiIiIlIMk00iIiIiUgyTTSIiIiJSDJNNIiIiIlIMk00iIiIiUgyTTSIiIiJSjEFhB1BQPWybFHYIJQbnUj6cS/noOpdHMuWJoyQrf95I5z7STTNkiKT4K39Ohrksw7kEgPLnDXXuI7005xIALM7pOJcjZAmDezaJiIiISDlMNomIiIhIMYomm4GBgfDw8MCiRYuUHIaIqMSKiYnB8OHD8dVXXxV2KEREBaJYspmYmIjBgwfj2LFjOHnypFLDEBGVWEIIDB8+HL6+vti9e3dhh0NEVCCKJZuffvopXF1d4ejoqNQQREQl2u+//460tDQMGzassEMhIiowRZJNb29vXL16FT/99JMS3RMRlXgXL17EggUL8Ndff0GlUhV2OEREBSb7rY9u376NKVOm4Pjx4zAyytutINRqNdRqtfQ8Pj5e7rCIiIqNhIQEDBo0CF5eXqhUqVKe2nAdJaKiStY9m6mpqRg0aBDmzJmD+vXr57mdp6cnzM3NpYe9vb2cYRERFSvjx49Hx44d4ebmluc2XEeJqKiSNdk8fPgwrl27Bj8/P3h4eMDDwwNBQUEICAiAh4cHYmJitLabPn064uLipEdYWJicYRERFRthYWHYtGkTYmJipHV0z549iIyMhIeHBy5evKi1HddRIiqqZD2M7ujoiDVr1miUXb9+HYaGhujZsydMTEy0tjM2NoaxsbGcoRARFUsWFhbw9vbWKEtMTER0dDR69uyJihUram3HdZSIiipZk007Ozt4eHholG3duhWlSpXKVk5ERNmZmppmWy+Dg4Nx7do1rqNEVCzxF4SIiIiISDGyX43+uq+++gr6+vpKD0NEVGL1798fTk5OhR0GEVGBKJ5sduzYUekhiIhKNAcHBzg4OBR2GEREBcLD6ERERESkGMX3bBIRUdFkcySisEMoMWx8OJdy4VzKp+LRojGX3LNJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIoxUKLTkJAQnDp1CmlpaXByckLz5s2VGIaIqMR68uQJfH198fTpU9SvXx9dunSBSqUq7LCIiPJN9j2bQ4cOhZubG/z9/REUFIQuXbpgzJgxcg9DRFRieXp6wtnZGQcPHsSdO3cwcuRItG/fHsnJyYUdGhFRvsm+Z3P48OHYsGGD9A18zJgxaNGiBQYPHowuXbrIPRwRUYnj7OyMKVOmwMjICAAwa9Ys1K5dG0uXLsWUKVMKOToiovyRfc9m165dNQ71NG/eHEZGRrh7967cQxERlUjt27eXEk0AsLa2Rs2aNbmOElGxpMg5m6/avXs3UlNT0bJlyxzrqNVqqNVq6Xl8fLzSYRERFRu3bt1CUFAQPvvssxzrcB0loqJK0avRQ0ND8fHHH2PcuHFo3LhxjvU8PT1hbm4uPezt7ZUMi4io2EhISED//v3RqlUrDB48OMd6XEeJqKhSLNl8+PAhunbtinbt2mHx4sW51p0+fTri4uKkR1hYmFJhEREVG0lJSXj//fehUqmwZ88eGBjkfDCK6ygRFVWKHEYPCwtDx44d0aRJ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SdDX10dwcDDS0tK0tjM2NoaxsbGcoRARFUsGBgYYN24cXrx4geDgYADA06dPkZaWhuDgYLRv315rO66jRFRUyZpsNm7cGF5eXhpl9+/fR6lSpbKVExFRdhYWFtnWy2+//RaxsbFcR4moWMpXshkeHo7du3dLz48cOYLnz5+jQYMGvMUREVEepKSkYPXq1QCAmJgYBAUFwcvLCxUqVMCAAQMKOToiIvnlK9lMSkqSDutMmDABABAcHAwLC4sc27i4uMDQ0FCHEImISo6MjAxpHe3bty+Al+tocnJyjm1atWrFdZSIiq18JZt16tTJ92GccePG5as+EVFJZmpqmu911MXFBS4uLgpFRESkLNlvfURERERElIXJJhEREREpRtar0YmIqGhRJadCpa/9pzHL3Hj6lqMpulTJqTq151y+pOs8ApzLLHLMpfHtovFLYtyzSURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREimGySURERESKYbJJRERERIphsklEREREiilQshkREQEfHx9ERERo3Z6eno5r164hMDAQSUlJOgVIRFQSJSYmwtfXF7dv39a6XQiB0NBQnD9/HrGxsW85OiIi+eQr2bx+/ToGDhyI5s2bo1u3bvDx8clW548//kC1atUwaNAgjBgxApUrV8bKlStlC5iIqDiLjIzEhAkTUKtWLbi6umLFihXZ6uzevRv169dHjx49MHHiRNjZ2eGrr74qhGiJiHSXr2Tz3r17cHNzw927d3Oso1arcenSJVy7dg2XL1/G4sWLMX78eAQFBekaKxFRsffkyRPUr18fISEhqFWrltY6UVFR2LNnD+7cuYPz58/j+PHj8PLywoYNG95ytEREustXsuni4oJBgwbByMgoxzrffPMNKlSoID338PCAgYEBzp8/X/AoiYhKiCZNmmDChAkwMzPLsc7HH3+M2rVrS8+dnJzQqFEj+Pv7v40QiYhkZaD0AJcuXUJqaqrGwvk6tVoNtVotPY+Pj1c6LCKiYiM2NhYhISEYMmRIjnW4jhJRUaXo1eiJiYkYOXIkOnXqhA4dOuRYz9PTE+bm5tLD3t5e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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.sparse import linalg\n", "blured = dummy_blurred.ravel()\n", "\n", "# Invert this matrix: see https://arxiv.org/abs/1006.0758\n", "\n", "%time res = linalg.lsmr(csr.T, blured)\n", "restored = res[0].reshape(mask.shape)\n", "\n", "fix, ax = subplots(2, 2, figsize=(8, 8))\n", "ax[0, 0].imshow(dummy_image)\n", "ax[0, 0].set_title(\"Original image\")\n", "ax[0, 1].imshow(dummy_blurred)\n", "ax[0, 1].set_title(\"Convolved image (i.e. blurred)\")\n", "ax[1, 1].imshow(csr.dot(dummy_blurred.ravel()).reshape(mask.shape))\n", "ax[1, 1].set_title(\"Retro-projected of the blurred\")\n", "ax[0, 0].set_xlim(964, 981)\n", "ax[0, 0].set_ylim(0, 16)\n", "ax[0, 1].set_xlim(964, 981)\n", "ax[0, 1].set_ylim(0, 16)\n", "ax[1, 1].set_xlim(964, 981)\n", "ax[1, 1].set_ylim(0, 16)\n", "ax[1, 0].imshow(restored)\n", "ax[1, 0].set_title(\"Restored LSMR\")\n", "ax[1, 0].set_xlim(964, 981)\n", "ax[1, 0].set_ylim(0, 16);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Pseudo inverse with positivity constrain and poissonian noise (MLEM)\n", "\n", "The MLEM algorithm was initially developed within the framework of reconstruction of\n", "images in emission tomography [Shepp and Vardi, 1982], [Vardi et al., 1985], [Lange and\n", "Carson, 1984]. Nowadays, this algorithm is employed in numerous tomographic reconstruction\n", "problems and often associated to regularization techniques. It is based on the iterative\n", "maximization of the log-likelihood function." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:34.904795Z", "iopub.status.busy": "2026-09-15T09:45:34.904685Z", "iopub.status.idle": "2026-09-15T09:45:37.524993Z", "shell.execute_reply": "2026-09-15T09:45:37.523899Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_304615/3638533218.py:4: RuntimeWarning: divide by zero encountered in divide\n", " norm = 1 / R.T.dot(numpy.ones_like(F))\n", "/tmp/ipykernel_304615/3638533218.py:5: RuntimeWarning: invalid value encountered in divide\n", " cor = R.T.dot(M / R.dot(F))\n", "/tmp/ipykernel_304615/3638533218.py:6: RuntimeWarning: invalid value encountered in multiply\n", " res = norm * F * cor\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0 1.7501588\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "100 0.0014371872\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "200 0.00016927719\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "228 9.930134e-05\n", "CPU times: user 2.61 s, sys: 3.81 ms, total: 2.62 s\n", "Wall time: 2.61 s\n" ] } ], "source": [ "def iterMLEM_scipy(F, M, R):\n", " \"Implement one step of MLEM\"\n", " # res = F * (R.T.dot(M))/R.dot(F)# / M.sum(axis=-1)\n", " norm = 1 / R.T.dot(numpy.ones_like(F))\n", " cor = R.T.dot(M / R.dot(F))\n", " res = norm * F * cor\n", " res[numpy.isnan(res)] = 1.0\n", " return res\n", "\n", "\n", "def deconv_MLEM(csr, data, thres=0.2, maxiter=1000):\n", " R = csr.T\n", " msk = data < 0\n", " img = data.astype(\"float32\")\n", " img[msk] = 0.0 # set masked values to 0, negative values could induce errors\n", " M = img.ravel()\n", " # F0 = numpy.random.random(data.size)#M#\n", " F0 = R.T.dot(M)\n", " F1 = iterMLEM_scipy(F0, M, R)\n", " delta = abs(F1 - F0).max()\n", " for i in range(maxiter):\n", " if delta < thres:\n", " break\n", " F2 = iterMLEM_scipy(F1, M, R)\n", " delta = abs(F1 - F2).max()\n", " if i % 100 == 0:\n", " print(i, delta)\n", " F1 = F2\n", " i += 1\n", " print(i, delta)\n", " return F2.reshape(img.shape)\n", "\n", "\n", "%time res = deconv_MLEM(csr, dummy_blurred, 1e-4)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:37.527409Z", "iopub.status.busy": "2026-09-15T09:45:37.527287Z", "iopub.status.idle": "2026-09-15T09:45:37.861968Z", "shell.execute_reply": "2026-09-15T09:45:37.861129Z" } }, "outputs": [ { "data": { "image/png": "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lClTYGpqinPnzmHDhg2oXbu21rpCCHh4eODs2bPo1asXevbsKUvARERF2f379zF27FiEhYUhOjoaI0eOhJOTU7b1Z82aheXLl6NSpUrw8PDIx0iJiOSh055NQ0NDeHt7w9/f/611f/rpJ5iamqJz5855Do6IqLhJT0/H7NmzERgYCHt7+xzrHjhwAAcOHMC4cePyKToiIvnplGy2bdsWDg4Ob63n5+eHpUuXYs2aNXkOjIioOKpVqxacnZ2hUqlyrPf06VOMHTsWGzduRKlSpfIpOiIi+cl+gtCLFy/g7u6OlStXwtraOldt1Go14uLiNB5ERO+qjIwMeHh4YMqUKWjWrFmu2nAeJaLCSvZkc+zYsXBxcUGvXr1y3cbT0xMWFhbS422HloiIirP58+cjPT0d06dPz3UbzqNEVFjJmmz6+vri33//RdWqVeHl5QUvLy88ePAAwcHB8PLyQnx8vNZ2s2bNQmxsrPQIDQ2VMywioiIjMjIS3377LVq2bImlS5fCy8sLFy9eRGxsLLy8vBASEqK1HedRIiqsZL2DUPny5TF27Fg8ePBAKktMTISBgQECAwORmpqqtZ2JiQlMTEzkDIWIqEgyNDTE+PHj8fLlSwQGBgIAnj17htTUVAQGBqJDhw5a23EeJaLCStZks3HjxvDy8tIoe/DgAUqWLJmlnIiIsrK0tMwyX3799deIiYnhPEpERZJOyWZYWBh2794tPT969ChevHiBBg0a8BJHRES5kJycjNWrVwMAoqOjERAQAC8vL9jY2GDAgAEFHB0Rkfx0SjYTExOlwzqTJk0CAAQGBsLS0jLbNi4uLjAyMtIjRCKi4iM9PV2aR/v27Qvg1TyalJSUbZvWrVtzHiWiIkunZLNOnTo6H8YZP368TvWJiIozMzMznedRFxcXuLi4KBQREZGyZL/0ERERERFRJiabRERERKQYWc9GJyKioqOiT3hBh1BsVDjGsZQLx1I+FXwLx1hyzyYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESkmT8lmeHg4fHx8EB4e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dSvmzJlTgJETEeWNTsnmhQsX0Lp1a7Ru3RqVK1fGzz//jNatW8PT01Oq06ZNG+zfvx9Hjx5F3759cfPmTRw7dgx16tSRPXgioqImNjZWmkdjY2Oxb98+tG7dGiNHjpTqVKxYESdPnkR0dDTc3NywefNmbN26Fa6urgUYORFR3uh0Nnq7du2kvZo56d69O7p3757noIiIiqty5crlah5t2LAh9uzZkw8REREpS/Y1m0REREREmZhsEhEREZFiZL2oe37qYdukoEMoNjiW8uFYykffsTya8fY677py54z13kaaWboMkRR9soylKccSACz9ZRjLUhxLALA8Z6TfBkbIEgb3bBIRERGRcphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWKYbBIRERGRYphsEhEREZFimGwSERERkWIMCzoAIiIqGBV9wgs6hGKDYymfCsc4lnIpLGPJPZtEREREpBgmm0RERESkGCabRERERKQY2ZPNlJQUzJkzB/Xr10f58uXRuHFj/PzzzxBCyN0VEVGxtXz5cjRr1gzW1taoXbs2PvvsM8THxxd0WEREOpP9BKGvvvoK3t7e2LZtGxo0aAB/f38MHjwYRkZG+Pzzz+Xujoio2Nm0aROmTp0Kb29vdO3aFcHBwXB3d8ezZ8/g7e1d0OEREelE9mTTz88Prq6u6NixIwDAxcUFHTp0gJ+fn9xdEREVS35+fmjcuDEGDRoEAChfvjwGDRqEbdu2FXBkRES6k/0wupubG44dO4a7d+8CAC5fvoxz587Bzc1N7q6IiIolV1dXBAUF4fTp0wCAR48eYe/evejXr18BR0ZEpDvZ92xOmzYNjx8/Ru3atWFoaIiMjAx4enrC3d092zZqtRpqtVp6HhcXJ3dYRERFRo8ePfD777/D2dkZQgikpaVh6NCh8PT0zLYN51EiKqxk37P57bff4u+//4aPjw8eP36MXbt2Yf78+Vi1alW2bTw9PWFhYSE97O3t5Q6LiKjI2LFjBz755BOsX78ejx8/xpkzZ+Dv748pU6Zk24bzKBEVVioh42niQgiUKVMG33//vcbJQNOnT8eOHTsQHBystZ22v8jt7e3RCX1gqDKSKzwieocczdie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I0eOoEyZMqhZs2YBRkZEpDud9mwGBQVh8eLF0nNvb2/4+/ujbdu2cHd3BwCMHz8ePj4+aNSoETp16oSbN28iNDQU+/btkzdyIqIiKDExETNmzAAAPH78GMeOHcPkyZNRtWpVfPnllwCA9u3b4/PPP0erVq3Qu3dvREVF4b///sO6deu07r0kIirMdEo2zczMULduXQDQSDorVaok/dvIyAh79uzB6dOnERQUhH79+qFTp04wMzOTKWQioqLLwMBAmkfnzp0rlb95W0NPT0+4u7vj/PnzKFeuHNavX48KFSrka6xERHLQKdm0s7PD5MmTc1W3ffv2aN++fZ6CIiIqrkqWLJnrebRRo0Zo1KiRwhERESmrcF1cjoiIiIiKFdnPRs8vh58E6L2NHrZN9N5GcaDvWHIc/4djKR85vuMEZBgbIMPQQOtrkU21l+uiclwpvdqbhBX8JWaAV+OkD47lK/qOIwBEOuqfmlSO13MsQwvDWOq/PzC6ceFY4809m0RERESkGCabRERERKQYJptEREREpBgmm0RERESkGCabRERERKQYJptEREREpBgmm0RERESkGCabRERERKQYJptEREREpBgmm0RERESkGCabRERERKQYJptEREREpBgmm0RERESkGCabRERERKQYJptEREREpBgmm0RERESkGMOCDiCvetg2KegQig2OpXw4lvLRdyyPZsgTR1Fn/DwJhgbaB8PmsoHe2y+Rkq73NgoD42cv9WrPsXxF33EEAJsrMoyluhiMZbT+Y2kdIGSIRH/cs0lEREREimGySURERESKyVOyefbsWXh5eeHOnTs51ouIiICXlxcOHTqUp+CIiIqroKAgLF26FGfOnMmxXkpKCpYtW4aNGzfmU2RERPLSac3mqVOnMGXKFJiamuLcuXPYsGEDateurbWuEAIeHh44e/YsevXqhZ49e8oSMBFRUXb//n2MHTsWYWFhiI6OxsiRI+Hk5JRt/VmzZmH58uWoVKkSPDw88jFSIiJ56LRn09DQEN7e3vD3939r3Z9++gmmpqbo3LlznoMjIipu0tPTMXv2bAQGBsLe3j7HugcOHMCBAwcwbty4fIqOiEh+OiWbbdu2hYODw1vr+fn5YenSpVizZk2eAyMiKo5q1aoFZ2dnqFSqHOs9ffoUY8eOxcaNG1GqVKl8io6ISH6ynyD04sULuLu7Y+XKlbC2ts5VG7Vajbi4OI0HEdG7KiMjAx4eHpgyZQqaNWuWqzacR4mosJI92Rw7dixcXFzQq1evXLfx9PSEhYWF9HjboSUiouJs/vz5SE9Px/Tp03PdhvMoERVWsiabvr6++Pfff1G1alV4eXnBy8sLDx48QHBwMLy8vBAfH6+13axZsxAbGys9QkND5QyLiKjIiIyMxLfffouWLVti6dKl8PLywsWLFxEbGwsvLy+EhIRobcd5lIgKK1nvIFS+fHmMHTsWDx48kMoSExNhYGCAwMBApKamam1nYmICExMTOUMhIiqSDA0NMX78eLx8+RKBgYEAgGfPniE1NRWBgYHo0KGD1nacR4mosJI12WzcuDG8vLw0yh48eICSJUtmKScioqwsLS2zzJdff/01YmJiOI8SUZGkU7IZFhaG3bt3S8+PHj2KFy9eoEGDBrzEERFRLiQnJ2P16tUAgOjoaAQEBMDLyws2NjYYMGBAAUdHRCQ/nZLNxMRE6bDOpEmTAACBgYGwtLTMto2LiwuMjIz0CJGIqPhIT0+X5tG+ffsCeDWPJiUlZdumdevWnEeJqMjSKdmsU6eOzodxxo8fr1N9IqLizMzMTOd51MXFBS4uLgpFRESkLNkvfURERERElInJJhEREREpRtaz0YmIqHBRJaVAZaD91pilbz3L52gKL1VSil7tOZav6DuOAMcykxxjaXK3cNxJjHs2iYiIiEgxTDaJiIiISDFMNomIiIhIMUw2iYiIiEgxTDaJiIiISDFMNomIiIhIMUw2iYiIiEgxTDaJiIiISDFMNomIiIhIMUw2iYiIiEgxTDaJiIiISDFMNomIiIhIMUw2iYiIiEgxTDaJiIiISDFMNomIiIhIMUw2iYiIiEgxTDaJiIiISDFMNomIiIhIMXlKNsPDw+Hj44Pw8HCtr6elpeHGjRu4cuUKEhMT9QqQiKg4SkhIgK+vL+7evav1dSEEgoODcf78ecTExORzdERE8tEp2bx58yYGDhyI5s2bo1u3bvDx8clS548//kC1atUwaNAgjBgxApUrV8bKlStlC5iIqCiLiIjApEmTUKtWLbi6umLFihVZ6uzevRv169dHjx49MHnyZNjZ2eGLL74ogGiJiPSnU7IZEhICNzc33L9/P9s6arUaly9fxo0bN3D16lUsXrwYEyZMQEBAgL6xEhEVeU+fPkX9+vURFBSEWrVqaa0TGRmJPXv24N69ezh//jxOnDgBLy8veHt753O0RET60ynZdHFxwaBBg2BsbJxtnRkzZsDGxkZ67uHhAUNDQ5w/fz7vURIRFRNNmjTBpEmTYG5unm2djz/+GLVr15aet2jRAo0aNYK/v39+hEhEJCtDpTu4fPkyUlJSNCbON6nVaqjVaul5XFyc0mERERUZMTExCAoKwpAhQ7Ktw3mUiAorRc9GT0hIwMiRI9G5c2d07Ngx23qenp6wsLCQHvb29kqGRURUZAghMGbMGFhaWmLkyJHZ1uM8SkSFlWLJZlJSEvr06YOMjAxs27YNKpUq27qzZs1CbGys9AgNDVUqLCKiImXSpEk4efIk9u7dCwsLi2zrcR4losJKkcPoycnJ+OCDDxAeHo7jx4+jfPnyOdY3MTGBiYmJEqEQERVZU6ZMwbZt23Ds2DE0atQox7qcR4mosJJ9z2ZmovnkyRP4+vpqnCxERES5M3XqVGzZsgU+Pj5wcHAo6HCIiPJMpz2bz58/x+XLl6XnN2/ehI+PDypXrox69eoBAPr37w8/Pz+sWLEC169fx/Xr1wEANWrUQI0aNWQMnYio6ElNTcXJkycBvFrX/ujRI/j4+MDc3BwtW7YEAHz99dfw8vLCr7/+iujoaOmaxjY2NmjcuHGBxU5ElBc6JZsPHz7ETz/9BABwdnbGhQsXcOHCBfTu3VtKNjMyMtCqVSusXbtWo+2wYcOYbBLROy8pKUmaR6tVq4bnz5/jp59+Qp06daRkMy4uDl26dMHBgwdx8OBBqa2TkxOTTSIqcnRKNh0dHbXeNeh1Bw4c0CsgIqLizNzc/K3z6KJFi/IpGiIi5Sl66SMiIiIiercx2SQiIiIixSh+ByEiIio4qdalIQxLan1NXT77Ww/nlllIvF7tVUkpescgh1SbMnq151i+ou84AhzLTKkVsr+lbW5lGJXVPxAZcM8mERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREphskmERERESmGySYRERERKYbJJhEREREpxrCgA8irw08C9N5GD9smem+jONB3LDmO/8OxlI8c33ECMowNkGFooPW1yKbay3VROa6UXu1N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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fix, ax = subplots(2, 2, figsize=(8, 8))\n", "ax[0, 0].imshow(dummy_image)\n", "ax[0, 1].imshow(dummy_blurred)\n", "ax[1, 1].imshow(csr.dot(dummy_blurred.ravel()).reshape(mask.shape))\n", "ax[0, 0].set_xlim(964, 981)\n", "ax[0, 0].set_ylim(0, 16)\n", "ax[0, 0].set_title(\"Original image\")\n", "ax[0, 1].set_xlim(964, 981)\n", "ax[0, 1].set_ylim(0, 16)\n", "ax[0, 1].set_title(\"Convolved image (i.e. blurred)\")\n", "ax[1, 1].set_xlim(964, 981)\n", "ax[1, 1].set_ylim(0, 16)\n", "ax[1, 1].set_title(\"Retro-projected of the blurred\")\n", "# ax[1,0].set_title(\"Corrected image\");\n", "ax[1, 0].imshow(res)\n", "ax[1, 0].set_xlim(964, 981)\n", "ax[1, 0].set_ylim(0, 16)\n", "ax[1, 0].set_title(\"Corrected image: MLEM\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performance measurements ... multi-threaded" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:37.864055Z", "iopub.status.busy": "2026-09-15T09:45:37.863947Z", "iopub.status.idle": "2026-09-15T09:45:46.349674Z", "shell.execute_reply": "2026-09-15T09:45:46.348588Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "3.44 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 2 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "1.86 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 4 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "1.03 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 8 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "626 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 16 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "465 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 32 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "353 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 64 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "368 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "128 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "332 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "perfs = {}\n", "for i in range(8):\n", " j = 1 << i\n", " print(f\"{j:3d} threads: \", end=\"\")\n", " perfs[(j, cythick.buffer_size)] = %timeit -o -n1 -r1 cythick.calc_csr(8, threads=j)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:46.352157Z", "iopub.status.busy": "2026-09-15T09:45:46.352030Z", "iopub.status.idle": "2026-09-15T09:45:55.438549Z", "shell.execute_reply": "2026-09-15T09:45:55.437882Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "3.59 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 2 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "1.92 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 4 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "1.08 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 8 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "656 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 16 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "497 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 32 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "395 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", " 64 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "360 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "128 threads: " ] }, { "name": "stdout", "output_type": "stream", "text": [ "349 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "buf = 32\n", "cythick = CythonThickDetector(\n", " 172e-6,\n", " 172e-6,\n", " thickness=thickness,\n", " mu=mu,\n", " dist=dist,\n", " poni1=poni1,\n", " poni2=poni2,\n", " mask=mask,\n", " buffer_size=buf,\n", ")\n", "cythick.calc_csr(1)\n", "for i in range(8):\n", " j = 1 << i\n", " print(f\"{j:3d} threads: \", end=\"\")\n", " perfs[(j, cythick.buffer_size)] = %timeit -o -n1 -r1 cythick.calc_csr(8, threads=j)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:55.440451Z", "iopub.status.busy": "2026-09-15T09:45:55.440336Z", "iopub.status.idle": "2026-09-15T09:45:55.650623Z", "shell.execute_reply": "2026-09-15T09:45:55.650068Z" } }, "outputs": [ { "data": { "image/png": "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0plyAADqgHB5AyEionqBSTq5Na1Kib4tw9C3ZRjmjGyHU1cKkHgkHbv+zoTJYr2aoJZLZssSVnX5xPRmkt3r1C0bLl3lcykkDpvG1by3xu+EEJUm8tVJ9qtbx2K1wGy2wGwpfZgtMFvMMFsssNjLzTCbrbBYzLBYLLCU1rVYbMeXlVksFlhLy6zWsm0LrFarbdtqLd22QFit9nJR7l8hbOVClG6XlilgRWkfPxSl4wCubltLy8rGC5TWka7Zto8hqGy7kueTbvD8FbbLPZ9kK1eWPk/5mByfr/xxtos0Urnnvbm/l9Lfq1xMJfK9NtUJf0sOAMAniEk6ERG5HpN08hiSJCE2PACx4QGY0S9G7nDIlSSpdBiz69ayV5Y+tC57hdorm/PAZLHCaLbdgmEsvbXDYdtcWmaxwGi21S/bZzRbYSx9DlPpMQaLFaZK6plKn9tkP660rLTutfXKtl3Q8pu7qFDpRYbrX6RQKwCtEtAoAbVCgkYJaBSidNv20CgAdbntqw8BtQJQKQTUEtBbCgFTN+8lhEAjdRFgAvyCG8kdDhER1QNM0omI3JQkSdCobBPh+bnp1QQhhH1OB5O5NHEvd0HgRhcVyo6xXzCo5KKC7WLA1YsKJosVhupcVCgtM1qsENd2zltKH07wy+06JuleTJIkhEn5AIDABo1ljoaIiOoDJulERFRjkiTZbwOBRu5oqmYpvZBwNbkvd1GhXNm1FxWujmIQMJot9hEE5feF+Llxw6n2hABufQwoyrAtAUpERORiTNKJiMjrKRW2pQB91Eq5QyFPI0lA/+fljoKIiOoR193wSUREREREREQ3hUk6ERERERERkZtgkk5ERERERETkJpikExEREREREbkJJulEREREREREboJJOhEREREREZGbYJJORERERERE5CaYpBMRERERERG5CSbpRERERERERG6CSToRERERERGRm2CSTkREREREROQmmKQTERERERERuQkm6URERERERERugkk6ERERERERkZtgkk5ERERERETkJpikExEREREREbkJJulEREREREREbkIldwByEEIAAPLy8mSOhIiI6Or5qOz8RLXHcz0REbmb6p7v62WSnp+fDwBo1qyZzJEQERFdlZ+fD71eL3cYXoHneiIiclc3Ot9Loh5etrdarbhw4QICAgIgSdJNH5+Xl4dmzZohNTUV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d599iGp5mzZtgkajwcKFC7F8+fIK+4OCgrB+/Xr7dklJCd5//31s3rwZOp0O9957LyZMmODS2MkzWK1WLFq0CGvXroXVasUdd9yBhx56CCqV58+1u2HDBrz++uuV7lu3bp19AkUhBBYvXow1a9bAbDZj2LBhePTRR73iPXjnnXdw4sQJfPbZZw7lp0+fxltvvYVjx44hMjISTz75JDp16iRTlLW3fv16LF26FPn5+WjXrh2efPLJCkN8v/rqK6xatQoGgwGDBw/GE0884RH36lZm27ZtWLp0qX203PDhwzFhwgSH3tW0tDTMnz8fR44cQZMmTfD444+jW7duMkZdPVlZWZWOcI2Li3P4Oz5//jzefPNNHD58GI0bN8Zjjz1WYXRYdeq4g/fffx/fffddhfK33noLt956K3bv3o2nn3660mOXLl3qsKLLypUrsXz5chQVFaFfv3546qmnHL73uism6URERERERERugvekExEREREREbkJJulEREREREREboJJOhEREREREZGbYJJORERERERE5CaYpBMRERERERG5CSbpRERERERERG6CSToRERERERGRm2CSTuTBSkpKsGLFCuTm5sodSgWnTp3CmjVr8NNPP1Wrvru25fz58/j+++/lDoOIiOqxn3/+GcePH5c7jAoyMzOxYcMGrFixAsXFxdU6xh3bYjabsWLFCmRnZ8sdChEAJulEtfLtt99i9erVFcr37duHLVu2uPz1c3JyMGHCBKSmprr8tW7G119/ja5du+J///sfEhMTK+w3mUwVTobu2pa9e/di6tSpcodBREQy2bp1K1asWIGMjAyH8rS0NKxYsaJOYnjmmWeqfdG7rpw8eRKxsbF47733sGbNmkqT9F9++QVHjhxxKHPHtpSUlGDChAk4deqU3KEQAWCSTlQrEydOxLhx4yok6osWLcJrr70mU1TyW7RoEWbOnInvv/8e7777boX9hYWFPBkSEZFHmDdvHiZMmICXXnrJoTw5ORkTJkyQKSr5rVy5Eu3atcOvv/6KFStWICQkpEKdF154AWvXrpUhOiLPppI7ACJP16JFC7zwwgsYPXo0VKqK/6Vyc3OxYcMGjB49Gj4+PgAAIQRWrlyJgQMHIjw8HCUlJVizZg0SEhKQkZGBI0eOICIiAl26dAEA/Pnnnzh16hTatm2LVq1aVRrHyZMnceTI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c64HbJOklk9Ks7KyKiT8rlTZub5BgwbX/T6zdOlSnD59GufOnYOvry8A4IMPPsD8+fPtdRo0aIC//vrL4bhr39vAwECsWLECBQUF2LFjBz766CPEx8fj5MmT0Ol0tW0a0Q1xuDuRkygUCsybNw+ff/45Tp48aS8vmw20fNm1Q89qa82aNfafCwsLsXHjRvTu3RsAMGzYMJw+fRobN250OKawsBC5ubk39Tp9+/bFkSNHHNY8XbNmDRQKBbp161bt5/H19YUkSU778jJs2DAsX768QnvOnz9v//nSpUto06aNfTs9PR1JSUkO9fv06YN169Y5JO7ff/99pc/ZqFEj3HfffZg5c6Z9llkiIvJ+L7/8Ms6fP48vv/zSoTwiIsLhXH/lyhUcPnzYaa/7448/OlwE+P777+3n+u7duyM4OBiffvqpwzFCCFy8ePGmXicuLg7BwcEO57/Lly8jKSkJffr0uann8vf3d+q5/o8//sCOHTscyvPy8lBQUADAdq5v1qyZPUEXQuC7775zqN+nTx/s3bvX4TtCVed6f39/DB06FB988AEuXLjgcAsdkSuxJ53IiYYPH47evXsjMTHRvhSJXq/HqFGjMGPGDDz55JNIT0/HsmXLnPq6Zb247du3x5dffonQ0FA88MADAGwno8cffxxjxozBo48+itatW+P48eP4/vvvsW7dOuj1+mq/Tt++fTF27FgMGzYMTz31FAoLCzF//nzMmjULTZs2rfbzaDQadOzYEe+88w7Onj2LsLCwKpc7q46XXnoJv/76K7p164YHH3wQfn5+2LNnD44dO4adO3cCAEaPHo358+fD19cXWq0WCxYssI9yKPPcc89h2bJlGDFiBO68804kJibi999/d6gzbtw4tGrVCr169UJJSQnef/99jBs3rsaxExGRZwkNDcWzzz6Ll19+2aF80qRJePHFF+Hn5wd/f38sXry40qVZayo9PR0JCQm4++67sW3bNiQmJtovEvv6+uKLL77AxIkTcf78eQwYMACXL1/G2rVr8dBDD2HKlCnVfh0/Pz/Mnz8fjz/+OC5evIjGjRtj4cKFiI+Px/jx428q5vj4eKxYsQLR0dHw8fFxWILtZg0bNgxTp05FQkICHnvsMbRo0QJHjx7FmjVrkJiYCH9/f4wcORJvvPEGnnrqKbRr1w7fffcd/vzzT4db0oYPH45evXph8ODBePTRR3H+/HksXbrU4bUWLFiAffv2YdiwYQgKCsJXX32FLl26IDY2tsbxE90MJulEtTB+/PgK9zW99957eOutt+xrogK2NTsXLlyI3bt3IyYmBlu2bMHMmTMRHh4OwDZByfjx4+2TqAC2k+T48eMREBBgLwsKCsL48ePtQ63KjvvXv/6Fn376CXv37sWwYcMcJpIDbPdRjxw5EuvXr8f27dvRtm1bJCUl2e9Jr+z1q/LNN99g2bJl2LZtG9RqNZYtW4ZRo0Y51ElISKhyHdkyP/zwAz7//HNs2LABUVFR6NGjR6Ux3H333faJcqqKMygoCLt378bXX3+NXbt2QavVYuDAgfj888/tdZ599lk0adIEW7ZsgUajwbvvvovU1FSHXonGjRtj7969WLhwIfbt24f+/ftj5syZWLRokb3O1q1bsXz5cuzcuRNqtRrvvvtuhfvYiYjIe/Tv37/CBe2nnnoKx44ds897AtgmkQ0LC8OmTZsQEhKCRYsWYf369Q6juCo7P44YMaJC8jd69GiH7xcJCQkYMGAAsrKysHPnToSEhGD37t0O3zXuvvtuHDp0CMuWLUNSUhIiIyPx+eefo3Pnztd9/co8+OCDaNmyJb777jukpaXhkUcewbRp0xwubnft2tU+0WpV/v3vf9snqi0uLsaoUaMqjaFPnz4O33eqinPx4sUYO3YsNmzYgJ07dyIuLg7Jycn2e9K7deuGbdu24euvv8bOnTsxatQoPPPMM1i1apXD8/z000/2RDw2Nha7du3C888/b79Xft68eUhMTMRPP/2Eo0ePYuzYsZg8eXKFi/tEriKJ8uM6iYiIiIiIiEg2vBxERERERERE5CaYpBMRERERERG5CSbpRERERERERG6CSToRERERERGRm2CSTkREREREROQmmKQTERERERERuQkm6URERERERERugkk6ERERERERkZtgkk5ERERERETkJpikExEREREREbkJJulEREREREREboJJOhEREREREZGb+P8oR/rTVObZ6QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", " \n", "fig, ax = subplots(1,2, figsize=(12,6))\n", "t = [i[0] for i in perfs if i[1] == 16]\n", "y16 = [v.best for k,v in perfs.items() if k[1] == 16]\n", "y32 = [v.best for k,v in perfs.items() if k[1] == 32]\n", "p16 = [8e-6*cythick.size/v.best for k,v in perfs.items() if k[1] == 16]\n", "p32 = [8e-6*cythick.size/v.best for k,v in perfs.items() if k[1] == 32]\n", "ax[0].plot(t, y16, label=\"16 voxel/ray buffer\")\n", "ax[0].plot(t, y32, label=\"32 voxel/ray buffer\")\n", "ax[0].set_title(\"Execution time\")\n", "ax[0].set_xlabel(\"Number of threads\")\n", "ax[0].set_ylabel(\"Runtime (s)\")\n", "ax[1].plot(t, p16, label=\"16 voxel/ray\")\n", "ax[1].plot(t, p32, label=\"32 voxel/ray\")\n", "ax[1].set_xlabel(\"Number of threads\")\n", "ax[1].set_ylabel(\"Millions of rays per second\")\n", "ax[1].set_title(cpu)\n", "ax[0].legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion of the raytracing part:\n", "\n", "We are able to simulate the path and the absorption of the photon in the thickness of the detector. \n", "Numba/Cython helped substantially to make the raytracing calculation much faster. \n", "The signal of each pixel is indeed spread on the neighbors, depending on the position of the PONI and this effect can be inverted using sparse-matrix pseudo-inversion. \n", "The MLEM can guarantee that the total signal is conserved and that no pixel gets negative value.\n", "\n", "We will now save this sparse matrix to file in order to be able to re-use it in next notebook. But before saving it, it makes sense to spend some time in generating a high quality sparse matrix by throwing thousands of rays per pixel in a grid of 64x64 (4 billions rays launched)." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:45:55.652542Z", "iopub.status.busy": "2026-09-15T09:45:55.652446Z", "iopub.status.idle": "2026-09-15T09:46:20.067809Z", "shell.execute_reply": "2026-09-15T09:46:20.066786Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 20min 46s, sys: 715 ms, total: 20min 47s\n", "Wall time: 22.8 s\n" ] } ], "source": [ "%time pre_csr = cythick.calc_csr(128, threads=os.cpu_count())\n", "hq_csr = csr_matrix(pre_csr)\n", "save_npz(\"csr.npz\", hq_csr)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T09:46:20.070262Z", "iopub.status.busy": "2026-09-15T09:46:20.070144Z", "iopub.status.idle": "2026-09-15T09:46:20.072806Z", "shell.execute_reply": "2026-09-15T09:46:20.072338Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total execution time: 68.171 s\n" ] } ], "source": [ "print(f\"Total execution time: {time.perf_counter() - start_time:.3f} s\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13.1" } }, "nbformat": 4, "nbformat_minor": 4 }