其他分享
首页 > 其他分享> > bam/sam 文件格式详解

bam/sam 文件格式详解

作者:互联网

sam/bam 是一种序列比对格式标准,由sanger制定,是以TAB为分割符的文本格式。主要应用于测序序列mapping到基因组上的结果表示,当然也可以表示任意的多重比对结果。通常是把FASTQ文件格式的测序数据比对到对应的参考基因组版本得到的。

header 部分

sam 分为两部分,注释信息(header section )和比对结果部分 (alignment section)。通常是把FASTQ文件格式的测序数据比对到对应的参考基因组版本得到的。注释信息并不是SAM文件的重点,是该SAM文件产生以及被处理过程的一个记录,规定以@开头,用不同的tag表示不同的信息,主要有:

samtools 查看 header 命令

samtools view -H <.bam>

比对部分

比对部分我们主要看前 11 列

header

  1. QNAME: read 名称

  2. FLAG: 概括出一个合适的标记,不同的数字代表不同的含义

    FLAG

    第二列是对应的十六进制数,对应的二进制如下

    FLAGG2

    • 1 :代表这个序列采用的是PE双端测序
    • 2: 代表这个序列和参考序列完全匹配,没有插入缺失
    • 4: 代表这个序列没有mapping到参考序列上
    • 8: 代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上
    • 16:代表这个序列比对到参考序列的负链上
    • 32 :代表这个序列对应的另一端序列比对到参考序列的负链上
    • 64 : 代表这个序列是R1端序列, read1;
    • 128 : 代表这个序列是R2端序列,read2;
    • 256: 代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置,其他都是次要的
    • 512: 代表这个序列在QC时失败了,被过滤不掉了(# 这个标签不常用)
    • 1024: 代表这个序列是PCR重复序列(#这个标签不常用)
    • 2048: 代表这个序列有一部分嵌合了 PCR 引物

    最终的数值是符合上面条条件的数字加起来的值,比如 $99 = 1+2+32+64$,
    也可以用二进制运算给算出来:

     >>> bin(99)
     '0b1100011'
     # 其实就是 0000 0000 0001 + 0000 0000 0010 + 0000 0010 0000 +  0000 0100 0000
    

    我们也可以通过这个值快速计算是不是完全匹配,或者判断是否符合其他条件

     >>> 99 & 2
     2
     # 返回为真值就代表是完全匹配
    
  3. RNAME: 参考基因组的染色体名称

  4. POS: 比对到参考基因组上的位置

  5. MAPQ: 比对质量, 255 表示比对质量不可用

  6. CIGAR:
    CIGAR

    • “M”表示 match或 mismatch;
    • “I”表示 insert;
    • “D”表示 deletion;
    • “N”表示 skipped(跳过这段区域);
    • “S”表示 soft clipping(被剪切的序列存在于序列中);
    • “H”表示 hard clipping(被剪切的序列不存在于序列中);
    • “P”表示 padding;
    • “=”表示 match;
    • “X”表示 mismatch(错配,位置是一一对应的);
  7. RNEXT: read2 在参考序列上的染色体名称,如果没有就用 "*", 相同"="

  8. PNEXT: read2 在参考序列上的位置

  9. TLEN: 插入片段的长度
    TLEN

  10. SEQ: read 序列

  11. QUAL: read 质量

比对部分的其他信息

从第 12 列开始信息就不固定了, 格式是 TAG:TYPE:VALUE 大家了解一下就好

TAG1
TAG2
TAG3


参考资料
https://samtools.github.io/hts-specs/SAMv1.pdf
https://samtools.github.io/hts-specs/SAMtags.pdf

标签:代表,0000,sam,参考,测序,基因组,文件格式,序列,bam
来源: https://www.cnblogs.com/limon86/p/14832380.html