Skip to content

4.4.3

Choose a tag to compare

@clemsgrs clemsgrs released this 06 Sep 10:54
· 20 commits to main since this release

A performance-and-hygiene release for the preprocessing path. Contour handling and mask validation now scale with tissue content rather than slide canvas size, cutting both CPU time and peak memory, and the repo gains a repeatable benchmark harness so those gains can be re-verified. No public API or intentional behavior change.

Changed

  • Contour processing no longer rebuilds a full-canvas segmentation mask and integral image per tissue fragment; work is now bounded by each contour's own extent while global coordinate projection, holes, clipping, coverage fractions, and output order are preserved. On a synthetic fragmented-tissue workload (9,216 tiles) the median dropped from 39.4 s to 15.9 ms with peak traced allocation falling from 71.56 MB to 1.18 MB. All paired output hashes match, including 459 tiles from the real TIFF fixture. (#205)
  • Byte-mask validation uses a 256-bin histogram instead of widening and sorting the full raster — 4 Mpx mask loading went from 133 ms to 71 ms, peak traced allocation from 75.52 MB to 37.90 MB. (#205)
  • Preprocessing internals simplified: dataclasses.replace for immutable request/artifact updates, shared QC metadata handling, and removal of redundant array copies, streaming wrappers, dead helpers, and self-testing synthetic fixtures. Docstrings corrected to match actual spacing, overlap, backend, and logging behavior. (#204)

Added

  • A repeatable preprocessing CPU/allocation benchmark (scripts/benchmark_preprocessing.py), portable fixture configuration, and CI artifacts. Commands, timing boundaries, limitations, and raw samples are checked in under docs/performance-audit.md and benchmarks/results/performance-audit.json. (#205)

Fixed

  • The existing tile read/store benchmarks were repaired, and obsolete benchmark tests removed. (#205)

Note on the numbers: measurements were taken on a noisy shared host with substantial timing variance. No universal speedup multiplier and no end-to-end real-fixture speed improvement is claimed.