samtools及bam文件的相关知识
文章目录
一些关键概念
-
首先涉及模板及读取操作的基本概念
-
覆盖线性配准(linear alignment)与嵌入式配准(chimeric alignment)的核心概念
-
采用Phred评分系统(Phred scale)
-
探讨基于1-based和0-based的文件处理方法
- bam文件的header
- bam文件的主要内容
本文重点讲述了阅读《SAMv1.pdf》时所学内容。主要涉及BAM文件的具体格式及相关比对基础。
一些重要的概念
首先是关于模板和read的概念

随后介绍的是基于线性的配准(linear alignment)和融合配准(chimeric alignment)的概念

本人的一点体会是线性比对与嵌合比对比情况有时会相当复杂。例如一个read可能在多个位置实现比对这一点是因为基因组庞大且包含大量重复区域。由于二代测序所得的read通常长度较短,在200bp左右因此在Bam文件中可能出现多条记录该read的具体比对信息其中一条被认为是最优的结果而其他则为补充信息。当出现同一位置时还可能涉及到方向性的问题这就可能导致两条记录的存在而没有方向性的限制则被称为线性比对比这种情况Bam文件中只会有一条关于该read的具体记录(注意是指单个读而非配对组)
Phred scale

这个指标是在二倍coverage测序文件中常见的参数表现形式。它通过对原始数据进行对数转换处理后得到的具体数值结果。这种转换方式能够让研究者更加直观地观察到原始数据所反映的概率特征。具体而言,在这种情况下数值越大则代表对应的概率越小:例如当该指标显示数值为10时则对应的概率水平为十分之一;而当其显示数值达到20时则相应的概率水平降至百分之一。
1-base和0-base文件
按照samtools的技术文档所述,在1base系统中存储的主要类型包括SAM、VCF、GFF以及Wiggle等类型的文件,在0base系统中则主要存储BAM、BCF以及BED等类型的区间数据

bam文件的header
找到一个bam文件并输入如下命令查看title信息
samtools view *.bam -H|less
可以看到bam文件的header有如下几个部分组成
- @HD 标题行字段(Header field)主要用于存储版本号及相关排序标注信息
- @SQ 参考序列字典(Reference sequence dictionary)主要负责管理参考序列的元数据信息
- @RQ read group负责记录文件的相关元数据信息例如样本条目文库标识等关键参数
- @PG program主要存储与比对过程相关的软件代码信息
- @CO 注释行(Comment line)是一行专门用于存储注释或脚本说明的文字内容
bam文件的主要内容
Bam文件中的前十一列是必需包含的内容。对于缺失值,则以星号或零来替代。这十一列内的具体情况如图所示。

已有相关介绍
TLEN模板长度,在同一参考序列中读取时,则计算为第四列数值减去第八列数值再加上cIGAR值中的匹配碱基数。
CIGAR值中的等号(=)表示完全匹配,X代表的是不完全匹配的情况,M表示最优比对,从biostar上看到的一种解释方法如下

其他的cigar值解释列表如下:

其中的 consume 查询与 consume 参照表示该标记是否沿参考序列或模板序列延伸。即表示它们会消耗相应的序列信息。其他的说明如下:

然后是flag的值

当flag值等于0时,则表示单端测序类型,并且这条read属于primary line;通常被视为最佳比对。让我们详细解释一下secondary alignment与supplementaryalignment的区别:在双端测序(即二代)情况下(此处应更正原文中的"这"指代不明的问题),当一条read匹配多个位置时产生的次优比对称为secondaryalignment;而supplementaryalignment则是在三代测序结果中出现的情况。因为在双端测序(二代)过程中... hardclip记录较为常见;而在三代高通量 sequencing过程中... supplementaryalignment的情况较少。以下是相关操作指令及相关截图:
#获取secendary alignment的条目
samtools view -f 256 xxx.bam | les

注意看cigar值那一列,就是红框的那一列,都是带有Hardclip的
#获取supplement alignment的条目
samtools view -f 2048 xxx.bam | les

在三代测序的比对分析结果中普遍存在2048的补充性alignment。通过使用samtoolsview命令行工具中的-f/-F参数,既可以筛选出包含指定标记的数据记录;或者选择不包含该标记时也能执行相应的操作。
改写说明

flag的64和128属于双端测序中的read1和read2部分,在双端测序中一条读取到反向互补的情况由flag值为16和32表示,并表示比对到了负链上。
