PANDA โ Pan-tissue Adversarial Normalized Domain-invariant Anchored MLP
Prototype-anchored MLP classifier for scRNA-seq cell identity across skin, hematopoietic, and pancreatic tissues. Trained under a composite of SupCon + VICReg + prototype-InfoNCE + GRL dataset+depth adversary + HSIC decorrelation + prototype-repulsion.
Two variants: PANDA-PCA and PANDA-Marker (adds a marker gene channel).
Code + paper: https://github.com/bryanc5864/PRISM
Contents
| Path | Description |
|---|---|
checkpoints/{system}/{pca,marker}/panda_final.pt |
Final trained weights per system ร variant (6 core models) |
checkpoints/pan_skin_dingwall_derm/panda_final.pt |
Line C: PANDA-Marker trained on Dingwall Derm labels |
data/corpus/{system}/harmonized/ |
Training corpora (h5ad + stats + PCA basis) |
data/external_labels/ |
Paper-supplement label files per source study |
data/processed/dingwall_replica/ |
Independent scanpy reproduction of Dingwall Seurat pipeline |
discovery/ |
Discovery-analysis outputs backing every paper claim |
figures/ |
Main + supplement + biology figures + merged PDFs |
panda/, scripts/ |
Model + analysis code (also on GitHub) |
PAPER.tex, PAPER.pdf |
Manuscript |
README.md |
Full end-to-end reproduction recipe |
Quick fetch
# essentials only (~30 GB)
huggingface-cli download bryan7264/PANDA \
--local-dir . \
--include "checkpoints/**" "data/corpus/**" "data/external_labels/**" "discovery/**"
# individual system
huggingface-cli download bryan7264/PANDA \
--local-dir . \
--include "data/corpus/pan_skin/**" "checkpoints/pan_skin/**"
Usage
import torch
from panda.model import PANDAEncoder
ck = torch.load("checkpoints/pan_skin/marker/panda_final.pt", map_location="cpu",
weights_only=False)
model = PANDAEncoder(variant="marker", n_pca=50,
n_markers=len(ck["marker_genes"]),
n_classes=len(ck["classes"]), n_sub=3,
n_datasets=len(ck["datasets"]))
model.load_state_dict(ck["model"])
model.eval()
See PAPER.pdf for full experimental setup and README.md for the reproduction recipe.