1.7: Línea de comandos BLAST
- Page ID
- 55187
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)Si bien los capítulos anteriores cubrieron la instalación y el uso de algunas herramientas bioinformáticas como ejemplos del proceso, hay una herramienta casi ubicua: BLAST, o Herramienta de búsqueda de alineación local básica. [1]
Dadas una o más secuencias de consulta (generalmente en formato FASTA), BLAST busca regiones de secuencia coincidentes entre ellas y un conjunto de sujetos.

Una coincidencia suficientemente cercana entre subsecuencias (denotada por flechas en la figura anterior, aunque las coincidencias suelen ser más largas de lo que se ilustra aquí) se denomina par de puntuación alta (HSP), mientras que se dice que una secuencia de consulta golpea una secuencia objetivo si comparten una o más HSP. En ocasiones, sin embargo, el término “hit” se emplea de manera floja, sin diferenciar entre ambos. Cada HSP está asociado con una “puntuación de bits” que se basa en la similitud de las subsecuencias según lo determinado por un conjunto particular de reglas. Debido a que en conjuntos de sujetos más grandes es probable que se encuentren algunas buenas coincidencias por casualidad, cada HSP también está asociado con un “valor E”, que representa el número esperado de coincidencias que uno podría encontrar por casualidad en un conjunto de sujetos de ese tamaño con esa puntuación o mejor. Por ejemplo, un valor E de 0.05 significa que podemos esperar una coincidencia por casualidad en 1 de cada 20 búsquedas similares, mientras que un valor E de 2.0 significa que podemos esperar 2 coincidencias por casualidad para cada búsqueda similar.
BLAST no es una sola herramienta, sino más bien un conjunto de herramientas (y la suite crece a lo largo de los años a medida que se agregan más funciones y herramientas relacionadas). La versión más moderna del software, llamada BLAST+, es mantenida por el Centro Nacional de Información Biotecnológica (NCBI) y puede descargarse en formato binario y fuente en ftp://ftp.ncbi.nlm.nih.gov/blast/exe...blast+/LATEST/.
Este capítulo solo cubre brevemente la ejecución de BLAST en la línea de comandos de formas simples. Se recomienda leer la información de ayuda (por ejemplo, con blastn —help
) y el Manual de usuario de aplicaciones de línea de comandos NCBI BLAST en www.NCBI.nlm.nih.gov/books/nbk1763/. El manual del NCBI cubre bastantes características potentes y prácticas de BLAST en la línea de comandos que este libro no hace.
Tipos BLAST
Los programas de la suite BLAST+ pueden buscar y contra secuencias en formato proteico (como hicimos para el ejemplo de HMMER) y en formato de nucleótidos (A's, C's, T's y G's). Dependiendo de qué tipo sean los conjuntos de consulta y tema, se utilizan diferentes programas BLAST.

Si bien dos secuencias de nucleótidos (comparaciones de N en la figura anterior) pueden compararse directamente (al igual que dos secuencias de proteínas, representadas por P), cuando se desea comparar una secuencia de nucleótidos con una secuencia de proteína, debemos considerar qué marco de lectura de la secuencia de nucleótidos corresponde a una proteína. Los programas blastx
y tblastn
hacen esto convirtiendo secuencias de nucleótidos en secuencias de proteínas en los seis marcos de lectura (tres en la cadena de ADN directo y tres en el reverso) y comparando con todos ellos. Generalmente tales programas dan como resultado seis veces más trabajo por hacer. El programa tblastx
compara consultas de nucleótidos contra sujetos nucleotídicos, pero lo hace en el espacio proteico con las seis conversiones en comparación con las seis en ambos lados.
Otras herramientas BLAST más exóticas incluyen psiblast
, que produce una búsqueda inicial y ajusta las reglas de puntuación sobre la base de los resultados; estas reglas de puntuación ajustadas se utilizan en una segunda búsqueda, generalmente encontrando aún más coincidencias. Este proceso se repite tantas veces como el usuario desee, revelándose más coincidencias diferentes en iteraciones posteriores. El programa deltablast
considera una base de datos precalculada de reglas de puntuación para diferentes tipos de secuencias comúnmente encontradas (conservadas). Finalmente, rpsblast
busca coincidencias de secuencia contra conjuntos de perfiles, cada uno representando una colección de secuencias (como en HMMER, aunque no basado en modelos ocultos de Markov).
Toda esta plática de reglas de puntuación indica que las reglas de puntuación específicas son importantes, especialmente cuando se comparan dos secuencias de proteínas. Al comparar secuencias de proteínas de dos especies similares, por ejemplo, podríamos desear dar una puntuación pobre a la coincidencia relativamente improbable de una valina no polar (V) con una tirosina polar (Y). Pero para especies disímiles separadas por un vasto tiempo evolutivo, tal desajuste podría no ser tan malo en relación con otras posibilidades. Las matrices de puntuación que representan estos conjuntos de reglas con nombres como BLOSUM y PAM se han desarrollado utilizando una variedad de métodos para capturar estas consideraciones. Una discusión de estos detalles se puede encontrar en otras publicaciones.
Cada uno de los diversos programas de la suite BLAST acepta una gran cantidad de opciones; intente ejecutar blastn -help
para verlas para el programa blastn
. Aquí hay un resumen de algunos parámetros que se utilizan más comúnmente para blastn
et al. :
-
-consulta
<fasta file>- El nombre (o ruta) del archivo con formato FASTA que se va a buscar como secuencias de consulta.
-
-sujeto
<fasta file>- El nombre (o ruta) del archivo con formato FASTA en el que se busca como secuencias de asunto.
-
-evalue
<real number>- Solo deben reportarse los HSP con valores de E menores a este. Por ejemplo:
-evalue 0.001
o-evalue 1e-6
.
- Solo deben reportarse los HSP con valores de E menores a este. Por ejemplo:
-
-outfmt
<integer>- Cómo formatear la salida. El valor predeterminado,
0
, proporciona un archivo de texto legible por humanos (pero no programáticamente analizable). Los valores6
y7
producen filas y columnas separadas por tabuladores en un archivo de texto, con7
proporcionando líneas de comentario explicativas. De manera similar, un valor de10
produce una salida separada por comas;11
produce un formato que luego se puede convertir rápidamente en cualquier otro con otro programa llamadoblast_formatter
. Las opciones6
,7
y10
se pueden configurar altamente en términos de qué columnas se muestran.
- Cómo formatear la salida. El valor predeterminado,
-
-max_target_seqs
<integer>- Cuando el formato de salida es
6
,7
o10
para cada secuencia de consulta, solo informa HSP para las mejores <integer>secuencias de sujetosdiferentes.
- Cuando el formato de salida es
-
-max_hsps
<integer>- Para cada par de consultas/objetivo, solo reportar los mejores
<integer>HSP.
- Para cada par de consultas/objetivo, solo reportar los mejores
-
-out
<output file>- Escriba la salida en
<output file>oposición a la predeterminada de la salida estándar.
- Escriba la salida en
Bases de datos BLAST
Sin duda los lectores familiarizados con BLAST han sido curiosos: ¿no hay bases de datos de algún tipo involucradas en las búsquedas BLAST? No necesariamente. Como hemos visto, los archivos FASTA simples serán suficientes tanto para el conjunto de consulta como para el conjunto de temas. Resulta, sin embargo, que desde una perspectiva computacional, no se buscan fácilmente archivos FASTA simples. Por lo tanto, BLAST+ proporciona una herramienta llamada makeblastdb
que convierte un archivo FASTA sujeto en una versión indexada y de búsqueda rápida (pero no legible por humanos) de la misma información, almacenada en un conjunto de archivos con nombres similares (a menudo al menos tres que terminan en .pin
, .psq
y .phr
para las secuencias de proteínas, y .nin
, .nsq
y .nhr
para las secuencias de nucleótidos). Este conjunto de archivos representa la “base de datos”, y el nombre de la base de datos es el prefijo de nombre de archivo compartido de estos archivos.

Ejecutar makeblastdb
en un archivo FASTA es bastante sencillo: makeblastdb -in -out -dbtype -title -parse_seqids
<fasta file><database name><type><title>, donde <type>es uno de
prot
o nucl
, y <title>es un human- título legible (encerrado entre comillas si es necesario). El indicador
-parse_seqids
indica que los ID de secuencia del archivo FASTA deben incluirse en la base de datos para que puedan ser utilizados en salidas así como por otras herramientas como blastdbcmd
(discutido más adelante).
Una vez creada una base de datos BLAST, se pueden usar otras opciones con blastn
et al. :
-
-db
<database name>- El nombre de la base de datos para buscar (a diferencia de usar
-subject
).
- El nombre de la base de datos para buscar (a diferencia de usar
-
-num_hilos
<integer>- Utilice <integer>núcleos de
CPU en un sistema multinúcleo, si están disponibles.
- Utilice <integer>núcleos de
Al usar la opción -db
, las herramientas BLAST buscarán los archivos de la base de datos en tres ubicaciones: (1) el directorio de trabajo actual, (2) su directorio home y (3) las rutas especificadas en la variable de entorno $BLASTDB
.
La herramienta blastdbcmd
se puede utilizar para obtener información sobre bases de datos BLAST, por ejemplo, con blastdbcmd -db -info
<database name>y puede mostrar las bases de datos en una ruta dada con blastdbcmd -list
<path>(así, blastdbcmd -list $BLASTDB
mostrará el bases de datos que se encuentran en las rutas de búsqueda predeterminadas). Esta herramienta también se puede utilizar para extraer secuencias o información sobre ellas de bases de datos basadas en información como los IDs reportados en los archivos de salida. Como siempre, es muy recomendable leer la ayuda y documentación para software como BLAST.
Ejecución de una autoexplosión
Para poner en práctica estas diversas herramientas y opciones, consideremos usar blastp
para buscar proteínas que sean similares en secuencia a otras proteínas en el exoma de levadura. Primero, necesitaremos usar wget
para descargar el conjunto de datos de proteínas (después de localizarlo en http://yeastgenome.org), y luego gzip -d
para descomprimirlo, llamándolo orf_trans.fasta
.

Para encontrar secuencias que sean similares a otras, vamos a querer voltear este archivo
contra sí mismo. Entonces, comenzaremos por crear una base de datos de estas secuencias.

Ahora necesitamos determinar qué opciones usaremos para el blastp
. En particular, ¿queremos limitar el número de HSP y secuencias diana reportadas para cada consulta? Debido a que en su mayoría estamos interesados en determinar qué proteínas coinciden con otras, probablemente solo necesitemos mantener un golpe. ¡Pero el mejor golpe de cada proteína probablemente será para sí misma! Así que será mejor que mantengamos los dos primeros con -max_target_seqs 2
y solo el mejor HSP por hit con -max_hsps 1
. También usaremos un -evalue 1e-6
, un corte de uso común. [2]
Para la salida, crearemos una salida separada por tabulaciones con líneas de comentario (-outfmt 7
), creando columnas para el ID de secuencia de consulta, ID de secuencia de sujeto, longitud de alineación HSP, porcentaje de identidad de la alineación, longitud de secuencia de sujeto, longitud de secuencia de consulta, posiciones de inicio y final en la consulta y sujeto, y el valor E. (Los nombres codificados —qseqid
, sseqid
, length
, etc.—se pueden encontrar ejecutando blastp -help
.) Finalmente, llamaremos al archivo de salida yeast_blastp_yeast_top2.txt
y usaremos cuatro procesadores para acelerar el cálculo (lo que realmente solo ayudará si la máquina en la que estamos registrados tiene al menos tantos).

¡Es un comando largo, para estar seguro! Esta operación tarda varios minutos en terminar, incluso con -num_threads 4
especificado. Cuando termine, podemos ver con menos
que el archivo de salida contiene las columnas que especificamos intercaladas con las líneas de comentario proporcionadas por -outfmt 7
.

En el fragmento de salida anterior, YAL0005C tiene un HSP consigo mismo (naturalmente), pero también uno con YLL024C. Consideraremos análisis básicos que contienen este tipo de datos —filas y columnas almacenadas en archivos de texto, intercaladas con líneas extrañas— en capítulos posteriores.
Ejercicios
- Si aún no tiene instaladas las herramientas NCBI Blast+, instálelas. Una vez que lo haga, verifique el contenido de la variable de entorno
$BLASTDB
. Si no está vacía, useblastdbcmd
para determinar si tiene la base de datos “nr” disponible, y cualquier información que pueda determinar al respecto (cuándo se descargó, cuántas secuencias tiene, etc.) - Crea una nueva carpeta en tu carpeta de
proyectos
llamadablast
. En este directorio, descargue el archivop450s.fasta
y el exoma de levaduraorf_trans.fasta
de la página web del libro. Cree una base de datos llamadaorf_trans
usandomakeblastdb
y useblastp
para buscar el archivop450s.fasta
contra él. Al hacer la búsqueda, use un corte de valor E de1e-6
, mantenga las secuencias objetivo principales y produzca un archivo de salida llamadop450s_blastp_yeast_top1.blast
en formato de salida11
. - Utilice la herramienta
blast_formatter
para convertir el archivo de formato de salida11
anterior a un formato de salida6
llamadop450s_blastp_yeast_top1.txt
, con columnas para: (1) ID de búsqueda de consulta, (2) ID de secuencia de sujeto, (3) Longitud de secuencia de sujeto, (4) Porcentaje de coincidencias idénticas, (5) E Valor, (6) Cobertura de Consulta por Asunto, y (7) Título de Materia. (Puede encontrar que navegar por el manual de NCBI BLAST+ y la salida deblast_formatter -help
es informativo.) La salida, cuando se ve conmenos -S
, debería verse algo así:¿Qué representan estas diversas columnas de salida?
- El archivo
yeast_selected_ids.txt
contiene una columna de 25 IDs identificados como interesantes de alguna manera. Useblastdbcmd
para extraer solo esos registros de secuencia de la base de datosorf_trans
como un archivo FASTA llamadoyeast_selected_ids.fasta
. (Nuevamente, navegar por el manual BLAST+ y la salida deblastdbcmd -help
será útil.)
- El artículo original de BLAST es de Stephen F. Altschul, Warren Gish, Webb Miller, Eugene W. Myers y David J. Lipman, “Basic Local Alignment Search Tool”, Journal of Molecular Biology 215 (1990): 403 — 404. Estoy convencido de que nombrar herramientas bioinformáticas emocionantes verbos como BLAST y HMMER resulta en un mayor uso.
- Usar un límite de valor E de
1e-6
puede no ser la mejor opción; al igual que con todos los análisis, algunas evaluaciones o orientación bibliográfica pueden ser necesarias, dependiendo de la tarea en cuestión.