Mercurial > repos > portiahollyoak > temp
diff scripts/pickUniqPos_MEM.pl.orig @ 21:9672fe07a232 draft default tip
planemo upload for repository https://github.com/portiahollyoak/Tools commit 0fea84d05f8976b8360a8b4943ecb01b87e3ade0-dirty
author | mvdbeek |
---|---|
date | Mon, 05 Dec 2016 09:58:47 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/pickUniqPos_MEM.pl.orig Mon Dec 05 09:58:47 2016 -0500 @@ -0,0 +1,56 @@ +#!/share/bin/perl +use Bio::Seq; +use List::Util qw(sum); + +die "perl $0 <sam>\n" if @ARGV<1; +open in,$ARGV[0]; +my %pe; +while(<in>) +{ + chomp; + my @f=split/\t/,$_,12; + ## read number 1 or 2 + my ($rnum)=$f[1]=~/(\d)$/; + + ## XT:A:* + my $xt=""; + my @a=split(/\s+/, $_); + my $as=0; + my $xs=0; + for my $i (11..$#a) { + if ($a[$i] =~ /^AS:i:/) { + $a[$i] =~ s/AS:i://; + $as=$a[$i]; + } + elsif ($a[$i] =~ /^XS:i:/) { + $a[$i] =~ s/XS:i://; + $xs=$a[$i]; + } + if (($xs > 0) && ($as-$xs <= $ARGV[1])) {$xt="R";} + elsif ($as > 0) {$xt="U";} + } + + my $strand="+"; + ## revcomp + if($f[1]=~/r/) + { + my $seq=Bio::Seq->new(-seq=>$f[9], -alphabet => 'dna'); + $f[9]=$seq->revcom->seq; + $strand="-"; + } + + ## parse CIGAR + if($xt eq "U") + { + # CIGAR + my (@cigar_m)=$f[5]=~/(\d+)M/g; + my (@cigar_d)=$f[5]=~/(\d+)D/g; + my (@cigar_s)=$f[5]=~/(\d+)S/g; + my (@cigar_i)=$f[5]=~/(\d+)I/g; + my $aln_ln=sum(@cigar_m,@cigar_d); + + print $f[2],"\t",$f[3]-1,"\t",$f[3]-1+$aln_ln,"\t$f[0]/$rnum\t",$f[9],"\t",$strand,"\n"; + } +} +close in; +