File: decode_SAM_flag_value.pl

package info (click to toggle)
trinityrnaseq 2.11.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 417,528 kB
  • sloc: perl: 48,420; cpp: 17,749; java: 12,695; python: 3,124; sh: 1,030; ansic: 983; makefile: 688; xml: 62
file content (61 lines) | stat: -rwxr-xr-x 1,662 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env perl

use strict;
use warnings;

my $usage = "usage: $0 flag_number\n\n";

my $flag = $ARGV[0] or die $usage;


my @tokens;

my $pair_flag = ($flag & 0x0001) ? "PAIRED" : "unpaired";
push (@tokens, $pair_flag);
	
my $query_unmapped_flag = ($flag & 0x0004) ? "query_unmapped" : "QUERY_MAPPED";
push (@tokens, $query_unmapped_flag);

if ($query_unmapped_flag eq "QUERY_MAPPED") {
    my $query_strand = ($flag & 0x0010) ? "QUERY_REVERSE_STRAND" : "QUERY_FORWARD_STRAND";
    push (@tokens, $query_strand);
}
	
	
if ($pair_flag eq "PAIRED") {
	
    my $mapped_proper_pair_flag = ($flag & 0x0002) ? "MAPPED_PROPER_PAIR" : "not_mapped_proper_pair";
    push (@tokens, $mapped_proper_pair_flag);
    
    my $mate_mapped = ($flag & 0x0008) ? "mate_unmapped" : "MATE_MAPPED";
    push (@tokens, $mate_mapped);
    
    if ($mate_mapped eq "MATE_MAPPED") {
        my $mate_strand = ($flag & 0x0020) ? "MATE_REVERSE_STRAND" : "MATE_FORWARD_STRAND";
        push (@tokens, $mate_strand);
    }
		
    my $first_in_pair = ($flag & 0x0040) ? "FIRST_IN_PAIRx40" : "SECOND_IN_PAIRx40";
    push (@tokens, $first_in_pair);
		
    my $second_in_pair = ($flag & 0x0080) ? "SECOND_IN_PAIRx80" : "FIRST_IN_PAIRx80";
    push (@tokens, $second_in_pair);
}
	

my $primary_flag = ($flag & 0x0100) ? "notprimary" : "PRIMARY";
push (@tokens, $primary_flag);

my $fails_quality_checks = ($flag & 0x0200) ? "FAILED" : "";
push (@tokens, $fails_quality_checks) if $fails_quality_checks;

my $pcr_op_duplicate = ($flag & 0x0400) ? "PCROPDUP" : "";
push (@tokens, $pcr_op_duplicate) if $pcr_op_duplicate;

print "flag($flag) = " . join ("...", @tokens) . "\n";



exit(0);