測序數據比對結果 BAM 文件用 samtools 進行 sort 之后發現體積變小了...
當時懷疑是不是 sort 過程中有一部分 reads 被丟棄了?于是統計了一下原始 BAM 文件和 sort 之后 BAM 文件的行數,發現是一樣的,也就是說 samtools 在 sort 時并沒有去除一部分 reads:
$ samtools view -h F_bismark_bt2_pe.bam | wc -l
46159701
$ samtools view -h F_bismark_bt2_pe.sorted.bam | wc -l
46159701
那為何只對文件中內容排一下序,文件就變小了呢?上網搜索一番,用中文關鍵字竟然找不到有用的信息,看來技術類問題用英文關鍵字搜才有效率,在 SEQanswers 上找到一篇討論這個話題的帖子,samtools 作者 Li Heng 給出了解釋:
BAM is compressed. Sorting helps to give a better compression ratio because similar sequences are grouped together.
BAM 文件是壓縮的二進制文件,對文件內容排序之后相似的內容排在一起,使得文件壓縮比提高了,因此排序之后的 BAM 文件變小了,相對應的 SAM 文件就是純文本文件,對 SAM 文件進行排序就不會改變文件大小。由于 RNA-seq 中基因表達量的關系,RNA-seq 的數據比對結果 BAM 文件使用 samtools 進行 sort 之后文件壓縮比例變化會比 DNA-seq 更甚。
另外,samtools 對 BAM 文件進行排序之后那些沒有比對上的 reads 會被放在文件的末尾。
samtools view file.bam | tail
關于 SEQanswers
介紹一下這個有很多大牛出沒的 NGS 技術論壇 SEQanswers,其中包含各類與測序技術和生物信息相關的技術討論,大牛很多,干貨很多,對新手來說是個很好的學習資源。
如果我們過于爽快地承認失敗,就可能使自己發覺不了我們非常接近于正確。 ——卡爾·波普爾