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 }

结果:

 

posted @ 2022-03-06 22:03  天使不设防  阅读(336)  评论(0编辑  收藏  举报