[Bioperl-l] remoteblast

Brian Osborne bosborne11 at verizon.net
Fri Mar 12 12:46:52 EST 2010


Please google "svn update bioperl".

On Mar 12, 2010, at 12:36 PM, Roopa Raghuveer wrote:

> Hello all,
> 
> I am trying remote blast program and connecting to NCBI Blast, but I am
> unable to retrieve the sequences. Chris had suggested me to update from SVN.
> Could you please tell me how to update it from SVN?
> 
> Regards,
> Roopa.
> 
> On Sun, Mar 7, 2010 at 6:48 PM, Roopa Raghuveer <rtbio.2009 at gmail.com>wrote:
> 
>> Hi Chris,
>> 
>> Thank you very much for the information. Could you please tell me how to
>> update it from SVN?
>> 
>> Thanks and regards,
>> Roopa
>> 
>> 
>> On Sun, Mar 7, 2010 at 3:57 PM, Chris Fields <cjfields at illinois.edu>wrote:
>> 
>>> Roopa,
>>> 
>>> I committed a fix for this a few days ago; if you update from SVN it
>>> should work.  The problem stemmed from server-side changes at NCBI.
>>> 
>>> chris
>>> 
>>> On Mar 7, 2010, at 7:11 AM, Roopa Raghuveer wrote:
>>> 
>>>> Hello Mark and everybody,
>>>> 
>>>> I have been trying to connect to remote blast to retrieve similar
>>> sequences
>>>> to a given sequence. But my program is unable to retrieve the sequences
>>> from
>>>> BLAST, i.e., it is getting executed till the remote blast ids, but it is
>>> not
>>>> entering the else loop after collecting the rid. Please check this
>>> problem
>>>> and help me in this regard. I think the problem is in getting the
>>> sequence
>>>> and going to the 'else' part. i.e.,
>>>> 
>>>> else {
>>>> 
>>>>             open(OUTFILE,'>',$blastdebugfile);   # I think the problem
>>> is
>>>> in else part, i.e., it is not taking the next result.#
>>>>             print OUTFILE "else entered";
>>>>             close(OUTFILE);
>>>> 
>>>>         my $result = $rc->next_result();
>>>> 
>>>>           #save the output
>>>> 
>>>> Please give me your reply.
>>>> 
>>>> Thanks and regards,
>>>> Roopa.
>>>> 
>>>> My code is as follows.
>>>> 
>>>> #!/usr/bin/perl
>>>> 
>>>> #path for extra camel module
>>>> use lib "/srv/www/htdocs/rain/RNAi/";
>>>> use rnai_blast;
>>>> 
>>>> 
>>>> use Bio::SearchIO;
>>>> use Bio::Search::Result::BlastResult;
>>>> use Bio::Perl;
>>>> use Bio::Tools::Run::RemoteBlast;
>>>> use Bio::Seq;
>>>> use Bio::SeqIO;
>>>> use Bio::DB::GenBank;
>>>> 
>>>> $serverpath = "/srv/www/htdocs/rain/RNAi";
>>>> $serverurl = "http://141.84.66.66/rain/RNAi";
>>>> $outfile = $serverpath."/rnairesult_".time().".html";
>>>> $nuc = $serverpath."/nuc".time().".txt";
>>>> $debugfile = $serverpath."/debug_".time().".txt";
>>>> $blastdebugfile = $serverpath."/blastdebug_".time().".txt";
>>>> 
>>>> my $outstring ="";
>>>> 
>>>> &parse_form;
>>>> 
>>>> print "Content-type: text/html\n\n";
>>>> print "<HTML>\n";
>>>> print "<head><title>RNAi Result</title>";
>>>> print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30;
>>>> URL=$serverurl/rnairesult_".time().".html\"> \n";
>>>> print "</head>\n";
>>>> print "<body>\n";
>>>> print " Your results will appear <a
>>>> href=$serverurl/rnairesult_".time().".html>here</a><br>";
>>>> print " Please be patient, runtime can be up to 5 minutes<br>";
>>>> print " This page will automatically reload in 30 seconds.";
>>>> print "</BODY>\n";
>>>> print "</HTML>\n";
>>>> 
>>>> defined(my $pid = fork) or die "Can't fork: $!";
>>>> exit if $pid;
>>>> open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
>>>> open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
>>>> open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
>>>> 
>>>> 
>>>> 
>>>> open(OUTFILE, '>',$outfile);
>>>> 
>>>> print OUTFILE "<HTML>\n
>>>> <head><title>RNAi Result</title>
>>>> <META HTTP-EQUIV=\"Refresh\" CONTENT=\"30;
>>>> URL=$serverurl//rnairesult_".time().".html\"> \n
>>>> <meta http-equiv=\"expires\" content=\"0\">
>>>> </head>\n
>>>> <body>\n
>>>> Your results will appear <a
>>>> href=$serverurl/rnairesult_".time().".html>here</a><br>
>>>> Please be patient, runtime can be up to 5 minutes <br>
>>>> This page will automatically reload in 30 seconds  <br>
>>>> </BODY>\n
>>>> </HTML>\n";
>>>> 
>>>> close(OUTFILE);
>>>> 
>>>> @compseqs = blastcode($in{'Inputseq'},$in{'Organism'});
>>>> 
>>>> $in{'Inputseq'} =~ s/>.*$//m;
>>>> $in{'Inputseq'} =~ s/[^TAGC]//gim;
>>>> $in{'Inputseq'} =~ tr/actg/ACTG/;
>>>> 
>>>> @out = similar($in{'Inputseq'}, \@compseqs, $in{'Windowsize'},
>>>> $in{'Threshold'});
>>>> 
>>>> 
>>>> sub blastcode
>>>> {
>>>> 
>>>> $inpu1= $_[0];
>>>> 
>>>> $organ= $_[1];
>>>> 
>>>> open(NUC,'>',$nuc);
>>>> print NUC $inpu1,"\n";
>>>> close(NUC);
>>>> 
>>>> my $prog = 'blastn';
>>>> my $db   = 'refseq_rna';
>>>> my $e_val= '1e-10';
>>>> my $organism= $organ;
>>>> 
>>>> $gb = new Bio::DB::GenBank;
>>>> 
>>>> my @params = ( '-prog' => $prog,
>>>>        '-data' => $db,
>>>>        '-expect' => $e_val,
>>>>        '-readmethod' => 'SearchIO',
>>>>        '-Organism'   => $organism );
>>>> 
>>>>            open(OUTFILE,'>',$blastdebugfile);
>>>>              print OUTFILE @params;
>>>>             close(OUTFILE);
>>>> 
>>>> 
>>>> my $factory = Bio::Tools::Run::RemoteBlast->new(@params, -ENTREZ_QUERY
>>> =>
>>>> "$organ\[ORGN]");
>>>> 
>>>> #my $factory = Bio::Tools::Run::RemoteBlast->new(@params);
>>>> 
>>>> #change a paramter
>>>> 
>>>> #$Bio::Tools::Run::RemoteBlast::HEADER{'ENTREZ_QUERY'} = 'Trypanosoma
>>>> Brucei[ORGN]';
>>>> 
>>>> #change a paramter
>>>> # $Bio::Tools::Run::RemoteBlast::HEADER{'ENTREZ_QUERY'} =
>>> '$input2[ORGN]';
>>>> 
>>>> my $v = 1;
>>>> #$v is just to turn on and off the messages
>>>> 
>>>> my $str = Bio::SeqIO->new('-file' => $nuc , '-format' => 'fasta' ,
>>>> '-organism' => "$organ\[ORGN]");
>>>> 
>>>> while (my $input = $str->next_seq())
>>>> {
>>>>  #Blast a sequence against a database:
>>>>   #Alternatively, you could  pass in a file with many
>>>>   #sequences rather than loop through sequence one at a time
>>>>   #Remove the loop starting 'while (my $input = $str->next_seq())'
>>>>   #and swap the two lines below for an example of that.
>>>>            open(OUTFILE,'>',$debugfile);
>>>>            print OUTFILE $input;
>>>>             close(OUTFILE);
>>>> 
>>>> #submits the input data to BLAST#
>>>> 
>>>>  my $r = $factory->submit_blast($input);
>>>> 
>>>>               open(OUTFILE,'>',$debugfile);
>>>>               print OUTFILE $r;
>>>>               close(OUTFILE);
>>>> 
>>>> 
>>>>  print STDERR "waiting...." if($v>0);
>>>> 
>>>> while ( my @rids = $factory->each_rid ) {
>>>>     open(OUTFILE,'>',$debugfile);
>>>>         #    print OUTFILE "while entered";
>>>>             close(OUTFILE);
>>>>    foreach my $rid ( @rids ) {
>>>> 
>>>>              open(OUTFILE,'>',$debugfile);
>>>>          #    print OUTFILE "foreach entered";
>>>>             close(OUTFILE);
>>>> #Retrieving the result ids#
>>>> 
>>>>       my $rc = $factory->retrieve_blast($rid);
>>>> 
>>>>       if( !ref($rc) )
>>>>       {
>>>>       if( $rc < 0 )
>>>>       {
>>>>       $factory->remove_rid($rid);
>>>>       }
>>>>        open(OUTFILE,'>',$debugfile);
>>>>            #  print OUTFILE "if entered";
>>>>             close(OUTFILE);
>>>>        print STDERR "." if ( $v > 0 );
>>>>        sleep 5;
>>>>       }
>>>> 
>>>>      else {
>>>> 
>>>>             open(OUTFILE,'>',$blastdebugfile);   # I think the problem
>>> is
>>>> in else part, i.e., it is not taking the next result.#
>>>>             print OUTFILE "else entered";
>>>>             close(OUTFILE);
>>>> 
>>>>         my $result = $rc->next_result();
>>>> 
>>>>           #save the output
>>>>         $blastdebugfile = $serverpath."/blastdebug_".time().".txt";
>>>> 
>>>>         open(BLASTDEBUGFILE,'>',$blastdebugfile);
>>>>         print BLASTDEBUGFILE $result->next_hit();
>>>>         close(BLASTDEBUGFILE);
>>>> #saving the output in blastdata.time.out file#
>>>> 
>>>>     # $random=rand();
>>>> 
>>>>       my $filename = $serverpath."/blastdata_".time()."\.out";
>>>>  # open(DEBUGFILE,'>',$debugfile);
>>>>        # open(new,'>',$filename);
>>>>        # @arra=<new>;
>>>>        # print DEBUGFILE @arra;
>>>>        # close(DEBUGFILE);
>>>>        # close(new);
>>>> 
>>>>        $factory->save_output($filename);
>>>> 
>>>>      # open(BLASTDEBUGFILE,'>',$debugfile);
>>>>      # print BLASTDEBUGFILE  "Hello $rid";
>>>>      # close(BLASTDEBUGFILE);
>>>> 
>>>>      $factory->remove_rid($rid);
>>>> 
>>>>      open(BLASTDEBUGFILE,'>',$blastdebugfile);
>>>>    #  print BLASTDEBUGFILE  $organism;
>>>>       close(BLASTDEBUGFILE);
>>>> 
>>>>   # open(OUTFILE,'>',$outfile);
>>>>   # print OUTFILE "Test2 $result->database_name()";
>>>>   # close(OUTFILE);
>>>> 
>>>> #$hit = $result->next_hit;
>>>> #open(new,'>',$debugfile);
>>>> #print $hit;
>>>> #close(new);
>>>> $dummy=0;
>>>>  while ( my $hit = $result->next_hit ) {
>>>> 
>>>>           next unless ( $v >= 0);
>>>> 
>>>>         #     open(OUTFILE,'>',$debugfile);
>>>>          #    print OUTFILE "$hit in while hits";
>>>>           #  close(OUTFILE);
>>>> 
>>>>      my $sequ = $gb->get_Seq_by_version($hit->name);
>>>>          my $dna = $sequ->seq(); # get the sequence as a string
>>>>       $dummy++;
>>>>            open(OUTFILE,'>',$debugfile);
>>>>         #     print OUTFILE $dna;
>>>>             close(OUTFILE);
>>>>         push(@seqs,$dna);
>>>>        }
>>>>       }
>>>>     }
>>>>   }
>>>> }
>>>> 
>>>> $warum=@seqs;
>>>>             open(OUTFILE,'>',$debugfile);
>>>>            #  print OUTFILE $warum;
>>>>              print OUTFILE @seqs;
>>>>             close(OUTFILE);
>>>> 
>>>> 
>>>> return(@seqs);   #returning the sequences obtained on BLAST#
>>>> }
>>>> _______________________________________________
>>>> Bioperl-l mailing list
>>>> Bioperl-l at lists.open-bio.org
>>>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>> 
>>> 
>> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l




More information about the Bioperl-l mailing list