Samtools: Guía completa y detallada en español

que es samtools
  • Samtools es el estándar mundial para el manejo de archivos genómicos SAM, BAM y CRAM, permitiendo desde conversiones hasta análisis de calidad.
  • Destaca por su integración en pipelines, su potencia al trabajar en línea de comandos y la compatibilidad continua con otras herramientas bioinformáticas.
  • Dominar sus subcomandos claves, como view, sort, index, flagstat y tview, es esencial para gestionar datos masivos y estructurar análisis robustos.

Si te mueves en el mundo de la bioinformática o has comenzado a trabajar con datos de secuenciación masiva, seguramente te has cruzado con el nombre Samtools y te has preguntado en qué consiste exactamente esta suite de software, por qué es tan importante y cómo puede ayudarte en el manejo de archivos genómicos. Desentrañar las funcionalidades de Samtools no es tarea trivial por la amplitud del proyecto y la variedad de formatos, pero contar con una visión completa y en español resulta esencial para sacarle el máximo partido.

En las próximas líneas te voy a sumergir en el universo de Samtools, una herramienta fundamental para la manipulación de datos de secuenciación y análisis genómicos. Repasaremos sus orígenes, el abanico de comandos disponibles, las mejores prácticas de uso, los formatos con los que trabaja y los trucos más útiles, todo con un enfoque práctico pero exhaustivo. Si quieres pasar de usuario ocasional a experto, aquí tienes la guía más detallada adaptada de la documentación, la experiencia acumulada en comunidades científicas y las fuentes más relevantes.

¿Qué es Samtools y por qué es fundamental en bioinformática?

Samtools es un conjunto de programas diseñado para manipular, procesar y analizar datos de secuenciación de alto rendimiento. Nació con la necesidad de dar respuesta a una explosión sin precedentes de datos producidos por tecnologías de secuenciación masiva. Su misión principal es gestionar ficheros en formato SAM (Sequence Alignment/Map), BAM (Binary Alignment/Map) y CRAM, formados tras el alineamiento de lecturas «crudas» contra referencias genómicas.

Estos archivos contienen millones de registros con información clave de cada lectura: posición, calidad, tipo de mapeo, etc. El volumen y complejidad hace que operaciones sencillas como el filtrado, la conversión o el muestreo sean un reto. Samtools resuelve este escenario permitiendo trabajar tanto con archivos individuales como integrando sus comandos en complejos pipelines usando tuberías UNIX, una funcionalidad crucial cuando los datos a tratar son inmensos o residen en servidores remotos.

No solo ha revolucionado los flujos de manejo de datos genómicos, sino que se ha convertido en estándar de facto mundial tanto en proyectos de investigación básica, medicina de precisión, diagnósticos clínicos y genómica poblacional.

Historia y evolución del proyecto Samtools

Samtools fue creado originalmente por Heng Li en el Wellcome Sanger Institute como respuesta a la necesidad de manipular millones de alineamientos generados en las primeras plataformas de secuenciación masiva. Desde su nacimiento, el desarrollo ha involucrado a múltiples instituciones punteras, como el Broad Institute o el European Bioinformatics Institute (EMBL-EBI).

Actualmente, el ecosistema Samtools es mucho más que un único paquete. A partir de su versión inicial, se dividió en varios proyectos coordinados pero independientes para mejorar la modularidad y el acceso:

  • HTSlib: una librería en lenguaje C para el acceso eficiente a datos de secuenciación masiva, parte nuclear de Samtools.
  • Samtools: el set de comandos principal para manipular archivos SAM, BAM y CRAM.
  • BCFtools: orientado a la manipulación y análisis de variantes (VCF y BCF), cubriendo necesidades como el calling o filtrado de variantes.

Este enfoque modular permite que tanto Samtools como BCFtools utilicen internamente HTSlib, simplificando el desarrollo y mantenimiento de cada herramienta.

Los desarrolladores que han contribuido de forma significativa al proyecto van desde Bob Handsaker, Petr Danecek, James Bonfield y otros, tanto en el ámbito de la compresión de archivos como en el desarrollo de nuevas funciones para el manejo de alineamientos y variantes.

El repositorio oficial y actualizaciones se encuentran en GitHub, garantizando un desarrollo abierto y colaborativo con la comunidad.

¿Para qué sirve Samtools realmente?

La función principal de Samtools es el procesamiento eficiente de archivos de alineamiento generados por programas como BWA, Bowtie2 o NextGenMap. Permite realizar tareas imprescindibles, tales como:

  • Convertir entre distintos formatos de archivo (SAM, BAM, CRAM), asegurando la compatibilidad con otros programas de análisis.
  • Filtrar lecturas y regiones específicas según campos del alineamiento, calidad, flags, posiciones, etc.
  • Ordenar y fusionar archivos enormes, manteniendo la integridad y permitiendo indexación para acceso rápido.
  • Generar estadísticas de cobertura, profundidad, flags y otros parámetros relevantes para la calidad de los datos.
  • Visualización en terminal simple (con tview) para consulta rápida o inspección de regiones concretas.

La integración con pipelines UNIX es un punto diferencial. Al trabajar con flujos de entrada y salida estándar (stdin, stdout), Samtools se acopla con scripts, otras utilidades y recursos remotos a través de protocolos como FTP y HTTP(S), descargando únicamente las regiones o índices necesarios para maximizar la eficiencia.

Formatos de archivos gestionados por Samtools

Antes de adentrarse en los comandos, es crucial comprender los formatos soportados:

  • SAM (Sequence Alignment/Map): Formato de texto plano, legible y editable, donde cada línea representa un alineamiento.
  • BAM (Binary Alignment/Map): Versión binaria comprimida de SAM, mucho más eficiente en espacio y procesamiento. Requiere indexación para acceso aleatorio rápido.
  • CRAM: Formato avanzado que ofrece compresión superior aprovechando la redundancia respecto a la secuencia de referencia. Perfecto para grandes volúmenes y archivado.

Samtools también facilita la conversión a formatos clásicos como FASTQ o FASTA para tareas de recaptura, control de calidad o procesos descendentes.

Instalación y primeros pasos

Para comenzar, la instalación de Samtools puede realizarse de varias maneras. La forma más sencilla es emplear el gestor de paquetes de tu sistema operativo (apt, yum, brew, etc.) o bien compilarlo desde el código fuente disponible en su .

En entornos de computación de alto rendimiento o universidades, normalmente basta con cargar el módulo correspondiente con:

module load samtools

En sistemas propios, puedes usar:

sudo apt install samtools

o bien seguir las instrucciones de compilación indicadas en la sección INSTALL dentro del propio paquete o en la web oficial.

Comandos esenciales de Samtools

Samtools está estructurado por subcomandos, cada uno especializado en una función concreta. A continuación se recogen y detallan los más relevantes:

samtools view

Es el comando básico para mostrar, filtrar y convertir archivos de alineamiento. Es capaz de trabajar con archivos SAM, BAM y CRAM, tanto en local como remotos. Sus atributos principales:

  • Imprimir alineamientos completos o restringidos a regiones de interés pasadas como argumento (ejemplo: «chr1:1000-2000»).
  • Conversión entre formatos usando opciones como -b para BAM, -C para CRAM, -S para entrada en SAM.
  • Incluir cabeceras con -h.
  • Filtrado avanzado mediante flags, calidad mínima, etc.

Ejemplo de uso habitual:

samtools view -h -b sample_sorted.bam "chr1:10-13" > extracted.bam

No olvides que para filtrar por regiones es imprescindible que el archivo esté ordenado y, en muchos casos, indexado.

samtools sort

Permite ordenar los registros en un archivo de alineamiento por coordenadas o por nombre. La ordenación por coordenadas es fundamental para casi todos los procesos de análisis subsecuentes e indexación:

samtools sort unsorted.bam -o sorted.bam

También se pueden ajustar los recursos de memoria (-m), núcleos (-@) y opciones de formato de salida (-O).

samtools index

Genera un archivo de índice para BAM o CRAM ordenados por coordenada. Esto permite la consulta aleatoria eficiente de regiones concretas sin tener que leer todo el archivo:

samtools index sorted.bam

El índice generado suele llamarse sorted.bam.bai o sorted.cram.crai.

samtools flagstat

Analiza el archivo y proporciona un resumen numérico de las principales categorías de flags presentes. Ideal para un QC rápido sobre alineamientos y validación de resultados:

samtools flagstat sorted.bam

El resultado informa del número total de lecturas, duplicados, correctamente alineadas, etc., separadas en QC-passed y QC-failed.

samtools stats

Recoge estadísticas detalladas sobre lecturas, pares, longitud, calidad y mapeo. Su salida (preferentemente en texto plano) puede graficarse posteriormente (por ejemplo, usando plot-bamstats):

samtools stats sample.bam > stats.txt

samtools tview

Visualizador interactivo en modo texto para archivos BAM/CRAM alineados a una referencia. Permite navegar, saltar a regiones, inspeccionar cobertura y detectar mismatches de forma ágil en servidor:

samtools tview sample.bam reference.fasta

Dentro del visor se pueden emplear comandos como g:chr1:10,000,000 para saltar a una posición, o ? para acceder a la ayuda.

samtools depth

Calcula la profundidad de cobertura en cada posición o región definida. Muy útil para estudios de cobertura o para valorar posibles «gaps» en regiones críticas:

samtools depth sample.bam > depth.txt

samtools merge y samtools cat

Permiten fusionar o concatenar múltiples archivos de alineamiento. Importante cuando las muestras han sido procesadas por separado o se requiere integrar datos de varios ensayos:

samtools merge merged.bam input1.bam input2.bam
samtools cat -o output.bam input1.bam input2.bam

El primero requiere que los archivos estén ordenados e integrará los headers, el segundo es más eficiente para concatenar archivos con headers idénticos.

samtools split

Divide archivos grandes por grupos de lectura (‘read group’), generando un archivo por cada uno. Es fundamental para análisis donde los metadatos del experimento (como el ‘libro de biblioteca’, o pool de captura) son determinantes.

samtools fqidx y samtools faidx

Genera un índice para archivos FASTA o FASTQ y permite extraer subsecuencias de forma eficiente. Imprescindible en análisis a gran escala cuando se gestionan referencias o controles calidad sobre conjuntos amplios.

samtools fixmate y markdup

Procesos para añadir o corregir información relativa a mates y marcar duplicados en archivos de alineamiento:

  • fixmate: Rellena y corrige los campos que identifican mates en archivos ordenados por nombre.
  • markdup: Marca lecturas duplicadas tras corregir mates, mejorando la calidad de los datos para análisis descendentes.

Otros comandos relevantes

  • addreplacerg: Añade o reemplaza campos de grupo de lectura (read group) en los archivos.
  • hecho/cabezera (head): Extrae las cabeceras y los primeros registros de alineamientos.
  • reheader: Sustituye la cabecera de un archivo BAM/CRAM por una nueva.
  • bedcov: Calcula la cobertura en regiones definidas por un archivo BED. Imprescindible en diseños de captura dirigida.
  • mpileup: Genera información de pila de alineamientos, insumo frecuente para calling de variantes, aunque actualmente muchas funciones han migrado a bcftools.
  • consensus/reference: Permiten generar consensos o extraer referencias a partir de alineamientos y tags auxiliares.
  • ampliconclip/ampliconstats: Herramientas especializadas para experimentos tipo amplicón, facilitando el recorte de secuencias y análisis de eficiencia de cebadores.

Parámetros globales y opciones generales

Samtools soporta opciones de ayuda (-h, –help), visualización de versión (–version, –version-only) y gestión avanzada del formato de entrada/salida y compresión. Puedes personalizar los niveles de compresión, el número de hilos para paralelización (nthreads), especificar archivos de referencia CRAM y controlar la verbosidad de los mensajes de error o información para afinar la integración en pipelines automatizados.

Además, admite la lectura y escritura a través de redes o ubicaciones remotas mediante URLs, lo que es especialmente útil trabajando en clústeres o entornos cloud.

Flags: Desglose detallado y significado

Cada registro de alineamiento en SAM/BAM/CRAM incluye un campo denominado FLAG, un valor numérico que resume el tipo de lectura, si está emparejada, si es duplicado, si falla controles de calidad, etc. Algunos de los flags más habituales:

Valor Hex Flag Significado
0x1 PAIRED Alineamiento de lecturas emparejadas
0x2 PROPER_PAIR Emparejadas correctamente
0x4 UNMAP La secuencia no está alineada
0x8 MUNMAP El mate no está alineado
0x10 REVERSE Read alineada inversamente
0x20 MREVERSE El mate está en invertida
0x40 READ1 Primer fragmento del par
0x80 READ2 Segundo fragmento
0x100 SECONDARY Alineamiento secundario
0x200 QCFAIL No supera control de calidad
0x400 DUP Duplicado PCR u óptico
0x800 SUPPLEMENTARY Alineamiento suplementario

Samtools dispone de utilidades específicas para convertir flags entre representación numérica y textual, facilitando el análisis y el filtrado por este campo fundamental en la calidad y fiabilidad de los datos.

Gestión avanzada e integración en pipelines

La verdadera potencia de Samtools reside en su capacidad para integrarse como parte de flujos automáticos de análisis. Esto es posible gracias a su diseño orientado a recibir datos desde la entrada estándar y producir resultados en la salida estándar, por lo que en el análisis con Nextflow y otras plataformas, su uso resulta fundamental.

Por ejemplo, es habitual formar cadenas de procesamiento como:

samtools view -h input.bam | grep -v 'unwanted_seq' | samtools sort -o filtered_sorted.bam

La modularidad es clave en análisis genómicos de gran escala, y Samtools aborda este reto de manera excelente.

Qué es Nextflow: Guía completa del framework para pipelines científicos

Variables de entorno y configuración personalizada

Para optimizar Samtools es importante conocer varias variables de entorno clave:

  • HTS_PATH: Lista de rutas donde buscar plugins de HTSlib.
  • REF_PATH: Ubicación de referencias buscadas por su MD5 (especialmente en CRAM).
  • REF_CACHE: Cache local para referencias descargadas remotamente.

Configurar adecuadamente estas variables reduce tiempos de acceso, minimiza repeticiones y mejora la robustez si trabajas en sistemas compartidos.

Filtrado avanzado y lenguaje de expresiones

Samtools incorpora un sistema de expresiones de filtrado muy potente para manejar el contenido de archivos SAM/BAM/CRAM en tiempo real. Este sistema permite realizar filtrados complejos basados en operadores lógicos, valores y tags, facilitando la selección precisa de las lecturas más relevantes para cada análisis.

Por ejemplo, puedes seleccionar registros con calidad de mapeo > 30 y tamaño de inserto en un rango determinado con una sola expresión:

mapq >= 30 && (tlen >= 100000 || tlen <= -100000)

Estas expresiones permiten también filtrar por valores específicos, presencia de tags, o realizar cálculos avanzados, lo que se traduce en análisis altamente personalizados y eficientes.

Opciones de compresión, conversión y perfiles de CRAM

Uno de los aspectos donde Samtools ha evolucionado especialmente es en la gestión avanzada del formato CRAM, que presume de ser el más eficiente para almacenamiento a gran escala y archivo a largo plazo.

Entre las opciones destacadas, encontramos:

  • Niveles de compresión personalizables.
  • Opción de incrustar la referencia en el archivo (embed_ref).
  • Control fino de series de datos, perfiles rápidos, normales, comprimidos (small, archive), y elección de algoritmos de compresión (zlib, bzip2, lzma).

Esto permite equilibrar velocidad, uso de espacio y portabilidad según las necesidades del usuario.

Integración con BCFtools y HTSlib

Mientras que Samtools se orienta a la manipulación y análisis de alineamientos, BCFtools se focaliza en variantes. Ambos comparten la potente biblioteca HTSlib, facilitando el trabajo conjunto en pipelines y evitando incompatibilidades entre versiones. Desde la creación de un VCF a partir de un mpileup hasta el filtrado avanzado de llamadas, ambos paquetes son aliados naturales.

Limitaciones, mejores prácticas y aspectos a tener en cuenta

Como toda herramienta de procesamiento masivo, Samtools tiene limitaciones que debes considerar en análisis complejos o muy exigentes:

  • Evita tratar archivos SAM de gran tamaño sin comprimir, ya que el uso de recursos puede dispararse.
  • El formato BAM es óptimo para la mayoría de análisis debido a su balance entre legibilidad, portabilidad y eficiencia.
  • CRAM requiere tener acceso a la referencia original. Si puedes perder el archivo de referencia, opta por incrustarlo en CRAM.
  • El mantenimiento de índices actualizados es fundamental para evitar cuellos de botella en flujos automatizados.
  • Nunca olvides comprobar los flags y la consistencia de los headers para prevenir interpretaciones incorrectas.
  • En clústeres HPC, ajusta adecuadamente el uso de memoria (-m) y núcleos (-@), sobre todo en sorting y merging, para maximizar el rendimiento.

Ejemplos de uso comunes y recetas prácticas

Para que la comprensión sea completa, aquí tienes una recopilación de comandos típicos y su propósito:

  • Conversión de SAM a BAM:
    samtools view -b input.sam > output.bam
  • Ordenar BAM por coordenada:
    samtools sort input.bam -o sorted.bam
  • Crear índice:
    samtools index sorted.bam
  • Extraer lecturas de un rango específico:
    samtools view -h sorted.bam "chr1:10000-12000" > region_reads.sam
  • Filtrar lecturas no mapeadas:
    samtools view -F 4 sorted.bam
  • Estadísticas rápidas de alineamiento:
    samtools flagstat sorted.bam
  • Visualizar región en terminal:
    samtools tview sorted.bam reference.fasta
  • Pasar de BAM a FASTQ:
    samtools fastq in.bam > out.fastq

Ingeniería biomédica: qué es, funciones, salidas y todo lo que debes saber

Recursos, documentación y soporte

Para estar al día o resolver dudas, conviene consultar los siguientes recursos:

Además, la comunidad internacional reporta mejoras, errores y nuevas funcionalidades a través de issues en GitHub o contactos directos con los desarrolladores.

Consideraciones de versiones, compatibilidad y actualización

Ten en cuenta que Samtools evoluciona constantemente. Cada versión actualiza tanto comandos como opciones de compresión o parámetros de referencia. Es importante leer las notas de cada release para no caer en incompatibilidades, por ejemplo, en las versiones recientes de Samtools y asegurarte de mantenerlo actualizado.

Algunas opciones, como la indexación de archivos SAM comprimidos (.sam.gz), solo están disponibles a partir de versiones recientes.

Comparativa rápida con otras herramientas del ecosistema

Existen alternativas y herramientas complementarias que se integran perfectamente en flujos bioinformáticos, ampliando la funcionalidad de Samtools. Entre ellas, Claude Science y otras plataformas que facilitan análisis específicos.

Casos de uso típicos en investigación y diagnóstico

El abanico de aplicaciones de Samtools es enorme y transversal a casi cualquier análisis genómico a gran escala. Algunos ejemplos concretos:

  • Procesamiento automatizado de cohortes en medicina personalizada.
  • Control de calidad preliminar de datos de secuenciación mediante flagstat y stats.
  • Filtrado por flags y regiones en el análisis de variantes raras en genómica clínica.
  • Reanálisis de experimentos de captura mediante bedcov y depth.
  • Seguimiento y marcado de duplicados en proyectos de exoma.
  • Visualización rápida o generación de imágenes para artículos científicos con tview.

Actualizaciones, mantenimiento y contribución comunitaria

El desarrollo de Samtools responde a un proceso abierto, donde cualquier usuario puede contribuir sugiriendo nuevas funciones, reportando bugs o ayudando en la actualización de la documentación. Para cuestiones de seguridad, los canales son prioritarios y se reservan los avisos para reportes directos.

Glosario de términos y conceptos asociados

  • Read Group (RG): Etiquetas en los archivos de alineamiento que identifican la procedencia técnica de las lecturas (placa, lote, muestra, captura, etc.).
  • SAM, BAM y CRAM: Diferentes formatos de archivo para alineamientos: texto, binario y comprimido por referencia, respectivamente.
  • Flags: Marcadores numéricos que resumen el estado y propiedades de cada alineamiento.
  • Indexado: Proceso de creación de archivos de acceso aleatorio, fundamental para eficiencia en consultas a gran escala.
  • Stats y QC: Conjunto de métricas y herramientas de control de calidad para garantizar la fiabilidad de los análisis.

Samtools se ha consolidado como una suite imprescindible tanto para el usuario principiante como para el experto en análisis de datos genómicos. Gracias a su potencia, flexibilidad y su integración total en los pipelines modernos, ayuda no solo a manipular y filtrar datos, sino también a optimizar la calidad y reproducibilidad de la investigación biomédica y genómica. Con una documentación viva, soporte de una comunidad activa y compatibilidad permanente con los estándares internacionales, apostar por dominar Samtools es una decisión acertada para cualquiera que aspire a trabajar en análisis de datos masivos de secuenciación.

Deja un comentario