6  Bed tools - Preparación de un archivo .bed

6.1 ¿Qué es bedtools?

bedtools es un conjunto de utilidades diseñado para comparar y manipular regiones genómicas, es decir, intervalos definidos por cromosoma, inicio y fin. En lugar de buscar patrones en texto plano, bedtools trabaja directamente con coordenadas y permite operar entre conjuntos de regiones de forma precisa y eficiente.

Con él es posible responder preguntas como:

  • ¿Qué genes se superponen con mis picos de ChIP-seq?

  • ¿Qué parte de un gen está cubierta por otra colección de regiones?

  • ¿Qué intervalos coinciden o están próximos entre sí?

  • ¿Qué regiones aparecen dentro de otras?

Su utilidad radica en que interpreta las coordenadas como estructuras genómicas, no como simples cadenas de texto.

La técnica de inmunoprecipitación de cromatina seguida de secuenciación (ChIP-seq) permite mapear en el genoma la localización de proteínas unidas al ADN o de histonas modificadas, identificando regiones con una señal significativamente mayor a la del fondo, llamadas picos. Estos picos pueden corresponder a sitios de unión activos o dominios de modificación extendida, y su detección depende del contraste con controles apropiados y del análisis bioinformático.

6.2 Tipo de archivos utiliza bedtools

6.2.1 BED (.bed)

Archivo tabular que describe intervalos (cromosoma, inicio 0-based, fin 1-based).
Es el formato más común para picos, regiones reguladoras e intervalos.

6.2.2 GFF3 / GTF (.gff3, .gtf)

Archivos de anotación con 9 columnas que describen genes, transcritos, exones, UTRs y otras características. La columna 9 contiene atributos (ej. ID=gene-XYZ) que suelen extraerse con sed/awk.

6.2.3 FASTA (.fa, .fasta)

Aunque no será el enfoque de este capítulo, bedtools puede usarse para extraer secuencias de distintas regiones o calcular características como contenido GC.

6.2.4 BAM / SAM (.bam, .sam)

Formatos de alineamiento. bedtools puede resumirlos y cruzarlos con regiones, aunque no los utilizaremos aquí.

6.3 ¿Qué hace bedtools?

Las funciones de bedtools se agrupan en tres categorías principales:

  • Comparación entre regiones: intersect (solapamientos), subtract (restas), merge (uniones).

  • Cuantificación: coverage (proporción cubierta) y genomecov (perfil de cobertura).

  • Proximidad: closest (región más cercana) y window (regiones dentro de una distancia).

Estas operaciones generan tablas que pueden importarse directamente en R para análisis posteriores.

6.4 Ideas clave antes de comenzar

Antes de trabajar con bedtools conviene tener presente que los genomas se describen como intervalos en un cromosoma, y que formatos como BED y GFF3 no son más que tablas que registran esas posiciones. Al entender esto, se vuelve natural usar bedtools para comparar regiones, medir solapamientos y relacionar distintos conjuntos de datos de manera precisa, en vez de depender de búsquedas de texto que no reconocen coordenadas. Con esta base, las operaciones de bedtools encajan sin dificultad dentro del flujo de análisis que después continuaremos en R.

6.5 Exploración y preparación de la anotación genómica

El objetivo de este primer paso es familiarizarnos con la estructura de un archivo GFF3 y preparar una versión reducida que podamos usar más adelante con bedtools. Antes de cualquier análisis, necesitamos entender cómo se organizan las anotaciones del genoma y aprender a filtrar la información que realmente nos interesa.

Drosophila melanogaster es un organismo modelo ampliamente estudiado, con un genoma relativamente pequeño y bien anotado. Esto permite trabajar con archivos ligeros, fáciles de manipular y suficientemente ricos para practicar filtrado, extracción y análisis con bedtools sin generar problemas de rendimiento.

6.5.1 Prepara el directorio de trabajo

Crea un directorio nuevo para trabajar en este capítulo y muevete a el

mkdir bedtools
cd bedtools

6.5.2 Descargar el archivo

Ensembl mantiene un servidor FTP público (https://ftp.ensembl.org/pub/) donde se almacenan todas sus versiones de genomas y anotaciones. FTP (“File Transfer Protocol”) es simplemente un sitio desde el cual se pueden descargar archivos grandes de manera directa.

Dentro del FTP de Ensembl encontrarás:

  • Anotaciones genómicas en GFF3 o GTF

  • Secuencias del genoma en FASTA

  • Archivos de proteínas y transcritos

  • Metadatos y documentación

  • Versiones anteriores y actuales de cada especie

En el servidor FTP de Ensembl se encuentran todas las anotaciones genómicas organizadas por especie y versión. Tu tarea es descargar el archivo GFF3 correspondiente a Drosophila melanogaster (release 112), siguiendo la ruta que nos lleva al archivo dentro del FTP.

Ejercicio

Usa el comando wget para descargar el archivo: Drosophila_melanogaster.BDGP6.46.112.gff3.gz ubicado en la ruta https://ftp.ensembl.org/pub/release-112/gff3/drosophila_melanogaster/

¿Qué comando usarías para descargar este archivo en tu directorio actual?

wget https://ftp.ensembl.org/pub/release-112/gff3/drosophila_melanogaster/Drosophila_melanogaster.BDGP6.46.112.gff3.gz

6.5.3 Visualizar el archivo GFF3

El archivo que descargamos está comprimido en formato .gz. No necesitamos descomprimirlo para explorarlo: herramientas como zless pueden leerlo directamente.

zless Drosophila_melanogaster.BDGP6.46.112.gff3.gz

Aquí podemos observar que el GFF3 es una tabla con 9 columnas que describen características del genoma: cromosoma, posiciones, tipo de anotación (gene, exon, mRNA, etc.) y una columna final con atributos.

6.5.4 Eliminar líneas de comentarios

Los archivos GFF suelen comenzar con metadatos que no necesitamos para este análisis. Podemos filtrarlos usando zgrep.

Ejercicio

En el archivo .gff3.gz las líneas que no corresponden a anotaciones reales comienzan con un “#

¿Qué línea de comando utilizarías para eliminar ese contenido?

Redirige la salida a un archivo llamado Dmel_clean.gff3

zgrep -v '^#' Drosophila_melanogaster.BDGP6.46.112.gff3.gz > Dmel_clean.gff3

6.5.5 Filtrar cromosomas principales

El archivo GFF3 de Drosophila contiene no solo los cromosomas reales (2L, 2R, 3L, 3R, 4, X y Y), sino también numerosos contigs secundarios y fragmentos pequeños que no necesitamos para nuestro análisis. Para trabajar con un archivo más claro y manejable, filtraremos únicamente las anotaciones que pertenezcan a los cromosomas principales.

grep -P '^(2L|2R|3L|3R|4|X|Y)\t' Dmel_clean.gff3 > Dmel_main.gff3
Nota
  • Nota: La opción -P permite usar expresiones regulares más completas.

  • Los paréntesis () agrupan varias alternativas y el símbolo | significa “o”.

  • Usamos comillas simples para que el patrón se interprete literalmente y no se expandan caracteres especiales (como \t) dentro del shell.

  • El código \t representa un tabulador, lo que asegura que el nombre del cromosoma coincida exactamente seguido por una tabulación, tal como aparece en un archivo GFF3.

Ejercicio

Modifica el comando anterior para que, en lugar de conservar todos los cromosomas principales, se quede únicamente con las anotaciones del cromosoma 2L y guarde el resultado en un archivo llamado Dmel_2L.gff3.

grep -P '^2L\t' Dmel_clean.gff3 > Dmel_2L.gff3

o también

grep -P '^2L\t' Dmel_main.gff3 > Dmel_2L.gff3

Este comando selecciona solo las líneas cuyo cromosoma coincide con uno de los principales, dejándonos un archivo depurado y listo para los pasos siguientes.

6.5.6 Extraer únicamente las líneas correspondientes a genes

El archivo GFF incluye muchos tipos de anotaciones: exones, transcritos, UTRs, regiones reguladoras, entre otros. Cada uno describe una parte distinta del genoma. Sin embargo, para comenzar a trabajar con bedtools es útil enfocarnos solamente en los genes, que se identifican en la tercera columna del GFF con la etiqueta gene.

Ejercicio

Filtra del archivo Dmel_2L.gff3 únicamente las líneas donde la tercera columna sea gene y guarda el resultado en Dmel_main_genes.gff3.

En el ejercicio anterior filtraste cromosomas usando grep -P y un patrón específico. Aquí la idea es la misma: usar grep -P para buscar la palabra gene, pero asegurándote de que esté exactamente entre dos tabuladores.

grep -P '\tgene\t' Dmel_2L.gff3 > Dmel_2L_genes.gff3

6.5.7 Convertir de GFF3 a BED

El formato BED es el que usaremos con bedtools porque trabaja con coordenadas simples y en sistema 0-based. Para generar un BED a partir de las anotaciones de genes en el GFF3, usamos awk para extraer las columnas necesarias y ajustar la posición inicial (restándole 1):

awk -F "\t" 'BEGIN{OFS="\t"} { split($9,a,";"); print $1, $4-1, $5, a[1] }' Dmel_2L_genes.gff3 > genes_2L.bed
Nota

En el formato BED, la coordenada inicial usa un sistema basado en 0 (0-based), por lo que debemos restarle 1 al inicio; en cambio, la posición final se mantiene igual porque ya coincide entre ambos formatos.

awk es una herramienta que permite trabajar con archivos de texto divididos en columnas. Sirve para seleccionar campos, modificarlos y generar nuevas salidas basadas en ellos. En bioinformática se usa mucho para convertir formatos, porque facilita tomar columnas específicas (como cromosoma, inicio y fin) y reorganizarlas para crear archivos como BED.

Con esta conversión obtenemos un archivo BED limpio y compatible con los requisitos de bedtools. Este será el input principal para los ejercicios del siguiente apartado, donde comenzaremos a realizar operaciones entre regiones genómicas.

6.6 Referencias