Champollion¶
Champollion learns an interpretable cross-modality cost from paired bridge cells and uses it to integrate unpaired single-cell profiles across modalities. It is designed for scverse workflows with AnnData and MuData, and exposes utilities for annotation transfer, barycentric projection, and interpretation of the learned interaction matrix.
Install¶
Install the latest stable release from PyPI (recommended):
pip install champollion-omics
Optional Weights & Biases logging can be installed with:
pip install "champollion-omics[wandb]"
To install the latest development version from GitHub instead:
pip install "git+https://github.com/cantinilab/champollion.git"
Champollion is designed to take advantage of a GPU and runs much faster with one, typically taking only a few minutes on datasets with thousands of cells.
Getting Started¶
For a concrete application, see the tutorials; the example below is only a compact overview of the API. Champollion is fitted on a paired bridge stored in a MuData object. It can then be applied to modality-specific AnnData objects containing unpaired cells.
from champollion import Champollion
model = Champollion(
epsilon=1.0,
gamma=0.001,
lambda_prior=20.0,
use_keops=False,
device="auto",
random_state=0,
)
model.fit(
mdata_bridge,
modality_1="rna",
modality_2="atac",
x_1_rep="X_pca",
x_2_rep="X_lsi",
y_prior_1_rep="X_prior",
y_prior_2_rep="X_prior",
)
result = model.transport(
{"rna": adata_rna, "atac": adata_atac},
x_reps={"rna": "X_pca", "atac": "X_lsi"},
y_prior_reps={"rna": "X_prior", "atac": "X_prior"},
)
predicted_atac_labels = result.transfer_obs(
key="cell_type",
source="rna",
kind="categorical",
)
The learned matrix can be inspected directly:
A = model.A_dataframe()
top_links = model.top_interactions("CD18", modality="protein", k=10)
User Guide
API Reference