Skip to content

Benchmark protocols

The benchmark generator provides two protocol families with identical configuration semantics.

TCGA

The TCGA protocol covers:

  • NSCLC: lung adenocarcinoma vs. lung squamous cell carcinoma;
  • BRCA: invasive ductal vs. invasive lobular carcinoma;
  • RCC: clear-cell, papillary, and chromophobe renal cell carcinoma.

It generates 306 configs across the cohort-specific protocol matrices: 16 BRCA and 34 NSCLC experiment variants at 4/8/16/32/64 shots, plus 14 RCC variants at 4/8/16/32 shots. Seven NSCLC variants are explicitly labeled BioClinicalBERT WSI-FiVE encoder extensions and six more are paired-tower ablations; none are native-paper duplicates. The additional ConVLM row is an explicitly partial QuiltNet-B-16 feature-bag reconstruction, not an upstream reproduction. DyKo adds NSCLC/RCC TITAN knowledge conditions, MGPATH adds BRCA/NSCLC PLIP-only conditions, and HIPSS adds an NSCLC hierarchy condition. See the repository's benchmarks/tcga_brca/README.md for cohort construction, feature coverage, and readiness details. The complete 23-source NSCLC feature inventory, including registered zero-coverage magnifications, is documented in benchmarks/tcga_nsclc/README.md.

Additional tasks

The additional-task protocols cover CAMELYON16, UBC-OCEAN, and a separate combined CAMELYON16+17 FOCUS/MUSE matrix with the same fold, shot, encoder, prompt, and feature-provenance machinery. They generate 216 configs: 28 CAMELYON16 variants at 4/8/16/32/64 shots, 22 UBC-OCEAN variants at 4/8/16 shots, and two combined-cohort variants at 4/8/16/32/64 shots. HIPSS and the other explicitly compatible encoder-extension families remain separately named conditions. Together, the six current protocol matrices generate 855 valid, launch-ready configs. See benchmarks/camelyon16/README.md, benchmarks/camelyon_combined/README.md, and benchmarks/ubc_ocean/README.md for task-specific metadata expectations.

Fair-comparison controls

  • one seed and the same outer-fold range for every experiment;
  • 4, 8, 16, 32, and 64 labeled patients per class where cohort capacity permits (RCC stops at 32; UBC-OCEAN stops at 16; combined CAMELYON 32/64 are disclosed extensions beyond the released 4/8/16 comparison);
  • nested few-shot subsets where metadata permits;
  • patient/case-disjoint train, validation, and test partitions;
  • identical split files across methods;
  • method variants named separately when the encoder, resolution pair, or learned projection changes;
  • accuracy reported independently from any continuous optimization objective.

Readiness versus validity

config_valid means the configuration is internally consistent and satisfies the adapter's declared contract. ready means every file needed to launch that specific run currently exists. This distinction allows future RCC or additional-resolution features to be registered before extraction finishes, without presenting those runs as executable.

Feature production is asynchronous bookkeeping, not protocol generation. scripts/run_benchmark.py refreshes per-source coverage and each row's missing_feature_files before planning, using the paths already frozen in the manifest. It changes only feature-derived coverage/readiness cells; prompt, encoder, auxiliary, metadata, split, and config validity remain independent gates. The refresh also expands portable ${PGVL_*} paths before checking the filesystem. A full tcga_benchmark.py all regeneration is therefore unnecessary when a backfill merely adds the previously expected feature files.

The inventory and prepare commands validate the registry schema without importing model or Torch runtime code. Runtime encoder capability and native width checks still run for configs, validate, and all. This keeps feature bookkeeping usable on login nodes while preserving strict launch validation.

Generated artifacts

Each protocol directory contains:

Artifact Purpose
protocol.yaml source-of-truth registry
run_matrix.csv one row and launch command per run
config_audit.csv normalized configuration comparison
feature_coverage.csv per-source missing/available counts
validation_report.json static validation result
smoke_report_<cohort>.json isolated model-build/forward result
configs/ generated run YAML files
splits/ deterministic few-shot fold files