Python tools for small-angle scattering data analysis.
Project description
pyIrena
Coded by Claude from SAXS_IgorCode Irena. Planned, defined, debugged, and validated by Jan Ilavsky.
Python tools for small-angle scattering (SAS) data analysis. A port of the Igor Pro Irena package. Includes interactive GUI tools for fitting, modeling, data merging, and visualization of SAXS/SANS/USAXS data.
Current release: v0.6.4 (public beta)
Installation
From PyPI (recommended):
pip install pyirena[gui]
This installs pyirena with all GUI dependencies (PySide6, pyqtgraph, etc.). For the
core library only (no GUI), use pip install pyirena.
From source (for development):
git clone https://github.com/jilavsky/pyirena.git
cd pyirena
pip install -e ".[gui]"
With conda:
git clone https://github.com/jilavsky/pyirena.git
cd pyirena
conda env create -f environment.yml
conda activate pyirena
See docs/installation.md for full details, troubleshooting, and platform notes.
Running the GUI
pyirena-gui
This launches the Data Selector, the main entry point for all analysis tools. See docs/gui_quickstart.md for a walkthrough.
Individual tools can also be launched directly:
| Command | Tool |
|---|---|
pyirena-gui |
Data Selector (main entry point) |
pyirena-viewer |
Data Explorer |
pyirena-modeling |
Modeling tool (standalone) |
pyirena-datamerge |
Data Merge tool (standalone) |
pyirena-contrast |
Scattering Contrast Calculator |
Analysis Tools
Modeling
Parametric forward-modeling of SAS data. Combine up to 10 populations, each of which can be a Size Distribution, Unified Fit Level, or Diffraction Peak. Fits the combined model to experimental data using least-squares optimization.
- 5 distribution functions: Gaussian, LogNormal, LSW, Schulz-Zimm, Ardell
- 9 form factors: Sphere, Spheroid, Cylinder (aspect ratio / fixed length), Core-Shell Sphere and Spheroid (by core R / shell t / total R)
- 2 structure factors: Born-Green interferences, Hard Sphere (Percus-Yevick)
- Monte Carlo uncertainty estimation
- Modeling GUI guide
Unified Fit
Beaucage hierarchical model (1995, 1996) with 1-5 structural levels, each combining Guinier and power-law contributions. Optional Born-Green correlation function.
Size Distribution
Indirect Fourier transform to recover particle size distributions from SAS data. Four inversion methods: MaxEnt, Regularization, TNNLS, and Monte Carlo.
Simple Fits
13 direct analytical models: Guinier, Guinier-Porod, Porod, Sphere, Spheroid, Debye-Bueche, Treubner-Strey, Power Law, and more. Each with linearization plots and Monte Carlo uncertainty estimation.
WAXS Peak Fit
Fit diffraction peaks (Gaussian, Lorentzian, Pseudo-Voigt, Log-Normal) on linear
I vs Q scale. Auto-detect peaks via Savitzky-Golay + scipy.signal.find_peaks.
Simultaneous background fitting (constant, linear, cubic, or 5th-order polynomial).
Data Merge
Merge two SAS datasets (e.g., SAXS + WAXS) onto a common Q scale. Optimizes scale factor, flat background, and optional Q-shift using Nelder-Mead.
Data Explorer
Browse NXcanSAS HDF5 files, inspect raw data and analysis results, extract and plot datasets, and export to Igor Pro h5xp format. Supports all pyIrena result types (Unified Fit, Sizes, Simple Fits, WAXS Peaks, Modeling).
Scattering Contrast Calculator
Look up X-ray and neutron scattering length densities for materials by chemical formula. Computes contrast (Delta-rho-squared) between two materials.
Data Selector
Central GUI panel for managing data files and launching analysis tools. Load HDF5 files, select datasets, tabulate results across files, and generate reports.
Batch Scripting API
All analysis tools can be run headlessly from Python scripts or JSON configuration files:
from pyirena.batch import fit_pyirena
results = fit_pyirena(
data_file='sample.h5',
config_file='pyirena_config.json',
)
Individual functions: fit_unified, fit_sizes, fit_simple, fit_waxs,
fit_modeling, merge_data.
See docs/batch_api.md for the full scripting guide.
NXcanSAS I/O
All data and results are stored in HDF5 files using the NXcanSAS format. Fit results are saved alongside raw data, making files self-contained and shareable.
Documentation
| Topic | File |
|---|---|
| Installation | docs/installation.md |
| Quick start (GUI) | docs/gui_quickstart.md |
| Modeling GUI guide | docs/modeling_gui.md |
| Unified Fit GUI guide | docs/unified_fit_gui.md |
| Unified Fit features & parameters | docs/unified_fit_features.md |
| Size Distribution methods | docs/sizes_methods.md |
| Simple Fits GUI guide | docs/simple_fits_gui.md |
| WAXS Peak Fit GUI guide | docs/waxs_peakfit_gui.md |
| Data Merge GUI guide | docs/data_merge_gui.md |
| Data Explorer guide | docs/hdf5_viewer_gui.md |
| Contrast Calculator guide | docs/scattering_contrast_gui.md |
| NXcanSAS file format | docs/NXcanSAS_UnifiedFit_Format.md |
| Batch fitting API | docs/batch_api.md |
| Usage guide (scripting) | docs/usage_guide.md |
| Developer: adding form factors | docs/developer_adding_form_factors.md |
| Developer: adding structure factors | docs/developer_adding_structure_factors.md |
| Testing | docs/testing.md |
| Distribution / packaging | docs/distribution.md |
| Contributing | CONTRIBUTING.md |
| Changelog | CHANGELOG.md |
License
MIT -- see LICENSE.
Contact
- Author: Jan Ilavsky -- ilavsky@aps.anl.gov
- Affiliation: X-ray Science Division, Argonne National Laboratory
- Issues: https://github.com/jilavsky/pyirena/issues
Project details
Release history Release notifications | RSS feed
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 pyirena-0.6.5.tar.gz.
File metadata
- Download URL: pyirena-0.6.5.tar.gz
- Upload date:
- Size: 612.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91b1bcab26fe493db0f5c8d59512f0d38ffe358d5046db2487a89e2233b7cc9c
|
|
| MD5 |
27ea1e80b7b41607fa05fa8c07a031eb
|
|
| BLAKE2b-256 |
4d1be7f67e30da4cb812f0deab30d328c9851d15e7aa3df0e0fab55791717c26
|
File details
Details for the file pyirena-0.6.5-py3-none-any.whl.
File metadata
- Download URL: pyirena-0.6.5-py3-none-any.whl
- Upload date:
- Size: 617.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86d65a3fc1de6f87574ce8834717aaac089772c7c20f816fefaff2869dc07f83
|
|
| MD5 |
096bab5f4df8865e99afebf679bc49c1
|
|
| BLAKE2b-256 |
e9e1cf5e7244ceb8c287725f54fc532e32d3843a1890c09a82ae78859aa1ed49
|