KRONOS

A DINOv2 vision transformer with a 512-slot marker embedding bolted on, so a channel is identified by which marker it is rather than by its position — that one change is the whole of “panel-agnostic”, and it is the substantive work behind CORAL and KRONOS2.

Purpose

Verdict: not adoptable here — there is no multiplexed imaging in this department to run it on — but this is the one artefact in its family worth actually reading.

Where CORAL is a toolkit released ahead of its documentation and KRONOS2 is a model with no technical report at all, KRONOS is the one piece of this family with published substance: a preprint with numbers, 201 stars, 36 forks and 32.2K model downloads. If anyone here needs to understand what a spatial-proteomics foundation model is, this is the artefact to read — see Spatial Proteomics for the concept.

What follows matters if that ever changes, and it matters now to anyone reading this family of repositories and assuming the three are equivalent. They are not: this is the one with a method you can inspect and numbers you can argue with.

What it is, mechanically

A DINOv2 vision transformer with a marker embedding bolted on. vision_transformer.py adds a 512-slot table (num_markers=512, get_1d_sincos_marker_embed, self.marker_embed) so that a channel is identified by which marker it is rather than by where it sits in the stack. That one change is the whole of “panel-agnostic”: channel order stops mattering, and arbitrary panels become representable, because the marker vocabulary is now a lookup table inside the model.

Knowing how small the change is matters, because it bounds the claim. The model is agnostic across the markers it has seen. What happens to a marker absent from pretraining is not visible anywhere in the released inference code, and CORAL lists “integrating unseen markers” as a tutorial that does not exist yet — which is suggestive. [unverified]

The second design claim is segmentation-free patch-level processing: working on tiles rather than requiring every cell to be segmented first. That is what makes cohort-scale analysis tractable and cross-institution comparison possible at all, and it is the part most likely to transfer as an idea rather than as code — not every cell-level question needs per-cell output, and that is worth asking about H&E work here too.

What is released, and what is not

The distributed package is inference-only. create_model and create_model_from_pretrained are the entire public API (kronos/__init__.py). There is no training code, so the pretraining cannot be reproduced from this repository, only used — which makes the 47-million-patch claim something to take from the paper or not at all.

Weights are on Hugging Face and gated: access is by request, so the model card was not readable and nothing on this page rests on it. [unverified]

Seven tutorial notebooks cover cell phenotyping, region and artefact detection, unsupervised tissue phenotyping, tissue search and patient stratification; the repository is 90.6% notebook by line count, which is a reasonable signal of where the authors expect the value to be.

The model code has not changed since June 2025. Both 2026 commits are README edits announcing KRONOS2 and CORAL. So KRONOS is frozen and superseded by a model that has no technical report, which is an awkward choice to put in front of anyone starting today: the documented one is stale, and the current one is undocumented. ## Data used

None of the group’s. From the preprint (arXiv:2506.03373, 3 June 2025): self-supervised training on over 47 million image patches, spanning 175 protein markers, 16 tissue types and 8 fluorescence-based imaging platforms, evaluated across 11 independent cohorts on cell phenotyping, region classification, treatment-response prediction, patient stratification and retrieval.

Eleven independent cohorts is a serious external-validation posture by the standards of External Validation — considerably stronger than most model papers filed here. The claim has not been checked against the paper’s own tables; only the abstract was read for this evaluation. [unverified]

The paper is still a preprint. Submitted June 2025; no journal version is indexed in PubMed as of 27 July 2026, thirteen months later. Recorded because a wiki page describing this as “published” would be wrong, and because the KRONOS2 announcement cites this preprint as its reference.

Methods

Read at source level. The architecture is a DINOv2 ViT adapted for multiplex input, and the adaptation is the interesting part — vision_transformer.py adds a marker embedding (num_markers=512, get_1d_sincos_marker_embed, self.marker_embed) so that a channel is identified by which marker it is rather than by its position in the stack. That is the concrete mechanism behind “panel-agnostic”, and it is what Spatial Proteomics describes in the abstract: the marker vocabulary becomes part of the model interface, here as a 512-slot embedding table.

The distributed package is inference-only — create_model and create_model_from_pretrained are the entire public API (kronos/__init__.py). There is no training code, so the pretraining cannot be reproduced from this repository, only used. Seven tutorial notebooks cover phenotyping, region and artefact detection, unsupervised tissue phenotyping, tissue search and patient stratification; the repository is 90.6% notebook by line count.

Weights are on Hugging Face and gated — access is by request, so the model card was not readable for this evaluation and nothing here rests on it. [unverified]

Current state / open questions

  • Licensing, in one line and deliberately not pursued further (AGENTS.md §8): the repo is CC BY-NC-ND, the vendored DINOv2 files still carry their upstream Apache-2.0 headers, and the README additionally asks for prior approval before fine-tuning or distilling the model — all worth a look whenever licensing is dealt with properly, and not before.
  • Is the paper heading for a journal, or staying a preprint? Thirteen months is long enough to be worth noting, not long enough to conclude anything. [unverified]
  • What does the marker embedding do with a marker the model never saw in pretraining? The 512-slot table has room, but nothing in the inference code shows how an unseen marker is assigned. CORAL lists “Integrating Unseen Markers During Pretraining” as a coming soon tutorial, which suggests the answer is “not well, yet”. [unverified]

How it connects

Spatial Proteomics — the concept page this is the reference implementation of; its marker-vocabulary argument is concretely the marker_embed table described above.

CORAL — the newer toolkit built around this model’s successor: same lab, same marker-embedding idea, and the harness that lets this model be compared against five others on identical inputs, and the direct contrast on vendoring practice: CORAL’s NOTICE is a model of how to do what KRONOS did not.

Foundation Models in Pathology — the H&E counterpart. KRONOS is what happens when the same recipe meets an input format that will not sit still.

External Validation — 11 independent cohorts is a much stronger evaluation posture than anything else currently in sources/projects/, and worth holding up as a comparison when the group’s own projects are judged.

Derived from: repository cloned 2026-07-27 at 26f1bc0 (full clone, 12 commits); README.md, LICENSE, pyproject.toml, kronos/__init__.py, kronos/inference.py and the nine model files under kronos/ read directly; Hugging Face metadata for MahmoodLab/KRONOS read via the Hub API (gated, card not readable); arXiv:2506.03373 abstract read; PubMed searched for a journal version on 2026-07-27; repository metadata read from github.com the same day.

Reuse

CC-BY-NC-ND-4.0 (as declared in LICENSE and pyproject.toml)