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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
#C:/Perl/
use warnings;
use strict;
use Time::localtime;
use Bio::Tools::Run::StandAloneBlast;
use Bio::Tools::Run::RemoteBlast;
use Bio::SearchIO;
my $start= ctime();
my $path = 'C:/blast_tools/bin/';
my $fasta_file= 'seq.txt';
my $blastDB_file = 'DB';
my $v = 1;
my $path_bin = 'C:\blast_tools\bin';
chdir($path_bin);
system("formatdb -p F -i $path"."$fasta_file -n $path"."$blastDB_file") and warn "$!";
my $path_work = 'C:\Perl\Perl IDE';
chdir($path_work);
print "OK\n";
my $input = Bio::Seq->new(-id=>'input_seq',-seq=>"ATGCTAGTAGCTAGCTAGCATGCTAGTAGCTCGAGCATGCTACGA");
my $output_file = 'Test_ITS.bls';
my @params = ('program' => 'blastn' , 'database' => $path.$blastDB_file, e => '1e-3', W => '5');
my $factory = Bio::Tools::Run::StandAloneBlast->new(@params);
$factory->outfile($path.$output_file);
$factory->executable('blastall', 'C:/blast_tools/bin/blastall.exe');
my $bl2seq_report = $factory->blastall($input);
my $blast_report = new Bio::SearchIO(-format => 'blast',
-file => 'C:/Blast_tools/bin/Test_ITS.bls');
my $result = $blast_report->next_result;
while( my $hit = $result->next_hit()) {
print "hit name: ", $hit->name(), "\n";
while( my $hsp = $hit->next_hsp()) {
print "E: ", $hsp->evalue(), " frac_identical: ", $hsp->frac_identical(), "\n";
die "Sequence found";
}
}
#declaration et initialisation des variables
my $prog = 'blastn';
my $db = 'nr';
my $e_val= '1e-10';
#des parametres
my @paramsweb = (
'-prog' => $prog,
'-data' => $db,
'-expect' => $e_val,
'-readmethod' => 'SearchIO');
my $factoryweb = Bio::Tools::Run::RemoteBlast->new(@paramsweb);
my $seq_blast = Bio::SeqIO ->new (-file =>"C:/Blast_tools/bin/NM_001701.txt",
-format =>'fasta');
while (my $input = $seq_blast -> next_seq()){
my $r = $factoryweb->submit_blast($input);
print STDERR "Sequence not found in the local database, BLAST one the web database...\n" ;
print STDERR "waiting..." if( $v > 0 );
while ( my @rids = $factoryweb->each_rid ) {
foreach my $rid ( @rids ) {
my $rc = $factoryweb->retrieve_blast($rid);
if( !ref($rc) ) {
if( $rc < 0 ) {
$factoryweb->remove_rid($rid);
}
print STDERR "." if ( $v > 0 );
sleep 5;
}
else {
my $result = $rc->next_result();
#save the output
my $filename = 'C:/Blast_tools/bin/resultat_blast.bls';
$factoryweb->save_output($filename);
$factoryweb->remove_rid($rid);
}
}
}
}
my $inweb = new Bio::SearchIO(-format => 'blast',
-file => 'C:/Blast_tools/bin/resultat_blast.bls');
$result = $inweb->next_result;
## $result is a Bio::Search::Result::ResultI compliant object
my $hit = $result->next_hit ;
## $hit is a Bio::Search::Hit::HitI compliant object
my $hsp = $hit->next_hsp ;
## $hsp is a Bio::Search::HSP::HSPI compliant object
if( $hsp->length('total') > 50 ) {
if ( $hsp->percent_identity >= 75 ) {
print "Query=", $result->query_name,
" Hit=", $hit->name,
" Length=", $hsp->length('total'),
" Percent_id=", $hsp->percent_identity, "\n";
}
} |
Partager