在生信分析学习的初期,我们只需要跑通数据分析的整个流程即可,对于数据的质控和相应的参数没有深入探讨,但随着深入的学习,一些细节问题必须要注意(可能对结果造成非常大影响)。比如说,对于比对后BAM文件中reads
的Duplicates是否需要去重?
NGS数据reads去重的一般总结:
RNA-seq 一般不去重
ChIP-seq 一般要去重
Call SNP 一般要去重
RRBS 一般不去重
Targeted-seq (Amplicon seqencing) 一般不去重
WGBS 一般要去重
ATAC-seq 一般要去重
PCR去重首选 picard 软件
原则:
- 如果是人为PCR造成的duplicate是要去除冗余的,如果是酶切造成的duplicated是不需要去重的
- 区分建库方式,如果建库是随机建库的(RANDOM),则需要去除冗余,如果是特异性位点建库是不需要去重的(Selected)比如说扩增子测序,限制性内切酶酶切测序(有特定的酶切位点),ATAC-seq 的
Tn5
酶酶切是随机切割的,不存在位点的特异性(开放区域均切割)。 - 规避方法:测序起始量高,PCR循环数少,reads序列长,选择双端测序 目前可以做到PE 250bp了
为什么要去重?
理论上来讲,不同的序列在进行PCR扩增时,扩增的倍数应该是相同的。但是由于聚合酶的偏好性,PCR扩增次数过多的情况下,会导致一些序列持续扩增,而另一些序列扩增到一定程度后便不再进行,也就是我们常说的PCR偏好性。
这种情况对于定量分析(如ChIP-seq),会造成严重的影响。此外,PCR扩增循环数过多,会出现一些扩增偏差,进而影响一些突变识别(比如call SNP)的置信度。
为什么不去重?
对于大多数随机建库的数据均需要去重,但是对于研究特定区域的变化一般不去重,PCR建库的作用是对该区域的信号进行放大,reads的序列信息都是 一样的,主要目的是增加测序的reads数,加大测序量,也就是常规的实验理念,增加样本量,减少系统误差,这样的结果更接近于真实情况。
常用的去重工具(Picard,samtools/sambamba)
测序所得到的reads是由于超声或者酶切断裂得到的,因此这些reads比对到基因组上的位置是完全随机的。那么两个reads比对到相同位置的概率是非常低的。如果两个reads比对情况相同或者极其相似,则很有可能是由于PCR重复所导致的。而我们常用的去重工具主要也是遵循这一思想。
- samtools rmdup /sambamba markdup -r
如果多个reads具有相同的比对位置时,rmdup将它们标记为duplicates,然后去除重复,通常只保留第一个识别到的reads。
该方法对于以下两种情况,有很好的去除效果:
- 一些reads由于测序错误导致其不完全相同
- 比对错误导致不同的序列比对到相同的位置(可能性不大)
该方法的缺点:由于samtools去重只考虑reads比对上的起始终止位置,不考虑比对情况,这种去重有时会导致测序信息的丢失。
- Picard
这是另一个鼎鼎大名的工具,该工具的MarkDuplicates方法也可以识别duplicates。但是与samtools不同的是,该工具仅仅是对duplicates做一个标记,只在需要的时候对reads进行去重。而samtools的rmdup则是直接将其识别出来的重复reads去掉。
该工具的另一个不同之处在于它不仅考虑reads的比对位置,还会考虑其中的插入错配等情况(即会利用sam/bam文件中的CIGAR值),甚至reads的tail,lane以及flowcell。Picard主要考虑reads的5'端的比对位置,一个每个reads比对上的方向。
因此我们可以从一定程度上认为,5'端的位置,方向,以及碱基比对情况相同,Picard就将这些reads中碱基比对值Q>15的看作是best pair而其他的reads则当作是duplicate reads。甚至当reads的长度不同时,Picard依然利用上述原理进行去重。
对Picard来说,reads的5'端信息更为重要.若duplicates是PCR重复,那么它们的序列不一定完全相同。但是由于PCR扩增时,酶的前进方向是5'->3'方向,PCR重复序列中5'端的部分相似的可能性更高。
PCR 扩增重复去除冗余首推Picard
当然到底要不要去除重复,我们可以通过第一步数据质控进行判断,FASTQC计算了200,000 reads的质量以及分布比例,通过质量检测报告可以判断这些常规要去重的数据最后要不要进行后期的除重工作,暴力的方法就是:根据实验建库的方式,若去除的都去重(ChIP/ATAC al et),靶向的,酶切的建库均不去重(RRBS, Target-BS)但消耗计算资源和运行时间。
参考:
网友评论