SAM/BAM文件处理

楼主  收藏   举报   帖子创建时间:  2019-01-08 00:00 回复:0 关注量:99

当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件。SAM的全称是sequence alignment/map format。而BAM就是SAM的二进制文件(B取自binary)。 那么SAM文件的格式是什么样子的呢?如果你想真实地了解SAM文件,可以查看它的说明文档。SAM由头文件和map结果组成。头文件由一行行以@起始的注释构成。而map结果是类似下面的东西:

看上去很类似fastq文件,它也有read名称,序列,质量等信息,但是又不完全一样。首先,每个read只占一行,只是它被tab分成了很多列,一共有12列,分别记录了:

1. read名称

2. SAM标记

3. chromosome

4. 5′端起始位置

5. MAPQ(mapping quality,描述比对的质量,数字越大,特异性越高)

6. CIGAR字串,记录插入,删除,错配以及splice junctions(后剪切拼接的接头)

7. mate名称,记录mate pair信息

8. mate的位置

9. 模板的长度

10. read序列

11. read质量

12. 程序用标记

显然,其中chromosome至CIGAR的信息都是非常重要的。但是这些对我们不重要,我们只需要了解SAM/BAM文件是什么,就可以了。重要的是如果进行下游的操作。 要操作SAM/BAM文件,首先需要安装samtools。它的安装过程和所有的linux/unix程序一样,都是经过make之后生成可执行程序,然后把它的路径告知系统,或者放在系统可以找到的位置就可以了。 比如:

然后就可以按照samtools主页上介绍的工具进行各种操作了。我们最常见的几步操作比如 0. SAM,BAM转换

1. sorting BAM文件。大多数下游程序都要求BAM文件是被排过序的。

2. 创建BAM index。这也是被大多数下游程序所要求。

3. index模板基因组。这也是被大多数下游程序所要求。

在很多时候,我们还会看到一种扩展名为BED的mapping文件。其具体格式也是几经变化,但是现在以UCSC的描述为准。从BAM文件转换成BED文件,我们需要安装BEDtools。下载安装就不多说了。示例一个如何从BAM文件转换成BED文件的命令:

更多的具体内容可以参见其说明文档。 当然,还有很多种格式来记录mapping的结果,大多数都收录在UCSC的帮助文档中。比如上次有人问及的.bw是什么文件(bigWig文件)之类的,都可以在那里找到答案。 上次谈及fastq文件时,有讲过其质量评估的问题,那么在mapping之后,如何对mapping的结果进行评估呢? 最简单的,就是通过samtools来评估mapping质量了。

注意,这一步之前需要经过sort和index。结果会显示:

其中第一列是染色体名称,第二列是序列长度,第三列是mapped reads数,第四列是unmapped reads数。 如果是RNAseq,我们可以使用broad institute的RNA-SeQC来得到更加完整的报告。下载到文件之后,也许需要安装BWA来获取更精准的结果,但是如果不安装的话,也可以进行分析。一般来说,这一步不需要特别精准的结果,所以我很少使用BWA选项。下载的文件如果是.zip结尾的,直接把它改写成.jar就可以运行了。 在它的主页上下载所需要的Example RNA-seq Data。下载结束之后,该解压的解压缩。接下来运行:

以上的参数只有一个与其说明文档不一样的地方就是使用了-Xmx2048m来指定java虚拟机的内存大小为2G。如果遇到java.lang.OutOfMemoryError,还可以指定得再大些。

当然如果是自己的文件的话,还需要多两步:

1.BAM,reference及GTF文件的基因组名称必须一致。

2.需要使用picard工具包中的CreateSequenceDictionary来构建一个dictionary文件。

原文来自:http://pgfe.umassmed.edu/ou/archives/3050