Larch is a open-source library and set of applications for processing and analyzing X-ray absorption and fluorescence spectroscopy data and X-ray fluorescence and diffraction image data from synchrotron beamlines. Larch aims to provide a complete analysis toolkit for X-ray absorption fine-structure spectroscopy (XAFS), including both X-ray absorption near-edge spectroscopy (XANES) and extended X-ray absorption fine-structure spectroscopy (EXAFS). Larch also provides visualization and analysis tools for X-ray fluorescence (XRF) spectra and XRF and X-ray diffraction (XRD) images as collected at scanning X-ray microprobe beamlines.

Larch is written in Python and relies on the excellent scientific python libraries including numpy, scipy, h5py, matplotlib. In turn, Larch provides a comprehensive Python library for processing and analyzing X-ray spectroscopy and imaging data. Several Python libraries - xraydb, lmfit, asteval, wxmplot, and pyshortcuts - were orginally built with Larch in mind or as part of Larch and then spun-off as separate libraries that can be used by the broader scientific and programming communities.

There are a few GUI applications written using Larch. These provide user-friendly and interactiv data visualization and analysis tasks for many common X-ray analysis tasks. The most notable of these are XAS Viewer, GSE Map Viewer, and XRF Viewer as described in more detail below.

In addition to being used as a Python library or from the user-friendly GUI applications built, Larch also provides a Python-like macro language - the “Larch language” - for interactive and batch processing. This macro language is essentially an isolated, restricted “mini-Python” (from asteval). This is intended to be both easy to use and complete enough to automate data processing and analysis available as an interactive command-line interface. This command-line interface is available either from the larch or Larch GUI. Compared to Python itself, this macro language is not recommended for serious programming, but it is an important part of the Larch suite, and can be viewed as the bridge between using the GUIs for fully interactive, non-coding analysis, and writing batch-processing analysis scripts.

Most of the GUIs (notably, XAS Viewer) work by generating and executing this “Larch code”, with all of their “real work” done through this macro language. This allows for self-documented and reproducible analysis sessions, and facilitates transitioning from GUI-only analyses to scripting, batch processing, and programmatic analysis of larger data sets. That is, with a few simple changes and added boilerplate code, the Larch macro code saved from a GUI session becomes a Python program. This macro language also allows Larch to be run as a background service so that other processes can use Larch as the analysis engine. The popular Demeter XAFS application suite can use Larch in this way, though the XAS Viewer now contains almost all of the features of Demeter and is much more actively being developed and maintained.

Larch is distribute under an open-source license that is nearly identical to the BSD license. It is under active and open development centered at the GeoScoilEnviroCARS sector of Center for Advanced Radiation Sources at the University of Chicago has been supported by the US National Science Foundation - Earth Sciences (EAR-1128799), and Department of Energy GeoSciences (DE-FG02-94ER14466). In addition, funding specifically for Larch was granted by the National Science Foundation - Advanced CyberInfrastructure (ACI-1450468).

Table of Larch Applications

These applications installed with Larch, in addition to a basic Python library. Here, GUI = Graphical User Interface, CLI = Command Line Interface, and beta indicates a work in progress. The Feff6L and Feff8L codes are the open-source versions of Feff6 and Feff8, written by the Feff Project, and included with Larch by permission and with license to redistrubute.

Application Name



XAS Viewer


XAFS Processing and Analysis: XANES pre-edge peak fitting, linear analysis, PCA/LASSO, EXAFS extraction



simple shell command-line interface

Larch GUI


enhanced command-line interface with data browser

GSE Map Viewer


XRF Map Viewer for GSECARS X-ray microprobe data.

XRF Viewer


Display and Analyze XRF Spectra.



Feff 6 EXAFS calculations



Feff 8 EXAFS calculations (no XANES)

1D XRD Viewer

GUI beta

Display and work with 1-D XRD patterns

2D XRD Viewer

GUI beta

Display XRD images


GUI beta

Display RIXS planes, take profiles

Note that the Dioptas program for viewing and calibrating 2-D XRD patterns, written and maintained by Clemens Prescher has been included with earlier versions of Larch. It is no longer included, but we recommend downloading and installing that for working with XRD image data.

Table of Contents