Ultra-fast Python package for X-ray optical properties calculation with CXRO/NIST data, CLI tools, and synchrotron applications
Project description
XRayLabTool
Ultra-fast Python package and CLI for calculating X-ray optical properties of materials using CXRO/NIST atomic scattering factor data. Supports NumPy and JAX backends for CPU/GPU acceleration.
Installation
Using uv (Recommended)
# Core package
uv pip install xraylabtool
# With JAX backend for GPU acceleration
uv pip install "xraylabtool[jax]"
# With matplotlib for publication plots
uv pip install "xraylabtool[plots]"
Using pip
pip install xraylabtool
Development
git clone https://github.com/imewei/pyXRayLabTool.git
cd pyXRayLabTool
uv sync
Quick Start
Python API
import xraylabtool as xlt
# Single material at 10 keV
result = xlt.calculate_single_material_properties("SiO2", 10.0, 2.2)
print(f"Critical angle: {result.critical_angle_degrees[0]:.3f}°")
print(f"Attenuation length: {result.attenuation_length_cm[0]:.2f} cm")
# Multiple materials comparison
materials = {"SiO2": 2.2, "Si": 2.33, "Al2O3": 3.95, "C": 3.52}
results = xlt.calculate_xray_properties(
list(materials.keys()), 10.0, list(materials.values())
)
for formula, r in results.items():
print(f"{formula:6}: θc = {r.critical_angle_degrees[0]:.3f}°")
Command-Line Interface
xraylabtool calc SiO2 -e 10.0 -d 2.2 # Single material
xraylabtool calc Si -e 5-15:11 -d 2.33 -o out.csv # Energy sweep
xraylabtool convert energy 8.048,10.0 --to wavelength
xraylabtool formula Al2O3 # Formula analysis
xraylabtool bragg -d 3.14,2.45 -e 8.048 # Bragg angles
xraylabtool batch materials.csv -o results.csv # Batch processing
xraylabtool completion install # Shell tab-completion
GUI
python -m xraylabtool.gui
Single-material analysis and multi-material comparison with interactive plots and CSV/PNG export.
Calculated Properties
| Property | Field | Unit |
|---|---|---|
| Dispersion coefficient | dispersion_delta |
dimensionless |
| Absorption coefficient | absorption_beta |
dimensionless |
| Scattering factors | scattering_factor_f1, f2 |
electrons |
| Critical angle | critical_angle_degrees |
degrees |
| Attenuation length | attenuation_length_cm |
cm |
| Scattering length density | real_sld_per_ang2, imaginary_sld_per_ang2 |
Å⁻² |
All properties are returned as NumPy arrays in the XRayResult dataclass, supporting single energies or energy sweeps.
Backend Selection
import xraylabtool as xlt
# Switch to JAX for JIT-compiled GPU acceleration
xlt.set_backend("jax")
# Switch back to NumPy (default)
xlt.set_backend("numpy")
Scientific Background
Calculations use Henke, Gullikson, and Davis atomic scattering factor tabulations (0.03–30 keV):
- Refractive index: n = 1 - δ - iβ
- Critical angle: θc = √(2δ)
- Attenuation: Beer-Lambert law with μ = 4πβ/λ
Documentation
Full documentation: pyxraylabtool.readthedocs.io
Development
uv sync # Install dependencies
uv run pytest # Run tests
uv run ruff check . # Lint
uv run ruff format . # Format
uv run sphinx-build docs docs/_build # Build docs
make test # Or use Makefile shortcuts
Citation
@software{xraylabtool,
title = {XRayLabTool: High-Performance X-ray Optical Properties Calculator},
author = {Wei Chen},
url = {https://github.com/imewei/pyXRayLabTool},
version = {0.4.2},
year = {2024--2026}
}
License
MIT License. See LICENSE for details.
Acknowledgments
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xraylabtool-0.4.2.tar.gz.
File metadata
- Download URL: xraylabtool-0.4.2.tar.gz
- Upload date:
- Size: 556.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45cd6b727bc0d1fb9fe76763ce2d67cb3681570360abe876bec107e7ced87a67
|
|
| MD5 |
2193e09f1aaf3fa3d61d44d6127af9b7
|
|
| BLAKE2b-256 |
45738d5f85d94fb9f1343e90977faca541c115bbec671687f8e433a6f74964f9
|
Provenance
The following attestation bundles were made for xraylabtool-0.4.2.tar.gz:
Publisher:
publish.yml on imewei/pyXRayLabTool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xraylabtool-0.4.2.tar.gz -
Subject digest:
45cd6b727bc0d1fb9fe76763ce2d67cb3681570360abe876bec107e7ced87a67 - Sigstore transparency entry: 1412873303
- Sigstore integration time:
-
Permalink:
imewei/pyXRayLabTool@281d3d9421611bfe03f04c03784c113327ee5b11 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/imewei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@281d3d9421611bfe03f04c03784c113327ee5b11 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file xraylabtool-0.4.2-py3-none-any.whl.
File metadata
- Download URL: xraylabtool-0.4.2-py3-none-any.whl
- Upload date:
- Size: 641.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38d7eb5b3c75808aa9c8ba1e60c66e62e70ab7fdd788332bcf9bbe53f4a11537
|
|
| MD5 |
83a47a788f5cc5a16041834512d2bb43
|
|
| BLAKE2b-256 |
b918141a64dae2263a3c62e68eb682623d5822ebb5c3dc51ebcc3ebface52970
|
Provenance
The following attestation bundles were made for xraylabtool-0.4.2-py3-none-any.whl:
Publisher:
publish.yml on imewei/pyXRayLabTool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xraylabtool-0.4.2-py3-none-any.whl -
Subject digest:
38d7eb5b3c75808aa9c8ba1e60c66e62e70ab7fdd788332bcf9bbe53f4a11537 - Sigstore transparency entry: 1412873418
- Sigstore integration time:
-
Permalink:
imewei/pyXRayLabTool@281d3d9421611bfe03f04c03784c113327ee5b11 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/imewei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@281d3d9421611bfe03f04c03784c113327ee5b11 -
Trigger Event:
workflow_dispatch
-
Statement type: