Volver a la lista

Creación de un servidor de base de datos BLAST local: Configuración práctica con tus propias secuencias.

¿Por qué se prefiere usar BLAST local en lugar de la versión web de NCBI en la práctica? El proceso completo implica indexar las secuencias propias con `makeblastdb`, ejecutar `blastn` y `blastp` desde la línea de comandos y analizar los resultados.

Principiante
|
15min
|
Verificado (2026-07-19)
BLAST+makeblastdblocal databasebioinformatics workflow
Progreso0/120 (0%)

¿Por qué es necesario BLAST local?

El servicio web de NCBI BLAST es práctico, pero tiene tres limitaciones:

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

bash
sudo apt-get update
sudo apt-get install -y ncbi-blast+
blastn -version

macOS (Homebrew)

bash
brew install blast
blastn -version

Entorno de Conda (recomendado)

bash
conda create -n blast-env -c bioconda blast
conda activate blast-env
blastn -version

Docker

bash
docker pull ncbi/blast
docker run --rm -v $(pwd):/blast/blastdb ncbi/blast blastn -version

Si la instalación se completa correctamente, se mostrará lo siguiente.

text
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

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

text
my_db_nucl.nhr  # encabezado
my_db_nucl.nin  # índice
my_db_nucl.nsq  # secuencia

Base de datos de proteínas

bash
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

bash
# Se asume que la secuencia de consulta está en query.fasta
blastn \
-query query.fasta \
-db my_db_nucl \
-out results.txt \
-outfmt 7 \
-evalue 1e-5 \
-num_threads 4

Opciones principales:

  • -outfmt 7: Muestra los resultados en formato de tabla delimitada por tabulaciones (con anotaciones). -outfmt 6 muestra la tabla sin anotaciones. -outfmt 5 muestra 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:

text
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore

Resultado de ejemplo en una sola línea:

text
Contig_1  gene_BRCA1  99.5  1420  7  0  1  1420  100  1519  0.0  2620

Aquí tienes un ejemplo de cómo analizar datos con Python.

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 significativas
sig = 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.

bash
#!/bin/bash
# batch_blast.sh
QUERIES_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"
done

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

  1. Descarga el genoma del microorganismo de interés (por ejemplo, E. coli K-12 MG1655) desde NCBI Genome.
  2. Indexa con makeblastdb.
  3. Utiliza como consulta la secuencia de un gen que hayas validado experimentalmente o que te interese.
  4. 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.

bash
# 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 swissprot

update_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 clean antes de comenzar.
  • Filtro de baja complejidad: los filtros dust y seg están habilitados de forma predeterminada. Desactívelos con -dust no al 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 makeblastdb se 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 TrainingBú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.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...