EDA: EXAFS Software Package
Author: Dr. phys. Alexei Kuzmin

EXAFS Spectroscopy Laboratory
Institute of Solid State Physics
University of Latvia

Kengaraga street 8, LV-1063 Riga, Latvia

Internet: http://www.dragon.lv/eda
E-mail: a.kuzmin@cfi.lu.lv


The EXAFS Data Analysis software-package, called EDA, allows one to perform all steps of the extended x-ray absorption fine structure (EXAFS) analysis and to obtain structural information on the local environment around the absorbing center. The code was created with the idea to be intuitively simple and fast, guiding the user step by step through each part of the analysis.

The EDA package was developed starting from 1988 and was originally running under the MS-DOS compatible operating system.

The current version of the code consists of a set of interactive programs running under Windows environment (it was tested by the author under Windows XP/7/10):


converts original experimental data from several beamlines into &the EDA file format (ASCII, 2 columns).


extracts the XANES part of the experimental X-ray absorption spectrum and calculates its first and second derivatives.


extracts the EXAFS part χ(k) using original algorithm for the atomic-like ("zero-line") background removal.


performs Fourier filtering procedure (direct and back Fourier transforms) with or without amplitude/phase correction using a number of different (rectangular, Gaussian, Kaiser-Bessel, Hamming and Norton-Beer F3) window functions.


is a non-linear least-squares fitting code, based on a high speed algorithm without matrix inversion. A multi-shell Gaussian or cumulant model within the single-scattering approximation can contain up to 20 shells with up to 8 fitting parameters (Ni, So2, Ri, σi2, ΔE0i, C3i, C4i, C5i, C6i) in each. Constrains on the range of any fitting parameter or its value can be imposed.


is the regularization-like least-squares-fitting code allowing one to determine model-independent RDF in the first coordination shell for a compound with arbitrary degree of disorder.


performs analysis of variance of the fitting results based on the Fisher's F0.95-test.


is a general-purpose program for plotting, comparison, and mathematical calculations frequently used in the EXAFS data analysis (more than 20 functions, including amplitude/ratio method).


extracts the scattering amplitude and phase functions from FEFF****.dat files, calculated by the FEFF8/9 code, for the use with the EDAFIT or EDARDF codes.


calculates configuration-averaged EXAFS based on the results of molecular dynamics simulations.

Please, read the EDA Manual for more details.


General concept of the EDA package is shown on the scheme below, which illustrates main steps of the analysis and indicates the codes involved:

Click on the image to enlarge

One normally starts with the experimental data (I0 and I are intensities from the ionization chambers, fluorescence detectors, etc), which must be converted into x-ray absorption coefficient by the EDAFORM code (or any other suitable codes one likes to use).

Thus obtained x-ray absorption coefficient can be used to separate XANES part, located close to the x-ray absorption edge, by the EDAXANES code or to extract the total experimental EXAFS signal χ(k) by the EDAEES code.

After total experimental EXAFS signal extraction, one usually performs its Fouier filtering (i.e. direct and back Fourier transforms (FT) with some suitable "window"-function) to separate contribution from different structural shells (peaks in FT). This is done by the EDAFT code. Such approach allows one to "simplify" the analysis, at least, for the first coordination shell of the absorbing atom.

Finally, the EXAFS signal from a single shell can be simulated by different models to obtain structural information. The EDA package allows one to use three models:
(i) conventional multi-component parametrized model within the Gaussian or cumulant approximation (the EDAFIT code),
(ii) arbitrary radial-distribution fucntion (RDF) model obtained by the regularization-like approach(the EDARDF code),
(iii) the so-called "splice" model (one needs to use the EDAFT and EDAPLOT codes).
To perform simulations, one obviously needs to provide the scattering amplitude and phase shift functions for each scattering path. These data can be obtained either from experimental EXAFS signal for etalon (reference) compound or calculated theoretically. In the EDA package, one has possibility to use the theoretical data calculated by the FEFF code, which can be extracted from the feff****.dat files by the EDAFEFF code.

Different models obtained from the simulations of the EXAFS signal by the EDAFIT code can be further analysed by the FTEST code, applying the Fisher's F0.95 criterion.

Finally, visualisation, comparison and simple mathematical analysis of all obtained data can be done using the EDAPLOT code. However, since all data are kept in the simple ASCII format they can be easily transfered to and treated by any other codes.

Basic approach to the EXAFS data analysis using the EDA package and theoretical amplitude and phase shift functions, calculated by the FEFF code, is shown on the image below:

Click on the image to enlarge

It is crucial to align the experimental data and the theory on the same wavenumber scale (k-scale), since there is strong correlation between the origin of the photoelectron kinetic energy E0 and the interatomic distances R (both parameters influence the frequency of the EXAFS signal). Therefore, one normally starts from the analysis of the EXAFS signal for the reference compound, whose atomic structure is well known. A good polycrystalline compound with the local structure close to that of the sample under study is a good choice for the reference.

As the first trial, one can set the position of E0 at the maximum of the first derivative of the x-ray absorption coefficient and extract the EXAFS signal χ(k): this should be done by the EDAEES code. Besides, one needs to perform calculation of the theoretical total EXAFS signal χFEFF(k) by the FEFF code. This requires the construction of the feff.inp file for the reference compound, which can be done by the ATOMS code.

After executing the FEFF code, the theoretical EXAFS signal should be extracted from the generated chi.dat file and compared with the experimental one. If the phases of two EXAFS signals deviate significantly, especially in the low-k range, one needs to adjust the E0 position for the experimental EXAFS signal. Thus, the whole extraction procedure should be repeated till the two EXAFS signals will be aligned with the accuracy of better than 0.5-1 eV. When the good position of E0 for the EXAFS spectrum of the reference compound is found, the same E0 value should be used for other EXAFS signals under analysis.

As a result of the FEFF calculation for the reference compound, a set of feff****.dat files is also generated for all scattering paths. Each feff****.dat file can be used to generate by the EDAFEFF code a pair of files (amp****.dat and pha****.dat) containing the amplitude and phase shift functions in the format required by the EDAFIT and EDARDF codes. Here the asterisk symbol should be changed by the required scattering path number, for example, amp0001.dat.

After proper selection of the E0 value, one can continue the analysis of the EXAFS spectrum for the system of interest. In many cases, due to the presence of the multiple-scattering contributions at large distances, only analysis of the first coordination shell of the absorber can be rigorously performed, i.e. without further significant approximations.

To do this, one needs first to isolate the contribution of the first shell by performing direct and inverse Fourier transformations (FT) of the experimental EXAFS signal. This can be done by the EDAFT code. One should take care that exactly the same "windows"-function is used in k-space, and the "window"-function in R-space selects precisely the range of the first shell. The overlap with the outer shells in R-space, the noise and the presence of the phase shift must be taken into account to do the isolation procedure properly.

Finally, the isolated first shell EXAFS signal can be best-fitted by the Gaussian or cumulant model using the EDAFIT code, or the first shell RDF function can be directly reconstructed by the EDARDF code. In both cases, the amplitude (amp****.dat) and phase shift (pha****.dat) functions must be provided.


Download the presentation on "Practical approach to EXAFS data analysis" in PDF format.
It explains the methodology of the EDA package and provides many examples.

Download EDA Manual in PDF format.

Download the current version of the EDA package. (It works under Windows only!)
The ZIP archive includes installation instruction, codes, manual, and examples for each code.


Main reference:

A. Kuzmin, EDA: EXAFS data analysis software package, Physica B 208/209 (1995) 175-176.

Please, cite this work in your publications based on the results of the EXAFS analysis by the EDA package.
You can find more references on examples of the EDA application to different systems here.

This page is maintained by Alexei Kuzmin (a.kuzmin@cfi.lu.lv).