生物信息学与算法全基因组/外显子组测序分析生信基础

BAM/SAM文件格式的一些小知识

2018-10-07  本文已影响472人  zhym1992

BAM/SAM文件的一些小知识

前言

如果不是在陈老师这读博,然后开始折腾BAM/SAM文件,我估计这辈子都不会了解到这么多东西吧

SAM/BAM简介

See Wiki

Sequence Alignment Map (SAM) is a text-based format for storing biological sequences aligned to a reference sequence developed by Heng Li and Bob Handsaker et al.

在这个文件基础上,大家常用的各种alignment软件基本都支持SAM/BAM格式,围绕着这个文件格式,李恒等还开发了多个软件和不同语言版本的依赖库,以供大家使用该文本格式储存信息,并且在该文件基础上进行开发。

具体用法,推荐看各自的文档,比如javadoc或者python doc

格式

格式说明

以下为SAM格式示例(BAM格式参照SAM即可)

@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
r001 99 ref 7 30 8M2I4M1D3M = 37 39 TTAGATAAAGGATACTG *
r002 0 ref 9 30 3S6M1P1I4M * 0 0 AAAAGATAAGGATA *
r003 0 ref 9 30 5S6M * 0 0 GCCTAAGCTAA * SA:Z:ref,29,-,6H5M,17,0;
r004 0 ref 16 30 6M14N5M * 0 0 ATAGCTTCAGC *
r003 2064 ref 29 17 6H5M * 0 0 TAGGC * SA:Z:ref,9,+,5S6M,30,1;
r001 147 ref 37 30 9M = 7 -39 CAGCGGCAT * NM:i:1

SAM文件主要由两个部分构成

每列的含义:

column
  1. QNAME:测序的reads的名字。
  2. FLAG:二进制数字之和,不同数字代表了不同的意义;比如正负链,R1/R2(双端测序的哪一端)等。
  3. RNAME:map到参考基因组后的染色体名称。
  4. POS:1-based 基因组起始位点。
  5. MAPQ:map的质量。
  6. CIGAR:一个数字与字母交替构成的字符串,标记了这段reads不同位置的match情况。不同字母的含义后边介绍。
  7. RNEXT:如果是pair-end测序,这个为mate(另一端中对应的)的read的染色体名称;否则为下一条read的染色体名称。
  8. PNEXT:同上,read对应的起始位点。
  9. TLEN:模板的长度。
  10. SEQ:序列。
  11. QUAL:序列的质量打分(fasta文件中的那个)。

flag的含义:

flag tests 查询flag中具体数字含义,以及测试flag内容的网页

flag

flag比较特殊的是一点在于flag最后的数字中包含了这个数即为true(包含该特性),不包含这个数字即为false(不包含该特性)。

检测方法也比较巧妙,通过二进制与进行计算。比如:16 and 16 -> 16。结果与测试的数字一致,则表明flag中包含该数字。否则,不包含。

当然,不同语言版本的接口也直接提供了api来直接获取这些特性,不必在进行人工的计算。

cigar的含义

cigar中会包含数字,代表了特定match持续了多少nt;以及不同的字符,代表了不同的match情况。

cigar string examples:

30S512M216N12S (30nt soft clip -> 512nt exact match -> 216nt skipped region -> 12nt soft clip)
30S (30nt soft clip)
40M (40nt exact match)

其中不同的字符及其含义如下:


cigar from official

另一个版本的说明来源

cigar from blog

注意

双端测序,正负链的问题

双端测序很麻烦,mate和read两条序列的flag信息基本都是完全相反的,包括strand等信息。那么如何判断这一对reads测到的到底是哪条链就成了问题。

上一篇下一篇

猜你喜欢

热点阅读