# BLAST

BLAST (Basic Local Alignment Search Tool) es un algoritmo y programa informático de alineamiento de secuencias de tipo local, ya sea de ADN, ARN o de proteínas. El programa es capaz de comparar una secuencia problema (también denominada en la literatura secuencia query) contra una gran cantidad de secuencias que se encuentren en una base de datos. El algoritmo encuentra las secuencias de la base de datos que tienen mayor parecido a la secuencia problema. Es importante mencionar que BLAST usa un algoritmo heurístico por lo que no nos puede garantizar que ha encontrado la solución correcta. Sin embargo, BLAST es capaz de calcular la significación de sus resultados, por lo que nos provee de un parámetro para juzgar los resultados que se obtienen.
Normalmente el BLAST es usado para encontrar probables genes homólogos. Por lo general, cuando una nueva secuencia es obtenida, se usa el BLAST para compararla con otras secuencias que han sido previamente caracterizadas, para así poder inferir su función. El BLAST es la herramienta más usada para la anotación y predicción funcional de genes o secuencias proteicas. Muchas variantes han sido creadas para resolver algunos problemas específicos de búsqueda.
BLAST es desarrollado por los Institutos Nacionales de Salud del gobierno de EE. UU., por lo que es de dominio público y puede usarse gratuitamente desde el servidor del Centro Nacional para la Información Biotecnológica (NCBI). También está disponible para ser instalado localmente. Algunas ventajas de usar el servidor del NCBI son que el usuario no tiene que mantener ni actualizar las bases de datos y que la búsqueda se hace en un cluster de computadoras, lo que otorga rapidez. Las desventajas son: no se permiten hacer búsquedas masivas dado que es un recurso compartido, no se puede personalizar las bases de datos contra la que busca el programa, y las secuencias son enviadas al servidor del NCBI sin ningún tipo de cifrado, lo que puede ser un problema para quienes quieran mantener sus secuencias privadas. La aplicación local de BLAST tiene la ventaja de que permite manejar varios parámetros que en las búsquedas de NCBI están estandarizados, por lo que provee una mayor flexibilidad para los usuarios avanzados.

## Algoritmo del BLAST

BLAST usa el algoritmo Smith-Waterman para realizar sus alineamientos
BLAST usa una matriz de sustitución de aminoácidos o nucleótidos para calificar sus alineamientos. Dicha matriz contiene la puntuación (también llamada score) que se le da al alinear un nucleótido o un aminoácido X de la secuencia A con otro aminoácido Y de la secuencia B. Las matrices más usadas para calificar alineamientos de proteínas son la BLOSUM y la PAM (ambas fueron obtenidas midiendo la frecuencia de los aminoácidos en una gran muestra de proteínas). También se permite al usuario definir su propia matriz. El tipo de matriz usada es determinante para los resultados que se obtendrán, el uso de una matriz incorrecta puede llevar a calificar erróneamente los alineamientos y por lo tanto obtener resultados equivocados.
El algoritmo de BLAST tiene tres etapas principales: ensemillado, extensión y evaluación. A continuación se describen brevemente cada una de ellas:

### Primera etapa: ensemillado o seeding.

En esta etapa se buscan "palabras" pequeñas en las secuencias de la base de datos, que corresponden a fragmentos de la secuencia problema. BLAST asume que los alineamientos significativos deben contener estas palabras. Sólo se consideran significativas las palabras que tengan una puntuación mayor a T (T es un parámetro que se pueda modificar al usar el programa) y que se encuentren al menos a una distancia A de otra palabra. W es otro parámetro usado por BLAST y se refiere al tamaño de las palabras a buscar. Ajustando los parámetros T, A y W se puede escoger entre hacer un alineamiento sensible pero lento, o uno más rápido pero con menor sensibilidad.

### Segunda etapa: extensión.

Una vez obtenidas las palabras que cumplen con los criterios dados, se pasa a la etapa de extensión. En esta etapa el alineamiento se va extendiendo a ambos lados de las palabras. La extensión realizada en este punto se realiza haciendo uso del algoritmo de Smith-Waterman. BLAST va extendiendo el alineamiento hasta que la puntuación del alineamiento descienda X o más puntos con respecto a la puntuación más alta obtenida anteriormente. Aquí reside el factor heurístico del BLAST, ya que al imponer el límite X, evita extender a lo largo de toda la secuencia todos los alineamientos (proceso que llevaría demasiado tiempo). El peligro que esto conlleva es que el programa se puede quedar atorado en un máximo local. Es por ello que la definición de X es determinante para el resultado.

### Tercera etapa: evaluación

Una vez terminada la extensión de todas las palabras, cada uno de los alineamientos realizados es evaluado para determinar su significación estadística. Para ello, el programa elimina los alineamientos inconsistentes (alineamientos que junten la misma parte de la secuencia problema con distintas partes de una secuencia en la base de datos). Los alineamientos resultantes son llamados pares de alta puntuación (High Score Pairs o HSPs, por sus siglas en inglés). Una vez realizado esto, se calcula la puntuación final de los alineamientos resultantes y se determina su significación tomando en cuenta la probabilidad que tiene dicho alineamiento de haber sido obtenido por azar de acuerdo al tamaño de la base de datos. Al final se reportan sólo los alineamientos que hayan obtenido una probabilidad menor a E. El parámetro E es conocido como e-valor (e-value) de corte, y nos permite definir qué alineamientos queremos obtener de acuerdo a su significación estadística. Cuanto menor sea el valor de E, más significativo es un alineamiento.

## Programas de la familia BLAST
### Blastn

Es de los más comúnmente usados. Compara una secuencia de nucleótidos contra una base de datos que contenga también secuencias nucleotídicas.

### Blastp

Es el otro tipo de BLAST más usado. Es un BLAST "con huecos" (o gaps) que compara una secuencia de aminoácidos contra una base de datos del mismo tipo. Usualmente usa la matriz de sustitución BLOSUM o PAM para realizar los alineamientos, aunque puede usar una matriz definida por el usuario.

### BlastX

Este programa usa como entrada una secuencia de nucléotidos. Traduce la secuencia en sus seis posibles marcos de lectura (tres marcos de lecturas por hebra) y compara estas secuencias traducidas contra una base de datos de proteínas. Se usa cuando se tiene sospecha de que la secuencia de entrada codifica para una proteína pero no se sabe exactamente cuál es su producto.

### TBlastn

Compara una secuencia proteica con una base de datos de nucléotidos. Para realizar esto traduce todas las secuencias de nucleótidos en sus seis marcos de lectura. Se usa cuando se tiene una proteína, y el análisis con Blastp no ha sido exitoso. Se debe tener cuidado con los resultados de este Blast, porque una buena cantidad de las secuencias traducidas no son proteínas que existan en la naturaleza.

### TBlastX

Tblastx compara las traducciones de seis cuadros de una secuencia de consulta de nucleótidos contra las traducciones de seis cuadros de una base de datos de secuencias de nucleótidos.

### Bl2seq

Bl2seq (BLAST 2 Secuencias) permite la búsqueda BLAST de una secuencia en contra de otra secuencia, sin tener que ejecutar formatdb para crear una base de datos BLAST de la secuencia que ha de ser contrastada. Bl2seq es uno de los programas distribuidos junto con el antiguo programa blastall por el NCBI. El NCBI recomienda que las personas comienzan a usar los programas del paquete blast+ en su lugar.

## Variantes del BLAST
### Gapped Blast

Esta es una mejora al algoritmo original del BLAST. También se lo conoce como BLAST 2.0. Se trata de un BLAST que contempla la existencia de pequeñas inserciones o eliminaciones en las secuencias que se están comparando, permitiendo así alinear uno o varios nucléotidos o aminoácidos con huecos vacíos llamados gaps. Actualmente es la forma usual de BLAST que se usa. El uso de este nuevo enfoque, agrega dos parámetros al algoritmo, uno es la penalización que se da en la puntuación por alinear un nucleótido o aminoácido con un gap y el otro es una penalización por extender un gap preexistente. Siempre se considera más "costoso" abrir un nuevo gap que expandir uno existente.

### PsiBlast

Esta variante de BLAST es usada para buscar posibles homólogos en organismos muy lejanos entre ellos, filogenéticamente hablando. Está disponible sólo para secuencias de aminoácidos. Se trata de un programa iterativo que va calculando sus propias Matriz de sustitución en cada iteración.
Al inicio, hace un Blastp normal, usando una matriz estándar para calificar los alineamientos. De las secuencias obtenidas en este alineamiento, el programa genera una nueva matriz de sustitución, basándose en las frecuencias de los aminoácidos de las secuencias obtenidas en los alineamientos. Usa esta nueva matriz para realizar otro alineamiento. Esto permite en general encontrar nuevos alineamientos, que son usados para calcular una nueva matriz. El proceso se repite tantas veces como el usuario lo indique, o hasta que ya no se encuentran nuevos alineamientos.

### WU BLAST

Más que una variante, es el algoritmo de BLAST implementado por bioinformáticos de la Universidad de Washington. Según sus creadores, es un algoritmo mucho más rápido y eficiente que el BLAST de NCBI, e igual de sensible. Es ideal si se quieren realizar análisis masivos de BLAST. Otra diferencia es la licencia, WU BLAST es software propietario y es gratuito solo para uso académico.

## Consideraciones al usar BLAST

* A pesar de que BLAST es un programa muy poderoso y casi siempre podemos confiar en sus resultados, se debe recordar que el programa es heurístico y por lo tanto puede que no encuentre la solución óptima. En la actualidad, el abuso y la pobre interpretación de los resultados de BLAST ha llevado a múltiples errores de anotación. Una cosa a tener en cuenta al usar BLAST es que cuanta más evidencia externa se pueda obtener para corroborar un alineamiento (fisiológica, filogenética, genética, etc.) es mejor.
* El programa de BLAST NO garantiza que las secuencias que alinea sean homólogas y mucho menos que tengan la misma función, simplemente provee posibles candidatos. Se necesitan más análisis para anotar correctamente una secuencia.
* La puntuación del BLAST depende del largo de la secuencia, una secuencia muy corta tendrá una puntuación menor que una grande simplemente por la cantidad de caracteres que tiene. Así que siempre se debe interpretar la puntuación con respecto al largo de la secuencia.
* El e-valor depende del tamaño de la base de datos. Para bases de datos muy pequeñas, e-valores altos son más significativos que para bases de datos muy grandes. Para la base de datos no redundante (NR) de NCBI por lo general e-valores de 0.01 o menos son considerados como significativos, pero esto puede depender de la secuencia que se esté analizando.
* Se debe tener cuidado con los errores de anotación; es común que alguna secuencia que se anotó mal (ya sea porque se anotó automáticamente o por error humano) sea utilizada como referencia para anotar otras secuencias similares, por lo que los errores de anotación se pueden propagar rápidamente. Siempre debemos especificar que la función de nuestra secuencia es posible o probable si fue asignada usando identidad con otras secuencias. Asimismo debemos tener en cuenta que la gran mayoría de las funciones asignadas en la actualidad son putativas y que pueden no ser una buena referencia para una asignación funcional.
* A pesar de lo que comúnmente se piensa, las secuencias con la mejor puntuación o el mejor e-valor NO necesariamente son los mejores candidatos a ser genes homólogos. Es importante analizar todos los alineamientos que encuentra el programa y sacar conclusiones en base al resultado global.
* BLAST tiene varios parámetros por defecto que en general funcionan bien para la mayoría de los casos, pero habrá situaciones en las que es necesario cambiarlos para obtener mejores resultados. No hay forma de saber exactamente qué parámetro es el óptimo, y se tienen que realizar múltiples pruebas hasta encontrar las mejores condiciones.