Instalando BLAST en Apache 2.0 y Ubuntu 8.04 Hardy Heron

20
Jul

BLAST (Basic Local Alignment Search Tool) es un algoritmo de bioinformática para comparar información de secuencias biológicas primarias, como secuencias de aminoácidos de diferentes proteínas o los nucleótidos de secuencias de ADN.

Este algoritmo tiene una implementación creada por la NCBI con licencia de dominio público, para que cada cual se lo pueda instalar y utilizar el algoritmo con sus propias bases de datos.

Hemos tenido la oportunidad de probarlo para un proyecto que estamos llevando entre manos, no sin algunos problemas de instalación. Por eso este artículo recogerá el proceso de instalación a seguir.

Los pasos de instalación se pueden resumir en:

  1. Descargar la última versión de la aplicación del FTP
  2. Configurar Apache 2 correctamente para que sirva los CGIs
  3. Formatear la base de datos que utilizaremos
  4. Adaptar BLAST a nuestras necesidades

Descargar la última versión de la aplicación del FTP

A través de la web del NCBI encontramos el FTP de donde están las versiones disponibles de BLAST. Para nuestro propósito necesitamos la última versión (LATEST), actualmente la 2.2.18.

Dentro de la carpeta vemos que hay principalmente 3 versiones, y además su versión específica para cada tipo de plataforma. Las que vamos a necesitar para nuestra instalación son las blast y wwwblast. El paquete blast puede ser instalado mediante apt-get install blast2, así que sólo bajaremos el paquete wwwblast-2.2.18-ia32-linux.tar.gz.

Una vez conseguida vamos a descomprimir el paquete a la carpeta /var/www/blast/ por ejemplo. He elegido esta porqué seguramente me tocará pasarlo a una Apache 1.3 del entorno de producción y la mayoría de trozos de scripts me serán compatibles. En caso contrario, seria más recomendable un path del tipo /usr/local/apache2/webapp/blast/.

tar xzvpf wwwblast-2.2.18-ia32-linux.tar.gz
mv blast /var/www/

Configurar Apache 2 correctamente para que sirva los CGIs

La configuración de Apache ha sido uno de los quebraderos de cabeza que hemos tenido. En principio tenia que ser de lo más fácil, pero a la hora de la verdad no ha sido así, aunque no totalmente por culpa del Apache.

En Ubuntu, como en la mayoría de distribuciones, la configuración de Apache 2 se encuentra dentro de la carpeta /etc/apache2/.

Lo primero que vamos a hacer es configurar el ServerName de Apache. Por defecto no viene configurado, por lo que al reiniciar el servidor da unos molestos warnigs:

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Así que editaremos el fichero /etc/apache2/httpd.conf (que presumiblemente está vacío) y añadiremos la siguiente línea:

ServerName localhost

Ahora empieza estrictamente la instalación de BLAST. Si damos un vistazo a la carpeta que hemos descomprimido anteriormente veremos que dentro existen tanto ficheros CGI como código HTML, imágenes… Esto nos afecta en que no podemos crear un ScriptAlias en Apache, porqué entonces intentará ejecutar todos los ficheros como CGI, sea del tipo que sea, dando errores del tipo:

[error] [client ::1] (8)Exec format error: exec of '/var/www/blast/blast.html' failed
[error] [client ::1] Premature end of script headers: blast.html

Para solventar este problema cambiaremos de orientación, vamos a configurar el servidor para que trate los ficheros con extensión cgi comos scripts cgi. Editamos el fichero /etc/apache2/mods_available/mime.conf y descomentamos la siguiente línea:

AddHandler cgi-script .cgi

Aprovechamos para dar un vistazo a los comentarios de arriba donde se explica el funcionamiento del AddHandler. Nos informa que con esta directiva activada será posible ejecutar cgi’s des de cualquier directorio que tenga ExecCGI en las opciones del directorio.

Así que perfecto, ya tenemos preparado el servidor para que ejecute los cgi’s, sólo hace falta configurar el VirtualHost. Editaremos el fichero /etc/apache2/sites_available/blast y lo llenaremos con la siguiente información:

<VirtualHost *>
Alias /blast/ /var/www/blast/
<Directory "/var/www/blast/">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost *>

Revisar sobre todo el Allow from all, a lo mejor en otro caso necesitáis restringir la ejecución solamente des de localhost.

Por último con el apache sólo quedaría crear un softlink para que Apache active este VirtualHost y reiniciar Apache:

ln -s /etc/apache2/sites_available/blast /etc/apache2/sites_enabled/001-blast
/etc/init.d/apache2 restart

Y volià, el BLAST preparado para funcionar en http://localhost/blast/blast.html…. Seguro? Pues no, porqué la página HTML funciona, pero a la que le demos a buscar nos saldrá un error:

[error] [client 127.0.0.1] (2)No such file or directory: exec of '/var/www/blast/blast.cgi' failed
[error] [client 127.0.0.1] Premature end of script headers: blast.cgi

Efectivamente, al ver el código fuente del fichero blast.cgi veremos un bonito #!/bin/csh -f, es decir, indica que la ejecución del script se realice mediante la shell csh. Cual es el problema? Que en Ubuntu no viene instalada por defecto esta shell, por eso nos dice el No such file or directory. así que deberemos instalarla a mano:

apt-get install csh

Otro problema con el que nos podemos encontrar es que no genere las imágenes temporales del análisis BLAST. Este problema está provocado porque Apache no tiene permisos para escribir en la carpeta de temporales de BLAST. Para solucionarlo sólo tenemos que darle dichos permisos:

chmod 777 /var/www/blast/TmpGifs

Ahora si que todo debería funcionar a la perfección.

Formatear la base de datos que utilizaremos

Para cargar nuestra propia base de datos tenemos que seguir unos cuantos pasos también:

  1. Copiar dentro de la carpeta /var/www/blast/db/ la base de datos que queramos utilizar.
  2. Utilizar el comando formatdb (que hemos instalado antes con el apt-get install blast2) para darle formato. Para nuestra base de datos el comando en concreto ha sido:
    formatdb -t inter -i inter -p T
  3. Modificar el fichero blast.rc para indicar el método de blast con el que se puede utilizar esta base de datos. En nuestro caso blastp inter

El último paso es editar el fichero blast.html para modificar el desplegable de arriba del todo (DATALIB) y que muestre la nueva librería para que pueda ser seleccionada.

Adaptar BLAST a nuestras necesidades

Por último, y ya de forma opcional, podemos editar según nuestras necesidades el fichero blast.html, para quitar opciones, añadir, cambiar el diseño… ahí la gracia del software libre 😉

  1. Alvaro 18/01/2009

    hay un pequeño error en la configuracion del vitualhost el script dice deberia decir

    Muy bueno el tutorial

  2. Tomàs Reverter 18/01/2009

    Jajaja te has dejado el contenido de “debe decir” 😛 Qué configuración te ha funcionado a ti?

    Otra persona me comentó que a el tampoco le había funcionado esta configuración, pero en mi caso concreto si que es la que ha funcionado correctamente.

    Saludos!