samtools flags 分解
bam文件的第二列的flag值,代表了当前read比对到基因组序列的基本情况。flag值由2的0次方到2的11次方这11个数字组成,即1,2,4,8,16,32,64,128,256,512,1024,2048。每个数字表示的比对情况这里不赘述,当获得当前read的flag值时,如何拆解成flag最初的值呢,这里提供一个脚本,权当记录备忘了,大家有更便捷的方法,欢迎交流。
程序主体如下:
1 #!/usr/bin/perl 2 use strict; 3 use autodie; 4 use warnings; 5 6 sub o2bn{ 7 my $n = shift; 8 my $b = sprintf("%b", $n); 9 my @str = split //, reverse $b; 10 my @result; 11 for(my $i=0; $i<@str; $i++){ 12 if($str[$i] eq '1'){ 13 push @result, 2**$i; 14 } 15 } 16 return @result; 17 } 18 19 print "please input flag number [quit:0]: "; 20 while(my $number = <STDIN>){ 21 last if $number == 0; 22 my @ret = o2bn($number); 23 print "result is : @ret\n"; 24 print "please input flag number [quit:0]: "; 25 }
结果:
作者:天使不设防
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.