Skip to content
PMBioPublic

Repository files navigation

Cellina

Tests codecov Docs PyPI arXiv

Cellina predicts how a cell's gene expression would change if its spatial neighborhood changed — tissue graph counterfactuals. It disentangles a cell's intrinsic state (z) from its spatial context (s), then answers two kinds of query on the tissue graph:

  • Edge perturbation — swap a cell's neighbors (e.g. give healthy cells a tumor neighborhood).
  • Node perturbation — change what the neighbors express (e.g. activate or knock out a pathway).

Method details are in the paper: Querying Counterfactuals on Tissue Graphs with Supervised Disentanglement.

Models

Class Paper name Spatial encoder
Cellina Cellina Pseudobulk of neighbor expression → MLP; fast, scales like non-spatial baselines
CellinaGCN Cellina-GAT GATv2 on the local subgraph; learns attention over neighbors

Both perform on par.

Getting started

pip install cellina

Or install with one of the shipped conda environments — environment.yml (GPU/CUDA) or env_minimal.yml (CPU) — via conda env create -f <file>. pip install cellina gives Cellina; CellinaGCN additionally needs PyG: install the torch-scatter/torch-sparse wheels for your torch/CUDA from data.pyg.org, then pip install "cellina[gat]".

Then follow the tutorials on colorectal cancer tissue: Cellina and Cellina-GAT (notebooks in docs/). Release notes are in the changelog.

Citation

@inproceedings{moeed2026querying,
  title     = {Querying Counterfactuals on Tissue Graphs with Supervised Disentanglement},
  author    = {Moeed, Abdul and Schrod, Stefan and Rohbeck, Martin and Bonder, Marc Jan and Lutsik, Pavlo and Stegle, Oliver and Dimitrov, Daniel},
  booktitle = {The Fortieth Annual Conference on Neural Information Processing Systems},
  year      = {2026},
  url       = {https://arxiv.org/abs/2606.08493v2}
}

Built on scvi-tools. Bugs and questions: issue tracker.

Releases

Packages

Contributors

Languages