07 多模态数据分析
07 多模态数据分析
多模态单细胞技术在一个细胞里同时测两种信息:CITE-seq 同时测 RNA 和细胞表面蛋白,10x Multiome 同时测 RNA 和染色质可及性。相比纯 scRNA-seq,多模态数据的优势是可以相互验证和补充:RNA 层的聚类结果,往往能在蛋白层找到更清晰的 marker。
本节用 10x Genomics 的 5k PBMC CITE-seq 数据演示最常用的一条 CITE-seq 分析流程:分别标准化 RNA 和 ADT,再用 WNN(Weighted Nearest Neighbor)做联合聚类。
多模态技术对比
| 技术 | 测量内容 | 常见用途 |
|---|---|---|
| CITE-seq | RNA + 表面蛋白(ADT) | 免疫学、细胞分型 |
| ASAP-seq | RNA + 染色质开放 | 调控机制 |
| 10x Multiome | RNA + ATAC(同细胞) | 基因表达与调控联动 |
| Perturb-seq | RNA + CRISPR 扰动 | 遗传学筛选 |
CITE-seq 门槛低,直接用标准 Seurat/Scanpy 就能做;Multiome 需要走 Cell Ranger ARC 流程,后续分析借助 Signac 或 MultiVI。
CITE-seq 的 WNN 分析
数据是 01 章里介绍过的 5k PBMC CITE-seq,下载后 filtered_feature_bc_matrix/ 目录里同时包含 Gene Expression 和 Antibody Capture 两层矩阵。
先读入并分别对两层数据做标准化和降维:
library(Seurat)
# 读取 CITE-seq 数据(同时包含 RNA 和 ADT)
data_dir <- "~/biof3-data/pbmc5k-citeseq/filtered_feature_bc_matrix"
counts <- Read10X(data.dir = data_dir)
# 创建 Seurat 对象:RNA 作为主 assay,ADT 作为额外 assay
cbmc <- CreateSeuratObject(counts = counts$`Gene Expression`, project = "PBMC5K_CITE")
cbmc[["ADT"]] <- CreateAssayObject(counts = counts$`Antibody Capture`)
# RNA 标准化 + 高变基因 + PCA
DefaultAssay(cbmc) <- "RNA"
cbmc <- NormalizeData(cbmc)
cbmc <- FindVariableFeatures(cbmc)
cbmc <- ScaleData(cbmc)
cbmc <- RunPCA(cbmc)
# ADT 用 CLR 归一化(Centered Log Ratio),更适合抗体信号
DefaultAssay(cbmc) <- "ADT"
cbmc <- NormalizeData(cbmc, normalization.method = "CLR", margin = 2)
cbmc <- ScaleData(cbmc)
cbmc <- RunPCA(cbmc, reduction.name = "apca")
RNA 和 ADT 的归一化方式不同:RNA 常用 LogNormalize,ADT 用 CLR(margin = 2 意为按细胞做 CLR)。两层分别做完 PCA 后,用 WNN 把它们的邻居结构加权合并,再在合并图上聚类和降维:
# WNN:根据两个 reduction 同时找邻居
cbmc <- FindMultiModalNeighbors(
cbmc,
reduction.list = list("pca", "apca"),
dims.list = list(1:30, 1:18)
)
# 在 WNN 图上做 UMAP 和聚类
cbmc <- RunUMAP(cbmc, nn.name = "weighted.nn", reduction.name = "wnn.umap")
cbmc <- FindClusters(cbmc, graph.name = "wsnn", resolution = 0.5)
# 可视化
DimPlot(cbmc, reduction = "wnn.umap", label = TRUE)
跑完得到的 cbmc@meta.data 里会新增一列 seurat_clusters,Reductions(cbmc) 里会多出 wnn.umap。比较三张 UMAP(只用 RNA、只用 ADT、WNN 联合)通常会看到:WNN 版本在分群边界上更干净,尤其是 T 细胞内部的 CD4/CD8 亚群。
后续可做的分析
- 按蛋白 marker 重新注释聚类:PBMC 的 ADT panel 一般包含 CD3/CD4/CD8/CD19/CD14 等经典标志,比起光靠 RNA 标记,注释会更可靠。
- 找差异蛋白:
FindMarkers(cbmc, assay = "ADT", ...)可以直接在 ADT 层做差异分析。 - 与原章节对比:把这份数据的 WNN 聚类结果和 04 章里只做 RNA 的整合结果画到一起,能看到蛋白信号如何修正 RNA-only 的分群。
10x Multiome(RNA + ATAC)分析思路类似,但 ATAC 层要用 Signac,归一化方法是 TF-IDF + SVD,后面在 10 scATAC-seq 分析 里会再讲。