Dear all,
We just released a new version of pyFAI (called 2025.12)
Parallax
========
This effect shifts the pixel position when the inclination of the beam is large (>30°) making calibration challenging
* Provide absorption coefficients of most common sensor materials
* Update the database of detectors with sensor material and thickness (#2606)
* New PONI-file version (backwards compatible when possible)
* [Calib2] exposes the feature in detector configuration
* Performance regression while calibrating and geometry initialization (will be addressed in the future)
Graphical user interface
========================
* Like silx, pyFAI moves from pyQt5 to pySide6 (or pyQt6). Several bugs were found
and addressed to increase compatibility with Qt6. PyQt5 is no more a priority and will be dropped in next release
* Integrate is now able to perform fiber integration.
* Calib2 exposes the sensor definition in detector configuration
* Pilx is now compatible with files produced by mesh-scan on BM29 in addition to diffmap.
Median filtering
================
* fix an infinite loop in the OpenCL code
Crystallography
===============
* Move most of the calibrant file into the crystallography module
* Calibrant have seen the IO part devoted to a dataclass called CalibrantConfig:
- Import/export of D-file, including now the relative intensity
- Import from diff-files available from the American Mineralogist Database
* space_groups contain an extensive list of 2320 space-groups with their extinctions for use in the Cell class
* The Cell class can now be directly exported as calibrant
* Added new resolution functions for powder diffraction peak shapes with:
- Constant resolution
- Caglioti model (U, V, W parametrization)
- Langford model (4 parameters)
- Chernyshov model (3 parameters)
* Added fake_xrpdp method to generate 1D powder patterns with configurable resolution
* Refactoring of the fake_image method which takes benefit of fake_xrpdp improvements
* Documentation with a new tutorial on carbon polymorphs (diamond, graphite and C60)
integrate1|2d methods:
======================
enforce arguments to be kwargs to limit user errors
Documentation:
==============
Improve the notebook about "flatfield" calculation.
Fiber/GrazingIncidence
======================
Compatibility with pyFAI-integrate GUI and Worker
Build the missing wedge mask using percentile threshold of counts
Integrate1/2dResult
===================
Those objects behave like the (2th, I, std) but in facts, they are much more ...
* Can perform some basic maths (+, -), uncertainties are propagated accordingly.
* 2D container can be rebinned in 1D containers.
* 1D container can calculate the spottiness of the initial frame (with azimuthal error-model).
Fit2dGeometry
=============
It becomes a case-insensitive dataclass (thus mutable, was NamedTuple) which behaves like a dict.
Deprecation
===========
splineFile --> splinefile in most arguments and also as properties (PEP8 compliance)
Replace python2.5 style properties with @Property decorators. Deprecate former accessors where appropriate.
Start to support type annotation in the code (proper doc-string is still mandatory).
Prefer the numexpr (fallback on numpy) function evaluation in favor of the Cython path for geometry initialization, less prone to numerical noise.
Cython is still preferred for geometry optimization where performance is critical.
Bugs:
=====
There are several known bugs:
* Regression in pixel-splitting methods when dealing with pixels on the boundary #2736
* array_from_unit`` and chiArray` are not consistent #2589
* Uncollectable objects when using PySide6 GUI (PyQt6 is OK) #2523
* pyFAI-calib2 crashes when loading the image (PyQt5 only issue. Wont'fix, please upgrade) #2422
Statistics
==========
Supports python 3.10-3.14, 3.14t is untested.
1700 commits, 577 files modified over 9 months: This is a big baby.
List of contributors for this release: Gudrun Lotze, Loic Huder, Edgar Gutierrez-Fernandez, Harshal G and Jérôme Kieffer
New Contributors
@harshal301002 made their first contribution in #2542
@gudlot made their first contribution in #2565
Wheels are already available on PyPI and github, so a
`pip install --upgrade pyFAI`
should do the job.
Cheers,
Edgar & Jerome