Sam&bam文件

SAM是一种序列比对格式标准, 由sanger制定,是以TAB为分割符的文本格式。主要应用于测序序列mapping到基因组上的结果表示,当然也可以表示任意的多重比对结果。当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件。SAM的全称是sequence alignment/map format。而BAM就是SAM的二进制文件(B取自binary)。

SAM由头文件和map结果组成。头文件由一行行以@起始的注释构成;而map结果是类似下面的东西:在SAM输出的结果中每一行都包括十二项通过Tab分隔,从左到右分别是:

1 序列的名字(ID)

2 概括出一个合适的标记,各个数字分别代表

  • 1? 序列是一对序列中的一个
  • 2? 比对结果是一个pair-end比对的末端
  • 4? 没有找到位点
  • 8? 这个序列是pair中的一个但是没有找到位点
  • 16? 在这个比对上的位点,序列与参考序列反向互补
  • 32? 这个序列在pair-end中的的mate序列与参考序列反响互补
  • 64 序列是 mate 1
  • 128 序列是 mate 2

假如说标记为以上列举出的数目,就可以直接推断出匹配的情况。假如说标记不是以上列举出的数字,比如说83=(64+16+2+1),就是这几种情况值和。

3? 参考序列的名字

4 在参考序列上的位置(头or尾?)

5? mapping qulity?? 越高则位点越独特

bowtie2有时并不能完全确定一个短的序列来自与参考序列的那个位置,特别是对于那些比较简单的序列。但是bowtie2会给出一个值来显示出 这个段序列来自某个位点的概率值,这个值就是mapping qulity。Mapping qulity的计算方法是:Q=-10log10p,Q是一个非负值,p是这个序列不来自这个位点的估计值。

假如说一条序列在某个参考序列上找到了两个位点,但是其中一个位点的Q明显大于另一个位点的Q值,这条序列来源于前一个位点的可能性就比较大。Q值的差距越大,这独特性越高。

Q值的计算方法来自与SAM标准格式,请查看SAM总结。

6 代表比对结果的CIGAR字符串,如37M1D2M1I,这段字符的意思是37个匹配,1个参考序列上的删除,2个匹配,1个参考序列上的插入。M代表的是alignment match(可以是错配)

7? mate 序列所在参考序列的名称

8 mate 序列在参考序列上的位置

9? 估计出的片段的长度,当mate 序列位于本序列上游时该值为负值。

10 read的序列

11 ASCII码格式的序列质量

12 可选的区域

  • AS:i? 匹配的得分
  • XS:i? 第二好的匹配的得分
  • YS:i? mate 序列匹配的得分
  • XN:i? 在参考序列上模糊碱基的个数
  • XM:i? 错配的个数
  • XO:i? gap open的个数
  • XG:i? gap 延伸的个数
  • NM:i? 编辑距离。但是不包含头尾被剪切的序列。一般来说等于序列中error base的个数
  • YF:i? 说明为什么这个序列被过滤的字符串
  • YT:Z
  • MD:Z? 代表序列和参考序列错配的字符串

不同软件比对出来的sam文件略有不同,一下就bowtie以及samtools两种软件输出的文件格式分别说明。

SAM-bowtie2版本

1,简介:

文件后缀名:.sam

Bowtie2是现下最流行的短序列比对软件,SAM(Sequence Alignment/Map)格式是一种通用的比对格式,用来存储reads到参考序列的比对信息。

注释:以@开头的行

行:除注释外,每一行是一个read

列:

第一列:read name,read的名字通常包括测序平台等信息

eg.ILLUMINA-379DBF:1:1:3445:946#0/1

第二列:sum of flags,为flag的总和(整数),flag取值见备注(3)

eg.16

第三列:RNAM,reference sequence name,实际上就是比对到参考序列上的染色体号。若是无法比对,则是*

eg.chr1

第四列:position,read比对到参考序列上,第一个碱基所在的位置。若是无法比对,则是0

eg.36576599

第五列:Mapping quality,比对的质量分数,越高说明该read比对到参考基因组上的位置越唯一。

eg.42

第六列:CIGAR值,碱基匹配上的碱基数。match/mismatch、insertion、deletion 对应字母 M、I、D

eg.36M 表示36个碱基在比对时完全匹配

注:第七列到第九列是mate(备注1)的信息,若是单末端测序这几列均无意义。

第七列:MRNM(chr),mate的reference sequence name,实际上就是mate比对到的染色体号,若是没有mate,则是*

eg.*

第八列:mate position,mate比对到参考序列上的第一个碱基位置,若无mate,则为0

eg.0

第九列:ISIZE,Inferred fragment size.详见Illumina中paired end sequencing 和 mate pair sequencing,是负数,推测应该是两条read之间的间隔(待查证),若无mate则为0

eg.0

第十列:Sequence,就是read的碱基序列,如果是比对到互补链上则对read进行了reverse completed

eg.CGTTTCTGTGGGTGATGGGCCTGAGGGGCGTTCTCN

第十一列:ASCII,read质量的ASCII编码。

eg.PY[[YY_______________QQQQbILKIGEFGKB

第十二列之后:Optional fields,以tab建分割。详见备注(2)

eg.AS:i:-1 XN:i:0 XM:i:1 XO:i:0 XG:i:0 NM:i:1 MD:Z:35T0 YT:Z:UU

扩展

3,应用举例:

SAM文件可以作为很多后续分析的源文件,也可以从其中提取感兴趣的信息。

4,备注:

(1)mate,在Illuminated中有两种测序技术:paired end sequencing,mate pair sequencing。这两种测序都是测的一个片段的两端,这两端产生的reads被称为mate1,mate2,单末端测序则无mate。

(2)Optional fields:

AS:i:<N>

Alignment score.可以为负的,在local下可以为正的。 只有当Align≥1 time才出现

XS:i:<N>

Alignment score for second-best alignment.  当Align>1 time出现

YS:i:<N>

Alignment score for opposite mate in the paired-end alignment.   当该read是双末端测序中的一条时出现

XN:i:<N>

The number of ambiguous bases in the reference covering this alignment.(推测是指不知道错配发生在哪个位置,推测是针对于插入和缺失,待查证)

XM:i:<N>

错配碱基的数目

XO:i:<N>

The number of gap opens(针对于比对中的插入和缺失)

XG:i:<N>

The number of gap extensions(针对于比对中的插入和缺失)

NM:i:<N>

The edit distance(read string转换成reference string需要的最少核苷酸的edits:插入/缺失/替换)

YF:Z:<S>

该reads被过滤掉的原因。可能为LN(错配数太多,待查证)、NS(read中包含N或者.)、

SC(match bonus低于设定的阈值)、QC(failing quality control,待证)

YT:Z:<S>

值为UU表示不是pair中一部分(单末端?)、CP(是pair且可以完美匹配)

DP(是pair但不能很好的匹配)、UP(是pair但是无法比对到参考序列上)

MD:Z:<S>

比对上的错配碱基的字符串表示

(3)flag取值

0:比对到参考序列的正链上(待求证)

1:是paired-end或mate pair中的一条

2:双末端比对的一条

4:没有比对到参考序列上

8:是paired-end或mate pair中的一条,且无法比对到参考序列上

16:比对到参考序列的负链上

32:双末端reads的另一条(mate)比对到参考序列的负链上

64:这条read是mate 1

128:这条read是mate 2

文件格式——Sam&bam文件的更多相关文章

  1. SAM/BAM文件处理

    当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件.SAM的全称是sequence alignment/map format.而BAM就是SAM的二进制文件 ...

  2. SAMTOOLS使用 SAM BAM文件处理

    [怪毛匠子 整理] samtools学习及使用范例,以及官方文档详解 #第一步:把sam文件转换成bam文件,我们得到map.bam文件 system"samtools view -bS m ...

  3. sam/bam格式

    1)Sam (Sequence Alignment/Map) ------------------------------------------------- 1) SAM 文件产生背景 随着Ill ...

  4. C++使用htslib库读入和写出bam文件

      有时候我们需要使用C++处理bam文件,比如取出read1或者read2等符合特定条件的序列,根据cigar值对序列指定位置的碱基进行统计或者对序列进行处理并输出等,这时我们可以使用htslib库 ...

  5. 解读sam格式文件

    1,SAM文件格式介绍 SAM(The Sequence Alignment / Map format)格式,即序列比对文件的格式,详细介绍文档:http://samtools.github.io/h ...

  6. Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶

    sam格式很精炼,几乎包含了比对的所有信息,我们平常用到的信息很少,但特殊情况下,我们会用到一些较为生僻的信息,关于这些信息sam官方文档的介绍比较精简,直接看估计很难看懂. 今天要介绍的是如何通过b ...

  7. pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)

    在开发基因组相关流程或工具时,经常需要读取.处理和创建bam.vcf.bcf文件.目前已经有一些主流的处理此类格式文件的工具,如samtools.picard.vcftools.bcftools,但此 ...

  8. pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)--转载

    pysam 模块介绍!!!! http://pysam.readthedocs.io/en/latest/index.html 在开发基因组相关流程或工具时,经常需要读取.处理和创建bam.vcf.b ...

  9. Pysam 处理bam文件

    Pysam可用来处理bam文件 安装: 用 pip 或者 conda即可 使用: Pysam的函数有很多,主要的读取函数有: AlignmentFile:读取BAM/CRAM/SAM文件 Varian ...

随机推荐

  1. LINQ 学习路程 -- 查询操作 Select, SelectMany

    IList<Student> studentList = new List<Student>() { , StudentName = "John" }, , ...

  2. DL三(向量化编程 Vectorized implementation)

    向量化编程实现 Vectorized implementation 一向量化编程 Vectorization 1.1 基本术语 向量化 vectorization 1.2 向量化编程(Vectoriz ...

  3. JAVA- 数据库连接池原理

    第一次Java程序要在MySQL中执行一条语句,那么就必须建立一个Connection对象,代表了与MySQL数据库的连接通过直接发送你要执行的SQL语句之后,就会调用Connection.close ...

  4. 分享知识-快乐自己:mongodb 安装部署(linux)

    1):下载 mongodb 包 [root@admin tools]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6. ...

  5. Saiku_00_资源帖

    一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...

  6. 【leetcode刷题笔记】Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  7. 1103 Integer Factorization (30)(30 分)

    The K-P factorization of a positive integer N is to write N as the sum of the P-th power of K positi ...

  8. CH6B12 最优高铁环

    6B12 最优高铁环 0x6B「图论」练习 背景 幻影国建成了当今世界上最先进的高铁,该国高铁分为以下几类: S---高速光子动力列车---时速1000km/h G---高速动车---时速500km/ ...

  9. bzoj 3533: [Sdoi2014]向量集 线段树维护凸包

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3533 题解: 首先我们把这些向量都平移到原点.这样我们就发现: 对于每次询问所得到的an ...

  10. 多版本Python共存时pip给指定版本的python安装package的方法

    在Linux安装了多版本Python时(例如python2.7和3.6),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/pyth ...