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. FreeMarker使用后台枚举

    //页面使用枚举全路径访问 model.addAttribute("enums", BeansWrapper.getDefaultInstance().getEnumModels( ...

  2. [原创]Scala学习:函数的定义

    方式一:标准的定义函数 def 函数名(参数1: 参数类型,参数2: 参数类型): 返回值类型 = { 函数体 } 例子 def max(x: Int,y: Int): Int ={ if(x > ...

  3. P3320 [SDOI2015]寻宝游戏

    题目 P3320 [SDOI2015]寻宝游戏 做法 很巧妙的一种思路,懂了之后觉得大水题 首先要知道:在一棵树上标记一些点,然后从任意一点出发,遍历所有的的最小路径为\(dfs\)序从小到大遍历 那 ...

  4. vi使用方法详细介绍

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  5. oracle 从select的结果update其他表

    update a set a.id=(selelct b.id from temp b where b.line = a.line)  where a.line = (select line from ...

  6. neutron VPC

    The goal of this document is to provide an umbrella blueprint defining how to add support for VPC in ...

  7. JavaWeb中文件的上传和下载

    JavaWeb中文件的上传和下载 转自: JavaWeb学习总结(五十)——文件上传和下载 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/4200090 ...

  8. Android 布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  9. asp.net中异步调用WebService(异步页)[转]

    由于asp2.0提供了异步页的支持使异步调用WebService的性能有了真正的提升.使用异步页,首先要设置Async="true",异步页是在Prerender和Prerende ...

  10. 使用CSS3制作酷炫防苹果复选框 自行测试!

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...