From a8d3c0ed219681ec8048aae425dbcf87d37dff66 Mon Sep 17 00:00:00 2001 From: JamesWrigley Date: Wed, 7 Oct 2026 11:46:19 +0200 Subject: [PATCH] Require pyfai 2025 --- pyproject.toml | 2 +- src/xtl/cli/diffraction/cli_utils.py | 2 +- src/xtl/diffraction/images/correlators.py | 6 +++--- src/xtl/diffraction/images/integrators.py | 18 +++++++++--------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 364e2c0..5f4d50f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ "pandas>=2.3.3", "pint>=0.24.4", "pydantic>=2.13.4", - "pyfai>=2023.9.0,<2024.10", + "pyfai>=2025.01", "pyxray>=1.8.0", "reciprocalspaceship>=1.0.7", "requests>=2.34.2", diff --git a/src/xtl/cli/diffraction/cli_utils.py b/src/xtl/cli/diffraction/cli_utils.py index 1ad1304..0c5d2f8 100644 --- a/src/xtl/cli/diffraction/cli_utils.py +++ b/src/xtl/cli/diffraction/cli_utils.py @@ -98,7 +98,7 @@ def get_radial_units_from_header(header: str) -> Optional['RadialUnits']: from xtl.units.scattering.radial import RadialUnits for line in header.splitlines(): - if line.startswith('pyFAI.AzimuthalIntegrator.unit'): + if line.startswith('pyFAI.integrator.azimuthal.AzimuthalIntegrator.unit'): units = line.split(':')[-1].strip() if units in ['2th_deg', '2theta', '2th']: return RadialUnits.TWOTHETA_DEG diff --git a/src/xtl/diffraction/images/correlators.py b/src/xtl/diffraction/images/correlators.py index 78dbd96..f8a44d0 100644 --- a/src/xtl/diffraction/images/correlators.py +++ b/src/xtl/diffraction/images/correlators.py @@ -227,9 +227,9 @@ def _get_file_header(self) -> str: for key in ['unit', 'error_model', 'method_called', 'method', 'compute_engine', 'has_mask_applied', 'has_flat_correction', 'has_dark_correction', 'has_solidangle_correction', 'polarization_factor', 'normalization_factor', 'metadata']: - header += f'pyFAI.AzimuthalIntegrator.{key}: {getattr(self._ai2.results, key)}\n' - header += f'pyFAI.AzimuthalIntegrator.npt_rad: {self._ai2.points_radial}\n' - header += f'pyFAI.AzimuthalIntegrator.npt_azim: {self._ai2.points_azimuthal}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.{key}: {getattr(self._ai2.results, key)}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.npt_rad: {self._ai2.points_radial}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.npt_azim: {self._ai2.points_azimuthal}\n' header += f'\nDatasets: {self.units_radial}, {self.units_azimuthal}, cross-correlation function' return header diff --git a/src/xtl/diffraction/images/integrators.py b/src/xtl/diffraction/images/integrators.py index 98e744f..3325a37 100644 --- a/src/xtl/diffraction/images/integrators.py +++ b/src/xtl/diffraction/images/integrators.py @@ -6,7 +6,7 @@ from matplotlib.image import AxesImage import matplotlib.pyplot as plt import numpy as np -from pyFAI.azimuthalIntegrator import AzimuthalIntegrator as _AzimuthalIntegrator +from pyFAI.integrator.azimuthal import AzimuthalIntegrator as _AzimuthalIntegrator from pyFAI.containers import Integrate1dResult, Integrate2dResult from .images import Image @@ -119,7 +119,7 @@ def initialize(self, points_radial: int = None, units_radial: str = '2theta', ma def integrate(self, check: bool = True, keep: bool = True, **kwargs) -> Integrate1dResult: """ - Perform 1D azimuthal integration using ``pyFAI.AzimuthalIntegrator.integrate1d_ng`` on the ``Image``, + Perform 1D azimuthal integration using ``pyFAI.integrator.azimuthal.AzimuthalIntegrator.integrate1d_ng`` on the ``Image``, excluding the regions defined in ``Image.mask``. Integration settings are defined from the initialize() method. This method is just a wrapper around the pyFAI method, without any additional initialization. The default pyFAI integration method is ``('bbox', 'csr', 'cython')`` (aka ``'csr'``). @@ -185,8 +185,8 @@ def _get_file_header(self) -> str: for key in ['unit', 'error_model', 'method_called', 'method', 'compute_engine', 'has_mask_applied', 'has_flat_correction', 'has_dark_correction', 'has_solidangle_correction', 'polarization_factor', 'normalization_factor', 'metadata']: - header += f'pyFAI.AzimuthalIntegrator.{key}: {getattr(self.results, key)}\n' - header += f'pyFAI.AzimuthalIntegrator.npt_rad: {self.points_radial}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.{key}: {getattr(self.results, key)}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.npt_rad: {self.points_radial}\n' if self.results.sigma is not None: header += f'\nColumns: {self.units_radial_repr}, intensity (a.u.), sigma (a.u.)' @@ -354,7 +354,7 @@ def initialize(self, points_radial: int = None, points_azimuthal: int = None, un def integrate(self, check=True, keep: bool = True, **kwargs) -> Integrate2dResult: """ - Perform 2D azimuthal integration using ``pyFAI.AzimuthalIntegrator.integrate2d_ng`` on the ``Image``, + Perform 2D azimuthal integration using ``pyFAI.integrator.azimuthal.AzimuthalIntegrator.integrate2d_ng`` on the ``Image``, excluding the regions defined in ``Image.mask``. Integration settings are defined from the initialize() method. This method is just a wrapper around the pyFAI method, without any additional initialization. The default pyFAI integration method is ``('bbox', 'histogram', 'cython')`` (aka ``'bbox'``). @@ -421,9 +421,9 @@ def _get_file_header(self) -> str: for key in ['unit', 'error_model', 'method_called', 'method', 'compute_engine', 'has_mask_applied', 'has_flat_correction', 'has_dark_correction', 'has_solidangle_correction', 'polarization_factor', 'normalization_factor', 'metadata']: - header += f'pyFAI.AzimuthalIntegrator.{key}: {getattr(self.results, key)}\n' - header += f'pyFAI.AzimuthalIntegrator.npt_rad: {self.points_radial}\n' - header += f'pyFAI.AzimuthalIntegrator.npt_azim: {self.points_azimuthal}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.{key}: {getattr(self.results, key)}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.npt_rad: {self.points_radial}\n' + header += f'pyFAI.integrator.azimuthal.AzimuthalIntegrator.npt_azim: {self.points_azimuthal}\n' if self.results.sigma is not None: header += f'\nDatasets: {self.units_radial}, {self.units_azimuthal}, intensity (a.u.), sigma (a.u.)' @@ -545,4 +545,4 @@ def plot(self, ax: plt.Axes = None, fig: plt.Figure = None, xlabel: str = None, ax.set_yscale(yscale) ax.set_title(title) - return ax, fig, img \ No newline at end of file + return ax, fig, img