Skip to main content

ntnda-qt-viewer

A lightweight Qt-based live image viewer for EPICS NTNDArray PVs, built on pyqtgraph and p4p.

Features

  • Live streaming from any NTNDArray PVAccess channel
  • Decoding of compressed NTNDArray payloads using Python codec libraries
  • Supports 8–64 bit signed/unsigned integers and 32/64-bit floats
  • Draggable crosshair lines with linked horizontal and vertical pixel profile plots
  • Scroll-wheel zoom, right-drag zoom-to-rectangle, double-click to reset
  • Bottom ROI controls bar with per-ROI Set button and Enable checkbox
  • Set mode initializes ROI from a right-drag rectangle and then auto-exits
  • Live pixel readout (x, y, value) under the cursor
  • Connection status indicator and framerate display

Installation

pip install ntnda-qt-viewer

A Qt backend is also required. Install one via the gui dependency group or separately:

pip install PySide6

To support compressed NTNDArray codecs (zlib, blosc, lz4/lz4hdf5, bslz4, jpeg) install optional codec dependencies:

pip install "ntnda-qt-viewer[codecs]"

Usage

Launch from the command line with an optional top-level prefix:

ntnda-qt-viewer
ntnda-qt-viewer DEV:XSPD1: --pva-suffix Pva1:
ntnda-qt-viewer DEV:XSPD1: --roi-suffixes ROI1: ROI2: ROI3: ROI4:

Image PV is formed as <prefix><pva-suffix>Image.

ROI PVs are written as <prefix><roi-suffix>{MinX,MinY,SizeX,SizeY}.

Or embed the widget in your own Qt application:

from ntnda_qt_viewer import NTNDViewerWidget

widget = NTNDViewerWidget(
    prefix="DEV:XSPD1:",
    pva_suffix="Pva1:",
    roi_suffixes=["ROI1:", "ROI2:", "ROI3:", "ROI4:"],
)
widget.show()

Development

This project uses pixi for environment management:

pixi install
pixi run lint
pixi run test

Environments for Python 3.11–3.14 are available (py311, py312, py313, py314).

License

BSD 3-Clause. See LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ntnda_qt_viewer-0.0.1.tar.gz (145.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ntnda_qt_viewer-0.0.1-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file ntnda_qt_viewer-0.0.1.tar.gz.

File metadata

  • Download URL: ntnda_qt_viewer-0.0.1.tar.gz
  • Upload date:
  • Size: 145.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ntnda_qt_viewer-0.0.1.tar.gz
Algorithm Hash digest
SHA256 2f8e2583bb78091d8347c028c0b94dafd89ad789ce47929887ae1acc696648a8
MD5 87ec1ef8659ad86edd02037b37c20068
BLAKE2b-256 7b0a65ee3c6d00eaefb54c74cf0b9d4c68130db158834a6c69796723b692bb05

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntnda_qt_viewer-0.0.1.tar.gz:

Publisher: publish-pypi.yml on jwlodek/ntnda-qt-viewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ntnda_qt_viewer-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: ntnda_qt_viewer-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ntnda_qt_viewer-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17fb42fce5a63a77e53d682755132bd995136d1ef45bed97b032562946d84423
MD5 e250529caeeb568ba098e0ac6799f2e9
BLAKE2b-256 8978ede4596c8d341cb500c0407dfbaa02800efba023e3d666e0df3e947dcbc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntnda_qt_viewer-0.0.1-py3-none-any.whl:

Publisher: publish-pypi.yml on jwlodek/ntnda-qt-viewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page