Skip to content

1.5.0

Choose a tag to compare

@clemsgrs clemsgrs released this 24 Jun 19:18

This release lands semantic segmentation in soma via the slide-manifest dense path: whole slides plus annotation masks flow through hs2p annotation sampling and slide2vec dense region extraction into cached grids and a segmentation head — validated end-to-end on the BEETLE breast-cancer benchmark. It also realigns soma's dependency floors onto the latest hs2p 4.2.0 / slide2vec 5.0.0 stack.

Added

  • Annotation-aware segmentation ingestion. New dataset_type="segmentation" slide-manifest mode with masks:/sampling: config: slides + multiresolution annotation masks → annotation-sampled ROIs → cached dense grids → segmentation training, wired end-to-end through the existing cached dense path (caching stays soma's responsibility; slide2vec remains a pure extraction engine). (#90)
  • BEETLE recipe on the slide-manifest path. examples/make_beetle_manifest.py (slide-level manifest + CV splits + per-class coverage) and examples/segmentation_beetle.yaml (phikon sliding-224 @ 0.5 µm/px, lightweight_conv decoder). Adds build_label_remap (raw mask pixel → class index, background→ignore) and sliding-window encode so a native-224 encoder can serve a 512 px supervision tile. (#99)

Fixed

  • Dense overlays for slide-manifest ROIs. The overlay writer now reads just the ROI window at the run spacing instead of decoding the whole WSI, fixing a DecompressionBombError that crashed test evaluation — prediction/GT overlays now work on the slide-manifest path. (#101)

Changed

  • Dependency floors realigned: hs2p>=4.2.0 and slide2vec[fm]>=5.0.0. The dense path migrated off hs2p's removed TilingConfig.tissue_threshold scalar to the resolved min_coverage map, with no on-disk cache invalidation. (#103)
  • Sampling aligned with hs2p merged mode (renamed from single), backed by a real un-stubbed sampling integration test against a synthetic pyramidal WSI fixture. (#96)
  • BEETLE docs consolidated: the slide-manifest cached path is now the sole documented recipe; references to the superseded standalone scripts were removed. (#102)
  • CI: skip the test suite and docs build on release-* version-bump PRs (a pyproject-only change carries no signal). (#88, #89)