htslib/sam.h是利用C语言对SAM文件进行处理,因此需要了解SAM文件格式。
官方说明文档:http://boyun.sh.cn/bio/wp-content/uploads/2012/07/SAM1.pdf
SAM文件是一种通用的以TAB为分隔符的比对格式,用来存储reads道参考序列的比对信息。
SAM分为两部分,注释信息和比对结果信息,除注释外,每一行是一个read
主要有
@HD,说明符合标准的版本、对比序列的排列顺序; @SQ,参考序列说明; @RG,比对上的序列(read)说明; @PG,使用的程序说明; @CO,任意的说明信息。mate: illumina两种测序技术,paired end sequencing, mate pair sequencing。这两种测序测的是一个片段的两端,这两端产生的reads是mate1 mate2
11个必须字段和一个可选的字段,顺序固定
1. readid: 比对片段的编号
2. samflag: 位标识,每一个数字为一种比对情况,这里的数值是符合情况的数字相加。
flag取值,转换成二进制很好明白
例如147 = 128 + 16 + 2 + 1
1: 是paired-end或者mate pair的一条
2: 双末端比对的一条
4: 没有对比上参考序列
8:是paired-end或者mate pair的一条,且无法比对上参考序列上
16:比对到参考序列的负链上
32: 双末端reads的另一条比对到参考序列的负链上
64:这条reads是mate1
128: 这条reads是mate2
3. chromosome: 参考序列的编号,没有比对上的序列是“*”
4. position: 比对上的位置,从1开始计数
5. mapping quality: reads比对的质量
6. cigar:比对信息表达式,M I D分别表示match insertion deletion,例如30M表示30个碱基比对完全匹配
7. mate_chr: mate/next segment ref编号
8. mate_pos:mate/next segment ref坐标
9: insert size:template长度,建库长度,建库的时候,将DNA片段打断成的长度
10: sequence: read的序列信息
11: quality score for each base: reads每个序列的质量信息,是ASCII编码
readidsamflagchromosomepositionmapping qualityERR001268.75147224454917460cigarmate_chrmate_posinsert sizesequence30M=44548985-225GGTTG...quality score for each base)(1)+-5...OptionalTAG:TYPE:VALUE
比如:
SA: Z:5,18606943,-,99S51M,0,0;5,18606886,-,50M100S,0,1;
其中5,18606886,-,50M100S,0,1表示chr, pos,strand,cigar,mapq,NM
strand: +- 表示正负链
NM:13 表示
bam文件是SAM的二进制格式,格式相同,bam文件占用储存空间更小,运算更快。
查看
samtools view xxx.bam | less -S