本节课我们主要学习如何使用MACS2来对ATAC-seq数据进行Peak Calling。
上图描述了分析ATAC-seq的典型流程,本课程有少许改动,如使用fastp去接头,使用ChIPseeker进行peak注释等。
我们将使用GSE85624这套数据,包括DUX positive (Treated)
、DUX negative (Control)
两种状态,每个状态2个实验重复,总共4个样本。详情请见参考文献。
ls -ls FASTQ_atac | grep gz
1760468 -rwxr-xr-x 1 biocourse01 ods 1802718532 Oct 30 2023 Control_Rep1_R1.fq.gz
1803632 -rwxr-xr-x 1 biocourse01 ods 1846918423 Oct 30 2023 Control_Rep1_R2.fq.gz
2055646 -rwxr-xr-x 1 biocourse01 ods 2104981278 Oct 30 2023 Control_Rep2_R1.fq.gz
1962384 -rwxr-xr-x 1 biocourse01 ods 2009481184 Oct 30 2023 Control_Rep2_R2.fq.gz
2434786 -rwxr-xr-x 1 biocourse01 ods 2493220133 Oct 30 2023 Treated_Rep1_R1.fq.gz
2416517 -rwxr-xr-x 1 biocourse01 ods 2474512971 Oct 30 2023 Treated_Rep1_R2.fq.gz
2239970 -rwxr-xr-x 1 biocourse01 ods 2293728293 Oct 30 2023 Treated_Rep2_R1.fq.gz
2285733 -rwxr-xr-x 1 biocourse01 ods 2340590000 Oct 30 2023 Treated_Rep2_R2.fq.gz
建立所需文件的链接:
ln -s /sibcb1/bioinformatics/biocourse/biocourse01/epigenomics/FASTQ_atac .
ln -s /sibcb1/bioinformatics/biocourse/biocourse01/epigenomics/GRCm38 .
ln -s /sibcb1/bioinformatics/biocourse/biocourse01/epigenomics/output_atac .
# 加载必要的环境
source /sibcb1/bioinformatics/training_shared/software/python3.6_profile
sample='Control_Rep1 Control_Rep2 Treated_Rep1 Treated_Rep2'
for sam in $sample; do
# Alignment
bowtie2 -p 8 -x GRCm38/Bowtie2_Idx/mm10 \
-1 trimmed_atac/$sam\_R1.fq.gz -2 trimmed_atac/$sam\_R2.fq.gz \
-t -N 1 -L 25 -X 2000 --no-mixed --no-discordant \
-S output_atac/$sam\_bowtie.sam &> output_atac/$sam\_bowtie.log
samtools view -@ 8 -bS output_atac/$sam\_bowtie.sam > output_atac/$sam\_bowtie.bam
samtools sort -@ 8 output_atac/$sam\_bowtie.bam -o output_atac/$sam\_sorted.bam
samtools index output_atac/$sam\_sorted.bam
# Remove reads on chrM
samtools view -b -q 2 output_atac/$sam\_sorted.bam \
\
chr1 chr2 chr3 chr4 chr5 chr6 chr7 chr8 chr9 chr10 chr11 \
chr12 chr13 chr14 chr15 chr16 chr17 chr18 chr19 | samtools sort -@ 8 -o output_atac/$sam\_filtered.bam -
chrX chrY
# Remove duplicates
java -jar /sibcb/program/install/picard/picard.jar MarkDuplicates \
$sam\_filtered.bam \
I=output_atac/$sam\_dup.bam \
O=output_atac/\
REMOVE_DUPLICATES=true $sam\_dup_metrics.txt
M=output_atac/samtools index output_atac/$sam\_dup.bam
# Check insert size distribution
java -jar /sibcb/program/install/picard/picard.jar CollectInsertSizeMetrics \
$sam\_dup.bam \
I=output_atac/$sam\_dup_inter_size.txt \
O=output_atac/$sam\_dup_inter_size_histogram.pdf \
H=output_atac/
M=0.5
/sibcb/program/install/deeptools-3.2.1/bin/bamCoverage -p 8 --extendReads \
--normalizeUsing RPKM -b output_atac/$sam\_dup.bam -o output_atac/$sam\_dup.bw
#signal around TSS
computeMatrix scale-regions -p 8 --binSize 50 -b 2000 -a 2000 -m 6000 -S output_atac/$sam\_dup.bw \
-R mm10/gencode.vM25.annotation.gtf \
-o output_atac/$sam\_dup.mat.gz
plotProfile -m output_atac/$sam\_dup.mat.gz --samplesLabel $sam -o output_atac/$sam\_dup.mat.pdf
done
我们以一个样本(Control_Rep1
)为例,展示一下关键的结果和分析报告。
zcat FASTQ_atac/Control_Rep1_R1.fq.gz | wc -l
比对之前有22378376对Reads(44756752条)。
cat output_atac/Control_Rep1_bowtie.log
Time loading reference: 00:00:00
Time loading forward index: 00:00:01
Time loading mirror index: 00:00:00
Multiseed full-index search: 00:46:00
22062490 reads; of these:
22062490 (100.00%) were paired; of these:
11232250 (50.91%) aligned concordantly 0 times
8528547 (38.66%) aligned concordantly exactly 1 time
2301693 (10.43%) aligned concordantly >1 times
49.09% overall alignment rate
Time searching: 00:46:01
Overall time: 00:46:01
该ATAC-seq数据有相当部分的短片段,当seed长度设为25时,比对率大致为50%。比对后有\((8528547 + 2301693)*2 = 21660480\) Reads。
samtools view -q 2 -f 2 -c output_atac/Control_Rep1_filtered.bam
去掉chrM以后,得到18979414条Reads。
$samtools view -q 2 -f 2 -c output_atac/Control_Rep1_dup.bam
去掉duplicates之后,得到15779714 条Reads。
可以看到,200之前的峰是未受核小体保护的开放区域,200左右的峰是单个核小体,400左右是跨过两个核小体的峰。
可以清楚地看到,TSS周围信号的富集。
macs2 callpeak -g mm -B -t output_atac/Control_Rep1_dup.bam output_atac/Control_Rep2_dup.bam \
--nomodel --shift -100 --extsize 200 --nolambda \
-n C --outdir macs2_atac -f BAM --keep-dup 1
macs2 callpeak -g mm -B -t output_atac/Treated_Rep1_dup.bam output_atac/Treated_Rep2_dup.bam \
--nomodel --shift -100 --extsize 200 --nolambda \
-n T --outdir macs2_atac -f BAM --keep-dup 1
macs2 bdgdiff --t1 macs2_atac/T_treat_pileup.bdg --t2 macs2_atac/C_treat_pileup.bdg \
--c1 macs2_atac/T_control_lambda.bdg --c2 macs2_atac/C_control_lambda.bdg \
--depth1 16874307 --depth2 17994984 --outdir macs2_atac \
-l 500 -g 250 \
-o T_unique.bed C_unique.bed TC_common.bed
每条Read的变换:向3’端移动100 bp,然后将总长度延伸至200 bp。注意:比对到正链的Reads是向前延伸,比对到负链的Reads是向后延伸。macs2 bdgdiff
有两个参数需要设定,分别是--depth1
和--depth2
,代表两个条件的测序深度,可以从peaks.xls
中得到。比较两个条件后,产生三个文件:
ls -la macs2_atac | grep -v summits | grep bed
-rw-r--r-- 1 biocourse01 ods 197711 Sep 11 14:13 C_unique.bed
-rw-r--r-- 1 biocourse01 ods 412527 Sep 11 14:13 TC_common.bed
-rw-r--r-- 1 biocourse01 ods 177027 Sep 11 14:13 T_unique.bed
使用热图查看信号分布:
computeMatrix reference-point -p 24 \
-S output_atac/Control_Rep1_dup.bw output_atac/Control_Rep2_dup.bw output_atac/Treated_Rep1_dup.bw output_atac/Treated_Rep1_dup.bw \
-R macs2_atac/T_unique.bed macs2_atac/C_unique.bed macs2_atac/TC_common.bed \
--referencePoint center -a 5000 -b 5000 \
-o macs2_atac/matrix.mat.gz
plotHeatmap -m macs2_atac/matrix.mat.gz \
--colorMap Reds \
--whatToShow "heatmap and colorbar" \
--missingDataColor 'white' \
--refPointLabel 'Peak' \
--xAxisLabel 'Peak distance (bp)' \
--regionsLabel "Treated gained" "Treated lost" "Common peaks" \
-out macs2_atac/DIFF_Peak_heatmap.pdf
macs2 callpeak -g mm -B -t output_atac/Control_Rep1_dup.bam output_atac/Control_Rep2_dup.bam \
--nomodel --nolambda \
-n C --outdir macs2_atac_PE -f BAMPE --keep-dup 1
macs2 callpeak -g mm -B -t output_atac/Treated_Rep1_dup.bam output_atac/Treated_Rep2_dup.bam \
--nomodel --nolambda \
-n T --outdir macs2_atac_PE -f BAMPE --keep-dup 1
macs2 bdgdiff --t1 macs2_atac_PE/T_treat_pileup.bdg --t2 macs2_atac_PE/C_treat_pileup.bdg \
--c1 macs2_atac_PE/T_control_lambda.bdg --c2 macs2_atac_PE/C_control_lambda.bdg \
--depth1 17505799 --depth2 18760557 --outdir macs2_atac_PE \
-l 500 -g 250 \
-o T_unique.bed C_unique.bed TC_common.bed
注意:macs2 callpeak
这个命令中,我们使用了BAMPE
参数,将每一个Paired Read作为一个片段。类似的方法也可以用在ChIP-seq数据分析中,ATAC-seq数据更多地希望看到切点的富集情况。