Integration: raw intensity to I(q)#
Raw detector images generally contain two pixel axes. To visualize and analyze scattering patterns these need to be transformed into chi/q or qz/qxy coordinates. PyHyperScattering wraps several integrators to accomplish this, with most implementations relying on pyFAI.
PFGeneralIntegrator
provides a thin layer over pyFAI’s azimuthal
integrator. Pass in calibration parameters or a .poni
file and a
mask, then call integrateImageStack
to convert an xarray with
pix_x
/pix_y
axes to intensity in q
and optionally chi
:
from PyHyperScattering.PFGeneralIntegrator import PFGeneralIntegrator
integrator = PFGeneralIntegrator(ponifile="calib.poni",
maskmethod="image", maskpath="mask.tif")
iq = integrator.integrateImageStack(raw_data)
For grazing-incidence experiments PGGeneralIntegrator
uses
pygix
to output either reciprocal-space q_xy
/q_z
data or
caked q
vs chi
. Datasets already in qx
/qy
coordinates
can be integrated with WPIntegrator
which relies on
skimage.transform.warp_polar
(or its GPU version).
All integrators return properly labeled xarray objects so the rest of the workflow can use normal xarray indexing and visualization.