Skip to content

0.3.0

Latest

Choose a tag to compare

@clemsgrs clemsgrs released this 11 Aug 09:25
· 4 commits to main since this release

This release expands the published robustness panel from 21 to 26 encoders and rebuilds the
documentation site around the per-sample CRoMa distribution. Five new tile-encoder families
(Mascaret, Phaet and the three-member RudolfV 2 teacher/student family) were extracted across
PathoROB and republished with auditable provenance, a fifth whole-slide encoder joined the slide
panel, and the croma console script that 0.1.0 and 0.2.0 installed is gone — the library is used
through its Python API.

Removed

  • BREAKING: the croma console script. It was a thin argparse wrapper over the same API
    functions, and nothing internal depended on it. src/croma/cli.py, its documentation page and its
    [project.scripts] entry point are removed. Every subcommand has a direct replacement:
    croma ri / croma mari / croma croma are RI.compute / MaRI.compute / CRoMa.compute,
    croma expand-embeddings is croma.expand_features_to_manifest, and
    croma build-embedding-manifest is croma.alignment.build_embedding_source_manifest. The one
    thing the CLI did for you is loading the .npy — call numpy.load yourself. (#144)

Added

  • Mascaret and Phaet as tile encoders, served through one shared Waiv backend at immutable
    checkpoint revisions with the released 224 px preprocessing and checkpoint-native output
    normalization. (#135)
  • The RudolfV 2 family — teacher plus two distilled students — at immutable revisions, with a
    shared native-square backend that pools CLS with the mean of the patch tokens after excluding all
    eight register tokens. (#136)
  • PRISM2, a fifth whole-slide encoder. It tops both slide benchmarks, making the two
    PRISM-family encoders the only biology-dominant slide models, and shows essentially no downstream
    degradation. With five encoders the shared median-k no longer collapses, so the slide panel's
    k* exception is now justified by composition sensitivity rather than by n = 4. (#144)
  • --image-path-map for extraction: an access-only mapping that preserves canonical manifest
    identity and resolves a mirror only when embeddings actually need computing. (#138)
  • A :results-value: role in the docs. Run-derived numbers in prose are now computed from
    committed results/ at build time, and an unknown function, model or column fails the
    warnings-as-errors build. It immediately caught three drifted hand-typed numbers. (#142)

Changed

  • The public panel is now 25 pathology encoders plus the DINOv2-B control, recomputed end to end
    on Camelyon, TCGA-4×4 and Tolkach-ESCA under the sparse shared-median-k protocol. For the
    original 21 models every comparable numeric field moved exactly zero. TCGA-2×2 stays local and
    supplementary. (#139, #141)
  • Downstream nIPD validation covers the five new encoders, under the unchanged 20-repeat
    protocol and frozen splits. All 36 expanded-panel tile correlations stay positive and significant;
    no sign or significance-threshold changes. (#140)
  • Each cohort cell in the aggregate table now reads CRoMa/LTM₁₀ rather than the margin alone,
    so the table shows the two axes its own caption ranks on. Every published value is unchanged — the
    CSV only gains columns. (#125)
  • The documentation site is consolidated around the distribution explorer, redesigned as
    master–detail: an always-visible overview of all 26 encoders above a detail view with a range
    brush and a compare-with overlay. The three cohort pages fold into one results page with stable
    anchors, and the static ridgeline figures are retired — the explorer is the overview now. (#142)
  • Model tables, exposure markers and family styling are driven from machine-readable provenance,
    including parent/fine-tune and teacher/student relationships and a conservative Charité/CHA
    exposure caveat. (#137)
  • Embedding publication is crash-safe and identity-checked. Matrices and provenance sidecars are
    one artifact contract; resume validates checkpoint revision, extraction contract, precision,
    manifest, batch size, dtype and shape; and provenance is folded into the embedding fingerprint so
    a metric cache cannot reuse a stale matrix. An interrupted extraction can no longer be mistaken
    for a complete one. (#134)

Fixed

  • RI and MaRI tail statistics reached the aggregate CSV as NaN. The benchmark computed finite
    per-sample median_value, q_alpha and ltm_alpha but dropped them when serializing summaries
    and reading cached payloads. (#139)
  • The explorer's range brush never workedpointerdown triggered a full re-render, destroying
    the SVG that held the pointer capture, so every drag collapsed to a single-bin click. (#142)
  • Package-only releases no longer fail CI. A test required the committed results provenance to
    name the currently installed version, which compares historical producer metadata against the
    current runtime. The artifact-list and checksum guarantees are unchanged. (#123)