[Bioperl-l] update to bp_remote_blast.pl
Brian Osborne
osborne1 at optonline.net
Fri Mar 17 14:51:40 UTC 2006
Evan,
Added update.
Brian O.
On 3/15/06 11:21 AM, "Evan" <eweaver at gmail.com> wrote:
> #!/usr/local/bin/perl -w
> # BioPerl module for remote_blast.pl
> #
> # Revived by Evan Weaver for bioperl-1.5.1
> # 3/14/2006
> #
> # Copyright Jason Stajich, Evan Weaver
> #
> # You may distribute this module under the same terms as perl itself
>
> # POD documentation - main docs after the code
>
> use strict;
> use vars qw($USAGE);
>
> use Bio::Tools::Run::RemoteBlast;
> use Bio::SeqIO;
> use Getopt::Long;
>
> $USAGE = "remote_blast.pl [-h] [-p prog] [-d db] [-e expect] [-mod
> Blast] [-f seqformat] -z=\"entrez query\" -v 1 -t output_format -i
> seqfile\n";
>
> my ($prog, $db, $expect,$method) = ( 'blastp', 'nr', '10', 'Blast');
>
> my ($sequencefile,$sequenceformat,$help, $entrez, $outputformat,
> $verbose) = (undef, 'fasta',undef, undef, undef, 1);
>
> &GetOptions('prog|p=s' => \$prog,
> 'db|d=s' => \$db,
> 'expect|e=s' => \$expect,
> 'blsmod|module|method=s' => \$method,
> 'input|i=s' => \$sequencefile,
> 'format|f=s' => \$sequenceformat,
> 'help|h' => \$help,
> 'entrez|z=s' => \$entrez,
> 'output_format|t=s' => \$outputformat,
> 'verbose|v=s' => \$verbose
> );
>
> if( $help ) {
> exec('perldoc', $0);
> die;
> }
>
> if( !defined $prog ) {
> die($USAGE . "\n\tMust specify a valid program name ([t]blast[pxn])\n");
> }
> if( !defined $db ) {
> die($USAGE . "\n\tMust specify a db to search\n");
> }
> if( !defined $sequencefile ) {
> die($USAGE . "\n\tMust specify an input file\n");
> }
>
> my $blastfactory = new Bio::Tools::Run::RemoteBlast ('-prog' => $prog,
> '-data' => $db,
> '-expect' => $expect,
> 'readmethod' => $method,
> );
>
> if ($entrez) {
> if ($verbose) {
> print "Entrez query (submission side): $entrez\n";
> }
> #$Bio::Tools::Run::RemoteBlast::RETRIEVALHEADER{ FORMAT_ENTREZ_QUERY
> } = $entrez;
> $Bio::Tools::Run::RemoteBlast::HEADER{ ENTREZ_QUERY } = $entrez;
>
> }
> if ($outputformat) {
> print "Don't use output format type; it doesn't work.\n";
> $Bio::Tools::Run::RemoteBlast::RETRIEVALHEADER{ FORMAT_TYPE } =
> $outputformat;
> }
>
> # submit_blast can only currenly handle fasta format files so I'll
> # preprocess outside of the module but I'd rather be sure here
>
> my $input;
> if( $sequenceformat !~ /fasta/ ) {
> my @seqs;
> my $seqio = new Bio::SeqIO('-format' => $sequenceformat,
> '-file' => $sequencefile );
> while( my $seq = $seqio->next_seq() ) {
> push @seqs, $seq;
> }
> $input = \@seqs;
> } else {
> $input = $sequencefile;
> }
>
> my $r = $blastfactory->submit_blast($input);
> #my $r = $factory->submit_blast(?amino.fa?);
>
> print STDERR "waiting...\n" if( $verbose > 0 );
> while ( my @rids = $blastfactory->each_rid ) {
> foreach my $rid ( @rids ) {
> my $rc = $blastfactory->retrieve_blast($rid);
> if( !ref($rc) ) {
> if( $rc < 0 ) {
> $blastfactory->remove_rid($rid);
> }
> print STDERR " checking $rid\n" if ( $verbose > 0 );
> sleep 5;
> } else {
> my $result = $rc->next_result();
> #save the output
> my $filename = $result->query_name()."\.out";
> $blastfactory->save_output($filename);
> $blastfactory->remove_rid($rid);
> print "\nQuery Name: ", $result->query_name(), "\n";
> while ( my $hit = $result->next_hit ) {
> next unless ( $verbose > 0);
> print "\thit name is ", $hit->name, "\n";
> while( my $hsp = $hit->next_hsp ) {
> print "\t\tscore is ", $hsp->score, "\n";
> }
> }
> }
> }
> print STDERR scalar(@rids) . " left\n";
> }
>
>
> __END__
>
> #
> # BioPerl module for remote_blast.pl
> #
> # Cared for by Jason Stajich <jason-at-bioperl-dot-org>
> #
> # Copyright Jason Stajich
> #
> # You may distribute this module under the same terms as perl itself
>
> # POD documentation - main docs before the code
>
> =head1 NAME
>
> remote_blast.pl - script for submitting jobs to a remote blast server
> (ncbi blast queue at this time)
>
> =head1 SYNOPSIS
>
> % remote_blast.pl -p blastp -d ecoli -e 1e-5 -i myseqs.fa
>
> =head1 DESCRIPTION
>
> This module will run a remote blast on a set of sequences by
> submitting them to the NCBI blast queue and printing the output of the
> request.
>
> =head1 FEEDBACK
>
> =head2 Mailing Lists
>
> User feedback is an integral part of the evolution of this and other
> Bioperl modules. Send your comments and suggestions preferably to
> the Bioperl mailing list. Your participation is much appreciated.
>
> bioperl-l at bioperl.org - General discussion
> http://bioperl.org/MailList.shtml - About the mailing lists
>
> =head2 Reporting Bugs
>
> Report bugs to the Bioperl bug tracking system to help us keep track
> the bugs and their resolution. Bug reports can be submitted via the
> web:
>
> http://bugzilla.open-bio.org/
>
> =head1 AUTHOR - Jason Stajich
>
> Email jason-at-bioperl-dot-org
>
> =cut
More information about the Bioperl-l
mailing list