#!/usr/bin/perl -w use Bio::SeqIO; use Bio::Tools::Run::RemoteBlast; my $Seq_in = Bio::SeqIO->new (-file => $ARGV[0], -format => 'fasta'); my $query = $Seq_in->next_seq(); my $factory = Bio::Tools::Run::RemoteBlast->new( '-prog' => 'blastp', '-data' => 'swissprot', _READMETHOD => "Blast" ); my $blast_report = $factory->submit_blast($query); while ( my @rids = $factory->each_rid ) { print STDERR "waiting...\n" ; # RID = Remote Blast ID (e.g: 1017772174-16400-6638) foreach my $rid ( @rids ) { my $rc = $factory->retrieve_blast($rid); if( !ref($rc) ) { if( $rc < 0 ) { # retrieve_blast returns -1 on error $factory->remove_rid($rid); } # retrieve_blast returns 0 on 'job not finished' sleep 5; } else { #---- Blast done ---- $factory->remove_rid($rid); my $result = $rc->next_result; print "database: ", $result->database_name(), "\n"; while( my $hit = $result->next_hit ) { print "hit name is: ", $hit->name, ", ", $hit->significance, " "; while( my $hsp = $hit->next_hsp ) { print "(", $hsp->score, ") "; } print "\n"; } } } }