适用场景:
首选软件:
picard MarkDuplicates
命令示例:
export _JAVA_OPTIONS=-Djava.io.tmpdir=./tmp
picard -Xmx100g MarkDuplicates I=YH9H-2filter_MAPQ20.bam O=YH9H-2filter_MAPQ20redup.bam CREATE_INDEX=ture REMOVE_DUPLICATES=ture M=YH9H-2filter_MAPQ20.metrics.txt
缺点最难搞的软件,经常会各种超内存等问题,一大堆。该工具的另一个不同之处在于它不仅考虑reads的比对位置,还会考虑其中的插入错配等情况(即会利用sam/bam文件中的CIGAR值),甚至reads的tail,lane以及flowcell。Picard主要考虑reads的5'端的比对位置,一个每个reads比对上的方向。
samtools rmdup
如果多个reads具有相同的比对位置时,samtools rmdup将它们标记为duplicates,然后直接将识别出来的重复reads去掉,通常只保留质量最高的一条。
该方法对于以下两种情况,有很好的去除效果:一些reads由于测序错误导致其不完全相同;比对错误导致不同的序列比对到相同的位置(可能性不大)。
该方法的缺点:由于samtools去重只考虑reads比对上的起始终止位置,不考虑比对情况,这种去重有时会导致测序信息的丢失。
双端测序数据用samtools rmdup效果很差,很多人建议用picard工具的MarkDuplicates功能。samtools的rmdup是直接将这些重复序列从比对BAM文件中删除掉,而Picard的MarkDuplicates默认情况则只是在BAM的FLAG信息中标记出来,而不是删除,因此这些重复序列依然会被留在文件中,只是我们可以在变异检测的时候识别到它们,并进行忽略。
目前认为,samtools rmdup已经过时了,应该使用samtools markdup代替。samtools markdup与picard MarkDuplicates采用类似的策略。
最近新出的比较快的软件
sambamba
sambamba markdup OPTIONS <input.bam> <output.bam>
主要参数:
-r, --remove-duplicates 去掉重复序列,否则仅mark重复序列
-t, --nthreads=NTHREADS
-l, --compression-level=N
--tmpdir=TMPDIR 设置中间文件生成目录(默认为/tmp)
此外,还可以提取sam文件的某一段,sambamba slice OPTIONS <input.bam> region
也可以使用sambamba操作bam文件和去除重复,据说该命令运行比picard MarkDuplicates快30倍。
samblaster是sam格式输入文件
引用如下:
https://www.jianshu.com/p/645aaa48a8f0
https://www.jianshu.com/p/5781e7d74c40
https://www.jianshu.com/p/115b24b7df4c
网友评论