[JF] Replace strixel cython code by numpy implementation
Description
After some engineering fun, we managed to find a numpy implementation for the strixel transformation that is close enough to the Cython implementation to make the latter hardly worth the effort (347 us vs 1.1 ms for a single frame). While this is still 3x slower, the numpy version immediately works for all dtypes, extra axes, is safer and does not require compilation.
As an added bonus, it is easily invertable as required by https://git.xfel.eu/calibration/planning/-/issues/159. So easy that I already added a function to do it.
Note that the version now exposed uses 1D index lists to do the transformation, but internally it is based on the first numpy version using 2D index lists. Technically one could use those, although I don't see any benefit to them beyond investigating the strixel transformation itself.
How Has This Been Tested?
np.testing.assert_allclose
with the reference and Cython implementation, notebook on p3478, r25
Types of changes
- Refactor (refactoring code with no functionality changes)