SAM 格式与 SAMtools

The Sequence Alignment/Map Format and SAMtools
Li, H. et al. · Bioinformatics 25: 2078-2079, 2009 · ← 导航

1. 背景

SAM 格式出现前,每个比对器各有独特输出格式——MAQ 有 MAP、ELAND 有 ELAND、Bowtie 有自己的格式。跨工具比较或切换需要大量格式转换脚本。SAM(Sequence Alignment/Map)由 Heng Li 等人提出,统一了比对数据的存储标准。

SAM 很快被 1000 Genomes Project 采纳,随后成为全行业标准。其二进制版本 BAM 和压缩版本 CRAM 至今是生物信息学的核心格式。

2. 格式结构

2.1 头部(Header)

以 @ 开头的行:

@HD     VN:1.0  SO:coordinate        // 版本与排序
@SQ     SN:chr1 LN:248956422          // 参考序列
@RG     ID:sample1 SM:NA12750         // 读段组
@PG     ID:bwa PN:bwa VN:0.7.15      // 程序信息

2.2 11 个必填字段

#字段类型说明
1QNAMEstr读段名称
2FLAGint位标记(配对、链方向等)
3RNAMEstr参考序列名
4POSint最左端 1-based 坐标
5MAPQint比对质量(Phred)
6CIGARstrCIGAR(如 35M1D65M)
7RNEXTstr配对读段参考名
8PNEXTint配对读段位置
9TLENint插入片段长度
10SEQstr读段序列
11QUALstr碱基质量(Phred+33)

2.3 FLAG 位标记

含义
1读段已配对
2所有片段正确比对
4该片段未比对
8mate 未比对
16比对到反向互补链
32mate 比对了反向互补链
64该读段是 read 1
128该读段是 read 2
256次优比对
2048补充比对(supplementary)

2.4 CIGAR 操作

操作说明消耗参考消耗读段
M匹配/错配
I插入
D删除
N跳过(intron)
Ssoft clip
Hhard clip
示例:CIGAR="35M1D65M" → 35 匹配 + 1 删除 + 65 匹配。读段长 100bp,参考消耗 101bp。

2.5 TAG 字段

NM:i:3          // 编辑距离(错配 + indel 总数)
AS:i:150        // 比对分数
XS:i:120        // 次优比对分数
RG:Z:sample1    // 读段组
MD:Z:35A0^C65   // 错配和删除的精确位置

3. BAM —— 二进制版本

4. SAMtools 核心命令

命令功能
samtools view查看/转换 SAM/BAM/CRAM
samtools sort按坐标排序
samtools index建 .bai 索引
samtools merge合并 BAM
samtools mpileuppileup → SNP/indel 检测
samtools flagstat比对统计
samtools depth深度计算
samtools tview文本比对可视化
生态系统核心: GATK、freebayes、STAR、HISAT2 等都支持 SAM/BAM。SAMtools 为这一生态系统提供了基础管道功能。

5. 与 BWA 的关系

BWA 是最早默认输出 SAM 格式的比对器之一。 BWA 论文中的数据分析都基于 SAM 格式。BWA + SAMtools 提供了从比对到变异检测的完整流程。两者由同一作者开发(Heng Li),设计上深度整合。