BAM/SAM文件两三事
写在前面的
上期推文主要解读了BAM文件的Flags值,通过一个perl程序快速批量翻译Flags值。flags详细记录了reads的比对信息。是由一堆2的n次方(n=0~11)加和组成。例如某条reads经过比对后的flags是83, 83= 1+2+16+64转化为2进制为1010011, 则代表这是一条双端测序的Read1,该reads及其对应reads都是正常比对且当前reads是反向互补后比对上的参考基因组。而perl程序就是基于这个基本思路,通过构建10进制转2进制进行Flags值计算的。虽然已经有flags值计算器了。但是通过编写这些程序会加深对BAM文件的理解。从而加深对生物信息学数据的理解。
CIGAR值的解读
CIGAR是Compact Idiosyncratic Gapped Alignment Report的首字母缩写,是也是记录了reads比对到参考基因组上的字符串。只不过这个字符串是由数字+字母组合成的字符串。与Flags值不同的是CIGAR记录的是每条reads内部每个部分的比对情况。而Flags值则是记录每条reads总体的比对情况。与Flags值相比,CIGAR值对于reads比对的细节记录的更详细。那么,在对CIGAR值有了初步的了解以后,我们继续深入了解这个值的意义。由于CIGAR值是由数字+字母构成的字符串,那么下面这张来自于碱基旷工的图则清晰的阐明了CIGAR值中出现的每个字母的比对含义。
举例而言,如果一条250bp的reads在BAM文件中的CIGAR值记录为50S100M10D100M,那么则表示这条reads的前50bp被跳过,中间100M比对上了参考基因组,后100bp也比对上了参考基因组。但是中间100M和后面100M则在比对参考基因组时出现了一个10bp的gap。也就是参考基因组上有10bp是这条reads没有的,