单细胞分析|Seurat中的跨模态整合

简介: 在单细胞基因组学中,新方法“桥接整合”允许将scATAC-seq、scDNAme等技术的数据映射到基于scRNA-seq的参考数据集,借助多组学数据作为桥梁。研究展示了如何将scATAC-seq数据集映射到人类PBMC的scRNA-seq参考,使用10x Genomics的多组学数据集。Azimuth ATAC工具提供了自动化的工作流程,支持在R和网页平台上执行桥接整合。通过加载和预处理不同数据集,映射scATAC-seq数据并进行评估,证明了映射的准确性和细胞类型预测的可靠性。此方法扩展了参考映射框架,促进了不同技术间的互操作性。

简介

在单细胞基因组学领域,将新数据集映射到已建立的参考数据集上的能力,与读取映射工具变革基因组序列分析的方式如出一辙。

一个关键的挑战是将这种参考映射框架扩展到不测量基因表达的技术,即使底层参考是基于单细胞RNA测序(scRNA-seq)的。在Hao et al, Nat Biotechnol 2023中,介绍了“桥接整合”(bridge integration),它使得将补充技术(如单细胞ATAC-seq(scATAC-seq)、单细胞DNA甲基化(scDNAme)、细胞因子分析(CyTOF))映射到scRNA-seq参考数据上成为可能,使用一个“多组学”数据集作为分子桥接。

在本文中,我们将展示如何将人类PBMC的scATAC-seq数据集映射到我们之前构建的PBMC参考数据。我们使用一个公开可用的10x多组学数据集作为桥接数据集,该数据集在同一细胞中同时测量基因表达和染色质可及性。

我们展示了以下内容:

  • 加载和预处理scATAC-seq、多组学和scRNA-seq参考数据集
  • 通过桥接整合映射scATAC-seq数据集
  • 探索和评估所得注释

Azimuth ATAC用于桥接整合

用户现在可以在Azimuth网站或R中使用新发布的Azimuth ATAC工作流程自动运行PBMC和骨髓scATAC-seq查询的桥接整合。有关在R中本地运行的更多详细信息,请参见此vignette中的ATAC数据部分。

library(Seurat)
library(Signac)
library(EnsDb.Hsapiens.v86)
library(dplyr)
library(ggplot2)

加载桥接、查询和参考数据集

我们首先加载一个包含约12,000个健康捐献者的PBMC的10x多组学数据集。该数据集在同一细胞中测量RNA-seq和ATAC-seq,并可从10x Genomics 此处下载。我们遵循Signac包vignette中的加载说明。请注意,使用Signac时,请确保您使用的是最新版本的Bioconductor,因为用户在使用较旧的BioC版本时报告了错误

加载和设置10x多组学对象

# 10x hdf5文件包含两种数据类型。
inputdata.10x <- Read10X_h5("/brahms/hartmana/vignette_data/pbmc_cellranger_arc_2/pbmc_granulocyte_sorted_10k_filtered_feature_bc_matrix.h5")

# 提取RNA和ATAC数据
rna_counts <- inputdata.10x$`Gene Expression`
atac_counts <- inputdata.10x$Peaks

# 创建Seurat对象
obj.multi <- CreateSeuratObject(counts = rna_counts)

# 获取线粒体基因的百分比
obj.multi[["percent.mt"]] <- PercentageFeatureSet(obj.multi, pattern = "^MT-")

# 添加ATAC-seq检测
grange.counts <- StringToGRanges(rownames(atac_counts), sep = c(":", "-"))
grange.use <- seqnames(grange.counts) %in% standardChromosomes(grange.counts)
atac_counts <- atac_counts[as.vector(grange.use), ]

# 获取基因注释
annotations <- GetGRangesFromEnsDb(ensdb = EnsDb.Hsapiens.v86)

# 切换到UCSC风格
seqlevelsStyle(annotations) <- 'UCSC'
genome(annotations) <- "hg38"

# 包含ATAC每个片段信息的文件
frag.file <- "/brahms/hartmana/vignette_data/pbmc_cellranger_arc_2/pbmc_granulocyte_sorted_10k_atac_fragments.tsv.gz"

# 将ATAC-seq数据作为ChromatinAssay对象添加
chrom_assay <- CreateChromatinAssay(
  counts = atac_counts,
  sep = c(":", "-"),
  genome = 'hg38',
  fragments = frag.file,
  min.cells = 10,
  annotation = annotations)

# 将ATAC检测添加到多组学对象
obj.multi[["ATAC"]] <- chrom_assay

# 根据QC指标过滤ATAC数据
obj.multi <- subset(
  x = obj.multi,
  subset = nCount_ATAC < 7e4 &
    nCount_ATAC > 5e3 &
    nCount_RNA < 25000 &
    nCount_RNA > 1000 &
    percent.mt < 20)

scATAC-seq 查询数据集代表来自健康捐赠者的约 10,000 个 PBMC。我们加载峰/细胞矩阵,存储片段文件的路径,并向对象添加基因注释,遵循多组实验中 ATAC 数据的步骤。

加载并设置 10x scATAC-seq 查询

我们从最近的论文中加载 reference:

obj.rna <- readRDS("/brahms/haoy/seurat4_pbmc/pbmc_multimodal_2023.rds")

映射scATAC-seq数据集使用桥接整合

现在我们已经设置了参考、查询和桥接数据集,我们可以开始整合。桥接数据集使得scRNA-seq参考和scATAC-seq查询之间的转换成为可能,有效地扩展了参考数据集,使其能够映射新的数据类型。

我们称这个扩展的参考为“扩展参考”,首先设置它。请注意,您可以保存此函数的结果,而无需重新运行即可映射多个scATAC-seq数据集。

首先,我们丢弃ATAC降维的第一个维度。

dims.atac <- 2:50
dims.rna <- 1:50
DefaultAssay(obj.multi) <- "RNA"
DefaultAssay(obj.rna) <- "SCT"
obj.rna.ext <- PrepareBridgeReference(
  reference = obj.rna,
  bridge = obj.multi,
  reference.reduction = "spca",
  reference.dims = dims.rna,
  normalization.method = "SCT")

现在,我们可以直接在扩展参考和查询对象之间找到锚点。我们使用FindBridgeTransferAnchors函数,它使用与转换参考相同的字典来转换查询数据集,然后在该空间中识别锚点。该函数旨在模仿我们的FindTransferAnchors函数,但是要识别跨模态的对应关系。

bridge.anchor <- FindBridgeTransferAnchors(
  extended.reference = obj.rna.ext,
  query = obj.atac,
  reduction = "lsiproject",
  dims = dims.atac)

一旦我们识别了锚点,我们就可以将查询数据集映射到参考上。MapQuery函数与我们之前介绍的用于参考映射的函数相同。它从参考数据集中转移细胞注释,并且还在先前计算的UMAP嵌入上可视化查询数据集。由于我们的参考数据集包含三个分辨率级别的细胞类型注释(l1 - l3),我们可以将每个级别转移到查询数据集中。

obj.atac <- MapQuery(
  anchorset = bridge.anchor,
  reference = obj.rna.ext,
  query = obj.atac,
  refdata = list(
    l1 = "celltype.l1",
    l2 = "celltype.l2",
    l3 = "celltype.l3"
  ),
  reduction.model = "wnn.umap")

现在我们可以可视化结果,在参考UMAP嵌入上绘制基于其预测注释的scATAC-seq细胞。您可以看到,每个scATAC-seq细胞都根据scRNA-seq定义的细胞本体学被分配了一个细胞名称。

DimPlot(
  obj.atac, group.by = "predicted.l2",
  reduction = "ref.umap", label = TRUE
) + ggtitle("ATAC") + NoLegend()

评估映射

为了评估映射和细胞类型预测,我们首先看看预测的细胞类型标签是否与scATAC-seq数据集的无监督分析一致。我们遵循scATAC-seq数据的标准无监督处理工作流程:

obj.atac <- FindTopFeatures(obj.atac, min.cutoff = "q0")
obj.atac <- RunSVD(obj.atac)
obj.atac <- RunUMAP(obj.atac, reduction = "lsi", dims = 2:50)

现在,我们在无监督UMAP嵌入上可视化预测的簇标签。我们可以看到,预测的簇标签(来自scRNA-seq参考)与scATAC-seq数据的结构一致。然而,有些细胞类型(例如Treg)在无监督分析中似乎没有分开。这些可能是预测错误,或者是参考映射提供额外分辨率的情况。

DimPlot(obj.atac, group.by = "predicted.l2", reduction = "umap", label = FALSE)

最后,我们通过检查scATAC-seq数据在典型位点的染色质可及性剖面来验证预测的细胞类型。我们使用CoveragePlot函数在CD8A、FOXP3和RORC处可视化可及性模式,按照其预测标签对细胞进行分组。我们在每种情况下都看到了预期的模式。例如,PAX5位点显示出仅在B细胞中可访问的峰,CD8A位点在CD8 T细胞亚群中也是如此。同样,预测的Tregs中FOXP3的可及性为我们的预测准确性提供了强有力的支持。

CoveragePlot(
  obj.atac, region = "PAX5", group.by = "predicted.l1",
  idents = c("B", "CD4 T", "Mono", "NK"), window = 200,
  extend.upstream = -150000
)

CoveragePlot(
  obj.atac, region = "CD8A", group.by = "predicted.l2",
  idents = c("CD8 Naive", "CD4 Naive", "CD4 TCM", "CD8 TCM"),
  extend.downstream = 5000, extend.upstream = 5000
)

CoveragePlot(
  obj.atac, region = "FOXP3", group.by = "predicted.l2",
  idents = c("CD4 Naive", "CD4 TCM", "CD4 TEM", "Treg"),
  extend.downstream = 0, extend.upstream = 0
)

CoveragePlot(
  obj.atac, region = "RORC", group.by = "predicted.l2",
  idents = c("CD8 Naive", "CD8 TEM", "CD8 TCM", "MAIT"),
  extend.downstream = 5000, extend.upstream = 5000
)

未完待续,欢迎关注!

相关文章
|
7月前
|
算法 数据挖掘 Go
文献速读|5分生信+免疫组化单细胞联合bulk转录组肿瘤预后模型
研究摘要: 在《Cancer Immunology Immunotherapy》上发表的一篇文章,通过整合Bulk和单细胞RNA-seq数据,探讨了非小细胞肺癌(NSCLC)中癌相关纤维细胞(CAF)的作用。研究者识别出CAF的预后标志物,构建了一个基于CAF的模型,该模型在四个独立队列中区分了预后良好的和较差的患者。WGCNA分析鉴定出CAF标记基因,而CAF分数与免疫微环境和免疫治疗反应相关。高CAF分数关联较差的免疫治疗反应,FBLIM1被发现为CAF的主要来源,其高表达预测了免疫疗法的不良反应。该研究揭示了CAF在NSCLC免疫抑制和治疗策略中的重要地位。
190 1
|
7月前
|
数据建模 计算机视觉
SiMBA:基于Mamba的跨图像和多元时间序列的预测模型
微软研究者提出了SiMBA,一种融合Mamba与EinFFT的新架构,用于高效处理图像和时间序列。SiMBA解决了Mamba在大型网络中的不稳定性,结合了卷积、Transformer、频谱方法和状态空间模型的优点。在ImageNet 1K上表现优越,达到84.0%的Top-1准确率,并在多变量长期预测中超越SOTA,降低了MSE和MAE。代码开源,适用于复杂任务的高性能建模。[[论文链接]](https//avoid.overfit.cn/post/c21aa5ca480b47198ee3daefdc7254bb)
1164 3
|
1月前
|
数据可视化 搜索推荐
单细胞分析 | 基因组区域的可视化 (2)
单细胞分析 | 基因组区域的可视化 (2)
33 0
单细胞分析 | 基因组区域的可视化 (2)
|
2月前
|
存储 数据可视化 搜索推荐
单细胞分析 | 基因组区域的可视化 (1)
单细胞分析 | 基因组区域的可视化 (1)
52 0
单细胞分析 | 基因组区域的可视化 (1)
|
3月前
|
存储 数据挖掘
单细胞|线粒体基因型和DNA可及性联合分析
单细胞|线粒体基因型和DNA可及性联合分析
93 15
单细胞|线粒体基因型和DNA可及性联合分析
|
2月前
|
存储 算法 数据可视化
单细胞分析 | Cicero+Signac 寻找顺式共可及网络
单细胞分析 | Cicero+Signac 寻找顺式共可及网络
33 0
|
5月前
|
数据可视化 数据挖掘
空间单细胞|在Seurat中对空间数据进行分析(4)
空间单细胞|在Seurat中对空间数据进行分析(4)
72 1
|
6月前
|
存储 编解码 数据可视化
单细胞空间|在Seurat中对基于图像的空间数据进行分析(1)
单细胞空间|在Seurat中对基于图像的空间数据进行分析(1)
62 5
|
6月前
|
数据可视化 数据挖掘 数据库
空间单细胞|基于图像的数据分析(3)
空间单细胞|基于图像的数据分析(3)
55 0
|
7月前
|
存储 数据可视化 数据挖掘
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
54 0