Skip to main content

Hollowfoot

PyPI badge

A work-flow engine for performing analysis of experimental X-ray data using xraylarch and other domain-specific frameworks.

A hollowfoot analysis is:

Declarative: A typical analysis workflow in hollowfoot is best thought of as a series of steps to be performed on some underlying data. The analysis engine is responsible for executing the steps for you when needed.

Jupyter-first: Many analysis frameworks, like xraylarch, provide tools that are used as part of some larger analysis application. Hollowfoot aims to extend these tools so that they can be used as first-class objects in a jupyter notebook environment.

Documentation

Sphinx-generated documentation for this project can be found here: https://spc-group.github.io/hollowfoot/

Usage

An example workflow for XAFS analysis might look like:

import hollowfoot as hf

analysis = (
    XAFSAnalysis  # What kind of analysis are we doing?
        .from_aps_20bmb("my_data_folder/")  # Load data from disk
        .to_mu("mono-energy", "It", "I0", is_transmission=True)  # Apply reference correction
        .plot_mu()  # Plot all data sets together
        .merge()  # Merge data sets into a single group
        .fit_edge_jump()  # Do some normalization, etc
        .subtract_background()  # Convert from µ(E) to χ(E)
        .plot_mu()  # Plot the single, corrected dataset
    	.summarize()  # Print out a summary of the steps that have been taken
)

Notice how each line of the previous code snippet describes a concise step of analysis. These steps can be re-ordered or commented out, making for easy comparisons between analysis strategies.

Installation

The following will download the package and load it into the python environment.

$ pip install hollowfoot

Running the Tests

$ uv run --dev pytest

File Format Support

XAS Data Interchange Format (XDI)

Hollowfoot includes an Xarray backend for loading .xdi files.

The easiest way to import XDI files is with xarray.open_dataset():

import xarray as xr

dataset = xr.open_dataset("example.xdi")

It is also possible to load XDI data from a string using hollowfoot.xdi.load():

import hollowfoot as hf

with open("tests/example.xdi") as fp:
    dataset = hf.xdi.load(fp.read())

It is also possible to convert a dataset back to XDI:

# This example overwrites existing files, be careful!
with open("new_file.xdi", mode='w') as fp:
    fp.write(hf.xdi.dump(dataset))

Release files for hollowfoot 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hollowfoot 0.5.1
File Size Uploaded
hollowfoot-0.5.1.tar.gz 534.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hollowfoot 0.5.1
File Interpreter ABI Platform
hollowfoot-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 546.6 kB

Release files / hollowfoot-0.5.1.tar.gz

Download URL hollowfoot-0.5.1.tar.gz
Size 534.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1c1681d2211a6cfb87b9120c4df2de1fcf9455d14a5ba68586e55bf54bee0326
BLAKE2b-256 checksum
How to use checksums
c8bf8916b478c5950e92bb2cec57362a59d99646ce7af93cfcabf4a65e8280bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Release files / hollowfoot-0.5.1-py3-none-any.whl

Download URL hollowfoot-0.5.1-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b07e243ffdf5acaf26d6d2943b64ae6cb0bd09e079f4a8ed5e07969c75233d8
BLAKE2b-256 checksum
How to use checksums
6e26b3e04f65f8759ca27737168feaa2ea653e0a9bd03fc2ea3259ce2a0527c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page