hs2p
Efficient slide tiling and tile sampling for whole-slide images at any requested spacing
A Python package for preprocessing whole-slide images into reproducible grids of tile coordinates. Handles any requested spacing, even when it doesn’t natively exist in the image pyramid.
Installation
pip install hs2p
Quick start
from pathlib import Path
from hs2p import (
FilterConfig, SegmentationConfig, TilingConfig,
WholeSlide, save_tiling_result, tile_slide,
)
result = tile_slide(
WholeSlide(
sample_id="slide-1",
image_path=Path("/data/wsi/slide-1.tif"),
mask_path=Path("/data/mask/slide-1.tif"),
),
tiling=TilingConfig(
target_spacing_um=0.5,
target_tile_size_px=224,
tissue_threshold=0.1,
),
segmentation=SegmentationConfig(downsample=64),
filtering=FilterConfig(ref_tile_size=224, a_t=4, a_h=2),
)
artifacts = save_tiling_result(result, output_dir=Path("output"))
print(artifacts.tiles_npz_path) # coordinates/slide-1.tiles.npz
print(artifacts.tiles_meta_path) # coordinates/slide-1.tiles.meta.json
Outputs
-
coordinates/{sample_id}.tiles.npz— tile coordinate array (deterministic column-major order) -
coordinates/{sample_id}.tiles.meta.json— extraction metadata -
process_list.csvon batch runs — tracks per-slide processing status (success, failure, skip) for easy auditing - optional tiling preview and tissue mask overlay images for visual QC
Features
- Reproducible coordinate grids at any spacing, including non-native resolutions
- Built-in tissue segmentation or pre-extracted mask support
- Tile filtering and partitioning based on annotation or tissue coverage
- Docker support