Views
No views yet
MahmoodLab/UNI tile embeddings as input.| Signature | ρ ± std | 95% bootstrap CI | q (BH) | Tag |
|---|---|---|---|---|
| CX3 | +0.384 ± 0.096 | [+0.255, +0.459] | <0.001 | ★ H1 |
| CX1 | +0.366 ± 0.052 | [+0.246, +0.456] | <0.001 | ★ H1 |
| CX12 | +0.359 ± 0.048 | [+0.248, +0.452] | <0.001 | ★ H1 |
| CX6 | +0.271 ± 0.046 | [+0.146, +0.372] | <0.001 | |
| CX10 | +0.236 ± 0.112 | [+0.098, +0.322] | <0.001 | |
| CX17 | +0.205 ± 0.142 | [+0.040, +0.251] | <0.05 | |
| CX2 | +0.193 ± 0.125 | [+0.032, +0.268] | <0.05 | |
| CX5 | +0.189 ± 0.067 | [+0.028, +0.247] | <0.05 | |
| CX4 | +0.171 ± 0.135 | [+0.034, +0.262] | <0.05 | |
| CX16 | +0.149 ± 0.174 | [-0.003, +0.227] | n.s. | |
| CX9 | +0.125 ± 0.193 | [-0.068, +0.147] | n.s. | |
| CX11 | +0.112 ± 0.076 | [-0.064, +0.165] | n.s. | |
| CX8 | +0.087 ± 0.092 | [-0.006, +0.216] | n.s. | |
| CX7, CX13–15 | n/a | inactive in TCGA | — |
n_boot = 10,000WSI -> tile (224 px @ 0.5 mpp, Macenko-normalized)
-> UNI (frozen) -> (N tiles, 1024)
-> GatedABMIL (this model) -> (17,) CX activity prediction1import torch
2from huggingface_hub import snapshot_download
3from modeling_cx_abmil import CXEnsemble
4
5# Download model weights + code
6local = snapshot_download(repo_id="IshaChhikara/cx-uni-abmil-7cohort")
7
8# Load 5-fold ensemble (CPU is fine; the head is tiny)
9model = CXEnsemble.from_pretrained(local, device="cpu")
10
11# Get UNI embeddings for your WSI tiles (see cx-histology repo for tiling)
12tile_embeddings = torch.load("my_slide_uni_embeddings.pt") # (N, 1024)
13tile_embeddings = tile_embeddings.unsqueeze(0) # (1, N, 1024)
14
15# Predict 17 CX activities
16cx = model.predict(tile_embeddings)
17print(cx.shape) # torch.Size([1, 17])| Cohort | n | Within-cohort mean ρ | Within-cohort max ρ |
|---|---|---|---|
| CHOL | 32 | +0.122 | +0.337 |
| KICH | 9 | +0.082 | +0.707 (small n!) |
| READ | 80 | +0.003 | +0.189 |
| MESO | 58 | +0.001 | +0.202 |
| DLBC | 31 | -0.063 | +0.169 |
| UVM | 24 | -0.061 | +0.196 |
| UCS | 55 | +0.037 | +0.302 |
IshaChhikara/cx-uni-abmil-15cohort,
n = 1,454) shows the small-cohort effect sizes do not preserve at scale —
mean active ρ drops to +0.13 with the same architecture. The 7-cohort
numbers are statistically robust but partly an artefact of cohort selection.
Use the 15-cohort model if you need a more conservative estimate.CX7, CX13, CX14, CX15 are essentially zero in TCGA copy-number
profiles (≥ 93% of patients zero). Predictions for these signatures are
emitted but should not be interpreted; the training pipeline auto-masked
them via per-fold variance threshold. The predict_dict() method hides
them by default.MahmoodLab/UNI) is
gated on Hugging Face. You must request access from the authors and
agree to their license terms separately. We do not redistribute UNI weights.CINSignatureQuantification Bioconductor package
(Drews 2022 algorithm).github.com/ishaschhikara316/cx-histology.1@misc{cxuni-abmil-7cohort-2026,
2 title = {Pan-cancer prediction of CIN signatures from H\&E with a frozen UNI foundation model},
3 author = {Chhikara, Isha},
4 year = {2026},
5 note = {In preparation. Code: github.com/ishaschhikara316/cx-histology},
6}modeling_cx_abmil.py — model class + ensemble wrapperinference_example.py — minimal usage exampleconfig.json — architecture + training metadatafold0.pt … fold4.pt — 5 fold checkpoints (state_dict + per-fold label mu/sd)LICENSE — MIT