A lightweight PyQt application for browsing and exporting nano-/micro-ARPES 4D
datasets from synchrotron beamlines. Current file support is focused on
ANTARES / SOLEIL NeXus-HDF5 data with the expected
salsaentry_1/scan_data/... layout.
The app is built for quick inspection: select a point on the spatial map, view
the local ARPES spectrum, optionally display the spectrum in k_parallel, and
export the map, spectrum, selected 4D region, or full dataset.
For regular use, install from PyPI:
pip install nano-arpes-browser
nano-arpes-browserWith uv:
uv tool install nano-arpes-browser
nano-arpes-browserRequires Python 3.10 or newer.
- Open an ANTARES / SOLEIL
.nxs,.h5, or.hdf5file. - Use the crosshair on the spatial map to choose a position.
- Inspect the corresponding angle-energy ARPES spectrum.
- Optionally enable spatial integration or k-space display.
- Export the current map, current spectrum, selected region, or full dataset.
Internal data shape is:
(y, x, angle, energy)
The spatial image is displayed as rot90(sum over angle and energy). The raw
ANTARES X index is reversed internally; conversion between display X and data X
is handled by the dataset model.
Main views:
- Spatial Map: integrated intensity over the full spectrum or selected ROI.
- ARPES Spectrum: spectrum at the selected point or integrated spatial box.
- Interactive spatial map crosshair.
- ARPES spectrum viewer with rectangular ROI selection.
- ROI-based spatial map updates in angle-energy or k-energy mode.
- Optional spatial integration around the current position.
- Basic angle to
k_parallelconversion. - CSV and Igor Pro
.itxexport paths.
- Spatial Map: current displayed map as
.csvor Igor.itx. - Spectrum: current displayed spectrum as
.csvor Igor.itx. - Selected Region: compact Igor
.itxexport of a spatial subset, includingregion_4d,region_spatial,region_spectrum, axes, and center position. - Full Dataset: Igor
.itxexport of the full cube and axes. Use only when you need the entire dataset.
K-space display uses the simple 1D relation:
k_parallel [A^-1] = 0.5123167 * sqrt(E_kin [eV]) * sin(theta)
The zero-angle offset can be adjusted in the GUI. Full geometry correction, including sample/analyzer tilt, is not yet included.
Currently supported loader:
- ANTARES / SOLEIL NeXus-HDF5 files with
salsaentry_1/scan_data/...paths.
If another beamline or HDF5 convention is needed, include the file tree, axis metadata locations, and geometry assumptions when opening an issue.
git clone https://github.com/senkovskiy/nano-arpes-browser
cd nano-arpes-browser
make install
make runUseful commands:
make test # run pytest
make lint # run Ruff
make format # format with Ruff
make typecheck # run mypy
make build # build package- Architecture and data-flow diagrams: docs/ARCHITECTURE_DIAGRAM.md
Qt on Linux may require the xcb platform plugin dependencies:
sudo apt update
sudo apt install -y libxcb-cursor0If Qt still fails to start, also install:
libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0.
MIT. See pyproject.toml.
