in reply to Re: parsing mismatch from blast output
in thread parsing mismatch from blast output

HI Thanks for that! Insted of getting the position in reference to Query, I qould like to have them in reference to Subject. So, the output should be something like this. 14079 ref 487239 A/C. my tweaks other than your suggestions are here
#!/usr/local/bin/perl -sl # use strict; use Getopt::Long; my $home = $ENV{'HOME'}; my($ID, $query, $off, $idi, $subject); print "ID\tposition\tvariation\n"; while(<DATA>) { next if $. <20; if(m[^>]) { ($ID) = (split '\|',$_)[1]; #!/usr/local/bin/perl -sl # use strict; use Getopt::Long; my $home = $ENV{'HOME'}; my($ID, $query, $off, $idi, $subject); print "ID\tposition\tvariation\n"; while(<DATA>) { next if $. <20; if(m[^>]) { ($ID) = (split '\|',$_)[1]; } if(/^\s+Identities/){ my($identity, undef) = split/,/ ; ($idi) = $identity =~ /\sIdentities\s\=\s\d{3}\/\d{3}\s\((\d{2,3}\% +)\)$/; } if($idi eq "95%") { if(m/^Query/) { ($query) = m[^Query\s+(\d+)]; my $top = substr $_, 15; my $pipes = substr <DATA>,15; my $bot = substr <DATA>, 15; my $p = 0 ; while ($p = 1+index $pipes,' ', $p) { printf "%20s\t%d\t%1s/%1s\n",$ID,$query+$p, substr( $top, $p-1, 1 +),substr( $bot, $p-1, 1 ); } } } } } if(/^\s+Identities/){ my($identity, undef) = split/,/ ; ($idi) = $identity =~ /\sIdentities\s\=\s\d{3}\/\d{3}\s\((\d{2,3}\% +)\)$/; } if($idi eq "95%") { if(m/^Query/) { ($query) = m[^Query\s+(\d+)]; my $top = substr $_, 15; my $pipes = substr <DATA>,15; my $bot = substr <DATA>, 15; my $p = 0 ; while ($p = 1+index $pipes,' ', $p) { printf "%20s\t%d\t%1s/%1s\n",$ID,$query+$p, substr( $top, $p-1, 1 +),substr( $bot, $p-1, 1 ); } } } }
Thanks.

Replies are listed 'Best First'.
Re^3: parsing mismatch from blast output
by Anonymous Monk on Aug 11, 2010 at 14:19 UTC
    OH Yes, I managed find a way through it thanks for al wonderful suggestions.