MOOZY / README.md
yousefkotp's picture
docs: update citation to arXiv @misc format
192e027 verified
metadata
license: cc-by-nc-sa-4.0
library_name: moozy
pipeline_tag: feature-extraction
base_model: 1aurent/vit_small_patch8_224.lunit_dino
tags:
  - pathology
  - computational-pathology
  - digital-pathology
  - foundation-model
  - whole-slide-image
  - vision-transformer
  - self-supervised-learning
  - slide-encoder
  - case-encoder
  - histopathology
  - medical-imaging
  - multiple-instance-learning
  - slide-level-representation
  - patient-level-representation
  - multi-task-learning
  - survival-analysis
  - cancer
  - oncology
  - tissue-classification
  - mutation-prediction
  - TCGA
  - CPTAC
  - pytorch
  - transformer
datasets:
  - MahmoodLab/Patho-Bench
metrics:
  - f1
  - roc_auc
  - accuracy
language:
  - en
model-index:
  - name: MOOZY
    results:
      - task:
          type: image-classification
          name: Residual Cancer Burden Classification
        dataset:
          type: bc_therapy
          name: BC Therapy
        metrics:
          - type: f1
            value: 0.56
            name: Weighted F1
          - type: roc_auc
            value: 0.74
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.51
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: TP53 Mutation Prediction
        dataset:
          type: cptac_brca
          name: CPTAC-BRCA
        metrics:
          - type: f1
            value: 0.87
            name: Weighted F1
          - type: roc_auc
            value: 0.86
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.86
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: BAP1 Mutation Prediction
        dataset:
          type: cptac_ccrcc
          name: CPTAC-CCRCC
        metrics:
          - type: f1
            value: 0.89
            name: Weighted F1
          - type: roc_auc
            value: 0.79
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.78
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: ACVR2A Mutation Prediction
        dataset:
          type: cptac_coad
          name: CPTAC-COAD
        metrics:
          - type: f1
            value: 0.91
            name: Weighted F1
          - type: roc_auc
            value: 0.91
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.9
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: Histologic Grade Classification
        dataset:
          type: cptac_lscc
          name: CPTAC-LSCC
        metrics:
          - type: f1
            value: 0.78
            name: Weighted F1
          - type: roc_auc
            value: 0.75
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.77
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: KRAS Mutation Prediction
        dataset:
          type: cptac_luad
          name: CPTAC-LUAD
        metrics:
          - type: f1
            value: 0.85
            name: Weighted F1
          - type: roc_auc
            value: 0.8
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.79
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: IDH Status Classification
        dataset:
          type: ebrains
          name: EBRAINS
        metrics:
          - type: f1
            value: 0.97
            name: Weighted F1
          - type: roc_auc
            value: 0.99
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.97
            name: Balanced Accuracy
      - task:
          type: image-classification
          name: Treatment Response Prediction
        dataset:
          type: mbc
          name: MBC
        metrics:
          - type: f1
            value: 0.58
            name: Weighted F1
          - type: roc_auc
            value: 0.68
            name: Weighted ROC-AUC
          - type: accuracy
            value: 0.48
            name: Balanced Accuracy

MOOZY: A Patient-First Foundation Model for Computational Pathology

Project Page arXiv GitHub PyPI License Python 3.10+

MOOZY is a slide and patient-level foundation model for computational pathology. The patient case, not the individual slide, is the core unit of representation. A vision-only slide encoder pretrained with masked self-distillation on 77,134 public slides is aligned with clinical semantics through multi-task supervision over 333 tasks (205 classification, 128 survival) from 56 public datasets spanning 23 anatomical sites. A case transformer explicitly models dependencies across all slides from the same patient, replacing the naive early/late fusion used by prior methods. 85.77M total parameters. Trained entirely on public data.

MOOZY data scale

Table of Contents

Installation

pip install moozy

The checkpoint and task definitions are downloaded automatically from this repository on first use.

Usage

From pre-computed H5 feature files

The faster path. Pass .h5 files containing patch features extracted with lunit_vit_small_patch8_dino at 224x224 patch size. Compatible with AtlasPatch and TRIDENT outputs.

moozy encode slide_1.h5 slide_2.h5 --output case_embedding.h5

From raw whole-slide images

Pass slide files directly (.svs, .tiff, .ndpi, .mrxs, etc.). MOOZY calls AtlasPatch under the hood to segment tissue, extract patches, and compute features. Requires atlas-patch, sam2, and the OpenSlide system library (see the AtlasPatch installation guide).

moozy encode slide_1.svs slide_2.svs --output case_embedding.h5 --target_mag 20

Python API

from moozy.encoding import run_encoding

# From H5 feature files
run_encoding(
    slide_paths=["slide_1.h5", "slide_2.h5"],
    output_path="case_embedding.h5",
)

# From raw slides
run_encoding(
    slide_paths=["slide_1.svs", "slide_2.svs"],
    output_path="case_embedding.h5",
    target_mag=20,
)

Arguments

Argument Default Description
SLIDES (required) One or more H5 feature files or raw slide files forming a single case. Cannot mix the two types.
--output, -o (required) Output H5 file path.
--mixed_precision off Enable bfloat16 mixed precision.
--target_mag 20 Magnification for patch extraction from raw slides. Ignored for H5.
--step_size 224 Stride between patch centers in pixels. Set < 224 for overlap. Ignored for H5.
--mpp_csv - CSV with wsi,mpp columns for microns-per-pixel overrides. Ignored for H5.

Output format

The output H5 file contains a features dataset (768-D float32 case embedding) and a coords dataset with slide metadata.

Architecture

Component Architecture Params Output dim
Patch encoder ViT-S/8 (Lunit DINO) 21.67M 384
Slide encoder ViT, 6 layers, 768-D, 12 heads, 2D ALiBi 42.8M 768
Case transformer 3 layers, 12 heads 21.3M 768

Tasks

This repository includes 333 task definitions in the tasks/ directory. Each task has a config.yaml (task type, organ, label mapping) and a task.csv (annotations and splits). The tasks cover 205 classification and 128 survival endpoints across all 32 TCGA cohorts, all 10 CPTAC cohorts, REG, BC-Therapy, BRACS, CAMELYON17, DHMC Kidney, DHMC LUAD, EBRAINS, IMP Colorectum, IMP Cervix, MBC, MUT-HET-RCC, NADT Prostate, NAT-BRCA, and PANDA.

Citation

@misc{kotp2026moozypatientfirstfoundationmodel,
      title={MOOZY: A Patient-First Foundation Model for Computational Pathology},
      author={Yousef Kotp and Vincent Quoc-Huy Trinh and Christopher Pal and Mahdi S. Hosseini},
      year={2026},
      eprint={2603.27048},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2603.27048},
}

License

CC BY-NC-SA 4.0. Research and non-commercial use only.