Skip to main content

leica-browser-qt

Reusable PyQt6 dialog for browsing Leica .lif, .xlef, and standalone .lof files and returning selected image contexts to another application.

The browser is focused on browsing, previewing, metadata inspection, selection, and direct NumPy pixel reads. Conversion to OME-TIFF remains outside this package.

Large unmerged tilescans and Leica multiposition data are exposed as an S axis. The browser can either pin one S position before returning a context, or leave S as All so the viewer keeps interactive control.

Install

pip install -e .

The Leica browser and preview backend is bundled from the browser/preview parts of NL-BioImaging/ConvertLeica-Docker. It uses the same underlying reader and preview functions that ConvertLeicaQT.py uses:

  • ReadLeicaLIF.read_leica_lif
  • ReadLeicaXLEF.read_leica_xlef
  • ReadLeicaLOF.read_leica_lof
  • CreatePreview.create_preview_image

Single Select

from PyQt6.QtWidgets import QApplication
from leica_browser_qt import LeicaBrowserDialog

app = QApplication([])
ctx = LeicaBrowserDialog.select_image_context(roots=[r"D:\data"])
if ctx is not None:
    print(ctx.name, ctx.container_path, ctx.internal_path)
    print("size_s=", ctx.size_s, "selected_s=", ctx.selected_s)

Multi Select

from PyQt6.QtWidgets import QApplication
from leica_browser_qt import LeicaBrowserDialog

app = QApplication([])
contexts = LeicaBrowserDialog.select_image_contexts(
    roots=[r"D:\data\run1.lif", r"D:\data\experiment.xlef"],
)
for ctx in contexts:
    print(ctx.name, ctx.container_path, ctx.internal_path)

CLI

leica_browser D:\data
leica_browser file1.lif file2.xlef file3.lof --multi
python -m leica_browser_qt.cli file1.lof --single
leica_viewer
run_viewer.cmd
python -m leica_browser_qt.leica_viewer

The CLI prints selected contexts as JSON.

Returned contexts now include:

  • size_s: number of Leica stage or tile positions when available.
  • selected_s: the browser-selected fixed S position, or None when the browser was left at All.

Leica Viewer

This package includes an OMERO-viewer-style Leica viewer adapted from omero-browser-qt. It opens the Leica browser, lets you choose one image, and shows a zoomable microscopy preview with channel toggles, contrast controls, Z/T controls, optional S controls, projection mode, metadata, and a scale bar when pixel size is available.

Browser and viewer S behavior:

  • All in the browser keeps the full S dimension available and the viewer shows an S slider for interactive browsing.
  • Fixed in the browser pins one S position on the returned context and the viewer opens that position directly.
  • Browser preview refresh uses the selected S position, so changing the browser S slider changes the preview image.

Direct Pixel Reads

The public read API accepts an optional s argument:

handle = ctx.open()

plane = handle.read_plane(z=0, c=0, t=0, s=3)
stack = handle.read_stack(c=0, t=0, s=3)
arr = handle.read_array(s=3)

If s is omitted:

  • a browser-pinned ctx.selected_s is used when present
  • otherwise the default remains s=0
from PyQt6.QtWidgets import QApplication
from leica_browser_qt import LeicaViewerWindow

app = QApplication([])
win = LeicaViewerWindow()
win.show()
app.exec()

cideconvolve-style Integration

from leica_browser_qt import LeicaBrowserDialog


def open_leica_single(parent):
    ctx = LeicaBrowserDialog.select_image_context(parent=parent)
    if ctx is None:
        return None
    handle = ctx.open()
    return handle.read_array(), ctx.metadata  # TCZYX NumPy array


def open_leica_multiple(parent):
    contexts = LeicaBrowserDialog.select_image_contexts(parent=parent)
    results = []
    for ctx in contexts:
        handle = ctx.open()
        results.append((handle.read_array(), ctx.metadata))
    return results

If your application wants to respect the browser's fixed S choice, simply use the returned context normally. If it wants to override that choice, pass s= explicitly to read_plane(), read_stack(), or read_array().

Known Limitations

  • read_array() returns a full in-memory TCZYX NumPy array. For large Leica datasets, prefer read_plane() or read_stack() to avoid loading all timepoints and channels at once.
  • S support selects one Leica position at a time. It does not stitch or merge tiles into a mosaic.
  • Tests use mocked parser output and fake Leica paths unless local Leica test data is supplied by a downstream project.

Download files

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

Source Distribution

leica_browser_qt-0.5.1.tar.gz (65.8 kB view details)

Uploaded Source

Built Distribution

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

leica_browser_qt-0.5.1-py3-none-any.whl (78.0 kB view details)

Uploaded Python 3

File details

Details for the file leica_browser_qt-0.5.1.tar.gz.

File metadata

  • Download URL: leica_browser_qt-0.5.1.tar.gz
  • Upload date:
  • Size: 65.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for leica_browser_qt-0.5.1.tar.gz
Algorithm Hash digest
SHA256 7bd44fabf5b58c9b6a153c28a919e38e34df7eac572774dd7c0b2445f54c8103
MD5 c30c40d3d95cd8401ec1e7985545f024
BLAKE2b-256 aaf716d5de907c8f85d701945479c8d11b02800810caa98de24549c87360dc11

See more details on using hashes here.

File details

Details for the file leica_browser_qt-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for leica_browser_qt-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 04b01522febddc2db50fdaeaf52336fad8f10910f5169f349d7c7a4d1cb6ae9e
MD5 c2e25b69a8516f18fedabc5afdacdc2c
BLAKE2b-256 2f5714c7f82fb1a33717947bb94965e54b7f84492d6d19f416d847c0910beefe

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.2

2 files

This release

0.5.1 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page