Jerome Kieffer
Jerome Kieffer
Implement both **Blelloch** and **Hillis&Steele** algorithm as workgroup collaborative function.
One needs to find a "clean" way to promote an instance, for example of "Geometry" into "AzimuthalIntegrator" or "FiberIntegrator" ... maybe with a promote method.
## Idea: Create an `integrators` sub-module with `azimuthal` and `surface` modules holding `AzimuthalIntegrator` and `SurfaceIntegrator`. The pyFAI.azimuthalInetgrator modules becomes completely deprecated. All integrator classes are exposed at the `pyFAI.integrators`
## Promotion add a `geo.promote(type)` method could do a deep-copy of the `Geometry` (or `PoniFile`) instance in to an `Integrator` object (which inherits from `Geometry`) Care should be taken about...
Implemented, to be released as part of `2025.1`
This work could be the subject for a master internship (at least 3 month of work with the validation)
After preliminary work in #2261 we validated it was possible. Performances are expected to be 5s for 2Mpix image using Python
Quick&dirty implementation in python: ``` def azimuthal_median(): q_start = 0.2 q_stop = 0.8 signal = numpy.zeros(csr[2].size-1, dtype="float64") norm = numpy.zeros(csr[2].size-1, dtype="float64") norm2 = numpy.zeros(csr[2].size-1, dtype="float64") variance = numpy.zeros(csr[2].size-1, dtype="float64") for...
Non-regression test: ``` %time res = cython_medfilt3(prep, csr[0], csr[1], csr[2], (0.0,1.0)) %timeit res = cython_medfilt3(prep, csr[0], csr[1], csr[2], (0.0,1.0)) ref = ai.integrate1d(img, 2500, method=("full", "csr", "cython"), unit="r_mm", error_model="poisson") abs((ref.sum_signal -res[0])/ref.sum_signal).max(),...
Quick&dirty implementation in cython: ``` %%cython -a -c-fopenmp --link-args=-fopenmp # distutils: language = c++ #cython: boundscheck=False, wraparound=False, cdivision=True, initializedcheck=False import numpy from libcpp cimport bool from libcpp.algorithm cimport sort from...