Archivos SAM

Los archivos SAM son la base del análisis de alineacion de secuencias. Útiles para inspeccionar la calidad del mapeo, los errores y la estructura del alineamiento. Normalmente se convierten a BAM para un almacenamiento y procesamiento más eficientes. Comprender sus campos es esencial para realizar un llamado de variantes preciso, una visualización correcta y flujos de trabajo genómicos posteriores.

Tamara Frontanilla, PhD
10 min read

Un archivo SAM es un formato de texto simple que se utiliza para almacenar alineamientos de secuencias de ADN o ARN contra un genoma de referencia.

Es generado por programas de alineamiento como BWA o minimap2, y constituye un componente central de los pipelines de bioinformática, ya que preserva no solo las lecturas de secuenciación, sino también cómo y dónde se alinean al genoma.

Structure of a SAM File

Un archivo SAM está compuesto por dos secciones principales:

  1. Header: comienza con el símbolo @ y contiene información sobre el genoma de referencia, la versión, los contigs y los parámetros de alineamiento.
  2. Alignment lines: cada línea corresponde al alineamiento de una lectura y contiene al menos 11 campos obligatorios.

1. ENCABEZADO o "HEADER"

@HD VN:1.6 SO:coordinate
@SQ SN:chr1 LN:248956422

What does this mean?

@HD VN:1.6 SO: coordinate

  • @HD: indica una línea de cabecera (el header del archivo)
  • VN:1.6: la versión del formato SAM usada aquí (versión 1.6)
  • SO:coordinate: especifica el orden de clasificación del archivo.
    • Coordinate: las lecturas están ordenadas por posición genómica (ascendente).
    • Otros valores posibles incluyen unsorted (sin orden definido) y queryname (ordenadas por nombre de lectura).

Significa: “Este archivo SAM cumple con la versión 1.6 del formato, y las lecturas están organizadas por coordenada genómica.”

Is the header mandatory?

No. Sin embargo, en la práctica, la mayoría de las herramientas bioinformáticas requieren o recomiendan fuertemente incluir al menos:

  • @HD: versión + orden de clasificación
  • @SQ: la lista de cromosomas/contigs usados como referencia

El header informa a los programas posteriores qué genoma de referencia fue utilizado y la longitud de cada cromosoma. Sin esta información, herramientas utilizadas más adelante en el pipeline (por ejemplo IGV, samtools, GATK) pueden fallar al interpretar el archivo correctamente.

**Problemas comunes con el encabezado **

Cuando el mismo software realiza tanto el alineamiento como la generación del SAM, el header suele ser consistente. Las inconsistencias aparecen comúnmente en los siguientes escenarios:

  1. Diferencias en la nomenclatura del genoma de referencia

    • Algunas versiones usan “chr1”, otras simplemente “1”.
    • Ejemplo:
      • Header: @SQ SN:1 LN:248956422
      • Alignment lines: chr1
    • Esto normalmente ocurre cuando el SAM fue generado usando un FASTA diferente al que luego utiliza otro programa (IGV, GATK, bcftools, etc.).
  2. Conversión de formato

    • Durante conversiones (SAM → BAM → CRAM) o al usar herramientas como samtools merge, Picard o bamtools, el header puede ser reescrito.
    • En estos pasos, los nombres de los cromosomas o su orden pueden cambiar, causando incompatibilidades.
  3. Fusión de archivos provenientes de diferentes alineamientos

    • Combinar archivos BAM de alineamientos distintos (por ejemplo hg19 vs GRCh38) suele generar convenciones de nomenclatura inconsistentes.
    • Esto causa errores porque las líneas @SQ no coinciden.
  4. Ediciones manuales o pipelines personalizadas

    • A veces los usuarios editan el header manualmente (por ejemplo con samtools reheader).
    • Si no se hace de forma consistente, pueden aparecer errores como cromosomas “fantasma” (presentes en el header pero no usados, o viceversa).
  5. Software diferente = convenciones diferentes

    • Un ejemplo clásico:
      • bwa mem: usa @SQ SN:chr1
      • bowtie2: puede usar SN:1
    • Mezclar archivos producidos bajo convenciones distintas genera nombres no idénticos.

Programas como samtools, bcftools, IGV y GATK requieren que los nombres en @SQ SN: coincidan exactamente con los nombres presentes en el FASTA de referencia.

Si existe cualquier discrepancia (incluso chr1 vs 1), pueden ocurrir errores como:

"Sequence dictionary and alignment file not compatible"

2. LÍNEAS DE ALINEAMIENTO DE LECTURAS

Cada línea de alineamiento sigue un formato fijo con al menos 11 campos obligatorios:

  1. QNAME: nombre de la lectura (ID)
  2. FLAG: valor entero que codifica información sobre la lectura (por ejemplo, si pertenece al par R1 o R2, si está alineada, si se mapea a la hebra reversa, etc.)
  3. RNAME: cromosoma o secuencia de referencia donde la lectura está alineada
  4. POS: posición inicial (1-based) del alineamiento en la referencia
  5. MAPQ: calidad del mapeo (confianza en que el alineamiento es correcto)
  6. CIGAR: cadena que describe cómo se alinea la secuencia (número de matches, inserciones, deleciones)
  7. RNEXT: nombre de la referencia de la siguiente lectura (para paired-end)
  8. PNEXT: posición de la siguiente lectura
  9. TLEN: longitud observada del fragmento (insert size)
  10. SEQ: la secuencia nucleotídica de la lectura
  11. QUAL: puntuaciones de calidad para cada base (misma escala Phred que en FASTQ)

Además de estos 11 campos, pueden incluirse campos opcionales para aportar información adicional (por ejemplo número de mismatches, etiquetas generadas por el software de alineamiento, etc.).

Ejemplo:

M00176:35:000000000-A3JHG:1:1101:10003:12345  99  chr1  10000  60  76M  =  10100  176  ACGTTCTGATGACCTTAGCA...  IIIHFGEFIIHDF>?=;:987…

Explicación

  • QNAME: M00176:35:… → identificador de la lectura
  • FLAG: 99 → indica paired-end, primera lectura, mapeada en la orientación forward
  • RNAME: chr1 → alineada al cromosoma 1
  • POS: 10000 → el alineamiento comienza en la posición 10.000
  • MAPQ: 60 → alta confianza en el alineamiento
  • CIGAR: 76M → 76 bases alineadas (todas “matches”)
  • RNEXT: = → la lectura par está alineada en el mismo cromosoma
  • PNEXT: 10100 posición inicial de la lectura par
  • TLEN: 176 → longitud observada del fragmento
  • SEQ: secuencia de ADN observada
  • QUAL: puntuaciones de calidad para cada base, en el mismo formato que FASTQ

El formato SAM es particularmente útil para inspeccionar alineamientos, evaluar la calidad de secuenciación e identificar posibles errores de mapeo. Al ser basado en texto, es transparente pero también muy grande en tamaño. Por esta razón, normalmente se convierte en BAM, su versión binaria comprimida, que es más pequeña y compatible con la mayoría de los programas y herramientas de visualización, como IGV, HipSTR y GangSTR.