美文网首页ChipSeq数据分析NGS生信
ChIP-seq数据分析(一):从raw reads到peaks

ChIP-seq数据分析(一):从raw reads到peaks

作者: TOP生物信息 | 来源:发表于2019-07-11 12:25 被阅读10次

    开篇致谢:下面内容的整个框架是跟着生信技能树发布在bilibili上的ChIP-seq视频学习的,链接:https://www.bilibili.com/video/av29255401,如果有基础的话,应该可以很快学下来。
    另外,用到的测试数据来自我之前介绍的一篇文献,拟南芥的,跑起来快。链接:https://www.jianshu.com/p/24dbcbcd26e5,后面关于ChIP-seq在组蛋白修饰中应用的学习就以这一篇为主。另外,在转录因子中的应用以及ATAC-seq我在这个暑假都会学一遍。

    1. 数据获取

    ###下载SRA数据
    for sample in SRR519051{3..8}
    do
    prefetch $sample
    done
    ###解压,并更改样本名称
    $ cat config
    ein2-5_air_H3K9aC_1 SRR5190513
    ein2-5_air_H3K9aC_2 SRR5190514
    ein2-5_ethylene_H3K9aC_1    SRR5190515
    ein2-5_ethylene_H3K9aC_2    SRR5190516
    ein2-5_air_MPGB_1   SRR5190517
    ein2-5_ethylene_MPGB_1  SRR5190518
    
    dir=~/ChIP_seq/raw
    cat config | while read id
    do
    echo $id #如何将变量赋值给变量?
    array=($id)
    srr=${array[1]}
    sample_name=${array[0]}
    fastq-dump -A $sample_name -O $dir --gzip --split-3 ~/ChIP_seq/sra/$srr.sra
    done
    ###查看
    $ ls
    ein2-5_air_H3K9aC_1.fastq.gz  ein2-5_air_H3K9aC_2.fastq.gz  ein2-5_air_MPGB_1.fastq.gz  ein2-5_ethylene_H3K9aC_1.fastq.gz  ein2-5_ethylene_H3K9aC_2.fastq.gz  ein2-5_ethylene_MPGB_1.fastq.gz
    huangsiyuan 13:17:41 ~/ChIP_seq/raw
    

    2. 质量检测

    ls ~/ChIP_seq/raw/*.fastq.gz | xargs fastqc -t 4
    multiqc ~/ChIP_seq/raw/
    

    最终的结果表明这6个数据的质量都很好,所以原文并没有进行额外的过滤操作。需要注意的是,在该文献中ein2-5_air_MPGB_1和ein2-5_ethylene_MPGB_1两个阴性对照呈现出reads重复率高的特征

    3. 比对

    3.1 参考基因组建立索引
    gunzip Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz
    bowtie-build Arabidopsis_thaliana.TAIR10.dna.toplevel.fa Arabidopsis_thaliana.TAIR10.dna.toplevel
    
    3.2 比对
    bowtie_index=/ifs1/Grp3/huangsiyuan/Ref/Arabidopsis/Arabidopsis_thaliana.TAIR10.dna.toplevel
    cd ~/ChIP_seq/align/
    ls ~/ChIP_seq/raw/*.fastq.gz | while read id
    do
    file=$(basename $id)
    bam_name=${file%%.*}
    bowtie -p 4 -M 1 --best --strata $bowtie_index $id -S | samtools sort -O bam -@ 4 - > ${bam_name}.bam
    done
    

    -M 1 --best --strata的作用是将多比对中得分最高的一条比对记录保留,原文在这里采用的是保留唯一比对的reads记录,有些区别。

    3.3 比对率查看

    针对-M 1 --best --strata这一种模式。允许多比对的话,下面的等式关系不一定成立。

    bowtie比对完之后会在log文件中报告比对率,比如

    # reads processed: 16679255
    # reads with at least one reported alignment: 15164883 (90.92%) #比对得上,不管是唯一比对还是多比对,(都只会报告一条比对记录)
    # reads that failed to align: 250108 (1.50%) #完全比对不上
    # reads with alignments sampled due to -M: 1264264 (7.58%) #这1264264是指哪一些reads,自己的理解是:这些reads多比对,但不能按照优劣排序(比如有两个以上最优),故不予考虑。之前做小RNA有类似的处理,当reads多比对次数超过一个阈值,就不考虑这个reads了。
    Reported 15164883 alignments
    

    还可以用samtools flagstat简单统计比对率

    16679255 + 0 in total (QC-passed reads + QC-failed reads)
    16429147 + 0 mapped (98.50% : N/A) #这个值是上面的90.92%和7.58%的和。
    

    又统计了一下fq里面的reads数量

    $ samtools view ein2-5_air_H3K9aC_1.bam | wc -l
    16679255 #bam文件有多少条比对记录
    $ samtools view ein2-5_air_H3K9aC_1.bam | cut -f1 | sort | uniq | wc -l
    16679255 #这些记录对应多少条reads,相等说明:一条reads只对应一条记录
    $ lsx ein2-5_air_H3K9aC_1.fastq.gz | wc -l
    66717020
    $ echo "scale=2; 66717020/4" | bc
    16679255.00 #相等说明:不管reads有没有比对上,都会在bam中有一个记录
    

    这一步没有什么实质性的作用,但能加深对reads比对率、唯一比对、多比对、reads数、比对记录数等的理解。

    4. 去除PCR重复

    "Duplicate reads were removed using SAMtools."相关的NC文章是这样做的。

    ls *bam | while read id; do samtools markdup -r $id $(basename $id ".bam").sm.bam & done
    

    5. 合并bam

    按照文章说的,相同处理下,探究相同的组蛋白修饰,将不同的重复合并再进行后面的处理

    samtools merge ein2-5_ethylene_H3K9aC_merge.sm.bam ein2-5_ethylene_H3K9aC_1.sm.bam ein2-5_ethylene_H3K9aC_2.sm.bam
    samtools merge ein2-5_air_H3K9aC_merge.sm.bam ein2-5_air_H3K9aC_1.sm.bam ein2-5_air_H3K9aC_2.sm.bam
    

    并用samtools index为4个待分析的bam建立索引。

    6. MACS2找peaks

    文章只强调了--nomodel, -p 0.01这两个参数。

    macs2 callpeak --nomodel -B -p 0.01 -c ein2-5_air_MPGB_1.sm.bam -t ein2-5_air_H3K9aC_merge.sm.bam -f BAM -g 110000000 -n ein2-5_air_H3K9aC
    macs2 callpeak --nomodel -B -p 0.01 -c ein2-5_ethylene_MPGB_1.sm.bam -t ein2-5_ethylene_H3K9aC_merge.sm.bam -f BAM -g 110000000 -n ein2-5_ethylene_H3K9aC
    
    $ ll ein2-5_*
    -rw-r--r--. 1 huangsiyuan grp3 332M Jul  9 13:49 ein2-5_air_H3K9aC_control_lambda.bdg #control的可视化文件
    -rw-r--r--. 1 huangsiyuan grp3 1.5M Jul  9 13:49 ein2-5_air_H3K9aC_peaks.narrowPeak #peaks信息
    -rw-r--r--. 1 huangsiyuan grp3 1.7M Jul  9 13:49 ein2-5_air_H3K9aC_peaks.xls #peaks信息
    -rw-r--r--. 1 huangsiyuan grp3 1.1M Jul  9 13:49 ein2-5_air_H3K9aC_summits.bed #summits(峰顶)的位置
    -rw-r--r--. 1 huangsiyuan grp3 1.4G Jul  9 13:49 ein2-5_air_H3K9aC_treat_pileup.bdg #处理的可视化文件
    -rw-r--r--. 1 huangsiyuan grp3 149M Jul  9 13:58 ein2-5_ethylene_H3K9aC_control_lambda.bdg
    -rw-r--r--. 1 huangsiyuan grp3 1.3M Jul  9 13:58 ein2-5_ethylene_H3K9aC_peaks.narrowPeak
    -rw-r--r--. 1 huangsiyuan grp3 1.4M Jul  9 13:58 ein2-5_ethylene_H3K9aC_peaks.xls
    -rw-r--r--. 1 huangsiyuan grp3 910K Jul  9 13:58 ein2-5_ethylene_H3K9aC_summits.bed
    -rw-r--r--. 1 huangsiyuan grp3 1.3G Jul  9 13:58 ein2-5_ethylene_H3K9aC_treat_pileup.bdg
    

    7. 可视化

    7.1 deeptools
    先将bam->bw
    ls *sm.bam | while read id; do bamCoverage --binSize 50 --normalizeUsing RPKM -b $id -o ${id%_*}.bw done
    

    看参数的值就能知道bw存储的是什么信息:横坐标是在基因组上的一对起始位置,窗口大小是50bp,纵坐标是将深度标准化之后得到的RPKM。

    除了bamCoverage,bamCompare也能将bam->bw,并且同时考虑处理和对照,以消除噪声。原文是这样说的:To show ChIP binding signal surrounding TSSs or in gene bodies, read coverage was first calculated using the bamCompare tool (RPKM, Log2(ChIP/IgG) in deepTools.

    bamCompare -b1 ein2-5_air_H3K9aC_merge.sm.bam -b2 ein2-5_air_MPGB_1.sm.bam \
    --operation log2 --normalizeUsing RPKM --scaleFactorsMethod None --binSize 50 \
    -o ein2-5_air_H3K9aC_MPGB_log2ratio.bw
    
    bamCompare -b1 ein2-5_ethylene_H3K9aC_merge.sm.bam -b2 ein2-5_ethylene_MPGB_1.sm.bam \
    --operation log2 --normalizeUsing RPKM --scaleFactorsMethod None --binSize 50 \
    -o ein2-5_ethylene_H3K9aC_MPGB_log2ratio.bw
    
    查看TSS位点附近的信号
    #TSS位点如何确认?five_prime_UTR的第一个位置?那如果一个基因有多个转录本多个five_prime_UTR怎么办?每个都看?
    ls *bw | while read id
    do
    computeMatrix reference-point --referencePoint TSS -a 3000 -b 3000 -R ~/Ref/Arabidopsis/Arabidopsis_thaliana.TAIR10.44.gtf -S $id --skipZeros -o ${id%%.*}.matrix.TSS.3k.gz --outFileSortedRegions ${id%%.*}.region.TSS.3k.bed -p 4
    plotHeatmap -m ${id%%.*}.matrix.TSS.3k.gz -o ${id%%.*}.png
    plotHeatmap -m ${id%%.*}.matrix.TSS.3k.gz -o ${id%%.*}.pdf --plotFileFormat pdf --dpi 720
    plotProfile -m ${id%%.*}.matrix.TSS.3k.gz -o ${id%%.*}_2.png
    plotProfile -m ${id%%.*}.matrix.TSS.3k.gz -o ${id%%.*}_2.pdf --plotFileFormat pdf --perGroup --dpi 720
    done
    
    查看gene_body的信号
    ls ~/ChIP_seq/align/*bw | while read id
    do
    computeMatrix scale-regions -a 3000 -b 3000 --regionBodyLength 6000 -R ~/Ref/Arabidopsis/Arabidopsis_thaliana.TAIR10.44.gtf -S $id --skipZeros -o $(basename $id ".bw").matrix.TSS_TES.3k.gz --outFileSortedRegions $(basename $id ".bw").region.TSS_TES.3k.bed -p 4
    plotHeatmap -m $(basename $id ".bw").matrix.TSS_TES.3k.gz -o $(basename $id ".bw").png
    plotHeatmap -m $(basename $id ".bw").matrix.TSS_TES.3k.gz -o $(basename $id ".bw").pdf --plotFileFormat pdf --dpi 720
    plotProfile -m $(basename $id ".bw").matrix.TSS_TES.3k.gz -o $(basename $id ".bw")_2.png
    plotProfile -m $(basename $id ".bw").matrix.TSS_TES.3k.gz -o $(basename $id ".bw")_2.pdf --plotFileFormat pdf --perGroup --dpi 720
    done
    
    7.2 IGV

    在igv下面看看bed, bam, bw, bgd是什么样子

    可以看到,bam, bw, bdg整体趋势一致,并且跟对照相比,可以显示出peaks。

    8. peaks注释

    针对的是summits.bed文件,看peaks(一个峰,精确到了单碱基位置)属于哪一个基因?或是离哪一个基因最近?属于哪一个区域?

    用chipseeker, 在R下面操作

    library(ChIPseeker)
    
    require(GenomicFeatures)
    ath <- makeTxDbFromGFF("Arabidopsis_thaliana.TAIR10.44.gff3")
    
    bedpeaksfile = "ein2-5_air_H3K9aC_summits.bed"
    peak <- readPeakFile(bedpeaksfile)
    peakAnno <- annotatePeak(peak, tssRegion = c(-3000, 3000), TxDb = ath)
    
    plotAnnoPie(peakAnno)
    plotAnnoBar(peakAnno)
    

    这个summits的注释跟变异检测注释原理差不多,只是分区不一样。

    寻找motif相关的内容,这篇组蛋白修饰的文献没有涉及到,后面再做一个转录因子的再学学。

    相关文章

      网友评论

        本文标题:ChIP-seq数据分析(一):从raw reads到peaks

        本文链接:https://www.haomeiwen.com/subject/xehyhctx.html