¿Por qué es necesario BLAST local?
El servicio web de NCBI BLAST es práctico, pero tiene tres limitaciones:
- Limitaciones de tráfico: Si se ejecutan cientos de consultas automáticamente cada día, el servidor de NCBI puede imponer restricciones. Esto supone un problema para los flujos de trabajo reales.
- Datos propios: Para realizar búsquedas BLAST en genomas microbianos ensamblados por el usuario, secuencias de expresión del laboratorio o datos no publicados, la única solución es utilizar BLAST local.
- Reproducibilidad: Los resultados de las búsquedas en el BLAST web cambian cuando se actualiza la base de datos. Para garantizar la reproducibilidad en las publicaciones, es necesario ejecutar las búsquedas localmente con una base de datos correspondiente a un momento específico.
En esta sección, instalaremos BLAST+ (el conjunto de herramientas BLAST locales distribuido por NCBI), crearemos una base de datos a partir de nuestras propias secuencias y ejecutaremos las consultas. Al finalizar esta sección, podremos utilizar con facilidad los comandos blastn · blastp · tblastn.
Paso 1: Instalación de BLAST+
A continuación, se indican los métodos de instalación según la plataforma.
Ubuntu · Debian
sudo apt-get updatesudo apt-get install -y ncbi-blast+blastn -versionmacOS (Homebrew)
brew install blastblastn -versionEntorno de Conda (recomendado)
conda create -n blast-env -c bioconda blastconda activate blast-envblastn -versionDocker
docker pull ncbi/blastdocker run --rm -v $(pwd):/blast/blastdb ncbi/blast blastn -versionSi la instalación se completa correctamente, se mostrará lo siguiente.
blastn: 2.14.0+
Package: blast 2.14.0, build ...Paso 2: Crear su propia base de datos
makeblastdb convierte un archivo FASTA en un índice para que BLAST pueda realizar búsquedas.
Base de datos de ADN
makeblastdb \ -in my_contigs.fasta \ -dbtype nucl \ -out my_db_nucl \ -title "My Custom Nucleotide Database"
ls -la my_db_nucl.*Este comando genera los siguientes archivos.
my_db_nucl.nhr # encabezado
my_db_nucl.nin # índice
my_db_nucl.nsq # secuenciaBase de datos de proteínas
makeblastdb \ -in my_proteins.fasta \ -dbtype prot \ -out my_db_prot \ -title "My Custom Protein Database"La extensión del archivo cambia a .phr, .pin y .psq.
El proceso de indexación en sí tarda unos segundos si la secuencia tiene aproximadamente 100 MB, y varios minutos si se trata del genoma humano (3 GB). Una vez creado, se puede reutilizar continuamente.
Paso 3: Ejecutar la búsqueda BLAST
# Se asume que la secuencia de consulta está en query.fastablastn \ -query query.fasta \ -db my_db_nucl \ -out results.txt \ -outfmt 7 \ -evalue 1e-5 \ -num_threads 4Opciones principales:
-outfmt 7: Muestra los resultados en formato de tabla delimitada por tabulaciones (con anotaciones).-outfmt 6muestra la tabla sin anotaciones.-outfmt 5muestra el formato XML.-evalue 1e-5: Umbral de valor E. Muestra solo los resultados significativos.-num_threads 4: Paraleliza el proceso utilizando 4 núcleos de CPU.-max_target_seqs 100: Muestra solo los 100 mejores resultados.
La búsqueda de proteínas utiliza blastp, mientras que la búsqueda de traducciones utiliza tblastn y blastx.
Paso 4: Análisis de los resultados
Cada columna en el formato de tabla de -outfmt 6 es la siguiente:
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscoreResultado de ejemplo en una sola línea:
Contig_1 gene_BRCA1 99.5 1420 7 0 1 1420 100 1519 0.0 2620Aquí tienes un ejemplo de cómo analizar datos con Python.
import pandas as pd
cols = [ "qseqid", "sseqid", "pident", "length", "mismatch", "gapopen", "qstart", "qend", "sstart", "send", "evalue", "bitscore"]df = pd.read_csv("results.txt", sep="\t", names=cols, comment="#")
# Solo coincidencias significativassig = df[df["evalue"] < 1e-10].sort_values("evalue")print(sig.head())Al empezar a trabajar con esta tabla en pandas, se abren las puertas a aplicaciones prácticas. La agregación por grupos, la combinación de anotaciones de genes y la visualización se integran de forma natural.
Paso 5: Flujo de trabajo automatizado
A continuación, se muestra un ejemplo de script para ejecutar varias consultas en lote.
#!/bin/bash# batch_blast.shQUERIES_DIR=queries/RESULTS_DIR=results/mkdir -p $RESULTS_DIR
for query_file in $QUERIES_DIR/*.fasta; do name=$(basename "$query_file" .fasta) blastn \ -query "$query_file" \ -db my_db_nucl \ -out "$RESULTS_DIR/${name}.tsv" \ -outfmt 6 \ -evalue 1e-5 \ -num_threads 4 echo "Completado: $name"doneSi más adelante se integra con gestores de flujos de trabajo como Snakemake(F27) o Nextflow(F28), se obtendrá una canalización reproducible.
Ejercicio práctico: con un único genoma de microorganismo
El ejercicio más interesante es comenzar con el genoma del microorganismo que te interese.
- Descarga el genoma del microorganismo de interés (por ejemplo, E. coli K-12 MG1655) desde NCBI Genome.
- Indexa con
makeblastdb. - Utiliza como consulta la secuencia de un gen que hayas validado experimentalmente o que te interese.
- Observa los resultados ajustando el umbral de E-value.
También se puede hacer en Colab. Con una sola línea de !apt install ncbi-blast+, el entorno estará listo.
Descarga de bases de datos oficiales de NCBI
También puedes descargar localmente las bases de datos oficiales de NCBI (nr, refseq_rna, swissprot, etc.) en lugar de utilizar tus propios datos.
# Descarga de nr (archivo muy grande — más de 200 GB comprimido, más de 500 GB descomprimido)update_blastdb.pl --decompress nr
# swissprot (pequeño — 200 MB)update_blastdb.pl --decompress swissprotupdate_blastdb.pl es una herramienta incluida en la instalación de BLAST+. Automatiza las descargas paralelas y la verificación de integridad.
Para mantener las bases de datos actualizadas, prográmelo en cron para que se ejecute periódicamente.
Problemas comunes en la práctica
- Espacio en disco: la base de datos nr completa requiere más de 500 GB. Verifique esto de antemano.
- Uso de memoria: las búsquedas con bases de datos grandes pueden consumir mucha memoria. Considere las ventajas y desventajas de la opción
-mt_mode 1(paralelización de consultas) frente a la opción predeterminada (paralelización de bases de datos). - Compatibilidad de versiones: las bases de datos creadas con versiones anteriores de BLAST+ podrían no ser compatibles con la versión más reciente. Documente las versiones de la base de datos y la herramienta de ejecución.
- Secuencias de consulta contaminadas: si los encabezados FASTA contienen caracteres especiales o espacios, el análisis fallará. Limpie los datos con herramientas como
seqkit cleanantes de comenzar. - Filtro de baja complejidad: los filtros dust y seg están habilitados de forma predeterminada. Desactívelos con
-dust noal buscar consultas con muchas secuencias repetitivas (como los elementos transponibles).
Correspondencias con conceptos de informática
- Precomputación de índices vs. búsqueda en tiempo real: lo que hace
makeblastdbse basa directamente en los principios de la indexación de bases de datos en informática. A cambio de la precomputación, se logra una búsqueda más rápida. - Sistema de archivos local vs. API remota: BLAST local está optimizado para las operaciones de entrada/salida del sistema de archivos. La API web de NCBI está optimizada para las comunicaciones de red. Son enfoques diferentes con sus propias ventajas y desventajas.
- Procesamiento por lotes vs. interactivo: BLAST local se adapta naturalmente al procesamiento por lotes. Es fácil integrarlo en un administrador de flujos de trabajo, lo que lo convierte en la base de flujos de trabajo reproducibles.
Continuación en los siguientes capítulos
- Próximo capítulo (M13): Árboles y arreglos de sufijos: estructuras de datos más sofisticadas que los índices de BLAST.
- Dos capítulos después (M14): BWT: índice comprimido utilizado por BWA y Bowtie2.
- Tres capítulos después (M15): FM-index: una estructura de datos de mapeo ultrarrápida que combina BWT con las funciones de rango y selección.
- Cinco capítulos después (M17): DIAMOND: una alternativa a BLAST que es 100 veces más rápida.
- Veinticinco capítulos después (F27): Snakemake: para crear flujos de trabajo reproducibles a partir del procesamiento por lotes de BLAST.
Para profundizar
El texto principal es una versión reestructurada creada internamente por BPD. Para obtener más información, consulte los siguientes recursos:
- Manual de NCBI: Capítulo 16: Manual de usuario de BLAST+. La referencia definitiva para las opciones prácticas.
- Entrenamiento de NCBI: Configuración de BLAST independiente (con subtítulos). Aprenda a instalar, buscar y analizar datos en solo 30 minutos.
- EMBL-EBI Training — Búsquedas de similitud de secuencias. Aplicaciones prácticas de BLAST.
- Herramientas de referencia: Biopython (
Bio.Blast.NCBIWWW.qblast+Bio.Blast.NCBIXML) — Control de BLAST web desde Python. Ideal para prototipos. - Contenedor de referencia: Imagen Docker
ncbi/blast. Ejecución reproducible dentro del contenedor.
Configurar BLAST localmente y ejecutarlo varias veces con tus propias secuencias elimina por completo la frustración de la web de NCBI. Esta comodidad sienta las bases para los flujos de trabajo de mapeo, ensamblaje y detección de variantes que se presentarán en el capítulo M12.