| --- |
| license: mit |
| tags: |
| - single-cell |
| - scRNA-seq |
| - cell-type-classification |
| - contrastive-learning |
| - domain-adaptation |
| library_name: pytorch |
| pipeline_tag: feature-extraction |
| --- |
| |
| # 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 |
|
|
| ```bash |
| # 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 |
|
|
| ```python |
| 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. |
|
|