[Bioperl-l] remoteblast
Mark A. Jensen
maj at fortinbras.us
Fri Mar 12 17:41:23 UTC 2010
Look at
http://www.bioperl.org/wiki/Using_Subversion
----- Original Message -----
From: Roopa Raghuveer
To: Chris Fields ; Mark A. Jensen ; bioperl-l at lists.open-bio.org
Sent: Friday, March 12, 2010 12:36 PM
Subject: Re: [Bioperl-l] remoteblast
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
More information about the Bioperl-l
mailing list