[Bioperl-l] getting top blast hit
Nandita Mullapudi
nandita at uga.edu
Fri Apr 2 10:32:34 EST 2004
Thanks, Sean,
I tried the suggestion below in my script, which starts with a loop
to read through a list of files..
however, now, my script stops parsing as soon as it reaches a file
with no hits in it.
this is the error message:
can't call method "name" on an undefined value at
/home/nandita/parse_blast-onlytophit.pl line 26, <GEN123> line 65.
I realise I am not looping through completely or...
Any suggestions?
thanks,
-Nandita
use strict;
use Bio::SearchIO;
use Bio::SimpleAlign;
my (@list, $filename);
my $files= "/scratch/nandita/list";
open (FH,"$files") or die "cannot create list :$!";
while (<FH>) {
push (@list, $_);
# print " $_\n";
}
foreach (@list) {
$filename=$_;
# print "$filename\n";
my $in = new Bio::SearchIO(-format => 'blast',
-file => "$filename");
while( my $result = $in->next_result ) {
print "\n", $result->query_name, "\t";
my $top_hit = $result->next_hit ; {
print $top_hit->name, "\t";
print $top_hit->significance,. "\n";
}}}
>Nandita,
>
>You can do something like (from Bio::SearchIO):
>
> use Bio::SearchIO;
> # format can be 'fasta', 'blast', 'exonerate', ...
> my $searchio = new Bio::SearchIO( -format => 'blastxml',
> -file => 'blastout.xml' );
> while ( my $result = $searchio->next_result() ) {
> #get first hit and do something with it.
> my $top_hit = $result->next_hit;
> #do some stuff such as saving a it in a hash
> #move on to next result (next query)
> }
>
>Sean
>
>On 3/30/04 6:19 PM, "Nandita Mullapudi" <nandita at uga.edu> wrote:
>
>> I am currently using Bio::SearchIO to parse tons of blast files by
>> setting limits on E- value, % identity etc. I now want to parse a
>> huge blast job, by getting just the top hit out of each file.
>> (Assuming blast was run and hits were returned with hit with lowest E
>> value first)
>> Is there a quick way to do this?
>> thanks,
>> -Nandita
>> _______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at portal.open-bio.org
>> http://portal.open-bio.org/mailman/listinfo/bioperl-l
>>
More information about the Bioperl-l
mailing list