view scripts/pickUniqPos_MEM.pl @ 9:20a6e46295d6 draft

planemo upload for repository https://github.com/portiahollyoak/Tools commit 2bc118a40da59fc3a2b8ee9ed04152c8effff94f-dirty
author portiahollyoak
date Tue, 26 Apr 2016 06:36:46 -0400
parents 28d1a6f8143f
children ca36262102d8
line wrap: on
line source

#!/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";}
            else {$xt="U";}
        }

	my $strand="+";
	## revcomp
	if($f[1]=~/r/)
        {
                my $seq=Bio::Seq->new(-seq=>$f[9]);
                $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;