Troubleshooting#
A slide will not open#
Confirm that the path is correct and readable.
Open the file with
zs.open_wsi(path)in a minimal Python session to isolate reading from the analysis pipeline.Install a reader that supports the format.
Test another file from the same scanner.
Check whether the file is truncated, encrypted, or stored on an unavailable mount.
MPP is missing or wrong#
Do not infer MPP solely from the filename or nominal magnification. Retrieve it from scanner metadata or acquisition records. When the source MPP is known, override it during tiling:
zs.pp.tile_tissues(wsi, 256, mpp=0.5, slide_mpp=0.25)
Record the override in the analysis manifest.
No tissue or no tiles are found#
Visualize each intermediate result. Compare tissue methods, lower minimum-area thresholds, and confirm tile field of view. For tiling, temporarily disable background filtering to determine whether geometry or coverage filtering is responsible:
zs.pp.tile_tissues(wsi, 256, mpp=0.5, background_filter=False)
A model cannot be downloaded#
Check the model identifier, internet access, Hugging Face authentication, gated-model approval, disk quota, and HF_HOME. On offline nodes, pre-populate the cache and set HF_HUB_OFFLINE=1.
Inference runs out of memory#
Reduce batch_size, then reduce num_workers. Enable mixed precision on supported hardware, select a smaller model, or process fewer tiles. Restart the process after an out-of-memory error if the framework has retained allocations.
A key is not found#
Inspect the object instead of guessing:
print(list(wsi.shapes))
print(list(wsi.tables))
print(list(wsi.images))
Remember that feature tables usually include the tile key as a suffix, such as uni_tiles. Check the output-key reference.
Feature and tile row counts do not match#
Feature rows correspond to the tile table used during extraction. This mismatch usually means that the tile table was filtered or replaced afterward, or the wrong tile_key was selected. Regenerate features from the current tiles or restore the matching tile table; do not truncate arrays to force equal lengths.
Annotations are shifted, scaled, or mirrored#
Confirm that coordinates are level-0 pixels, check slide bounds and MPP, and verify whether the source tool uses a bounded-image origin. Test in_bounds on a new key and compare several known landmarks. NDPA also requires valid Hamamatsu offsets and MPP metadata.
A plot is blank#
Plot the underlying shapes without feature coloring. Then verify the selected tissue, tile, feature, and color keys; zoom bounds; value range; and annotation coordinate system. Add options back one at a time.
Results differ between runs#
find_tissues(level="auto") can select a level based on available memory. Set a fixed level for repeatability. Also record package versions, model weight revisions, device, precision, random seeds, and all preprocessing parameters.