在生物信息学中尤其是高通量测序数据分析中,大部分的操作都是在实现短片段序列与参考序列的比对(mapping),比如bowtie等,这就涉及到如何使用一个统一的格式来表示这种mapping结果呢,sam(Sequence Alignment/Map)格式就是来解决这个问题的。sam文件拥有头部描述和详细比对两部分,其中头部描述是以@开头,后面紧跟两个缩写字母表示相应的含义。
     
  SAM分为两部分, 注释信息(header section)和比对结果部分(alignment section), 注释信息可有可无,都是以@开头,用不同的tag表示不同的信息,主要有 @HD,说明符合标准的版本、对比序列的排列顺序; @SQ,参考序列说明; @RG,比对上的序列(read)说明;@PG,使用的程序说明;@CO,任意的说明信息。而 详细比对部分是通过11个tab隔开的字段来表示。 
下面主要讲解下 详细比对部分字段的具体含义:
                                                                      alignment section部分: 如果其内容没有获得,可以用*或者0代替。

---------------------------------------------chromosome至CIGAR的信息都是非常重要的
其中: 
1. QNAME 表示的是查询序列的名称即短片段(reads)的名称; 
2. FLAG 以整数来表示比对的结果,不同数值有不同的意义,数值也可以是下列数的组合;

    比如如果FLAG是4的话则表示该reads没有比对到参考序列上,flag为16表示single-end reads比对到参考序列的反链上,flag为83(64+16+2+1)表示paired-end reads中的第一个reads比对到参考序列上了。

3. RNAME  表示参考序列的名称,比如基因组的染色体编号等,如果没有比对上则显示为*;  【chromosome】
4. POS 表示比对的起始位置,以 1 开始计数,如果没有比对上则显示为 0 ;  【5'端起始位置】
5. MAPQ 比对质量;(数字越大,特异性越高) 
6. CIGAR CIGAR 字符串,即比对的详细情况,  记录插入,删除,错配,后剪切拼接的接头。简要比对信息表达式(Compact Idiosyncratic Gapped Alignment Report),其以参考序列为基础,使用数字+字母表示比对结果。比如3S6M1P1I4M,前三个碱基被剪切去除了,然后6个比对上了,然后打开了一 个缺口,有一个碱基插入,最后是4个比对上了,是按照顺序的; 
7. RNEXT 双末端测序中下一个reads比对的参考系列的名称,如果没有则用 " *  " 表示,如果和前一个reads比对到同一个参考序列则用" = "表       示; 【mate名称,记录mate pair信息】  
8. PNEXT 下一个reads比对到参考序列上的位置,如果没有则用 0 表示; 【 mate的位置】
9.  ISIZE/TLEN query序列的模板长度或者插入长度,Template的长度, 最左边得为正+,最右边的为负 -,中间的不用定义正负,不分区段(single-segment)的比对上,或者不可用时,表示为 0 ; 
10. SEQ  reads的序列信息; 
11. QUAL  reads的序列质量信息,同FASTQ。


-----------后面还有些可选字段,比如:
12.可选字段(optional fields)【程序用标记】,格式如:TAG:TYPE:VALUE,其中TAG有两个大写字母组成,每个TAG代表一类信息,每一行一个TAG只能出现一次,TYPE表示TAG对应值的类型,可以是字符串、整数、字节、数组等。
示例:http://blog.csdn.net/u012150360/article/details/70556186博耘生物

解释: 

其中可以看出Aligenment 2 和 Alignment 3是成对的reads,其插入长度为314。 
bam格式中的b是binary的意思,是sam格式的二进制表示方式,为什么要用二进制表示呢? 因为sam格式文件大小通常是十分大的,一般是以G为单位,所以为了减少存储量等因素而将sam转换为二进制格式以便于分析。 
sam/bam格式是由特定的一些软件(比如samtools)来处理的,包括格式互转、排序、建立索引、搜寻突变等操作,后续分析中会详细讲解samtools工具的使用方法。

【数据格式说明】

1.bam文件读取
samtools view xxx.bam
samtools view xxx.bam |less

2.bam和sam的区别与一致

(1)   sam是带有比对信息的序列文件(即告诉你这个reads在染色体上的位置等),用于储存序列数据(SAM  format is a generic format for storing large nucleotide sequence alignments. )                                                                                             (2)  BAM is the compressed binary version of the Sequence Alignment/Map (SAM) format. 生物信息中的二进制文件主要是为了节约空间,计算机机可读。可以用samtools工具实现sam和bam文件之间的转化。

二者都是fastq文件经过序列比对或者mapping后输出的格式(其储存的信息都是一致的)

【flag】

1 : 代表这个序列采用的是PE双端测序

2: 代表这个序列和参考序列完全匹配,没有错配和插入缺失

4: 代表这个序列没有mapping到参考序列上

8: 代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上

16:代表这个序列比对到参考序列的负链上

32 :代表这个序列对应的另一端序列比对到参考序列的负链上

64 : 代表这个序列是R1端序列, read1;

128 : 代表这个序列是R2端序列,read2;

256: 代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置,其他都是次要的

512: 代表这个序列在QC时失败了,被过滤不掉了(# 这个标签不常用)

1024: 代表这个序列是PCR重复序列(#这个标签不常用)

2048: 代表这个序列是补充的比对(#这个标签具体什么意思,没搞清楚,但是不常用)

上面的这几个标签都是2的n次方,这样的数列有一个特点,就是随机挑选其中的几个,它们的和是唯一的,比如65 只能是1 和 64 组成,代表这个序列是双端测序,而且是read1

samtools 中flag 可以查看flags详细信息:如:

$samtools flags 77
0x4d    77      PAIRED,UNMAP,MUNMAP,READ1
flags值为77 
PAIRED表示这条序列采用双端测序, 其值为1;
UNMAP表示这个序列没有mapping到参考序列上, 其值为4;
MUNMAP表示这个序列的另一端序列没有比对到参考序列上, 其值为8;
READ1表示这条序列是R1端序列,其值为64.
以上数值相加和为77

$samtools flags 141
0x8d    141     PAIRED,UNMAP,MUNMAP,READ2
flags值为141
PAIRED表示这条序列采用双端测序, 其值为1;
UNMAP表示这个序列没有mapping到参考序列上, 其值为4;
MUNMAP表示这个序列的另一端序列没有比对到参考序列上, 其值为8;
READ1表示这条序列是R1端序列,其值为128.
以上数值相加和为141

【samtools】

对SAM文件的处理,安装,samtools软件来处理
tar zxvf samtools-0.1.18.tar.bz2
cd samtools-0.1.18/
make
samtoolpath=`pwd`
PATH=PATH:$samtoolpath
例如:
2,samtools 将SAM文件转化为BAM文件 
samtools view -bS eg2.sam > eg2.bam
3,用samtools sort将BAM文件进行排序。
samtools sort eg2.bam eg2.sorted
4,寻找突变通过VCF格式
samtools mpileup -uf $BT2_HOME/example/reference/lambda_virus.fa eg2.sorted.bam | bcftools view -bvcg - > eg2.raw.bcf
5,看突变位点
bcftools view eg2.raw.bcf

参考资料:

http://blog.sina.com.cn/s/blog_670445240101l30k.html  , 
http://genome.sph.umich.edu/wiki/SAM  , 
https://samtools.github.io/hts-specs/SAMv1.pdf  
http://blog.csdn.net/u012150360/article/details/70556186,
http://www.cnblogs.com/xudongliang/p/5437850.html,
https://genome.ucsc.edu/goldenPath/help/bam.html【****】
samtools参考:

官方使用说明手册 http://computing.bio.cam.ac.uk/local/doc/bowtie2.html
糗世界   http://pgfe.umassmed.edu/ou/archives/3050

阿飞与安达:http://liuwei441005.blog.163.com/blog/static/135705811201322331740144/

sam/bam格式说明相关推荐

  1. NGS数据分析实践:03. 涉及的常用数据格式[2] - sam/bam格式

    NGS数据分析实践:03. 涉及的常用数据格式[2] - sam/bam格式 2. sam和bam格式 系列文章: 二代测序方法:DNA测序之靶向重测序 NGS数据分析实践:00. 变异识别的基本流程 ...

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

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

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

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

  4. NGS数据格式梳理02-SAM/BAM格式最详细解读

    本篇是自己学习SAM和SAMtag的资料心得,参考资料(文中"[ ]"中的数字对应文末的参考文献)都有加上. 全网最全介绍SAM|BAM文件文章. 写作时间:2020.05. 本文 ...

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

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

  6. linux bam文件格式,sam和bam格式文件的shell小练习-答案

    sam和bam格式文件的shell小练习 首先使用bowtie2软件自带的测试数据生成sam/bam文件,代码如下: mkdir -p ~/biosoft cd ~/biosoft wget http ...

  7. bwa比对软件的使用以及其结果文件(sam)格式说明

    一.bwa比对软件的使用 1.对参考基因组构建索引 bwa index -a bwtsw hg19.fa   #  -a 参数:is[默认] or bwtsw,即bwa构建索引的两种算法,两种算法都是 ...

  8. SAM BAM 和 CRAM

    处理NGS数据的生信人员每天都会接触各种数据格式,什么sam.bam.bed.vcf.gvcf等,大家对sam和bam都听得比较多,可能对cram不熟悉,此篇博文梳理下三个以'AM' 结尾的文件,不会 ...

  9. 使用picard工具去重自己的sam/bam数据

    目录 Building Picard Running Tests 去重自己的sam/bam数据 picard是一组用于操作高通量测序 (HTS) 数据和格式的 Java 命令行工具. Picard 是 ...

最新文章

  1. mysql哪些数据库不能删除吗_为什么我不能删除MySQL数据库?
  2. C++ 基本的输入输出
  3. C#上位机串口软件开发--第1讲 工程创建
  4. Rabbit的Windows安装
  5. python apscheduler执行_Python下定时任务框架APScheduler的使用
  6. python settings模块导入不了_python settings 中通过字符串导入模块
  7. 利用Python写俄罗斯方块游戏
  8. eclipse 构建maven web工程
  9. 剑指offer——面试题17:合并两个排序的链表
  10. typhon例子:cs,bufDataset(类似delphi的clientDataset),josn解析器
  11. 点阵字库(字模)生成器 4.0 TS4
  12. sbrk/brk函数用法
  13. Oracle SQL的多表查询 看这一篇文章就够了~
  14. html5如何让多张图片重叠,HTML5图片层叠的实现示例
  15. Android开源的精美日历控件,热插拔设计的万能自定义UI,你值得拥有
  16. 转贴:人活着到底为了啥?
  17. DELL D630 for Win2003 声卡驱动
  18. 洞庭龙梦(开发技巧和结构理论集)
  19. Linux下查看压缩文件内容的11种方法
  20. 【中级软考—软件设计师】2操作系统2.3进程调度【****】:2.3.3考点三:前趋图与PV操作

热门文章

  1. 微信参数 sha1 加密
  2. Flowable入门系列文章10 - 基本配置四
  3. 【OpenCV】OpenCV函数精讲之 -- moveWindow函数用法详解
  4. SGLTE、SVLTE、CSFB、SRLTE的意思
  5. Python这么火,能干什么?这四大主要用途是你必须得知道的!
  6. DDS和RTPS概述
  7. 【BC史上最大灾难】一场被我搞砸了的BC
  8. Python进阶 — PEP文档
  9. 快递的派件时效这样分析,几分钟就完成
  10. #LeetCode 力扣112. 路径总和 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC