Hopki is a desktop app and command-line toolkit for analyzing split Hopkinson bar experiments (compression and tension) — turning raw oscilloscope captures into dispersion-corrected stress–strain curves and publication-ready figures.
It is a from-scratch Python reimplementation of a legacy MATLAB analysis suite, validated to within 1e-8 of the original's reference outputs.
- WFT → FLT conversion of Nicolet oscilloscope binary captures (
wft-to-csv). - Two-bar analysis pipeline: pulse windowing, frequency-domain dispersion correction (Bancroft phase velocity), reflected-pulse alignment, and engineering/true stress–strain.
- Interactive desktop GUI (PySide6 + pyqtgraph): load an experiment, pick the pulse window and bar geometry by dragging, toggle polarity / Poisson ratio, and view every derived signal live.
- Curve cleanup (toe correction, smoothing, true-strain conversion) and a publication-figure builder (matplotlib / SciencePlots export to PNG/PDF).
Grab the latest build for your OS from the Releases page:
| OS | Asset | Run |
|---|---|---|
| macOS | Hopki-macos-*.zip |
unzip → open Hopki.app |
| Windows | Hopki-windows-*.zip |
unzip → run Hopki.exe |
| Linux | Hopki-linux-*.tar.gz |
extract → ./Hopki |
The binaries are unsigned, so the OS may warn on first launch:
- macOS — right-click
Hopki.app→ Open (orxattr -dr com.apple.quarantine Hopki.app). - Windows — SmartScreen → More info → Run anyway.
Hopki uses uv and Python 3.12.
uv sync --extra gui # GUI + analysis; omit --extra gui for a CLI-only install
uv run hopki-gui # launch the desktop appCommand-line entry points (add --help to any for the full option list):
uv run wft-to-csv input.WFT out.FLT # Nicolet .WFT -> legacy .FLT export
uv run twobar-analyze EXP_DIR --out OUTDIR # run the analysis pipeline on an experiment dir
uv run figcorr CURVE --cut 256 --zero # curve cleanup (toe correction, smoothing, …)A full user guide is bundled at docs/index.html — open it in any browser.
The fixtures under tests/ include representative recorded signals from real split Hopkinson
bar experiments, released here for regression testing. Tests use the stdlib unittest runner;
address modules by their dotted path (GUI tests run headless):
uv run python -m unittest tests.analysis.test_twobar tests.Converter.test_wft_to_csv
QT_QPA_PLATFORM=offscreen uv run python -m unittest tests.gui.test_controllerBinaries are produced with Nuitka via a single cross-platform script (the release workflow runs it on a macOS/Windows/Linux matrix for each tagged version):
uv sync --extra gui --extra packaging
uv run python packaging/build.pyMIT — see LICENSE.
