Skip to content

Basic Usage

Quick examples for processing SPIM data with PySPIM.

Python API

Basic Workflow

import pyspim
from pyspim.data import dispim as data
from pyspim import roi, deskew as dsk

# 1. Load data
with data.uManagerAcquisition(data_path, False, numpy) as acq:
    a_raw = acq.get('a', 0, 0)
    b_raw = acq.get('b', 0, 0)

# 2. Camera offset correction
a_raw = data.subtract_constant_uint16arr(a_raw, 100)
b_raw = data.subtract_constant_uint16arr(b_raw, 100)

# 3. ROI detection and cropping
roia = roi.detect_roi_3d(a_raw, 'otsu')
roib = roi.detect_roi_3d(b_raw, 'otsu')
roic = roi.combine_rois(roia, roib)

# 4. Deskewing
step_size = 0.5      # microns
pixel_size = 0.1625  # microns
theta = math.pi / 4  # angle

a_dsk = dsk.deskew_stage_scan(a_raw, pixel_size, step_size, 1, method='orthogonal')
b_dsk = dsk.deskew_stage_scan(b_raw, pixel_size, step_size, -1, method='orthogonal')

Command Line Tools

Deskewing (CPU)

python deskew_cpu.py \
    --input-folder=/path/to/data \
    --output-folder=/path/to/output \
    --step-size=0.5 \
    --pixel-size=0.1625

Registration (GPU)

python register.py \
    --input-folder=/path/to/deskewed/data \
    --output-folder=/path/to/registered/data \
    --transform='t+r+s' \
    --metric='cr'

Deconvolution (GPU)

python deconvolve.py \
    --input-folder=/path/to/registered/data \
    --output-folder=/path/to/deconvolved/data \
    --psf-a=/path/to/psf_a.npy \
    --psf-b=/path/to/psf_b.npy \
    --iterations=10

Performance Tips

Operation Recommended Reason
Registration GPU 10-50x faster
Deconvolution GPU Significant speedup
Deskewing CPU Sufficient speed
ROI Detection CPU Fast enough

Example Data

  • Location: examples/data/sample_data/
  • Contents: Jupyter notebook with complete workflow
  • SLURM scripts: Batch processing for HPC clusters