使用 Seurat 处理多模态数据


前言

“Multimodal analysis”(多模态分析)指的是同时整合和分析多种不同类型的数据模式。这可能包括但不限于以下几种组合:

  • 基因表达数据(如 RNA 测序数据)与蛋白质表达数据的结合分析。
  • 基因表达数据与细胞表面标志物数据(如通过抗体检测得到的数据)的联合分析。
  • 不同组学数据(如转录组学和蛋白质组学数据)的综合考量。

通过多模态分析,可以更全面、综合地了解细胞的特征和状态,发现不同数据模式之间的关联和协同关系,从而获得更深入、更全面的生物学见解。


一、Multimodal analysis有什么用?

Seurat v5中的多模式分析可以更全面地理解和解释单细胞转录组和蛋白质组数据,从而提供对细胞类型、基因-蛋白网络、信号通路和功能注释的更深入理解。主要有以下用处?

  1. 细胞类型识别:多模式分析可以结合转录组和蛋白质组数据,帮助确定单个细胞的类型。通过比较转录组和蛋白质组之间的差异,可以更准确地确定细胞群的身份。

  2. 基因-蛋白互作网络分析:多模式分析可以帮助研究人员探索基因和蛋白之间的相互作用。通过将转录组和蛋白质组数据整合在一起,可以建立细胞内基因-蛋白网络,并分析其在细胞功能和疾病发展中的作用。

  3. 信号通路分析:多模式分析有助于研究细胞信号通路的活动。通过分析蛋白质组数据,可以确定不同信号通路的活性水平,并与转录组数据相结合,了解细胞信号传导的动态变化。

  4. 功能注释:多模式分析可以帮助研究人员对细胞功能进行注释。通过整合转录组和蛋白质组数据,可以更全面地了解细胞功能、代谢途径和细胞功能的潜在机制。

二、代码复现

以下代码来自于seuratv5官网,有兴趣的朋友们可以去官网更加详细的了解一下

1.数据的导入

代码如下(示例):

library(Seurat)
library(ggplot2)
library(patchwork)

# 请注意,此数据集还包含约 5%的小鼠细胞,我们可以将其用作蛋白质测量的阴性对照。因此,基因表达矩阵在每个基因的开头都附加了“HUMAN_”或“MOUSE_”
# RNA测量
cbmc.rna <- as.sparse(read.csv(file = "G:/R/multi-modal_data/GSE100866_CBMC_8K_13AB_10X-RNA_umi.csv.gz",
                               sep = ",", header = TRUE, row.names = 1)) # 函数将读取的数据转换为稀疏矩阵形式

# 舍弃除前 100 个表达量最高的小鼠基因之外的所有基因,并且从 CITE-seq 前缀中移除“HUMAN_”
cbmc.rna <- CollapseSpeciesExpressionMatrix(cbmc.rna)

# ADK -- 抗体衍生标签
cbmc.adt <- as.sparse(read.csv(file = "G:/R/multi-modal_data/GSE100866_CBMC_8K_13AB_10X-ADT_umi.csv.gz",
                               sep = ",", header = TRUE, row.names = 1))
# 注意: 由于测量是在相同的细胞中进行的,所有稀疏矩阵具有相同的列名
all.equal(colnames(cbmc.rna), colnames(cbmc.adt))

# 最后的结果是两个稀疏矩阵

2.构建seurat对象,并添加RNA和protein数据

代码如下(示例):

cbmc <- CreateSeuratObject(counts = cbmc.rna)

# 我们可以看到,默认情况下,cbmc 对象包含一个用于存储 RNA 测量值的检测。
Assays(cbmc)

# 创建一个新的检测来存储 ADT 信息
adt_assay <- CreateAssay5Object(counts = cbmc.adt)
cbmc[['ADT']] <- adt_assay
# 验证该对象现在包含多个检测分析
Assays(cbmc)
# 提取在 ADT 检测中测量的特征列表 
rownames(cbmc[['ADT']])

# 我们可以在这两种测定之间轻松地来回切换,以指定用于可视化和分析的默认值
DefaultAssay(cbmc)

# Switch the default to ADT
DefaultAssay(cbmc) <- "ADT"
DefaultAssay(cbmc)

3.根据其单细胞 RNA 测序(scRNA-seq)图谱对细胞进行聚类

代码如下(示例):

# 注意以下所有操作均在 RNA 检测集上执行,并验证默认检测为 RNA
cbmc <- NormalizeData(cbmc)
cbmc <- FindVariableFeatures(cbmc)
cbmc <- ScaleData(cbmc)
cbmc <- RunPCA(cbmc, verbose = FALSE)
cbmc <- FindNeighbors(cbmc, dims = 1:30)
cbmc <- FindClusters(cbmc, resolution = 0.8, verbose = FALSE)
cbmc <- RunUMAP(cbmc, dims = 1:30)
DimPlot(cbmc, label = TRUE)

请添加图片描述

4.并排可视化多种模态

代码如下(示例):

# 注意在某些情况下,相同的特征可能存在于多种模式中——例如,此数据集包含 B 细胞标志物 CD19 的独立测量值(包括蛋白质和 RNA 水平)
DefaultAssay(cbmc) <- 'ADT'
cbmc <- NormalizeData(cbmc,normalization.method = 'CLR', # 表示使用“中心对数比(Centered Log Ratio)”方法进行归一化
                      margin = 2) # 表示沿着矩阵的列(即基因维度)进行归一化操作。通过这种归一化,可以使数据在一定程度上标准化,以便后续更好地进行分析和比较

# DefaultAssay(cbmc) <- 'RNA'
# 这是归一化的另一种方法,得到的结果是相同的
# cbmc <- NormalizeData(cbmc, normalization.method = "CLR", margin = 2, assay = "ADT") # 这里只针对ADT进行归一化

4.1.1可视化RNA和蛋白质水平,这里检测的基因CD19在蛋白质和RNA中均有表达

DefaultAssay(cbmc) <- "ADT"
p1 <- FeaturePlot(cbmc, "CD19", cols = c("lightgrey", "darkgreen")) + ggtitle("CD19 protein")
DefaultAssay(cbmc) <- "RNA"
p2 <- FeaturePlot(cbmc, "CD19") + ggtitle("CD19 RNA")
p1 | p2

4.1.2 我们可以使用特定的检测键来指定特定的模式 确定 RNA 和蛋白质检测的键

Key(cbmc[["RNA"]])
Key(cbmc[["ADT"]])
p1 <- FeaturePlot(cbmc, "adt_CD19", cols = c("lightgrey", "darkgreen")) + ggtitle("CD19 protein")
p2 <- FeaturePlot(cbmc, "rna_CD19") + ggtitle("CD19 RNA")
p1 | p2

请添加图片描述

5.确定用于单细胞 RNA 测序(scRNA-seq)簇的细胞表面标志物

# 我们可以利用我们成对的 CITE-seq 测量来帮助注释源自 scRNA-seq 的簇,并识别蛋白质和 RNA 标记
# 正如我们所知,CD19 是 B 细胞标志物,我们可以确定第 6 簇在表面表达 CD19
VlnPlot(cbmc,'adt_CD19')

# 我们还可以通过差异表达为这个簇识别替代的蛋白质和 RNA 标记物
adt_markers <- FindMarkers(cbmc, ident.1 = 6, assay = "ADT")
rna_markers <- FindMarkers(cbmc, ident.1 = 6, assay = "RNA")

请添加图片描述

head(adt_markers)
               p_val avg_log2FC pct.1 pct.2     p_val_adj
CD19   2.067533e-215  2.5741873     1     1 2.687793e-214
CD45RA 8.106076e-109  0.5300346     1     1 1.053790e-107
CD4    1.123162e-107 -1.6707420     1     1 1.460110e-106
CD14   7.212876e-106 -1.0332070     1     1 9.376739e-105
CD3     1.639633e-87 -1.5823056     1     1  2.131523e-86
CCR5    2.552859e-63  0.3753989     1     1  3.318716e-62
head(rna_markers)
      p_val avg_log2FC pct.1 pct.2 p_val_adj
IGHM      0   6.660187 0.977 0.044         0
CD79A     0   6.748356 0.965 0.045         0
TCL1A     0   7.428099 0.904 0.028         0
CD79B     0   5.525568 0.944 0.089         0
IGHD      0   7.811884 0.857 0.015         0
MS4A1     0   7.523215 0.851 0.016         0

6.多模态数据的附加可视化

# 绘制 ADT 散点图(例如用于流式细胞术的双轴图)
FeatureScatter(cbmc,feature1 = 'adt_CD19',feature2 = 'adt_CD3')

请添加图片描述

# 查看蛋白质和RNA之间的关系
FeatureScatter(cbmc,feature1 = 'adt_CD3',feature2 = 'rna_CD3E')

请添加图片描述

# 让我们看一下原始(未标准化的)ADT 计数。您可以看到这些值相当高,特别是与 RNA 值相比。这是由于细胞中蛋白质的拷贝数显著更高,这显著减少了 ADT 数据中的“缺失值”
FeatureScatter(cbmc, feature1 = "adt_CD4", feature2 = "adt_CD8")|
  FeatureScatter(cbmc, feature1 = "adt_CD4", feature2 = "adt_CD8", slot = "counts")

请添加图片描述

7.从 10X 多模态实验加载数据

# Seurat 还能够分析使用 CellRanger v3 处理的多模态 10X 实验的数据;例如,我们使用一个 7900 个外周血单个核细胞(PBMC)的数据集重新创建上述图表,该数据集可从 10X Genomics 在此处免费获取
pbmc10k.data <- Read10X(data.dir = "/pbmc10k/filtered_feature_bc_matrix/")
rownames(x = pbmc10k.data[["Antibody Capture"]]) <- gsub(pattern = "_[control_]*TotalSeqB", replacement = "",
                                                         x = rownames(x = pbmc10k.data[["Antibody Capture"]]))

pbmc10k <- CreateSeuratObject(counts = pbmc10k.data[["Gene Expression"]], min.cells = 3, min.features = 200)
pbmc10k <- NormalizeData(pbmc10k)
pbmc10k[["ADT"]] <- CreateAssayObject(pbmc10k.data[["Antibody Capture"]][, colnames(x = pbmc10k)])
pbmc10k <- NormalizeData(pbmc10k, assay = "ADT", normalization.method = "CLR")

plot1 <- FeatureScatter(pbmc10k, feature1 = "adt_CD19", feature2 = "adt_CD3", pt.size = 1)
plot2 <- FeatureScatter(pbmc10k, feature1 = "adt_CD4", feature2 = "adt_CD8a", pt.size = 1)
plot3 <- FeatureScatter(pbmc10k, feature1 = "adt_CD3", feature2 = "CD3E", pt.size = 1)
(plot1 + plot2 + plot3) & NoLegend()

plot <- FeatureScatter(cbmc, feature1 = "adt_CD19", feature2 = "adt_CD3") + NoLegend() + theme(axis.title = element_text(size = 18),
                                                                                               legend.text = element_text(size = 18))
ggsave(filename = "../output/images/citeseq_plot.jpg", height = 7, width = 12, plot = plot, quality = 50)

总结(数据领取处)

链接:百度网盘
提取码:bui1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莘薪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值