| Literature DB >> 25844080 |
Giannis Ashiotis1, Aurore Deschildre1, Zubair Nawaz2, Jonathan P Wright1, Dimitrios Karkoulis1, Frédéric Emmanuel Picca3, Jérôme Kieffer1.
Abstract
pyFAI is an open-source software package designed to perform azimuthal integration and, correspondingly, two-dimensional regrouping on area-detector frames for small- and wide-angle X-ray scattering experiments. It is written in Python (with binary submodules for improved performance), a language widely accepted and used by the scientific community today, which enables users to easily incorporate the pyFAI library into their processing pipeline. This article focuses on recent work, especially the ease of calibration, its accuracy and the execution speed for integration.Entities:
Keywords: GPU programming; Python; computer programs; data reduction; geometry calibration; image analysis; powder diffraction; small-angle X-ray scattering
Year: 2015 PMID: 25844080 PMCID: PMC4379438 DOI: 10.1107/S1600576715004306
Source DB: PubMed Journal: J Appl Crystallogr ISSN: 0021-8898 Impact factor: 3.304
Figure 1The geometry used by pyFAI is inspired by SPD (Boesecke, 2007 ▶).
Figure 2The pyFAI calibration window: manual peak picking and ring assignment can be performed though it. The data correspond to a lanthanum hexaboride (LaB) calibrant on the Cristal beamline at Synchrotron Soleil taken at 18.57 keV on an Xpad S540 flat pixel detector tilted vertically by about 15°. This detector presents large (vertical) gaps between modules, explaining the incomplete arcs of rings a, b and d. Extracted control points are marked with dots, one colour per group (assigned to a letter), and the fitted iso- contours are overlaid as dashed lines (red, orange and yellow coloured). The iso- contour plot is not smooth because of gaps in the detector, explaining the incompleteness of some rings.
Methods available within pyFAI for azimuthal integration, along with their speed and memory footprint
Measurements were performed on a 3GHz quad-core computer using a pixel image.
| Pixel splitting | Direct histogram | Lookup table (reverse) |
|---|---|---|
| No splitting | numpy (889ms 336MB) | CSR nosplit (48ms 330MB) |
| cython (361ms 323MB) | ||
| Bounding box | splitbbox (129ms 343MB) | splitBBoxLUT (59ms 327MB) |
| CSR bbox (52ms 330MB) | ||
| Tight splitting | splitpixel (516ms, 480MB) | CSR full (51ms, 502MB) |
Figure 3Contribution to a powder diffraction pattern from a single pixel, showcasing the different pixel-splitting algorithms. pyFAI implementations are compared with the corresponding FIT2D algorithm.
Figure 4Graphical interface for performing azimuthal integration on a set of images.
Figure 5Automatic removal of the amorphous signal (ice ring) from Bragg peaks in a protein crystallography experiment (data from beamline ID23-2 at the ESRF).