International
Tables for
Crystallography
Volume I
X-ray absorption spectroscopy and related techniques
Edited by C. T. Chantler, F. Boscherini and B. Bunker

International Tables for Crystallography (2024). Vol. I. ch. 6.21, pp. 833-835
https://doi.org/10.1107/S1574870720003468

Chapter 6.21. VIPER and XANES Dactyloscope

Konstantin Klementieva*

aMAX IV Laboratory, Fotongatan 2, 225 94 Lund, Sweden
Correspondence e-mail: [email protected]

The programs VIPER and XANES Dactyloscope represent a broad collection of analysis tools for EXAFS and XANES spectroscopies. Their 20-year-long history has allowed fine tuning of the codes on numerous data sets from many synchrotron beamlines and their use in various application scenarios. The graphical interface is focused on rich visual representation of the data. This goal is achieved by simultaneous dynamical plotting of several data transforms along the analysis pipeline and by optimizing the usage of the screen space. To handle large data sets and to enable parallel computation, the programs will soon be rewritten as plug-ins to a modern data-analysis platform, but the essence of the analysis pipeline will be inherited from VIPER and XANES Dactyloscope. Both programs are freeware, and can be found online using the keywords `VIPER EXAFS'. The distribution package also includes detailed documentation and examples.

Keywords: VIPER; XANES Dactyloscope; EXAFS; XANES; data analysis; Xanda; ParSeq.

1. VIPER

VIPER is a program for data analysis of EXAFS spectra (Klementev, 2001link to reference). It combines the following analysis steps into a dynamically updated data pipeline that can be fed with many datafiles: (i) pre-processing of raw data, which includes energy calibration, various deglitching methods, deconvolution, advanced self-absorption including the XANES part etc.; (ii) various procedures for extraction of the EXAFS function; (iii) merging of spectra; (iv) Fourier analysis; (v) fitting procedures for the first few coordination shells in k and/or r space, including multi-edge fitting, fitting by a radial distribution function and fitting by an oscillatory potential, with flexible user-defined constraints; and (vi) advanced error analysis and statistical tests.

VIPER does not include the calculations of scattering amplitudes and phases; the use of FEFF (Rehr & Albers, 2000link to reference; Kas et al., 2024link to reference) is recommended for this. Alternatively, well isolated first coordination shells in reference spectra can be used for extracting experimental amplitudes and phases. VIPER also does not produce publication-quality graphs. It only exports column files to be loaded by Matplotlib, Veusz or QtiPlot (to mention free software) or other plotting tools.

2. What makes VIPER special?

The dataflow and the desktop space are organized in such a way that all curves and their changes under processing are visual. The visualization is not only a matter of convenience; it also serves for checking the quality of experimental data and processing steps. VIPER is therefore useful for quick quality checking during beam time at synchrotrons. A simple drag-and-drop action quickly reveals the spectrum noise, reproducibility and shape trends in E, k and r space. The visual aspect is also helpful in several analysis steps, in particular in the following.

(i) Stability check of energy axis of multiple spectra by exploring relative shifts in co-recorded reference spectra (usually of a foil).

(ii) Exploring monochromator glitches by colour-marking those on an I0 curve and inspecting their persistence or absence in the propagated coloured regions on μ(E) and χ curves.

(iii) Constructing the pre-edge and post-edge backgrounds and searching for the optimal kmin while inspecting the low-r Fourier transform region.

The screenshot in Fig. 1link to figure shows an example of the analysis pipeline, where a window with the measured signals – currents of ionization chambers – is hidden behind the other windows. The spectra were taken after several in situ preparation steps of a Pd catalyst (Stakheev et al., 2004link to reference) with the two end members being oxide and metal references. This example is also included in the distribution archive.

[Figure 1]

Figure 1

A screenshot of VIPER. Lower left, μ(E) plot. Upper left, χ(k) · k2 plot. Lower right, Fourier transform (FT) of the previous plot. Upper centre, its windowed back Fourier transform (BFT). The FT and BFT windows also have a fitted curve (squares) for the first atomic shell in Pd foil. The dialogue panels control the extraction of χ(k) (top right), the fitting by individual scattering path contributions (bottom) and the statistical evaluations in the fitting (lower right). The drop-down menu at the top with a list of the loaded data files is used for data management.

3. XANES Dactyloscope

On one hand, XANES spectra require a simplified analysis pipeline with fewer transformations compared with EXAFS spectra. On the other hand, XANES needs some specific tools, such as pre-edge peak separation by baseline subtraction, factor analysis (principal component analysis and target transformation) and linear combination fitting. XANES Dactyloscope (Xanda) is a program for data analysis of XANES spectra. It implements the simplified pipeline that fits into a single dialogue box and offers the abovementioned specific analysis tools.

Xanda does not include ab initio XANES calculations. It also does not produce publication-quality graphs. It only exports column files to be loaded by another plotting tool.

Although several ab initio XANES calculation codes have been successful in reproducing particular spectra, mostly of metal samples, the quantitative treatment of XANES still remains a challenging problem. For this reason XANES is mostly used for `fingerprint' analysis, which considers specific spectroscopic features (fingerprints): pre-edge peaks, white lines, edge shifts etc. for identifying the chemical state and/or local atomic symmetry. This explains the name of the program: XANES Dactyloscope.

The screenshot in Fig. 2link to figure shows an example of the use of Xanda. The analysis pipeline is defined by a single dialogue, sequentially organized from top to bottom, and the data are displayed in a single graph.

[Figure 2]

Figure 2

A screenshot of XANES Dactyloscope that shows the self-absorption correction (Iida & Noma, 1993link to reference). The thick approximation (a simplified limiting case, usual elsewhere) is not required here. The spectra are for a pellet of haematite (Fe2O3) pressed with polyethylene. The same sample was measured in transmission (blue) as well as in fluorescence (red). The latter is corrected (green) assuming the chemical formula and the experiment geometry defined by the parameters visible in the central part of the dialogue window.

4. Documentation

Both programs are accompanied by detailed documentation. As well as explaining the user interface, chapters in the documentation derive the methods, give a historical overview and critically compare different analysis routines. In particular, energy calibration, construction of post-edge background, self-absorption correction, definitions of experimental errors, statistical evaluations in fitting and factor analysis are covered. Each chapter offers something special, for example methods not published elsewhere or extensions to the standard methods.

5. System requirements

VIPER and XANES Dactyloscope run on 32-bit and 64-bit Windows systems. They can run under Linux and MacOS in a virtual machine or with Wine (compatibility software).

6. Future development

As dictated by ever-increasing data streams at modern synchrotron XAS beamlines, analysis software has to offer certain capabilities not currently present in VIPER: handling very large volumes of data, parallel data processing, also on GPUs, highly efficient graphics processing and deploying on various operating systems. VIPER and XANES Dactyloscope will therefore be rewritten as plug-ins residing in a general-use dataflow framework. The framework is currently in development under the name ParSeq (see https://github.com/kklmn/ParSeq for screenshots of what is currently available). Each transformation node in ParSeq consists of six main parts:

(i) A file tree for accessing data files. This browses the file system and the content of HDF5 containers in a single viewer.

(ii) A data tree that manages the loaded data. The user selects a subset of data to which the transformation is applied. This tree also acts as a plot legend.

(iii) A widget with data averaging and other cross-data actions.

(iv) A plotting window.

(v) A widget with transformation parameters.

(vi) A help panel that is dynamically created from a reStructuredText source (https://en.wikipedia.org/wiki/ReStructuredText ).

The transformation nodes in the framework are detachable from the main window and thus ParSeq will work efficiently on multi-screen desktops. The programming language is Python, with parallel analysis codes written in OpenCL (https://en.wikipedia.org/wiki/OpenCL ). The GUI part utilizes the PyQt framework.

Acknowledgements

The original Pascal codes written for 16-bit Windows were converted to the 32-bit API with great help from Roman Chernikov (Canadian Light Source).

References

First citationIida, A. & Noma, T. (1993). Jpn. J. Appl. Phys. 32, 2899–2902.Google Scholar
First citationKas, J. J., Vila, F. D. & Rehr, J. J. (2024). Int. Tables Crystallogr. I, ch. 6.8, 764–769 .Google Scholar
First citationKlementev, K. V. (2001). J. Phys. D Appl. Phys. 34, 209–217.Google Scholar
First citationRehr, J. J. & Albers, R. C. (2000). Rev. Mod. Phys. 72, 621–654.Google Scholar
First citationStakheev, A. Y., Tkachenko, O. P., Kapustin, G. I., Telegina, N. S., Baeva, G. N., Brueva, T. R., Klementiev, K. V., Grunert, W. & Kustov, L. M. (2004). Russ. Chem. Bull. 53, 528–537.Google Scholar








































to end of page
to top of page