生物信息学100个基础问题 —— 第22题 都有了SAM文件,为什么还需要BAM文件?
Hello 大家好!
前面的若干问题,我们一直在围绕着SAM文件的记录格式做了详细地讨论,我相信大家通过我们的问题,跟随我们学习的思路已经掌握了SAM文件作为标准的比对格式的合理性以及相关特点。
1. 背景介绍和数据下载
SAM文件不但记录了reads详细的mapping信息,还记录了reads的原始信息,内容很是全面。这样很好,但也存在很多问题:
- 比如我的原始FASTQ文件是100G,那么我的SAM文件一定是大于100G的,也就是占用了更多空间;
- mapping的结果是没有排序,无论是按reads 的 name排序还是按在基因组上的位置排序,都没有。所以默认的SAM输出文件是乱序的,处理很不方便;
- mapping的结果不能进行随机访问,什么是随机访问呢?举个例子就是说对于一个SAM文件我不能快速地访问比如chr1 10000 - 200000 这个区域的所有reads 的mapping情况。
基于以上这3个问题,BAM文件就出现了,并且完美解决了上面3个问题。为了方便我们今天的展示和说明,我为大家准备了1个很小的SAM文件,大约只有4MB,请大家下载下来并完成我们的相关问题。
# SAM测试文件的baidu盘下载地址
链接:https://pan.baidu.com/s/15gVVYPRu3VbF_uKbJUUGrA 密码:2drn
同时,我们今天要使用的工具是Linux下的samtools,请没有Linux的老铁去安装Linux(我们马上就会有教程出来);请没有安装samtools软件的老铁使用conda安装需要软件,教程可以移步( 用Anaconda快速搭建生物信息学分析平台 )
2. 思路讲解
BAM文件是SAM文件的一种压缩格式,也是最常用的一种比对结果的压缩格式。它一般可以将SAM文件压缩到只有原来的20~30%大小,并且使用非常方便。
同时,对于BAM文件,我们一般还会进行排序,根据不同的需要,我们排序的方法一般有2种:第1种是按照mapping到的参考基因组的坐标上下游顺序来排序,是samtools的默认排序方法;第2种是按照reads name进行排序,需要增加一个-n参数。
对于一个已经排序好的BAM文件,我们通常会建立索引文件,后缀名一般是在BAM文件名的后面多个“.bai“。有了BAM以及索引文件的出现,我们就可以随机访问任意一段染色体区域的BAM文件。
3. 提出问题
那么我们今天的问题也很简单,就是使用samtools工具对我们的测试数据test.sam文件进行操作。具体要求如下:
1. 使用samtools view 命令查看test.sam的header,请记录各条染色体的长度;同时告知这个test.sam文件是使用哪种mapping软件进行mapping的?
2. 使用samtools view命令将test.sam文件转换成test.bam文件,并保留header区域,写出命令并记录test.sam,test.bam的文件大小。
3. 使用less命令分别查看test.sam,test.bam文件,为什么bam文件会输出乱码?使用samtools view命令再试试看?
4. 使用samtools sort命令对test.bam文件进行排序,输出文件名为test_sort.bam,并记录文件大小。
5. 使用samtools index 对test_sort.bam建立index,写出命令并记录其文件大小。
6. 使用samtools tview使用下面的命令查看chr1:160000-160100区域的比对情况,并截图
samtools tview -p chr1:160000-160100 test_sort.bam
4. 参考资料
资料1:本次主要是对samtools的一个应用,我建议大家直接看samtools的说明文档,比如对于view功能,直接在命令行敲击samtools view,再按回车就能出现说明文档,如下图所示。

资料2: samtools manual page
5. 多说几句话
大家以后要用的软件种类非常多,不可能所有的软件你都学过,总有一个从不会到会的过程。在学习使用各种软件的过程中要学会类比,要学会推理,要想清楚我们的input是什么output是什么。不能乱搞一气,想不明白其中的道理,就像一个黑盒子,最后就是你不知道扔进去是什么,也不知道扔出来是什么,这不完蛋了?
至于软件使用方法的学习,一定要多看官方的说明文档!入门的时候看看别人的介绍或者是指导资料什么的尚可,但是一定有了一定基础以后一定要多阅读官方的说明文档,受益无穷的!
另外,希望大家多多支持我们的生物信息学知乎Live,每一期都很用心准备!
购买其中任意1次生物信息学知乎Live都可以加入到我们的生物信息学交流群!
注意!入群的时候需要提交1个申请信息,申请信息的内容在每次生信知乎Live的最最下面!