Reusable PyQt6 browser dialog for Leica LIF, XLEF, and LOF image containers.
Project description
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.
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_lifReadLeicaXLEF.read_leica_xlefReadLeicaLOF.read_leica_lofCreatePreview.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)
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.
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, projection mode, metadata, and a scale bar when pixel size is
available.
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
Known Limitations
read_array()returns a full in-memoryTCZYXNumPy array. For large Leica datasets, preferread_plane()orread_stack()to avoid loading all timepoints and channels at once.- Tests use mocked parser output and fake Leica paths unless local Leica test data is supplied by a downstream project.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file leica_browser_qt-0.3.1.tar.gz.
File metadata
- Download URL: leica_browser_qt-0.3.1.tar.gz
- Upload date:
- Size: 60.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3290219e445a841c03d8768cc7f2a0b2daf72a9b3d9a38a929e79bda3f0ea907
|
|
| MD5 |
0f097095d395b6e2bbdc34e9854077c8
|
|
| BLAKE2b-256 |
6aa552cb1629f70cf6fe3cc22340a6f1b851f47dcdf3ed44de69644adf1e5272
|
File details
Details for the file leica_browser_qt-0.3.1-py3-none-any.whl.
File metadata
- Download URL: leica_browser_qt-0.3.1-py3-none-any.whl
- Upload date:
- Size: 72.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba406dcf9b57e1cee9274a0447c2ce7f7d62fe5e57bc33f3f12a792d03de85fa
|
|
| MD5 |
f8bf46932789a3c56ee929a11a6f6243
|
|
| BLAKE2b-256 |
1d88752cf88cc105a529aabe2a4f82ccb714a05aeefb715dee2735ceba44bc66
|