| Larch: Data Analysis Tools for X-ray Spectroscopy

# 14. XAFS Analysis

One of the primary motivations for Larch was processing XAFS data. Larch was originally conceived to be version 2 of Ifeffit [Newville (2001)a], replacing and expanding all the XAFS analysis capabilities of that package. XAFS Analysis can generally be broken into a few separate steps: This replacement is essentially complete insofar as all the main functionality of Ifeffit is available in Larch. There may still be a few minor features of Ifeffit that are not yet available, and some functionality to port from Athena [Ravel and Newville (2005)] back to the core library. In addition, there are some minor differences in implementation details, so that slightly different numerical results may be obtained. Importantly, several features are available with Larch that were not available with Ifeffit 1.2 and some small errors in Ifeffit 1.2 have been fixed.

> 1. Reading in raw data.

> 2. Making corrections to the data, and converting to \(\mu(E)\)

> 3. Pre-edge background removal and normalization.

> 4. Interpreting normalized \(mu(E)\) as XANES spectra

> 5. Post-edge background removal, conversion to \(\chi(k)\)

> 6. XAFS Fourier Transform to \(\chi(R)\)

> 7. Reading and processing FEFF Paths from external files.

> 8. Fitting XAFS \(\chi(k)\) to a sum of FEFF paths.

The XAFS-specific functions in Larch follow these general steps. They are all kept in the `_xafs` Group, which can be easily accessed, as this is in the default search path.

synopsis:

  Basic XAFS Functions

- 14.1. XAFS Functions: Overview and Naming Conventions
  - 14.1.1. Naming conventions for XAFS arrays
  - 14.1.2. Plotting Macros for XAFS
  - 14.1.3. Utility Functions for XAFS
- 14.2. XAFS: Pre-edge Subtraction, Normalization, and data treatment
  - 14.2.1. The `find_e0()` function
  - 14.2.2. The `pre_edge()` function
  - 14.2.3. Pre-Edge Subtraction Example
  - 14.2.4. The MBACK algorithm
  - 14.2.5. Pre-edge baseline subtraction
  - 14.2.6. Over-absorption Corrections
  - 14.2.7. Spectral deconvolution
- 14.3. XANES Analysis: Linear Methods, Pre-edge Peak Fitting
  - 14.3.1. Pre-edge Peak fitting
  - 14.3.2. Linear Combination Analysis
  - 14.3.3. Principal Component Analysis
  - 14.3.4. PCA example
- 14.4. XAFS: Post-edge Background Subtraction
  - 14.4.1. The `autobk()` function
  - 14.4.2. The AUTOBK Algorithm
  - 14.4.3. Examples
- 14.5. XAFS: Fourier Transforms for XAFS
  - 14.5.1. Overview of XAFS Fourier transforms
  - 14.5.2. Forward XAFS Fourier transforms (\(k{\rightarrow}R\))
  - 14.5.3. Reverse XAFS Fourier transforms (\(R{\rightarrow}q\))
  - 14.5.4. `ftwindow()`: Generating Fourier transform windows
  - 14.5.5. Catalog of Fourier transform window
  - 14.5.6. Examples: Forward XAFS Fourier transforms
  - 14.5.7. Examples: Reverse XAFS Fourier transforms, Fourier Filtering
- 14.6. XAFS: Wavelet Transforms for XAFS
  - 14.6.1. `cauchy_wavelet()`
  - 14.6.2. Wavelet Example
- 14.7. XAFS: Reading and using Feff Paths
  - 14.7.1. Running Feff
  - 14.7.2. `feffpath()` and FeffPath Groups
  - 14.7.3. `path2chi()` and `ff2chi()`: Generating \(\chi(k)\) for a FeffPath
  - 14.7.4. The _feffdat Group: Full Details of the Feff.Dat File
  - 14.7.5. The EXAFS Equation using Feff and FeffPath Groups
  - 14.7.6. Models for Calculating \(\sigma^2\)
  - 14.7.7. Example: Reading a Feff file
  - 14.7.8. Example: Adding Feff files
  - 14.7.9. Example: Using Path Parameters when adding Feff files
- 14.8. XAFS: Fitting XAFS to Feff Paths
  - 14.8.1. The Feffit Strategy for Modeling EXAFS Data
  - 14.8.2. Fit statistics and goodness-of-fit meassures for `feffit()`
  - 14.8.3. The Feffit functions in Larch
  - 14.8.4. `feffit_transform()` and the Feffit Transform Group
  - 14.8.5. `feffit_dataset()`
  - 14.8.6. `feffit()`
  - 14.8.7. `feffit_report()`
  - 14.8.8. Example 1: Simple fit with 1 Path
  - 14.8.9. Example 2: Fit 1 dataset with 3 Paths
  - 14.8.10. Example 3: Fit 3 datasets with 1 Path each
  - 14.8.11. Example 4: Measuring Coordination number
  - 14.8.12. Example 5: Comparing Fits in different Fit Spaces
  - 14.8.13. Example 6: Testing EXAFS sensitivity to \(Z\)
- 14.9. XAFS: Computing anomalous scattering factors from XAFS data
  - 14.9.1. Overview of the diffKK implementation
  - 14.9.2. diffKK on L edge data