ChIP-seqATAC-seqATACSeq 开放染色质分析

第9篇:差异peaks分析——DiffBind

2018-09-03  本文已影响11人  六六_ryx

学习目标

评估差异peaks富集的工具

ATAC-Seq下游分析的另一个重点是差异peaks分析。如分析不同的实验条件、多个时间节点、不同的发育时期等的差异区域。鉴定这些差异peaks区域在生物医学研究中也具有重要意义,目前也有多种相关的工具被开发:


选择合适的工具需考虑以下几个因素:

具体选择哪种工具决定于实验设计,下面的决策树可以帮助缩小你的选择范围。



DiffBind

DiffBind是鉴定两个样本间差异结合位点的一个R包。主要用于peak数据集,包括对peaks的重叠和合并的处理,计算peaks重复间隔的测序reads数,并基于结合亲和力鉴定具有统计显著性的差异结合位点。适用的统计模型有DESeq、DESeq2、edgeR。详细内容可参考DiffBind的文档:http://bioconductor.org/packages/release/bioc/vignettes/DiffBind/inst/doc/DiffBind.pdf

使用方法:

1. 下载安装DiffBind

source("https://bioconductor.org/biocLite.R")
biocLite("DiffBind")
# view documentation
browseVignettes("DiffBind")

2. 准备输入文件

需要准备一个SampleSheet文件,与ChIPQC的方法一样。SampleSheet文件是根据实验设计和数据存储地址等信息创建的一个csv格式文件,包含的表头信息有"SampleID"、 "Tissue"、 "Factor"、 "Condition" 、"Treatment"、"Replicate" 、"bamReads" 、"ControlID"、 "bamControl" "Peaks"、 "PeakCaller"(bam,peak文件分别在比对和call peak的步骤产生)。

3. 差异peaks分析

读入文件
一旦读入了peaksets,合并函数就找到所有重叠的peaks,并导出一致性的peaksets。

library(DiffBind)
dbObj <- dba(sampleSheet="SampleSheet.csv")

亲和结合矩阵
计算每个peaks/regions的count信息。先对一致性的peaks数据集进行标准化,然后根据他们的峰值(point of greatest read overlap)再次中心化并修剪一些peaks,最终得到更加标准的peak间隔。使用函数dba.count(),参数bUseSummarizeOverlaps可以得到更加标准的计算流程。
dbObj <- dba.count(dbObj, bUseSummarizeOverlaps=TRUE)
dba.plotPCA(dbObj,  attributes=DBA_FACTOR, label=DBA_ID)
plot(dbObj)

结果中同时计算了FRiP (质量评估的一个标准,可以参考第5篇:对ATAC-Seq/ChIP-seq的质量评估(二)——ChIPQC)。


样本间的聚类:

Venn图展示样本间peaks的重合

差异分析
差异分析是DiffBind的核心功能,默认情况是基于DEseq2, 可以设置参数method=DBA_EDGER选择edgeR,或者设置method=DBA_ALL_METHODS。每种方法都会评估差异结果的p-vaue和FDR。
# Establishing a contrast 
dbObj <- dba.contrast(dbObj, categories=DBA_FACTOR,minMembers = 2)
dbObj <- dba.analyze(dbObj, method=DBA_ALL_METHODS)
#  summary of results
dba.show(dbObj, bContrasts=T)
#  overlapping peaks identified by the two different tools (DESeq2 and edgeR)
dba.plotVenn(dbObj,contrast=1,method=DBA_ALL_METHODS)

提取结果
comp1.edgeR <- dba.report(dbObj, method=DBA_EDGER, contrast = 1, th=1)
comp1.deseq <- dba.report(dbObj, method=DBA_DESEQ2, contrast = 1, th=1)

结果文件包含所有位点的基因组坐标,以及差异富集的统计数据包括fold change、p值和FDR。


保存文件
# EdgeR
out <- as.data.frame(comp1.edgeR)
write.table(out, file="results/Nanog_vs_Pou5f1_edgeR.txt", sep="\t", quote=F, col.names = NA)
# DESeq2
out <- as.data.frame(comp1.deseq)
write.table(out, file="results/Nanog_vs_Pou5f1_deseq2.txt", sep="\t", quote=F, col.names = NA)

以bed格式保存显著性的差异结果

# Create bed files for each keeping only significant peaks (p < 0.05)
# EdgeR
out <- as.data.frame(comp1.edgeR)
edge.bed <- out[ which(out$FDR < 0.05), 
                 c("seqnames", "start", "end", "strand", "Fold")]
write.table(edge.bed, file="results/Nanog_vs_Pou5f1_edgeR_sig.bed", sep="\t", quote=F, row.names=F, col.names=F)

# DESeq2
out <- as.data.frame(comp1.deseq)
deseq.bed <- out[ which(out$FDR < 0.05), 
                 c("seqnames", "start", "end", "strand", "Fold")]
write.table(deseq.bed, file="results/Nanog_vs_Pou5f1_deseq2_sig.bed", sep="\t", quote=F, row.names=F, col.names=F)

参考资料

  1. DiffBind文档
  2. 哈佛深度NGS数据分析课程, 09- Differential Peak calling using DiffBind
上一篇 下一篇

猜你喜欢

热点阅读