1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#!/usr/local/bin/perl
use strict;
use Bio::Tools::Run::RemoteBlast;
my $prog = 'blastn';
my $db = 'nr';
my $e_val= '1e-10';
my $readmethod = 'SearchIO';
my @params = (
'-prog' => $prog,
'-data' => $db,
'-expect' => $e_val,
'-readmethod' => $readmethod );
my $factory = Bio::Tools::Run::RemoteBlast->new(@params);
my $r = $factory->submit_blast("bacteries.fasta");
my $v = 1;
print STDERR "waiting..." if( $v > 0 );
while ( my @rids = $factory->each_rid ) {
foreach my $rid ( @rids ) {
# Tente de récupérer un rapport blast de la file d'attendre
my $rc = $factory->retrieve_blast($rid);
if( !ref($rc) ) {
if( $rc < 0) {
$factory->remove_rid($rid);
}
print STDERR "." if ( $v > 0 );
sleep 5;
}
else {
my $result = $rc->next_result();
# création du fichier de sortie ayant comme nom l'identifiant de la séquence cible
my $filename = 'G:'.$result->query_name()."\.blastn";
$factory->save_output($filename);
$factory->remove_rid($rid);
while ( my $hit = $result->next_hit ) {
next unless ( $v > 0);
print "\thit name is ", $hit->name, "\n";
while( my $hsp = $hit->next_hsp ) {
print "\t\tscore is ", $hsp->score, "\n";
}
}
}
}
} |
Partager