Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: parsing mismatch from blast output

by BrowserUk (Patriarch)
on Aug 10, 2010 at 01:46 UTC ( [id://853948]=note: print w/replies, xml ) Need Help??


in reply to parsing mismatch from blast output

I couldn't find any files of the correct format. I tried blastn at NCBI on NC_000009.11, but after waiting 45 minutes it said: "Informational Message: blastsrv4.REAL: Error: CPU usage limit was exceeded, resulting in SIGXCPU (24)." which probably just goes to show I don't know what the .... I'm doing.

So I based this upon your sample:

#! perl -slw use strict; my( $ID, $query, $off ); while( <DATA> ) { if( m[^>] ) { ( $ID ) = (split '\|', $_)[ 1 ]; next; } 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 :(%d) %1s/%1s\n", $ID, $query+$p, substr( $top, $p-1, 1 ), substr( $bot, $p-1, 1 ); } } } __DATA__

Outputs:

c:\test\blast>..\853819.pl 14079 ref :(75) A/C 14080 ref :(15) A/A 14080 ref :(90) T/T 14080 ref :(124) G/G 14080 ref :(129) C/C 14080 ref :(136) A/A 14081 ref :(75) A/C

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: parsing mismatch from blast output
by Anonymous Monk on Aug 11, 2010 at 09:34 UTC
    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.
      OH Yes, I managed find a way through it thanks for al wonderful suggestions.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://853948]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2024-04-25 23:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found