Skip to main content

Multi-view light sheet microscopy image processing pipeline

Project description

IsoView Light Sheet Microscopy Pipeline

Acquisition Modes

Raw input is always flat — SPC##_TM#####_ANG###_CM#_CHN##_PH#.stack files in a single directory. Mode is auto-detected from SPC/TM counts:

Condition Mode Description
Multiple TM values timelapse time series, any number of specimens
Single TM + multiple SPC tiled spatial tiles, one timepoint
Single TM + single SPC single treated as timelapse with 1 timepoint

Filename Tags

Tag Meaning Raw Corrected
SPC## / SPM## specimen / tile SPC00 SPM00
TM##### timepoint TM00000 TM000000
CM# camera CM0 CM00
CHN## channel (raw) CHN00, CHN01
VW## view (corrected) VW00 (z-scan), VW90 (y-scan)
ANG### illumination angle ANG000 — (dropped)
PH# phase PH0 — (dropped)

Output Layout

Output directory: {input_dir.name}{corrected_suffix} as sibling of input.

All below result path's use the default corrected_suffix .corrected.

Correction (correct_stack.py)

Mode Path Filename
Timelapse root.corrected/SPM00/TM000000/ SPM00_TM000000_CM00_VW00.ome.tif
Tiled root.corrected/SPM00/ SPM00_CM00_VW00.ome.tif

Each tile will have a SPM0N folder, where N is the tile index.

Fusion (multi_fuse)

Mode Path Filename
Timelapse root.corrected/Results/MultiFused_adaptive/SPM00/TM000000/ SPM00_TM000000_CM00_CM01_VW00.ome.tif
Tiled root.corrected/Results/MultiFused_adaptive/SPM00/ SPM00_CM00_CM01_VW00.ome.tif

Default pairs: [(0, 1), (2, 3)] — cameras 0,1 share CHN00/VW00; cameras 2,3 share CHN01/VW90. Only the second camera in each pair gets rotation/flip transforms.

Supported Output Formats

Format Extension Notes
OME-TIFF .ome.tif with metadata, optional resolution pyramids
Zarr v3 ome.zarr OME-NGFF metadata
KLB .klb Keller Lab Block (bzip2)

Quickstart

  1. isoview init <path/to/raw> — scaffolds a scripts/ folder next to the raw data with correct_stack.py, multi_fuse.py, pipeline.ipynb, and parameters.md.
  2. Open scripts/ in VSCode and run correct_stack.py then multi_fuse.py, or open pipeline.ipynb and run both cells.
  3. Each step appends its config + isoview_version to isoview_config.json next to the data, so every run is reproducible.

See examples/compression_demo.py for a full end-to-end run on 10 timepoints. Full parameter reference: parameters.md.

Usage

Entrypoints: pipeline/correct_stack.py (correction) and pipeline/multi_fuse.py (fusion).

from pathlib import Path
from isoview import ProcessingConfig, correct_stack, multi_fuse

config = ProcessingConfig(
    input_dir=Path(r"E:\isoview\dataset"),
    # specimens=None,                       # auto-detect from SPC## in filenames
    # timepoints=None,                      # auto-detect from TM## in filenames
    corrected_suffix=".corrected",          # output folder suffix
    specimen=0,                             # default specimen index
    camera_pairs=[(0, 1), (2, 3)],          # ortho camera pairs to fuse

    # output
    output_format="tif",                    # tif, zarr, or klb
    compression="zstd",                     # zstd, lzw, deflate, or None
    compression_level=3,                    # 1-22 for zstd, 1-9 for others

    # transforms (applied to second camera in each pair)
    rotation=0,                             # 0=none, 1=90cw, -1=90ccw
    flip_horizontal=False,
    flip_vertical=False,

    # correction
    median_kernel=(3, 3),                   # dead pixel filter, None to disable
    background_percentile=5.0,
    mask_percentile=1.0,
    segment_mode=1,                         # 0=none, 1=segment+mask, 2=masks, 3=global

    # fusion
    blending_method="adaptive",             # adaptive, geometric, average, wavelet
    blending_range=20,                      # transition zone width (z-planes)

    # per-specimen overrides (tiled mode)
    # tile_crops={"SPM00": {"crop_depth": {0: 450}}}
    # view_orientation={"SPM00": {"flip_axis": 1}, "SPM01": {"flip_axis": 0}}
)

correct_stack(config)
multi_fuse(config, estimate_params=True, apply_fusion=True)

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

isoview-0.1.2.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

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

isoview-0.1.2-py3-none-any.whl (92.0 kB view details)

Uploaded Python 3

File details

Details for the file isoview-0.1.2.tar.gz.

File metadata

  • Download URL: isoview-0.1.2.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.2

File hashes

Hashes for isoview-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c8ade48212e0a9f497e8a492ef61ed50cc5313b09470c6b1283e4d567d4a8777
MD5 0a3b5dad34abcd44f8e5e2e727d17f98
BLAKE2b-256 1f0f84b1dfaa00b8a6bbe9895e7c925666ad9f37bb4e7050453fdc438c495429

See more details on using hashes here.

File details

Details for the file isoview-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: isoview-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 92.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.2

File hashes

Hashes for isoview-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f494ed3c87ad9d18083e90b2a627668b972c65ed32f0655e577a6119c9afa337
MD5 7b4d11d048b09c374720b910ea7b47da
BLAKE2b-256 f02a587c1aa24527357b8deb878a21105e5210a3d7fa2dc49d696f1068213be4

See more details on using hashes here.

Supported by

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