scATAC-seq数据分析除了经典的 Signac软件,还有一款也使用超多的软件 ArchR,官网给到你:
https://www.archrproject.com/index.html
这个软件于2021年2月25号发表在 Nature Genetics 杂志上,文献标题为《ArchR is a scalable software package for integrative single-cell chromatin accessibility analysis》。作者认为 ArchR 是目前最全面且用户友好的单细胞ATAC-seq和多组学数据分析工具。开发团队将继续改进和扩展ArchR的功能,以保持其在该领域的领先地位。
分析流程:
大家看文章的通讯作者就知道是 ATAC-seq 这个领域的大佬了:William J. Greenleaf
ATAC-seq方法是 2013 年由斯坦福大学的 William J. Greenleaf 和 Howard Y. Chang 实验室共同开发的用于研究染色质可及性/开放性的方法。第一个scATAC-seq数据是 2015 年由Greenleaf(Buenrostro, Wu et al. 2015)和Shendure(Cusanovich, Daza et al. 2015)实验室的分别发布Nature和Science期刊上,他们通过修改ATAC-seq protocal获取了几百~上万个细胞。其中Greenleaf实验室Nature文章中是依赖物理隔离单细胞,而Shendure实验室避免了单细胞反应体积使用两步组合索引策略。
在ATAC-seq数据中,fragment 指 由两次转座事件产生的可测序DNA分子,每个片段的两端通过配对末端测序进行测序。
在 ArchR 中, fragments 指的是一个表格或基因组范围对象,其中包含每个测序片段对应的染色体、经过偏移调整的单碱基染色体起始位置、经过偏移调整的单碱基染色体终止位置以及唯一的细胞条形码ID。
ATAC-seq更加详细的概念可以看这篇文献:https://pmc.ncbi.nlm.nih.gov/articles/PMC3959825/
我这里安装的github上面的最新版:
## 使用西湖大学的 Bioconductor镜像
options(BioC_mirror="https://mirrors.westlake.edu.cn/bioconductor")
options("repos"=c(CRAN="https://mirrors.westlake.edu.cn/CRAN/"))
# 安装
devtools::install_github("GreenleafLab/ArchR", ref="master", repos = BiocManager::repositories())
# 安装完后,设置一下环境
rm(list=ls())
library(ArchR)
set.seed(1)
addArchRThreads(threads = 60)
## Setting default number of Parallel threads to 1.
addArchRGenome("hg19")
## Setting default genome to Hg19.
# addArchRGenome("hg38")
可以接受两种格式的文件:fragment files and BAM files
Fragment files:Fragment files are tabix-sorted text files containing each scATAC-seq fragment and the corresponding cell ID, one fragment per line.
BAM files:BAM files are binarized tabix-sorted files that contain each scATAC-seq fragment, raw sequence, cellular barcode id and other information.
来自文献:https://pubmed.ncbi.nlm.nih.gov/31792411/
可以在GEO上下载得到:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE139369
这个数据的分析代码也可以下载:https://github.com/GreenleafLab/MPAL-Single-Cell-2019.
数据包括三个样本:
####### 示例数据下载
library(parallel)
inputFiles <- getTutorialData("Hematopoiesis")
inputFiles
names(inputFiles)
Arrow 文件是 ArchR 中用于存储单个样本数据的基本单位。存储内容:
Arrow文件将样本的所有相关信息整合在一起,便于管理和分析,是ArchR进行单细胞数据分析的基础。Arrow Files的结构如下:
创建Arrow Files,这个步骤会对每一个样本做以下处理:
这个过程会耗时~15 mins 左右
ArrowFiles <- createArrowFiles(
inputFiles = inputFiles,
sampleNames = names(inputFiles),
minTSS = 4, # Dont set this too high because you can always increase later
minFrags = 1000,
addTileMat = TRUE,
addGeneScoreMat = TRUE
)
ArrowFiles
# [1] "scATAC_BMMC_R1.arrow" "scATAC_CD34_BMMC_R1.arrow" "scATAC_PBMC_R1.arrow"
scATAC-seq数据质控考虑三个指标:
上面过滤的标准 minTSS = 4, minFrags = 1000 需要根据数据的情况进行调整。
运行完上面的步骤后目录下会生成一下文件:
TSS_by_Unique_Frags.pdf:log10(unique nuclear fragments) vs TSS enrichment score,过滤阈值使用虚线表示
the fragment size distribution:
在几乎所有平台上生成的单细胞数据都容易出现双细胞(doublet)的情况。有单细胞转录组分析经验,doublets在这里也非常好理解,就是一个液滴中只有一个barcode但是进了两个以上的细胞。
ArchR这个软件可以预测双包体,前面的Signac软件没有这个环节。
双细胞检测方法:
######## 双细胞鉴定
doubScores <- addDoubletScores(
input = ArrowFiles,
k = 10, #Refers to how many cells near a "pseudo-doublet" to count.
knnMethod = "UMAP", #Refers to the embedding to use for nearest neighbor search with doublet projection.
LSIMethod = 1
)
doubScores
运行完后,在QualityControl/该文件夹中,每个样本都有3个相关的图表:
如其中一个样本BMMC:
ArchRProject的作用:将多个Arrow文件整合到一个项目中,便于统一管理和分析。
重要注意事项: 不可合并多个ArchRProject:所有需要分析的样本必须在创建项目时以Arrow文件的形式包含进去,后续无法合并多个项目。
推荐设置:copyArrows = TRUE,用于在后续操作中保留Arrow文件的原始副本,以便将来使用。
####### 创建 ArchRProject
projHeme1 <- ArchRProject(
ArrowFiles = ArrowFiles,
outputDirectory = "HemeTutorial",
copyArrows = TRUE
)
projHeme1
ArchRProject的初始化属性:
是一个高级的S4对象,数据结构如下:
简单探索:
# which data matrices are available
getAvailableMatrices(projHeme1)
# the metadata
head(projHeme1@cellColData)
# access the cell names associated with each cell:
head(projHeme1$cellNames)
# access the sample names associated with each cell
head(projHeme1$Sample)
# access the TSS Enrichment Scores for each cell:
quantile(projHeme1$TSSEnrichment)
# 取子集
idxSample <- BiocGenerics::which(projHeme1$Sample %in% "scATAC_BMMC_R1")
idxSample
projSubset <- subsetArchRProject(
ArchRProj = projHeme1,
cells = projHeme1$cellNames[idxSample],
outputDirectory = "ArchRSubset",
dropCells = TRUE,
force = TRUE
)
# 提取细胞指标的某一列
df <- getCellColData(projHeme1, select = "nFrags")
df
# 多列
df <- getCellColData(projHeme1, select = c("log10(nFrags)", "nFrags - 1"))
df
单独绘制QC指标图:前面在创建 ArrowFiles 的时候,函数一键自动化全给我们绘制并生成了文件,我们也可以自己提取数据进行单独绘制
# TSS_by_Unique_Frags.pdf:log10(unique nuclear fragments) vs TSS enrichment score
df <- getCellColData(projHeme1, select = c("log10(nFrags)", "TSSEnrichment"))
df
p <- ggPoint(
x = df[,1],
y = df[,2],
colorDensity = TRUE,
continuousSet = "sambaNight",
xlabel = "Log10 Unique Fragments",
ylabel = "TSS Enrichment",
xlim = c(log10(500), quantile(df[,1], probs = 0.99)),
ylim = c(0, quantile(df[,2], probs = 0.99))
) + geom_hline(yintercept = 4, lty = "dashed") + geom_vline(xintercept = 3, lty = "dashed")
p
结果如下:
在整合多个不同样本的数据集时,比较不同样本之间的各种指标是常见的需求。
ArchR提供的绘图工具:
山脊图:
p1 <- plotGroups(
ArchRProj = projHeme1,
groupBy = "Sample",
colorBy = "cellColData",
name = "TSSEnrichment",
plotAs = "ridges",
baseSize = 10
)
p1
绘制 the TSS enrichment scores 的小提琴图
p2 <- plotGroups(
ArchRProj = projHeme1,
groupBy = "Sample",
colorBy = "cellColData",
name = "TSSEnrichment",
plotAs = "violin",
alpha = 0.4,
baseSize = 10,
addBoxPlot = TRUE,
)
p2
其他类似并保存到一个pdf中:
p3 <- plotGroups(
ArchRProj = projHeme1,
groupBy = "Sample",
colorBy = "cellColData",
name = "log10(nFrags)",
plotAs = "ridges",
baseSize = 10
)
p4 <- plotGroups(
ArchRProj = projHeme1,
groupBy = "Sample",
colorBy = "cellColData",
name = "log10(nFrags)",
plotAs = "violin",
alpha = 0.4,
baseSize = 10,
addBoxPlot = TRUE
)
plotPDF(p1,p2,p3,p4, name = "QC-Sample-Statistics.pdf",
ArchRProj = projHeme1, addDOC = FALSE, width = 4, height = 4)
在ATAC-seq实验中,片段大小分布是分析数据质量的一个重要指标。不同样本、细胞类型和批次之间的片段大小分布可能会有很大差异。这种差异是常见的,不一定反映数据质量的差异。
使用plotFragmentSizes()
函数可以绘制所有样本的片段大小分布图:
p1 <- plotFragmentSizes(ArchRProj = projHeme1)
p1
TSS富集曲线应该在中心位置显示出一个明显的峰值,并且在中心右侧有一个较小的肩峰,这是由于定位良好的+1核小体所引起的。
p2 <- plotTSSEnrichment(ArchRProj = projHeme1)
p2
# 保存
plotPDF(p1,p2, name = "QC-Sample-FragSizes-TSSProfile.pdf", ArchRProj = projHeme1, addDOC = FALSE, width = 5, height = 5)
附一个应用:https://pages.10xgenomics.com/rs/446-PBO-704/images/CN_10x_LIT055_RevB_AppNote_EpigeneticRegulationATAC_A4_digital.pdf
实验过程:https://pages.10xgenomics.com/rs/446-PBO-704/images/10x_LIT000039_Product_Sheet_Chromium_Single_Cell_ATAC_Letter_digital.pdf
使用saveArchRProject()
函数保存projHeme1
项目,以便在后续章节中使用。
saveArchRProject()
的功能:
.RDS
格式的ArchRProject对象;dropCells
参数,用于在复制之前从Arrow文件中移除已从ArchRProject中删除的细胞。# save
projHeme1 <- saveArchRProject(ArchRProj = projHeme1, outputDirectory = "Save-ProjHeme1", load = TRUE)
projHeme1
list.files(path = "./Save-ProjHeme1")
# load
projHeme1 <- loadArchRProject(path = "./Save-ProjHeme1")
projHeme1
在不移除真正的单细胞的情况下,尽可能多地过滤掉双细胞。通过绘制DoubletEnrichment
或DoubletScore
的分布,识别出高分或高富集度的潜在双细胞群体。
双细胞过滤流程:
addDoubletScores()
添加双细胞预测分数;filterDoublets()
移除预测的双细胞。关键参数:
filterRatio
:
filterRatio * (细胞数量)^2 / 100000
。cutEnrich
:
cutScore
:
-log10(pval)
。cutEnrich
更不准确,通常不推荐作为主要过滤依据。前面已经运行过:addDoubletScores()
注意选择合适的阈值:
# 过滤
projHeme2 <- filterDoublets(projHeme1,filterRatio = 1.5)
# Filtering 614 cells from ArchRProject!
# scATAC_BMMC_R1 : 364 of 4932 (7.4%)
# scATAC_CD34_BMMC_R1 : 160 of 3275 (4.9%)
# scATAC_PBMC_R1 : 90 of 2453 (3.7%)
未完待续~
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有