跳转到内容

SAM/BAM/CRAM 格式:比对结果的标准编码

快速概览

SAM/BAM/CRAM 编码的是比对结果——reads 在参考基因组坐标系中的定位。理解其核心字段(FLAG、CIGAR、MAPQ、TAGs),是解读变异证据、可视化检查和下游分析的基础。

  • SAM 是文本格式,BAM 是二进制压缩格式,CRAM 是参考感知压缩格式
  • 11 个必需字段定义比对的核心信息:位置、方向、质量、CIGAR
  • CIGAR 字符串编码 read 与参考之间的序列差异(匹配/错配/插入/缺失)
  • FLAG 位标记编码比对状态(paired、reverse、duplicate 等)
  • 三者语义等价,仅在存储效率和访问方式上有差异
所属板块 数据、注释与资源

参考版本、注释体系、数据格式与数据库的统一入口。

阅读目标 帮助建立阅读上下文

先判断这页与你当前问题的关系,再决定是否深入展开。

建议前置 先建立相关基础对象与方法直觉

建议先建立相关基础对象与方法直觉,再进入本页。

SAM(Sequence Alignment/Map) 格式编码的是比对结果(alignment)——将原始 reads 定位到参考序列坐标系中的计算产物。

graph LR
subgraph "Read Space"
R["Read: ATGC..."]
end
subgraph "Alignment Process"
Map["Mapper"]
end
subgraph "Reference Space"
Ref["Reference: ...NNNATGCNNN..."]
Pos["Position: chr1:1000"]
CIGAR["CIGAR: 4M"]
end
R --> Map
Map --> Ref
Map --> Pos
Map --> CIGAR

每条比对记录包含 11 个必需字段(制表符分隔):

列号字段名类型说明
1QNAME字符串Read 标识符(对应 FASTQ 中的 ID)
2FLAG整数位标记,编码比对状态
3RNAME字符串参考序列名称(如 chr1)
4POS整数1-based 起始位置
5MAPQ整数比对质量分数(Phred-scaled)
6CIGAR字符串比对操作紧凑编码
7RNEXT字符串配对 read 的参考序列
8PNEXT整数配对 read 的位置
9TLEN整数观察到的模板长度
10SEQ字符串Read 序列
11QUAL字符串Read 质量分数(同 FASTQ)

之后是可选的 TAG 字段,格式为 TAG:TYPE:VALUE(如 NM:i:3 表示 3 个错配)。

SAM/BAM 是分析流程中的核心证据层

  • 变异检测依赖 BAM 中的 read pileup 和碱基质量
  • 表达定量依赖 BAM 中的 read 计数
  • 可视化检查(如 IGV)依赖 BAM 确认变异真实性
  • 质控指标(如覆盖度、插入片段分布)从 BAM 中提取

理解 BAM 字段结构,是排查分析错误、解释异常结果的前提。

FLAG 是一个整数,其二进制表示编码多个比对属性:

位值标志名含义
0x1PAIREDread 是 paired-end
0x2PROPER_PAIR配对比对正常
0x4UNMAPread 未比对上
0x8MUNMAP配对 read 未比对上
0x10REVERSEread 比对到负链
0x20MREVERSE配对 read 比对到负链
0x40READ1这是 read 1
0x80READ2这是 read 2
0x100SECONDARY次要比对
0x200QCFAIL未通过质控
0x400DUPPCR 重复
0x800SUPPLEMENTARY补充比对(chimeric)
FLAG = 99 (二进制: 01100011)
= 0x1 (PAIRED) + 0x2 (PROPER_PAIR) + 0x20 (MREVERSE) + 0x40 (READ1)

这意味着:这是一个正常配对的 read 1,其配对 read 比对到负链。

CIGAR(Concise Idiosyncratic Gapped Alignment Report)编码 read 与参考之间的序列差异:

操作符含义消耗参考?消耗 read?
M比对匹配(match/mismatch)
I插入(insertion)
D缺失(deletion)
N跳过参考区域(如剪接)
S软裁剪(soft clip)
H硬裁剪(hard clip)
P填充(padding)
=序列匹配
X序列错配
CIGAR: 76M

→ 76 个碱基全部比对到参考上(可能包含匹配和错配)

CIGAR: 50M2I24M

→ 50 个匹配,2 个插入,24 个匹配

CIGAR: 30M1D45M

→ 30 个匹配,1 个缺失(参考上有但 read 上没有),45 个匹配

CIGAR: 10S60M6S

→ 两端各有 soft clipping(通常表示低质量或比对不确定区域)

MAPQ(Mapping Quality)衡量比对位置的置信度:

MAPQ=10log10(Pmapping error)MAPQ = -10 \log_{10}(P_{mapping\ error})

MAPQ错误概率说明
01低质量或多次比对
100.110% 可能比对错误
200.01常用阈值
300.001高质量比对
6010⁻⁶极高置信度

关键注意:MAPQ = 0 通常表示 read 可以比对到多个位置(重复区域、多拷贝基因),在变异检测中应谨慎使用。

维度 SAM BAM
格式类型 文本格式(人类可读) 二进制压缩格式(BGZF)
文件大小 最大(~20-30 GB 全基因组) 较小(~5-10 GB)
访问速度 慢(顺序读取) 快(支持随机访问)
典型用途 调试、查看少量记录 生产分析、可视化
维度 BAM CRAM
压缩原理 通用压缩(BGZF) 参考感知压缩(存储与参考的差异)
文件大小 中等 最小(比 BAM 小 30-50%)
依赖 不依赖参考序列 需要参考序列才能解码
典型用途 标准分析流程 长期归档、节省存储

三者语义等价:SAM → BAM → CRAM 可以互相转换,信息不丢失(除非使用有损压缩选项)。

常见 TAG 字段包括:

TAG类型说明
NMint编辑距离(错配+indel 数)
MDstring错配位置的字符串表示
ASint比对得分
XSint次优比对得分(用于 unique mapping 判断)
RGstringRead group(样本/文库标识)
PGstring生成此记录的程序(如 BWA、Picard)
  • SAM/BAM/CRAM 编码比对结果,是从 read-space 到 reference-space 的坐标映射
  • 11 个必需字段 + 可选 TAGs 定义完整的比对信息
  • FLAG 编码状态,CIGAR 编码序列差异,MAPQ 编码位置置信度
  • 三者语义等价,BAM 是生产标准,CRAM 适合归档