Build patches from whole slide images (WSIs).
Supported slide format: "sdpc", "svs", "ndpi", "tiff", "tif", "dcm", "svslide", "bif", "vms", "vmu", "mrxs", "scn".
Supported annotation format (for sdpc): "sdpl", "json".
Two approaches (with or without annotations) to build patches are given.
You can use a given magnification (e.g. 20X) or resolution (e.g. 0.4um/pixel) to tile patches.
pip install opencv-python
pip install openslide-python
pip install sdpc-for-python (refer to sdpc-for-python)
data_dir: directory of slide files.
save_dir: directory of patch saving.
annotation_dir: directory of annotation files (optional). If 'annotation_dir' exists, patches with annotations will be tiled. Otherwise, leave it blank.
csv_path: path of csv file (optional). If 'csv_path' exists, patches within pd.read_csv(csv_path)["slide_id"] will be tiled. Otherwise, leave it blank.
which2cut: use "magnification" or "resolution" to cut patches. If "magnification" is chosen, patches will be tiled based on the given magnification. Otherwise, patches will be tiled based on the given resolution.
magnification: magnification to cut patch: 5x, 20x, 40x, ...
resolution: resolution to cut patch: 0.103795, ... (um/pixel).
patch_w: width of patch.
patch_h: height of patch.
overlap_w: overlap width of patch.
overlap_h: overlap height of patch.
thumbnail_level: top level to catch WSI thumbnail images (larger is higher resolution).
use_otsu: use the Otsu algorithm to accelerate tiling patches or not.
blank_rate_th: cut patches with a blank rate lower than this threshold.
null_th: threshold to drop null patches (larger to drop more): 5, 10, 15, 20, ...
build patches at a magnification of 20X:
python build_patch.py --data_dir DATA_DIR --save_dir SAVE_DIR --which2cut "magnification" --magnification 20 --patch_w 256 --patch_h 256build patches at a resolution of 0.4 um/pixel:
python build_patch.py --data_dir DATA_DIR --save_dir SAVE_DIR --which2cut "resolution" --resolution 0.4 --patch_w 256 --patch_h 256build patches at a resolution of 0.4 um/pixel within annotations:
python build_patch.py --data_dir DATA_DIR --save_dir SAVE_DIR --which2cut "resolution" --resolution 0.4 --patch_w 256 --patch_h 256 --annotation_dir ANNOTATION_DIRbuild patches at a resolution of 0.4 um/pixel within annotations, where WSIs are included in pd.read_csv(csv_path)["slide_id"]:
python build_patch.py --data_dir DATA_DIR --save_dir SAVE_DIR --which2cut "resolution" --resolution 0.4 --patch_w 256 --patch_h 256 --annotation_dir ANNOTATION_DIR --csv_path CSV_PATH