Arquivos SAM

Os arquivos SAM são a base da análise de alinhamento de sequências. Úteis para inspecionar a qualidade do mapeamento, os erros e a estrutura do alinhamento, eles geralmente são convertidos para BAM para armazenamento e processamento mais eficientes. Entender seus campos é essencial para uma chamada de variantes precisa, visualização adequada e fluxos de trabalho genômicos subsequentes.

Tamara Frontanilla, PhD
10 min read

Ele é um formato de texto simples utilizado para armazenar alinhamentos de sequências de DNA ou RNA contra um genoma de referência.

Ele é gerado por programas de alinhamento como BWA ou minimap2, e constitui um componente central de pipelines de bioinformática, pois preserva não apenas as leituras de sequenciamento, mas também como e onde elas se alinham ao genoma.

Estrutura de um Arquivo SAM

Um arquivo SAM é composto por duas seções principais:

  1. Header: começa com o símbolo @ e contém informações sobre o genoma de referência, versão, contigs e parâmetros de alinhamento.
  2. Linhas de alinhamento: cada linha corresponde ao alinhamento de uma leitura e contém pelo menos 11 campos obrigatórios.

1. HEADER

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

O que isso significa?

@HD VN:1.6 SO: coordinate

  • @HD: indica uma linha de cabeçalho (o header do arquivo)
  • VN:1.6: a versão do formato SAM usada aqui (versão 1.6)
  • SO:coordinate: especifica a ordem de classificação do arquivo.
    • Coordinate = leituras organizadas por posição genômica (ascendente).
    • Outros valores possíveis incluem unsorted (sem ordem definida) e queryname (ordenadas por nome da leitura).

Significa: “Este arquivo SAM está em conformidade com a versão 1.6 do formato, e as leituras estão organizadas por coordenada genômica.”

O header é obrigatório?

Não. Porém, na prática, a maioria das ferramentas de bioinformática exige ou recomenda fortemente incluir ao menos:

  • @HD: versão + ordem de classificação
  • @SQ: a lista de cromossomos/contigs usados como referência

O header informa aos programas posteriores qual genoma de referência foi utilizado e o tamanho de cada cromossomo. Sem essas informações, ferramentas usadas depois no pipeline (por exemplo IGV, samtools, GATK) podem falhar ao interpretar o arquivo corretamente.

Problemas Comuns no Header

Quando o mesmo software realiza tanto o alinhamento quanto a geração do SAM, o header geralmente é consistente. As inconsistências costumam surgir nos seguintes cenários:

  1. Diferenças na nomenclatura do genoma de referência
    • Algumas versões usam “chr1”, outras apenas “1”.
    • Exemplo:
      • Header: @SQ SN:1 LN:248956422
      • Linhas de alinhamento: chr1
    • Isso ocorre quando o SAM foi gerado com um FASTA diferente daquele usado posteriormente em outro programa (IGV, GATK, bcftools etc.).
  2. Conversão de formato
    • Durante conversões (SAM → BAM → CRAM) ou ao usar ferramentas como samtools merge, Picard ou bamtools, o header pode ser reescrito.
    • Nesses casos, nomes de cromossomos ou a ordem podem mudar, gerando incompatibilidades.
  3. Misturar arquivos de alinhamentos diferentes
    • Combinar BAMs de diferentes alinhamentos (por exemplo hg19 vs GRCh38) frequentemente resulta em convenções de nomenclatura inconsistentes.
    • Isso gera erros porque as linhas @SQ não correspondem.
  4. Edições manuais ou pipelines customizadas
    • Às vezes usuários editam o header manualmente (por exemplo com samtools reheader).
    • Se não for feito de forma consistente, podem aparecer erros como cromossomos “fantasma”.
  5. Softwares diferentes ⇒ convenções diferentes
    • Exemplo clássico:
      • bwa mem: usa @SQ SN:chr1
      • bowtie2: pode usar SN:1
    • Misturar arquivos produzidos por convenções diferentes gera nomes não idênticos.

Programas como samtools, bcftools, IGV e GATK exigem que os nomes em @SQ SN: correspondam exatamente aos nomes no FASTA de referência.

Se houver discrepância (até mesmo chr1 vs 1), podem ocorrer erros como:

"Dicionário de sequências e arquivo de alinhamento incompatíveis"

2. LINHAS DE ALINHAMENTO

Cada linha de alinhamento segue um formato fixo com pelo menos 11 campos obrigatórios:

  1. QNAME: nome/ID da leitura
  2. FLAG: valor inteiro que codifica informações sobre a leitura (ex.: se pertence ao par R1 ou R2, se está alinhada, se mapeia na fita reversa etc.)
  3. RNAME: cromossomo ou sequência de referência onde a leitura está alinhada
  4. POS: posição inicial (base 1) do alinhamento na referência
  5. MAPQ: qualidade do mapeamento (confiança de que o alinhamento está correto)
  6. CIGAR: string descrevendo como a sequência se alinha (número de matches, inserções, deleções etc.)
  7. RNEXT: nome da referência da próxima leitura (para paired-end)
  8. PNEXT: posição da próxima leitura
  9. TLEN: tamanho observado do fragmento (insert size)
  10. SEQ: sequência nucleotídica observada
  11. QUAL: valores de qualidade para cada base (mesma escala Phred do FASTQ)

Além desses 11 campos, campos opcionais podem aparecer para fornecer informações adicionais (por exemplo número de mismatches, tags do software de alinhamento etc.)

Exemplo:

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

Explicação

  • QNAME: M00176:35:… → identificador da leitura
  • FLAG: 99 → indica paired-end, primeira leitura, mapeada na orientação forward
  • RNAME: chr1 → alinhada ao cromossomo 1
  • POS: 10000 → o alinhamento começa na posição 10.000
  • MAPQ: 60 → alta confiança no mapeamento
  • CIGAR: 76M → 76 bases alinhadas (todas “matches”)
  • RNEXT: = → par alinhado no mesmo cromossomo
  • PNEXT: 10100 → posição inicial do par
  • TLEN: 176 → tamanho observado do fragmento
  • SEQ: sequência de DNA observada
  • QUAL: pontuações de qualidade por base, no mesmo formato do FASTQ

O formato SAM é particularmente útil para inspecionar alinhamentos, avaliar qualidade de sequenciamento e identificar possíveis erros de mapeamento. Por ser baseado em texto, é transparente, porém muito grande. Por isso normalmente é convertido para BAM, sua versão binária comprimida, menor e suportada por ferramentas como IGV, HipSTR e GangSTR.