文件格式——Sam&bam文件
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文件的更多相关文章
- SAM/BAM文件处理
当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件.SAM的全称是sequence alignment/map format.而BAM就是SAM的二进制文件 ...
- SAMTOOLS使用 SAM BAM文件处理
[怪毛匠子 整理] samtools学习及使用范例,以及官方文档详解 #第一步:把sam文件转换成bam文件,我们得到map.bam文件 system"samtools view -bS m ...
- sam/bam格式
1)Sam (Sequence Alignment/Map) ------------------------------------------------- 1) SAM 文件产生背景 随着Ill ...
- C++使用htslib库读入和写出bam文件
有时候我们需要使用C++处理bam文件,比如取出read1或者read2等符合特定条件的序列,根据cigar值对序列指定位置的碱基进行统计或者对序列进行处理并输出等,这时我们可以使用htslib库 ...
- 解读sam格式文件
1,SAM文件格式介绍 SAM(The Sequence Alignment / Map format)格式,即序列比对文件的格式,详细介绍文档:http://samtools.github.io/h ...
- Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶
sam格式很精炼,几乎包含了比对的所有信息,我们平常用到的信息很少,但特殊情况下,我们会用到一些较为生僻的信息,关于这些信息sam官方文档的介绍比较精简,直接看估计很难看懂. 今天要介绍的是如何通过b ...
- pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)
在开发基因组相关流程或工具时,经常需要读取.处理和创建bam.vcf.bcf文件.目前已经有一些主流的处理此类格式文件的工具,如samtools.picard.vcftools.bcftools,但此 ...
- pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)--转载
pysam 模块介绍!!!! http://pysam.readthedocs.io/en/latest/index.html 在开发基因组相关流程或工具时,经常需要读取.处理和创建bam.vcf.b ...
- Pysam 处理bam文件
Pysam可用来处理bam文件 安装: 用 pip 或者 conda即可 使用: Pysam的函数有很多,主要的读取函数有: AlignmentFile:读取BAM/CRAM/SAM文件 Varian ...
随机推荐
- LINQ 学习路程 -- 查询操作 Select, SelectMany
IList<Student> studentList = new List<Student>() { , StudentName = "John" }, , ...
- DL三(向量化编程 Vectorized implementation)
向量化编程实现 Vectorized implementation 一向量化编程 Vectorization 1.1 基本术语 向量化 vectorization 1.2 向量化编程(Vectoriz ...
- JAVA- 数据库连接池原理
第一次Java程序要在MySQL中执行一条语句,那么就必须建立一个Connection对象,代表了与MySQL数据库的连接通过直接发送你要执行的SQL语句之后,就会调用Connection.close ...
- 分享知识-快乐自己:mongodb 安装部署(linux)
1):下载 mongodb 包 [root@admin tools]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6. ...
- Saiku_00_资源帖
一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...
- 【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 ...
- 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 ...
- CH6B12 最优高铁环
6B12 最优高铁环 0x6B「图论」练习 背景 幻影国建成了当今世界上最先进的高铁,该国高铁分为以下几类: S---高速光子动力列车---时速1000km/h G---高速动车---时速500km/ ...
- bzoj 3533: [Sdoi2014]向量集 线段树维护凸包
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3533 题解: 首先我们把这些向量都平移到原点.这样我们就发现: 对于每次询问所得到的an ...
- 多版本Python共存时pip给指定版本的python安装package的方法
在Linux安装了多版本Python时(例如python2.7和3.6),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/pyth ...