Benchmarking the ability of pathology foundation models to do cell type classification
Assumes a .env file with the following variables:
HF_TOKEN
: Huggingface API token to download models with access restrictions
install the environment with:
conda env create -f env.yaml
The data can be downloaded via huggingface: https://huggingface.co/datasets/Kainmueller-Lab/phenobench
Once you have downloaded the dataset, and installed the required packages, the code can be run with the following command:
sbatch launch_train_slurm.sh <pathg_to_config> <model_name>
qsub launch_train.sh <pathg_to_config> <model_name>
Example:
sbatch launch_train_slurm.sh configs/dpt_config.yaml uni2
The cell type classes are merged as follows:
Cell Type | Category |
---|---|
background | Background |
tumor cells | Tumor cells |
B cells | B cells |
CD11b+ monocytes | Macrophages/Monocytes |
CD11b+CD68+ macrophages | Macrophages/Monocytes |
CD3+ T cells | T cells |
CD4+ T cells | T cells |
CD8+ T cells | T cells |
CD4+ T cells CD45RO+ | T cells |
CD4+ T cells GATA3+ | T cells |
Tregs | T cells |
CD163+ macrophages | Macrophages/Monocytes |
CD68+ macrophages | Macrophages/Monocytes |
CD68+ macrophages GzmB+ | Macrophages/Monocytes |
CD68+CD163+ macrophages | Macrophages/Monocytes |
CD11c+ DCs | Dendritic cells |
NK cells | NK cells |
adipocytes | Adipocytes |
granulocytes | Granulocytes |
nerves | Nerves |
plasma cells | Plasma cells |
smooth muscle | Smooth muscle |
stroma | Stroma |
vasculature | Vasculature/Lymphatics |
lymphatics | Vasculature/Lymphatics |
tumor cells / immune cells | Other cells |
undefined | Other cells |
immune cells | Other cells |
immune cells / vasculature | Other cells |
Here are the more detailed result tables:
Model | Head | Score |
---|---|---|
HoverNext | N/A | 0.238 |
musk | SimpleSeg | 0.200 |
titan | SimpleSeg | 0.232 |
phikonv2 | SimpleSeg | 0.243 |
provgigapath | SimpleSeg | 0.264 |
virchow2 | SimpleSeg | 0.286 |
uni2 | SimpleSeg | 0.303 |
titan | UNetR | 0.264 |
phikonv2 | UNetR | 0.280 |
provgigapath | UNetR | 0.280 |
uni | UNetR | 0.288 |
virchow2 | UNetR | 0.295 |
uni2 | UNetR | 0.301 |
Model | Head | Score |
---|---|---|
HoverNext | HoverNext | 0.938 |
musk | SimpleSeg | 0.745 |
phikonv2 | SimpleSeg | 0.746 |
titan | SimpleSeg | 0.800 |
uni | SimpleSeg | 0.826 |
uni2 | SimpleSeg | 0.826 |
provgigapath | SimpleSeg | 0.830 |
virchow2 | SimpleSeg | 0.838 |
titan | UNetR | 0.922 |
phikonv2 | UNetR | 0.927 |
provgigapath | UNetR | 0.927 |
musk | UNetR | 0.929 |
uni | UNetR | 0.934 |
virchow2 | UNetR | 0.943 |
uni2 | UNetR | 0.945 |
Model | Head | Score |
---|---|---|
HoverNext | HoverNext | 0.784 |
musk | SimpleSeg | 0.639 |
titan | SimpleSeg | 0.691 |
phikonv2 | SimpleSeg | 0.697 |
uni | SimpleSeg | 0.710 |
provgigapath | SimpleSeg | 0.714 |
virchow2 | SimpleSeg | 0.717 |
uni2 | SimpleSeg | 0.726 |
musk | UNetR | 0.766 |
titan | UNetR | 0.781 |
uni2 | UNetR | 0.785 |
provgigapath | UNetR | 0.791 |
uni | UNetR | 0.792 |
virchow2 | UNetR | 0.794 |
phikonv2 | UNetR | 0.797 |
Dataset | Model | Score |
---|---|---|
HoverNext | HoverNext | 0.725 |
musk | SimpleSeg | 0.571 |
titan | SimpleSeg | 0.601 |
phikonv2 | SimpleSeg | 0.607 |
uni | SimpleSeg | 0.636 |
provgigapath | SimpleSeg | 0.655 |
uni2 | SimpleSeg | 0.684 |
virchow2 | SimpleSeg | 0.689 |
titan | UNetR | 0.697 |
phikonv2 | UNetR | 0.697 |
provgigapath | UNetR | 0.697 |
uni | UNetR | 0.716 |
musk | UNetR | 0.722 |
virchow2 | UNetR | 0.735 |
uni2 | UNetR | 0.729 |
Dataset | Model | Score |
---|---|---|
HoverNext | HoverNext | 0.639 |
musk | SimpleSeg | 0.519 |
phikonv2 | SimpleSeg | 0.549 |
titan | SimpleSeg | 0.553 |
provgigapath | SimpleSeg | 0.575 |
uni | SimpleSeg | 0.578 |
uni2 | SimpleSeg | 0.608 |
virchow2 | SimpleSeg | 0.614 |
titan | UNetR | 0.630 |
uni | UNetR | 0.643 |
phikonv2 | UNetR | 0.645 |
provgigapath | UNetR | 0.660 |
musk | UNetR | 0.663 |
virchow2 | UNetR | 0.670 |
uni2 | UNetR | 0.695 |
Dataset | Model | Score |
---|---|---|
HoverNext | HoverNext | 0.239 |
musk | UNetR | 0.237 |
titan | UNetR | 0.239 |
uni | UNetR | 0.252 |
phikonv2 | UNetR | 0.256 |
provgigapath | UNetR | 0.261 |
virchow2 | UNetR | 0.266 |
uni2 | UNetR | 0.286 |
Dataset | Model | Score |
---|---|---|
HoverNext | HoverNext | 0.230 |
uni | UNetR | 0.233 |
musk | UNetR | 0.234 |
titan | UNetR | 0.243 |
phikonv2 | UNetR | 0.263 |
provgigapath | UNetR | 0.265 |
uni2 | UNetR | 0.284 |
virchow2 | UNetR | 0.288 |
Dataset | Model | Score |
---|---|---|
HoverNext | HoverNext | 0.209 |
virchow2 | UNetR | 0.222 |
titan | UNetR | 0.222 |
provgigapath | UNetR | 0.223 |
phikonv2 | UNetR | 0.230 |
musk | UNetR | 0.232 |
uni | UNetR | 0.233 |
uni2 | UNetR | 0.251 |