Skip to content

Oblique plane microscopy (OPM)

napari-lattice can be used for processing oblique plane microscopy (OPM) and scanned oblique plane illumination (SOPi) data. The default parameters work for the Zeiss Lattice Lightsheet 7 (LLS7). The deskew is parameter-driven — you set the skew axis, deskew angle, whether to apply the coverslip rotation, and whether to invert the scan direction. Choosing those values to match a different acquisition geometry enables napari-lattice to process data from different systems.

This example deskews two published OPM datasets. The two parameters that make an acquisition "OPM" are usually to do with coverslip_rotation and invert_scan_direction, and of course different angles and voxel sizes.

Data and configs

The two datasets below — raw image, deskewed output, and the lls-pipeline config that produced it — are published with the manuscript on Zenodo as Supplementary_opm_data.zip. The file paths in the configs are placeholders; point them at your own copies.

The key setting: coverslip rotation

By default napari-lattice applies a coverslip rotation — after shearing, it rotates the deskewed volume by the deskew angle. This is the correct output geometry for the Zeiss LLS7, where it leaves the specimen level with the coverslip.

Many OPM/SOPi systems need the opposite — the volume should not be rotated, because the shear alone already brings the specimen plane level with the coverslip. For these you turn the coverslip rotation off:

Setting Plugin CLI What it does
Coverslip rotation on (default) Coverslip Rotation ticked omit the flag (or --coverslip-rotation) Standard deskew (cle.deskew_y/cle.deskew_x) then rotate by the deskew angle. Coverslip-level for Zeiss LLS7.
Coverslip rotation off Coverslip Rotation unticked --no-coverslip-rotation Shear-only deskew, no rotation. Coverslip-level for many OPM/SOPi systems.

This is a geometry choice, not a quality setting

Neither value is "better" — the right one depends on how your microscope acquires the data. If a deskew looks sheared, tilted, or stretched at the light-sheet angle instead of lying flat, the coverslip-rotation setting is the first thing to flip. Both OPM datasets below use coverslip rotation off.

See Coverslip-frame deskew (--no-coverslip-rotation) for the reference details.

TIP: In the plugin, Quick Deskew gives a fast preview so you can check the orientation before committing to a full run.

The second setting: scan-direction (Z) inversion

Different microscopes scan the sample in opposite directions. On some oblique-plane systems the stage or galvo scans the opposite way to the Zeiss LLS, so the deskewed volume comes out mirrored along the scan (Z) axis.

invert_scan_direction reverses the order of the planes along the scan Z axis before deskewing, correcting this handedness. Both datasets below need it:

Setting Plugin CLI What it does
Invert scan direction Invert Scan Direction ticked --invert-scan-direction Reverse plane order along the scan (Z) axis before deskewing. Default is off (Zeiss LLS behaviour).

If a coverslip-rotation-corrected deskew is still flipped top-to-bottom along the depth axis, this is the setting to change. See Flipping the scan direction (--invert-scan-direction).

Datasets

Folder Sample Reference
brain_organoid 4×-expanded brain organoid, direct-view oblique plane microscopy Lamb et al., Optica 12, 469–472 (2025); raw data 10.6084/m9.figshare.28324301
thy1_eGFP Uncleared coronal Thy1-GFP mouse brain section, scanned oblique plane illumination (SOPi) Kumar & Kozorovitskiy, Opt. Lett. 44, 1706–1709 (2019); raw data zenodo.org/records/5088089

Both are Y-skew, 45° acquisitions with coverslip rotation off and scan direction inverted. They differ only in pixel size.

Option A — in the napari plugin

  1. Drag the raw .tif into napari. It loads as an image layer — here the thy1_eGFP SOPi dataset, shown in green. Open the Lattice Lightsheet Analysis plugin (Plugins → napari-lattice) and, on the 1. Deskew tab, select the layer under Image Layer(s) to Deskew.

    OPM dataset loaded in napari with the napari-lattice Deskew tab

  2. Enter the acquisition metadata for the dataset. Set Pixel Size Source to Manual, fill in the pixel sizes and skew angle, choose the skew direction, and — the two settings that make this an OPM run — tick Invert Scan Direction and leave Coverslip Rotation unticked.

    Parameter brain_organoid thy1_eGFP
    dx (µm) 1.04 1
    dy (µm) 1.04 1
    dz (µm) 2.0 1
    Deskew angle 45 45
    Skew Direction Y Y
    Coverslip Rotation off off
    Invert Scan Direction on on

    The Deskew tab for the thy1_eGFP dataset should look like this — note the ticked Invert Scan Direction and the unticked Coverslip Rotation:

    napari-lattice Deskew tab configured for OPM: Manual pixel sizes, skew Y, 45°, Invert Scan Direction ticked, Coverslip Rotation unticked

  3. Tick Quick Deskew for a fast preview of the orientation before committing to a full run.

    Quick Deskew preview of the deskewed OPM volume

  4. When the preview looks right, switch to the 5. Output tab to save. Choose a Save Format (tiff writes a compressed OME-TIFF), pick a Save Directory, and adjust the Save Suffix, channel and time ranges if needed. Click Save to run the deskew and write the result. The tab turns green once a valid output directory is set:

    napari-lattice Output tab configured to save the deskewed thy1_eGFP dataset as OME-TIFF

Option B — on the command line

Put the parameters in a YAML config and call lls-pipeline. This is the config shipped in each dataset folder, with paths generalised to placeholders.

brain_organoid_config.yml

input_image: "/path/to/brain_organoid/EXP_7_5mm_2um_Steps_1_MMStack_Pos0_14.ome.tif"
save_dir: "/path/to/output/brain_organoid"
save_type: "tiff"
save_name: "brain_organoid_deskewed"
skew: "Y"
angle: 45
coverslip_rotation: False       # shear-only OPM geometry
invert_scan_direction: True     # scan runs opposite to the Zeiss LLS
physical_pixel_sizes:
  Z: 2.0
  Y: 1.04
  X: 1.04

thy1_eGFP.yml

input_image: "/path/to/thy1_eGFP/thy1gfp_3_8bit_250um_50fps_20ms_5s_10_MMStack_Pos0.ome.tif"
save_dir: "/path/to/output/thy1_eGFP"
save_type: "tiff"
save_name: "thy1_eGFP_deskewed"
skew: "Y"
angle: 45
coverslip_rotation: False       # shear-only OPM geometry
invert_scan_direction: True     # scan runs opposite to the Zeiss LLS
physical_pixel_sizes:
  Z: 1
  Y: 1
  X: 1

Run either config with:

lls-pipeline process --yaml-config brain_organoid_config.yml

Matching a different OPM system

Most OPM/SOPi acquisitions can be matched by combining three options — --skew X/--skew Y, --no-coverslip-rotation, and --invert-scan-direction. If your first deskew looks wrong, work through them in that order: skew axis, then coverslip rotation, then scan direction.

Data availability and citations

The two example datasets are redistributed with the napari-lattice manuscript on Zenodo (Supplementary_opm_data.zip), each with its raw image, deskewed output, and lls-pipeline config. They originate from the following publications — please cite the original sources if you use them: