A kiosk-mode operator application for running focused ultrasound (LIFU) sonications using pre-validated preset settings. Extracted from openlifu-test-app so the operator-facing UX can iterate independently of the engineering test bench.
- Presents a single operator page (no sidebar, no tab switching).
- Loads validated treatment presets from
preset_settings/<context>/. - Drives the LIFU TX/HV stack through
lifu.lifu_connector.LIFUConnector. - Persists session settings (operator name, session id, log folder) per machine.
- Captures a per-run log file covering the connector, SDK, and any uncaught Python tracebacks for support / audit.
# Real hardware, vet context (default)
python main.py
# Simulated device, vet context
python main.py --simulate
# Explicit context
python main.py --context diathermy
# Lab-supply harness
python main.py --hv-test-mode
# Verbose logging
python main.py --simulate --loglevel debugopenlifu-operator-interface/
├── main.py # kiosk entry point
├── main.qml # window chrome + OperatorInterface.qml loader
├── version.py
├── pyproject.toml
├── assets/ # fonts, images, icons
├── components/ # WindowMenu + icon buttons
├── lifu/ # LIFUConnector + mixins + simulated stack
├── logs/ # run-log parser
├── pages/
│ └── OperatorInterface.qml
├── plot/ # ultrasound plot generation (used by connector)
├── preset_settings/ # per-context treatment presets
└── rthooks/ # PyInstaller runtime hooks
This repo was scaffolded from the operator-mode subset of
openlifu-test-app. The lifu/ Python package and shared components/
files are currently duplicated. Long-term, app-agnostic parts of the
connector (state machine, session logger, thermal policy, run-progress
state machine, preset loader, HV-enable-mode policy) are candidates for
promotion into openlifu_sdk.ui so both apps consume them from one
place.
These mixins were copied from the test app but are not exercised by
OperatorInterface.qml. They can be removed once we're confident no
operator-mode code path reaches them:
lifu/lifu_testing.py— verification tests (Testing page)lifu/lifu_console.py— HV diagnostics (Console page)lifu/lifu_settings.py— firmware update / test reports (Settings page)
Some methods in lifu/lifu_transmitter.py and lifu/lifu_controller.py
are likewise unused by the operator page and could be trimmed.
- Python 3.10+
- PyQt6 6.7+
openlifu-sdk >= 1.0.7