本次分析步骤包括:环境部署——数据下载——查看数据(非过滤)——数据质控清洗——数据比对——去除pcr重复——peaks calling——可视化
首先确定基因组,如果需要研究其他物种的则需要自行下载
从File列表中load from File
载入bed文件
可以输入不同的基因,比如TP53进行查看~
使用multiBamSummary、plotCorrelation和plotPCA三个模块。主要查看对照组和处理组中的组间差异和组内相似性(如果上一步把BAM转换成BW, 那么multiBamSummary可以用multiBigWigSummary替代)
path="/home/lm/Z_Projects/chipseq"
mkdir deeptools
# 统计reads在全基因组范围的情况
# 双端测序
#multiBamSummary bins -bs 1000 --bamfiles ${path}/intersect/*_sort.bam --extendReads 130 -out treat_results.npz
# 单端测序
nohup multiBamSummary bins -bs 1000 --bamfiles ${path}/intersect/*_sort.bam -out ./deeptools/treat_results.npz > multibam.log &
# 相关性散点图
plotCorrelation -in ./deeptools/treat_results.npz -o ./deeptools/treat_results.pdf --corMethod spearman -p scatterplot
# 热图
plotCorrelation -in ./deeptools/treat_results.npz -o ./deeptools/treat_results_heatmap.pdf --corMethod spearman -p heatmap
# 主成分分析
plotPCA -in ./deeptools/treat_results.npz -o ./deeptools/pca.pdf
打开UCSC点击Table browser
下载不同物种所有基因的转录起始位点(TSS)区域的bed文件
选择默认参数,红色方框处要与上图一致
处理单一样本,10K上下游区域
# 把上面得到的结果放进TSS文件夹中
mkdir TSS
# 设定路径
path="/home/lm/Z_Projects/chipseq"
## 处理单一样本
## both -R and -S can accept multiple files
computeMatrix reference-point --referencePoint TSS -p 15 \
-b 10000 -a 10000 \
-R ${path}/TSS/hg38_TSS.bed \
-S ${path}/bamCoverage/p300.bw \
--skipZeros -o ./TSS/p300_TSS.gz \
--outFileSortedRegions ./TSS/p300_genes.bed
## both plotHeatmap and plotProfile will use the output from computeMatrix
plotHeatmap -m ${path}/TSS/p300_TSS.gz -out ${path}/TSS/test.png
plotHeatmap -m ${path}/TSS/p300_TSS.gz -out ${path}/TSS/test.pdf --plotFileFormat pdf --dpi 720
plotProfile -m ${path}/TSS/p300_TSS.gz -out ${path}/TSS/test.png
plotProfile -m ${path}/TSS/p300_TSS.gz -out ${path}/TSS/test.pdf --plotFileFormat pdf --perGroup --dpi 720
computeMatrix reference-point 命令
这个命令用于生成一个矩阵文件,该文件包含了以转录起始位点(TSS)为中心的 p300 蛋白结合信号的分布情况。参数解释如下:
plotHeatmap 命令
这个命令用于生成热图,展示基因组区域的信号强度。参数解释如下:
plotProfile 命令
这个命令用于生成信号的平均分布图,展示基因组区域的信号强度随位置的变化。参数解释如下:
绘制10k区域
# 把上面得到的结果放进TSS文件夹中
mkdir TSS
### 如果要批量处理
path="/home/lm/Z_Projects/chipseq"
bed="/home/lm/Z_Projects/chipseq/TSS/hg38_TSS.bed"
for id in ${path}/bamCoverage/*.bw ;
do
echo $id
file=$(basename $id)
sample=${file%.*}
echo $sample
computeMatrix reference-point --referencePoint TSS -p 15 \
-b 10000 -a 10000 \
-R $bed \
-S $id \
--skipZeros -o ${path}/TSS/matrix1_${sample}_TSS_10K.gz \
--outFileSortedRegions ${path}/TSS/regions1_${sample}_TSS_10K.bed
## both plotHeatmap and plotProfile will use the output from computeMatrix
plotHeatmap -m ${path}/TSS/matrix1_${sample}_TSS_10K.gz -out ${path}/TSS/${sample}_Heatmap_10K.png
plotHeatmap -m ${path}/TSS/matrix1_${sample}_TSS_10K.gz -out ${path}/TSS/${sample}_Heatmap_10K.pdf --plotFileFormat pdf --dpi 720
plotProfile -m ${path}/TSS/matrix1_${sample}_TSS_10K.gz -out ${path}/TSS/${sample}_Profile_10K.png
plotProfile -m ${path}/TSS/matrix1_${sample}_TSS_10K.gz -out ${path}/TSS/${sample}_Profile_10K.pdf --plotFileFormat pdf --perGroup --dpi 720
done > 10k.log 2>&1 &
BRD4_Profile_10K的结果
截取了一部分,图片实在太长了
绘制2k区域
### ### 如果要批量处理
bed=/public/annotation/CHIPseq/mm10/ucsc.refseq.bed
for id in /home/jmzeng/project/epi/mergeBam/*bw ;
do
echo $id
file=$(basename $id)
sample=${file%.*}
echo $sample
computeMatrix reference-point --referencePoint TSS -p 15 \
-b 2000 -a 2000 \
-R $bed \
-S $id \
--skipZeros -o matrix1_${sample}_TSS_2K.gz \
--outFileSortedRegions regions1_${sample}_TSS_2K.bed
## both plotHeatmap and plotProfile will use the output from computeMatrix
plotHeatmap -m matrix1_${sample}_TSS_2K.gz -out ${sample}_Heatmap_2K.png
plotHeatmap -m matrix1_${sample}_TSS_2K.gz -out ${sample}_Heatmap_2K.pdf --plotFileFormat pdf --dpi 720
plotProfile -m matrix1_${sample}_TSS_2K.gz -out ${sample}_Profile_2K.png
plotProfile -m matrix1_${sample}_TSS_2K.gz -out ${sample}_Profile_2K.pdf --plotFileFormat pdf --perGroup --dpi 720
done
# 设置 CRAN 镜像为清华大学
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
# 设置 BioC_mirror 镜像为西湖大学
options(BioC_mirror="https://mirrors.westlake.edu.cn/bioconductor")
# 安装R包
BiocManager::install(c("airway", "DESeq2", "edgeR", "limma", "ChIPpeakAnno", "ChIPseeker"))
BiocManager::install("TxDb.Hsapiens.UCSC.hg19.knownGene")
BiocManager::install("TxDb.Hsapiens.UCSC.hg38.knownGene")
BiocManager::install("TxDb.Mmusculus.UCSC.mm10.knownGene")
1.导入
rm(list = ls())
library(TxDb.Hsapiens.UCSC.hg19.knownGene)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
library(TxDb.Mmusculus.UCSC.mm10.knownGene)
library(ChIPpeakAnno)
library(ChIPseeker)
2.数据预处理
#以人类基因组 hg38 版本为例,通过GenomicFeatures包构建构建TxDb对象
# library(GenomicFeatures)
# genome <- makeTxDbFromGFF('Homo_sapiens.GRCh38.113.chr.gff3')
#除 makeTxDbFromGFF 外,还可以使用以下方法构建 TxDb 对象,
#makeTxDbFromUCSC,通过 UCSC 构建 TxDb
#akeTxDbFromBiomart,通过 ensembl 构建 TxDb
#makeTxDbFromGRanges,通过 GRanges 构建 TxDb
# 指定参考基因组
require(TxDb.Hsapiens.UCSC.hg38.knownGene)
txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene
txdb
#读取 bed 文件
peak <- readPeakFile('BRD4_intersect_summits.bed')
keepChr <- !grepl("_",seqlevels(peak)) #去除带有“_”的染色体
seqlevels(peak,pruning.mode="coarse") <- seqlevels(peak)[keepChr]
#peaks 的基因组注释
peakAnno <- annotatePeak(peak, tssRegion = c(-3000, 3000),
TxDb = txdb,annoDb = "org.Hs.eg.db")
#输出结果
write.table(peakAnno, 'peak.txt', sep = '\t', row.names = FALSE, quote = FALSE)
peakAnno_df <- as.data.frame(peakAnno)
3.可视化
# 查看所有peaks在染色体的分布情况
covplot(peak,weightCol = "V5")
# 查看peaks在所有基因启动子附近的分布情况
promoter <- getPromoters(TxDb = txdb,upstream = 3000, downstream = 3000)
tagMatrix <- getTagMatrix(peak,windows = promoter)
tagHeatmap(tagMatrix)
# 注释可视化
plotAnnoBar(peakAnno)
vennpie(peakAnno)
plotAnnoPie(peakAnno)
plotDistToTSS(peakAnno)
upsetplot(peakAnno, vennpie=TRUE)
# 查看peaks长度分布,只统计1000bp一下的peaks
peaksLength=abs(peakAnno_df$end-peakAnno_df$start)
peaksLength=peaksLength[peaksLength<1000]
hist(peaksLength, breaks = 5, col = "lightblue", xlim=c(0,10), xlab="peak length", main="histogram of peak length")
展示其中一个饼图,上述的可视化需要自行修改参数
4.peaks相关基因注释
# 得到peaks相关基因之后再用去做富集分析即可
genes=unique(peakAnno_df$ENSEMBL)
此外还可以homer注释peaks,后面也会尝试学习一下~
致谢:感谢曾老师以及生信技能树团队全体成员。
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。