[Bioperl-l] Fwd: Bio::SearchIO::Writer::HTMLResultWriter problem

Jason Stajich jason at bioperl.org
Thu Jan 18 20:43:37 EST 2007


Folks on the list will have a better time answering you.  You should  
report what version of BioPerl you are using as well.
-jason

Begin forwarded message:

> From: "Antonio J. Pérez" <ajperezpulido at gmail.com>
> Date: January 18, 2007 3:07:00 PM PST
> To: G.Williams at hgmp.mrc.ac.uk, jason at bioperl.org
> Subject: Bio::SearchIO::Writer::HTMLResultWriter problem
>
>    Dear Drs., I am trying to use a remoteBlast for a Bioinformatics  
> course. I use the Bio::SearchIO::Writer::HTMLResultWriter module  
> but I obtain a plain output without carriage returns. Could it be a  
> bug or my code is wrong? I send enclosed a copy of my script, and  
> the blast is implemented in:
> http://jaguar.genetica.uma.es/blastUNIA/blastHTTP.html
>
>    Please, could you help me? Thanks in advance and yours sincerely,
>
>    Antonio.
>
> -- 
> Participa en mi blog sobre Diversidad Funcional y Bioinformática:
> http://ajperezbioinfo.blogspot.com
>
> #!/usr/bin/perl
>
> # Recibe una secuencia desde un formulario web
> # y la envia a un NCBI-Blast remoto
> # Este es un ejemplo de CGI en Perl
> # que utiliza algunos modulos de la libreria BioPerl
>
> # AJPerez, 25/08/2005
>
> use CGI;                                      # Libreria CGI de Perl
> use Bio::SeqIO;                               # Modulo de  
> tratamiento de secuencias
> use Bio::Tools::Run::RemoteBlast;             # Modulo para  
> ejecutar Blast remotos
> use Bio::SearchIO;                            # Modulo parsear  
> salidas Blast
> use Bio::SearchIO::Writer::HTMLResultWriter;  # Modulo para  
> presentar resultados Blast en HTML
>
> # Recoge los parametros del formulario
> my $form = new CGI;
> my $seq_form = $form->param('seq_form');
> my $database_form = $form->param('database_form');
>
> # Eliminamos los posibles espacios en blanco de la secuencia
> $seq_form =~ s/\s+//g;
>
> # Selecciona el programa Blast y la base de datos, segun nuestra  
> eleccion
> if ($database_form eq "NT") { # Base de datos no redundante de  
> nucleotidos
>   $program = "blastn";
>   $database = "nt";
> } else { # Base de datos de aminoacidos SWISS-PROT
>   $program = "blastp";
>   $database = "swissprot";
> }
>
> # Crea un objeto secuencia, con nuestra secuencia de aminoacidos,
> # que luego podremos enviar al Blast remoto
> my $seq_input = Bio::PrimarySeq->new ('-seq' => $seq_form);
>
> # Objeto con los parametros Blast definidos
> my $remote_blast = Bio::Tools::Run::RemoteBlast->new(
>                                                 '-prog' => $program,
>                                                 '-data' => $database,
>                                                 '-readmethod' =>  
> 'SearchIO'
>                                                );
>
> # Se lanza el Blast, y la salida se va a recoger en un nuevo objeto
> my $blast_report = $remote_blast->submit_blast($seq_input);
>
> # Definición del tipo de documento de salida, para que el  
> explorador sepa que es una pagina web
> print "Content-type: text/html\n\n";
>
> # Recibe los resultados del Blast desde la cola del NCBI
> # RID = Remote Blast ID (ejemplo:  
> 1125048844-28013-78894277386.BLASTQ2)
> while ( my @rids = $remote_blast->each_rid ) {
>   foreach my $rid ( @rids ) {
>
>     # Objeto con el estado de la ejecución del Blast
>     my $rc = $remote_blast->retrieve_blast($rid);
>
>     if( !ref($rc) ) {
>       if( $rc < 0 ) { # retrieve_blast retorna -1 cuando hay error
>         print "Existe algun problema con el RemoteBlast del  
> NCBI.<br>\n";
>         print "Por favor, int&eacute;ntelo de nuevo mas tarde.<br>\n";
>         $remote_blast->remove_rid($rid);
>       }
>       # retrieve_blast retorna 0 cuando el Blast aun no ha finalizado
>       # Por ello, esperamos 5 segundos mas
>       sleep 5;
>
>     } else {
>       # Cuando la ejecucion finalizado, presentamos los resultados
>       my $result = $rc->next_result();
>
> 	  # Los resultados son presentados, haciendo uso de SearchIO
>       # y, en particular, de su modulo para formatear en HTML
>       my $writer = new Bio::SearchIO::Writer::HTMLResultWriter();
>       my $out = new Bio::SearchIO(-writer => $writer, -fh =>  
> \*STDOUT);
>       $out->write_result($result);
>
> 	  # Elimina el resultado recien presentado por pantalla
>       $remote_blast->remove_rid($rid);
>       $exito = 1;
>     }
>   }
> }
>
> # Si no han habido resultados, se presenta un mensaje de error
> if (!$exito) {
>   print "Existe un problema con los par&aacute;metros  
> introducidos.<br>\n";
>   print "Por favor, regrese al formulario y rev&iacute;selos.<br>\n";
> }
>
> exit;





More information about the Bioperl-l mailing list