Partition PBMC 68k (reduced)#
Partition Scanpy’s bundled pbmc68k_reduced dataset with CAMP3, then compute
quality metrics against Louvain clusters.
Setup and partition#
import campmc as cp
import scanpy as sc
adata = sc.datasets.pbmc68k_reduced()
cp.partition(adata, method="camp3", gamma=50, random_state=0)
adata.obs["camp"].head()
index
AAAGCCTGGCTAAC-1 seed11-50-__all__
AAATTCGATGCACA-1 seed11-50-__all__
AACACGTGGTCTTT-1 seed3-50-__all__
AAGTGCACGTGCTA-1 seed13-50-__all__
ACACGAACGGAGTG-1 seed5-50-__all__
Name: camp, dtype: str
This object already has PCA embeddings, so preprocessing is optional. Labels land
in obs['camp']; coreset seeds are flagged in obs['camp_is_seed'].
import campmc as cp
import scanpy as sc
adata = sc.datasets.pbmc68k_reduced()
cp.partition(adata, method="camp3", gamma=50, random_state=0)
int(adata.obs["camp_is_seed"].sum())
14
Quality metrics#
import campmc as cp
import scanpy as sc
adata = sc.datasets.pbmc68k_reduced()
cp.partition(adata, method="camp3", gamma=50, random_state=0)
metrics = cp.mt.quality(adata, partition_key="camp", label_key="louvain")
metrics[["metacell_id", "size", "purity", "compactness"]].head()
| metacell_id | size | purity | compactness | |
|---|---|---|---|---|
| 0 | seed0-50-__all__ | 65 | 0.984615 | -0.001010 |
| 1 | seed1-50-__all__ | 34 | 0.911765 | -0.000305 |
| 2 | seed10-50-__all__ | 3 | 0.666667 | -0.000724 |
| 3 | seed11-50-__all__ | 158 | 0.708861 | -0.000695 |
| 4 | seed12-50-__all__ | 42 | 0.809524 | -0.000890 |
Variants#
Other assigners:
method="camp1"…"camp4". CAMP4 uses SEACells and is slower on large objects.Multiple compressions:
gammas=[25, 50, 100]writescamp_25,camp_50, …Raw counts: run
campmc.preprocess()first to obtainobsm['X_pca'].