MeRIP-Seq

MeRIP-Seq数据分析

MeRIP-Seq数据分析

  • 看看推荐的MeRIP-seq数据分析流程

  • 今天要复现下面这篇文章中MeRIP-Seq相关的数据。

  • 看看文章作者如何处理MeRIP-seq数据的

(一)数据下载

1
2
3
4
5
6
7
8
9
10
11
12
#GSE号:GSE133857
#简单的3个样本就不写脚本啦
#SRR9646136:HOC313 siControl_m6A_IP_replicate1
#SRR9646140:HOC313 siControl_m6A_IP_replicate2
#SRR9646137:HOC313 siControl_IgG_IP
nohup preftch SRR9646136 &
nohup preftch SRR9646140 &
nohup preftch SRR9646137 &

#SRA文件转成fastq文件
fastq-dump /path/to/xxx.sra
ls *.sra|while read id; do nohup fastq-dump --split-3 $id; done

(二) 数据比对

step 1、质量控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#质控,质控结果显示需要进一步过滤接头
#另外,GC含量很高,还出现双峰!!!
fastqc -t 6 *fastq -o ./qc
cd ./qc
multiqc *.zip -o ./
#trim-galore过滤
cat fq.txt|while read id
do
arr=(${id})
fq1=${arr[0]}
fq2=${arr[1]}
nohup trim_galore -q 20 --phred33 --length 20 -e 0.1 --stringency 3 --paired -o ../clean $fq1 $fq2 &
done
#过滤后质控,质控结果显示接头去除成功

step 2、HISAT2比对

①、下载hisat2索引文件(含转录组信息)

首先去HISAT2官网下载比对所需要的索引文件。注意啦,因为我们是MeRIP-seq数据的比对,构建的索引需要把转录组信息加进去,所以我们这里下载UCSC的hg38:genome_tran。注意了,这里选择UCSC的参考基因组,因为后面peak注释用到的工具——HOMER或者R包ChIPseeker内置的都是UCSC的参考基因组。如果你非要用到其他数据库的参考基因组,如NCBI的GRCh38,你就会在peaks注释阶段遇到染色体号相关的报错。当然,这个报错动动脑子也是可以解决的。

你也可以自己构建带有转录组信息的索引文件,HISAT2官网同样给出了详细的教程。但是,这个操作至少需要160G的内存😂,还是算了吧~~~没必要重复造轮子

②、下载rRNA的fastq文件,构建rRNA文件的索引

参考资料:https://cloud.tencent.com/developer/article/1805475

1
2
3
4
5
6
7
8
9
10
11
#HISAT2下载安装
#conda下载hisat2今天突然不好使了库😢,手动下载以下
wget https://cloud.biohpc.swmed.edu/index.php/s/oTtGWbWjaxsQ2Ho/download
#file download发现其是zip文件
unzip download
echo 'export PATH=/home/gongyuqi/biosoft/HISAT2/hisat2-2.2.1:$PATH' >> ~/.bashrc
source ~/.bashrc

#构建rRNA文件索引
cd /home/gongyuqi/ref/rRNA
hisat2-build -p 4 rRNA.fasta ./index_hisat2/rRNA

③、去除rRNAs

1
2
3
4
5
6
7
8
9
10
11
12
#--un-conc:输出没有比对到rRNA上的reads
for i in {36,40,37}
do
nohup hisat2 -x /home/gongyuqi/ref/rRNA/index_hisat2/rRNA \
-1 SRR96461${i}_1_val_1.fq \
-2 SRR96461${i}_2_val_2.fq \
--un-conc ../rmr_rRNA/SRR96461${i}_rmr_%.fq \
-p 16 -S ../rmr_rRNA/SRR96461${i}.sam &
done

#去除rRNA后再次质控后发现GC含量更加异常了!!!
#另外,参考基因组的比对率也挺低的,50-70%之间。这批数据感觉质量不是很OK呀😢先分析下去看看~

④、HISAT2比对含有转录组信息的参考基因组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#hisat2比对
ls *_1.fq> rmr_fq1.txt
ls *_2.fq> rmr_fq2.txt
paste rmr_fq1.txt rmr_fq2.txt > rmr_fq.txt
ref=/home/gongyuqi/ref/hg38/index/hisat2_UCSC/hg38_tran/genome_tran
cat rmr_fq.txt|while read id
do
arr=(${id})
fq1=${arr[0]}
fq2=${arr[1]}
sample=${fq1%%_*}.sort.bam
nohup hisat2 -p 8 -x $ref -1 $fq1 -2 $fq2 | samtools sort -@ 8 -o ../align/$sample - &
done

nohup hisat2 -p 8 -x $ref -1 SRR9646139_rmr_1.fq -2 SRR9646139_rmr_2.fq | samtools sort -@ 8 -o ../align/SRR9646139.sort.bam - &


#构建索引,bam文件导入IGV时需要索引文件同时存在
ls *.bam | while read id; do nohup samtools flagstat $id & done
ls *.bam | while read id; do nohup samtools index $id & done
ls *.bam | while read id; do nohup bamCoverage -b $id -o ${id%%_*}.bw & done

(三)MACS2 call peaks

MACS2官网参考资料

1
2
3
4
5
6
7
#call peaks: siControl_m6A_IgG_replicate1
macs2 callpeak -t SRR9646136.sort.bam -c SRR9646137.sort.bam -f BAM -g hs -n siControl_m6A_IgG_replicate1 -B -q 0.01 --outdir siControl_m6A_IgG
#call peaks: siControl_m6A_IgG_replicate2
macs2 callpeak -t SRR9646140.sort.bam -c SRR9646137.sort.bam -f BAM -g hs -n siControl_m6A_IgG_replicate2 -B -q 0.01 --outdir siControl_m6A_IgG

macs2 callpeak -t SRR9646138.sort.bam -c SRR9646139.sort.bam -f BAM -g hs -n siFTO_m6A_IgG -B -q 0.01 --outdir ../peaks

(四)peaks注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
library(org.Hs.eg.db)
library(ChIPseeker)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)

txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene
files <- list(replicate1="siControl_m6A_IgG_replicate1_summits.bed",
replicate2="siControl_m6A_IgG_replicate2_summits.bed")

peakAnno_replicate1 <- annotatePeak(files[[1]], TxDb=txdb, annoDb="org.Hs.eg.db")
peakAnno_replicate2 <- annotatePeak(files[[2]], TxDb=txdb, annoDb="org.Hs.eg.db")


#大部分情况下会出现多了peaks对应到同一个SYMBOL上,所以一定要记得unique一下

siFTO_siControl_peak<-peakAnno_siFTO_siControl_m6A@anno@elementMetadata@listData
siFTO_siControl_peak<-as.data.frame(siFTO_siControl_peak)

replicate1_peak<-as.data.frame(peakAnno_replicate1@anno@elementMetadata@listData)
replicate1_peak_SYMBOL<-peakAnno_replicate1@anno@elementMetadata@listData$SYMBOL
replicate1_peak_SYMBOL<-unique(na.omit(replicate1_peak_SYMBOL))

replicate2_peak<-as.data.frame(peakAnno_replicate2@anno@elementMetadata@listData)
replicate2_peak_SYMBOL<-peakAnno_replicate2@anno@elementMetadata@listData$SYMBOL
replicate2_peak_SYMBOL<-unique(na.omit(replicate2_peak_SYMBOL))

common_peaks<-intersect(replicate1_peak_SYMBOL,replicate2_peak_SYMBOL)
table("CCND1"%in%common_peaks)#在此,结果为TRUE

将bam文件导入IGV,可视化CCND1上m6A的情况

Author

Yuqi Gong

Posted on

2021-06-03

Updated on

2022-11-26

Licensed under