BAM文件(Binary Alignment/Map格式)是用于存储大规模测序数据的二进制文件格式,特别是用于存储序列与参考基因组的比对结果。它是SAM(Sequence Alignment/Map)文件的压缩版本,设计用于更有效的存储和快速的数据访问。以下是BAM文件数据结构的详细介绍,以及一个简单的例子来说明其结构:
数据结构
- 文件头(Header):
- 包含关于BAM文件本身、参考序列和比对程序的信息。
- 包括的字段可能有:文件格式版本、参考序列的名称和大小、排序方式、比对程序的信息等。
- 对齐段(Alignment Blocks):
- 每个对齐段代表一个读段(read)的比对信息。
- 包括的字段有:
- QNAME:读段的名字。
- FLAG:一组标志,表示读段的特定属性(例如,是否配对、是否比对到参考序列等)。
- RNAME:参考序列的名字。
- POS:读段比对到参考序列的起始位置。
- MAPQ:比对质量分数。
- CIGAR:一种编码方式,描述如何将读段与参考序列对齐。
- SEQ:原始读段的核苷酸序列。
- QUAL:读段序列的质量分数。
- 附加数据:
- 可以包括一些可选的标签,如读段的比对分数、配对信息等。
例子
假设我们有一个简单的BAM文件,它包含了两个读段的比对信息。这里是一个抽象的、简化的表示:
- 文件头:
- 版本:1.5
- 参考序列:chr1,长度249250621
- 对齐段:
- 读段1:
- QNAME: read0001
- FLAG: 0
- RNAME: chr1
- POS: 123456
- MAPQ: 60
- CIGAR: 76M
- SEQ: ATCGATCGATCG...
- QUAL: *(表示没有质量信息)
-
- 读段2:
- QNAME: read0002
- FLAG: 16 (表示读段比对到参考序列的反向互补链)
- RNAME: chr1
- POS: 123501
- MAPQ: 60
- CIGAR: 76M
- SEQ: GCTAGCTAGCTA...
- QUAL: *(表示没有质量信息)
在这个例子中,我们看到了BAM文件的两个主要部分:文件头和对齐段。每个对齐段都详细描述了一个单独的读段如何比对到参考序列。例如,读段1(read0001)比对到了参考序列chr1的位置123456,而读段2(read0002)则比对到了位置123501,并且是在参考序列的反向互补链上。