[Bio] / FigMetagenomeTools / RemoteBlast.pl Repository:
ViewVC logotype

Annotation of /FigMetagenomeTools/RemoteBlast.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : olson 1.1 #!/usr/bin/perl -w
2 :     #
3 :     # run remote blast against some sequences. Hopefully this will blast against the entire nr
4 :    
5 :     use strict;
6 :     use Bio::Tools::Run::RemoteBlast;
7 :    
8 :     my $usage =<<EOF;
9 :    
10 :     $0 [-n,p,x,tn,s,tx] [-0] file [blast options]
11 :     -n blastn nt query, nt database
12 :     -p blastp protein query, protein database
13 :     -x blastx nt query, protein database
14 :     -tn tblastn protein query, nt database
15 :     -s psitblastn protein query, nt database psi-blast
16 :     -tx tblastx nt query, nt database
17 :    
18 :     -0 skip responses that don't match anything
19 :    
20 :     EOF
21 :    
22 :     my $blast=shift || die $usage;
23 :     my $blastprogram;
24 :     if ($blast eq "-n") {$blastprogram="blastn"}
25 :     elsif ($blast eq "-p") {$blastprogram="blastp"}
26 :     elsif ($blast eq "-x") {$blastprogram="blastx"}
27 :     elsif ($blast eq "-s") {$blastprogram="psiblast"}
28 :     elsif ($blast eq "-tn") {$blastprogram="tblastn"}
29 :     elsif ($blast eq "-tx") {$blastprogram="tblastx"}
30 :     die $usage unless ($blastprogram);
31 :    
32 :     my $test=shift || die $usage;
33 :    
34 :     my @files;
35 :     if (-T $test) {push @files, $test}
36 :     elsif (-d $test) {
37 :     opendir(DIR, $test) || die "Can't open dir $test\n";
38 :     while (my $file2=readdir(DIR)) {
39 :     push (@files, "$test/$file2");
40 :     }
41 :     }
42 :     else {
43 :     die "Not sure what $test is";
44 :     }
45 :    
46 :     foreach my $file (@files) {
47 :     my $rb=Bio::Tools::Run::RemoteBlast->new(
48 :     '-prog' => $blastprogram, '-data' => 'nr', '-expect' => 10, '-readmethod' => 'SearchIO'
49 :     );
50 :    
51 :     my $res = $rb->submit_blast($file);
52 :    
53 :     my $matched=0;
54 :     #sleep 5;
55 :     #my @rids=$rb->each_rid;
56 :     #until ($matched == scalar @rids) {
57 :     while (my @rids=$rb->each_rid) {
58 :     #@rids=$rb->each_rid;
59 :     foreach my $rid (@rids) {
60 :     print STDERR "For $file, there are ", scalar @rids, " rids waiting. $matched are complete\n";
61 :     my $rc = $rb->retrieve_blast($rid);
62 :     if (!ref($rc)) {
63 :     if ($rc < 0) {
64 :     $rb->remove_rid($rid);
65 :     }
66 :     sleep 5;
67 :     } else {
68 :     $matched++;
69 :     $rb->save_output("$file.$blastprogram.nr");
70 :     $rb->remove_rid($rid);
71 :     }
72 :     }
73 :     }
74 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3