Skip to main content

flimkit-zstack-explorer

3D intensity and FLIM volume explorer for FLIMKit z-stacks. Takes a z-stack you've already loaded or fitted in FLIMKit, stacks its per-slice intensity and lifetime maps into (Z, Y, X) volumes, saves them as an OME-Zarr store, and opens a popout 3D viewer with the two volumes side by side.

What it does

  • Adds Tools > 3D Z-stack Explorer... to FLIMKit.
  • Only does anything once a z-stack is loaded (FOV mode > Z-stack); otherwise it tells you to load one first.
  • Walks every slice in the loaded z-stack through the FOV preview panel's own display code (the same path used when you drag the z-slider), so the volume matches what's on screen slice by slice.
  • Saves a 2-channel OME-Zarr store (channel 0 = intensity, channel 1 = lifetime in ns, NaN where a slice had no per-pixel fit).
  • Opens a PyVista volume viewer in its own process — intensity on the left, FLIM lifetime on the right, camera-linked — so it doesn't compete with FLIMKit's Tkinter UI for the main thread.

Install

pip install 'flimkit-zstack-explorer[gui]'

Quote it — in zsh (macOS's default shell), an unquoted [gui] is a glob pattern and the command fails with "no matches found" without installing anything.

[gui] adds PyVista, which does the actual 3D rendering. Without it, the volume-building and OME-Zarr saving still work, but the viewer step will tell you it's missing and how to install it.

Install it into the same Python environment FLIMKit itself runs from — a separate environment or a different python/pip on your PATH will install cleanly but leave FLIMKit unable to see it. Verify with:

python -c "import flimkit_zstack_explorer, pyvista; print('ok')"

run from the same terminal you launch FLIMKit from.

FLIMKit discovers this through the flimkit.plugins entry point, so there's nothing else to wire up. On start it appears under Tools.

From code

from flimkit_zstack_explorer import build_zstack_volumes, save_ome_zarr, load_ome_zarr

# app is FLIMKit's running App instance, with a z-stack loaded in its
# FOV preview panel
intensity_stack, lifetime_stack = build_zstack_volumes(app)
save_ome_zarr('volume.zarr', intensity_stack, lifetime_stack,
              voxel_size_um=(2.0, 0.5, 0.5))

intensity_stack, lifetime_stack = load_ome_zarr('volume.zarr')

To view a store outside FLIMKit:

python -m flimkit_zstack_explorer.viewer --zarr volume.zarr

Why a separate process for the viewer

FLIMKit's UI is Tkinter; PyVista's is VTK. Running VTK's render loop on a background thread inside a Tkinter process is unreliable, especially on macOS, where GUI toolkits generally expect to own the main thread. Building the volume and saving to disk happens inside FLIMKit; the popout viewer is a plain python -m flimkit_zstack_explorer.viewer subprocess reading the saved store, so it gets its own main thread and doesn't touch Tkinter at all.

Development

pip install -e .[gui,test]
pytest

tests/test_volumes.py exercises the z-stack-to-array logic against a fake FOV preview panel, so it runs without Tkinter or a real FLIMKit install. tests/test_zarr_io.py round-trips real arrays through zarr/ome-zarr.

Release files for flimkit-zstack-explorer 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flimkit-zstack-explorer 0.1.1
File Size Uploaded
flimkit_zstack_explorer-0.1.1.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flimkit-zstack-explorer 0.1.1
File Interpreter ABI Platform
flimkit_zstack_explorer-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 20.8 kB

Release files / flimkit_zstack_explorer-0.1.1.tar.gz

Download URL flimkit_zstack_explorer-0.1.1.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e15e0d295a46ac0b3b0921e809429a7662a161f230925487b1333633c38e060f
BLAKE2b-256 checksum
How to use checksums
c2a870237ee1dca00de3ec86728a0186a84bfa511361493804e57a1ebe4ec2d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / flimkit_zstack_explorer-0.1.1-py3-none-any.whl

Download URL flimkit_zstack_explorer-0.1.1-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0593eaa65ea0af9f2df1fdb3df722f064e48f93382fad795e50bb5b820c3eec0
BLAKE2b-256 checksum
How to use checksums
1eae15ba43b3e7c7fd41215658773d87b8df3f3ce917573ee212146d370e0d4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release 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