Bugfix: reverse (complement) sequence and phred string if alternative alignment has different orientation than primary alignment

This commit is contained in:
Tobias Marschall 2011-09-07 14:31:28 +02:00
parent 4f7734eb97
commit 3536e2113c
1 changed files with 10 additions and 1 deletions

View File

@ -10,7 +10,16 @@ while (<>) {
my @t = split("\t");
while ($l =~ /([^,;]+),([-+]\d+),([^,]+),(\d+);/g) {
my $mchr = ($t[6] eq $1)? '=' : $t[6]; # FIXME: TLEN/ISIZE is not calculated!
print(join("\t", $t[0], 0x100|($t[1]&0x6e9)|($2<0?0x10:0), $1, abs($2), 0, $3, @t[6..7], 0, @t[9..10], "NM:i:$4"), "\n");
my $seq = $t[9];
my $phred = $t[10];
# if alternative alignment has other orientation than primary,
# then print the reverse (complement) of sequence and phred string
if ((($t[1]&0x10)>0) xor ($2<0)) {
$seq = reverse $seq;
$seq =~ tr/ACGTacgt/TGCAtgca/;
$phred = reverse $phred;
}
print(join("\t", $t[0], 0x100|($t[1]&0x6e9)|($2<0?0x10:0), $1, abs($2), 0, $3, @t[6..7], 0, $seq, $phred, "NM:i:$4"), "\n");
}
} else { print; }
}