Saltar al contenido principal
LibreTexts Español

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.

    I.7_1_BLAST_Ilustración

    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.

    I.7_2_BLAST_TYPES

    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.
    • -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 valores 6 y 7 producen filas y columnas separadas por tabuladores en un archivo de texto, con 7 proporcionando líneas de comentario explicativas. De manera similar, un valor de 10 produce una salida separada por comas; 11 produce un formato que luego se puede convertir rápidamente en cualquier otro con otro programa llamado blast_formatter. Las opciones 6, 7 y 10 se pueden configurar altamente en términos de qué columnas se muestran.
    • -max_target_seqs <integer>
      • Cuando el formato de salida es 6, 7 o 10 para cada secuencia de consulta, solo informa HSP para las mejores <integer>secuencias de sujetos diferentes.
    • -max_hsps <integer>
      • Para cada par de consultas/objetivo, solo reportar los mejores <integer>HSP.
    • -out <output file>
      • Escriba la salida en <output file>oposición a la predeterminada de la salida estándar.

    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.

    Base de datos I.7_3_BLAST_

    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).
    • -num_hilos <integer>
      • Utilice <integer>núcleos de CPU en un sistema multinúcleo, si están disponibles.

    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.

    imagen

    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.

    I.7_5_Unix_94_2_MakeblastDB

    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).

    I.7_6_Unix_94_3_Runblast

    ¡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.

    I.7_7_Unix_94_4_Blastout

    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

    1. 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, use blastdbcmd 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.)
    2. Crea una nueva carpeta en tu carpeta de proyectos llamada blast. En este directorio, descargue el archivo p450s.fasta y el exoma de levadura orf_trans.fasta de la página web del libro. Cree una base de datos llamada orf_trans usando makeblastdb y use blastp para buscar el archivo p450s.fasta contra él. Al hacer la búsqueda, use un corte de valor E de 1e-6, mantenga las secuencias objetivo principales y produzca un archivo de salida llamado p450s_blastp_yeast_top1.blast en formato de salida 11.
    3. Utilice la herramienta blast_formatter para convertir el archivo de formato de salida 11 anterior a un formato de salida 6 llamado p450s_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 de blast_formatter -help es informativo.) La salida, cuando se ve con menos -S, debería verse algo así:I.7_8_Unix_94_5_Blastout ¿Qué representan estas diversas columnas de salida?
    4. El archivo yeast_selected_ids.txt contiene una columna de 25 IDs identificados como interesantes de alguna manera. Use blastdbcmd para extraer solo esos registros de secuencia de la base de datos orf_trans como un archivo FASTA llamado yeast_selected_ids.fasta. (Nuevamente, navegar por el manual BLAST+ y la salida de blastdbcmd -help será útil.)

    1. 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.
    2. 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.

    This page titled 1.7: Línea de comandos BLAST is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Shawn T. O’Neil (OSU Press) .