Archivos FASTQ: estructura y organización
¿Qué es un archivo FASTQ?
Un archivo FASTQ es el formato estándar para almacenar secuencias de ADN junto con sus valores de calidad. Es el formato de salida de los secuenciadores de nueva generación como Illumina MiSeq.
Cada lectura (read) ocupa exactamente 4 líneas:
@M00741:150:000000000-L7YMK:1:1101:15234:1334 1:N:0:1
ACTGGCATTAGCAGGAATACCTTGTAACTGATTTGTACTGAGATTG
+
CCCCCGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
| Línea | Contenido |
|---|---|
| 1 | Identificador — empieza con @, contiene información del instrumento, carril, posición en el flowcell |
| 2 | Secuencia — la secuencia de nucleótidos (A, T, C, G, N) |
| 3 | Separador — siempre es + (opcionalmente seguido del identificador) |
| 4 | Calidad — un carácter ASCII por cada base, codificando el puntaje Phred |
Desglose del identificador
El identificador de la primera línea contiene toda la información de dónde y cuándo se generó esa lectura:
@M00741:150:000000000-L7YMK:1:1101:15234:1334 1:N:0:1
| Campo | Valor | Significado |
|---|---|---|
M00741 |
Instrumento | Identificador único del secuenciador MiSeq |
150 |
Run | Número de corrida del equipo |
000000000-L7YMK |
Flowcell | ID de la celda de flujo donde se realizó la secuenciación |
1 |
Lane | Carril del flowcell (MiSeq tiene 1 solo carril) |
1101 |
Tile | Sección (tile) del flowcell donde se leyó esta lectura |
15234 |
X | Coordenada X del cluster en el tile |
1334 |
Y | Coordenada Y del cluster en el tile |
1 |
Read | Dirección de lectura: 1 = forward (R1), 2 = reverse (R2) |
N |
Filtro | Y = no pasó filtro de calidad, N = sí pasó |
0 |
Control | 0 = no es lectura de control |
1 |
Index | Número de índice (para demultiplexeo) |
Cada lectura tiene una combinación única de tile + coordenadas X/Y, lo que permite rastrear exactamente de dónde vino en el flowcell.
Calidad Phred
La línea 4 del FASTQ tiene un carácter por cada base de la secuencia. Cada carácter es un código ASCII que representa la probabilidad de error de esa base. La conversión es: Q = valor ASCII - 33 (codificación Phred+33, estándar en Illumina moderno).
Por ejemplo:
ACTGGCATTAGC
CCCCCGGGGIII
| Base | Carácter | ASCII | Q (ASCII-33) | Prob. error | Precisión |
|---|---|---|---|---|---|
| A | C | 67 | 34 | 0.04% | 99.96% |
| C | C | 67 | 34 | 0.04% | 99.96% |
| T | G | 71 | 38 | 0.016% | 99.98% |
| G | I | 73 | 40 | 0.01% | 99.99% |
Cuanto más “adelante” en el alfabeto ASCII esté el carácter, mejor calidad. Los valores más comunes:
| Carácter | Q | Prob. error | Significado |
|---|---|---|---|
! |
0 | 100% | Peor calidad posible |
+ |
10 | 1 en 10 | Mala calidad |
5 |
20 | 1 en 100 | Aceptable |
? |
30 | 1 en 1,000 | Buena calidad |
I |
40 | 1 en 10,000 | Excelente |
En general, un puntaje Q ≥ 30 se considera buena calidad (99.9% de precisión). En el paso de filtrado con DADA2 usamos este umbral para decidir dónde truncar las lecturas.
Limitaciones de la calidad Phred
La calidad Phred es una estimación probabilística basada en la señal de fluorescencia, no una garantía de que la base sea correcta. En general funciona — bases con Q10 tienen más errores que bases con Q30 — pero hay situaciones donde una base se lee mal aunque la señal parezca buena:
Errores de incorporación: la polimerasa incorpora el nucleótido equivocado durante la síntesis. La fluorescencia se lee correctamente (señal clara) pero la base ya era incorrecta. Q alto, base errónea.
Crosstalk de fluorescencia: los 4 fluoróforos (uno por base) tienen espectros que se solapan. A veces la señal de una G se confunde con T. El base-caller asigna Q alto porque la señal total es fuerte, pero eligió la base equivocada.
Errores de cluster: cada punto en el flowcell es un cluster de ~1,000 copias. Si durante la amplificación en puente algunas copias adquieren un error, el cluster emite una señal mixta. Si el error es minoritario, la señal dominante gana y Q es alto, pero la base puede ser incorrecta.
Errores de PCR: ocurren antes de la secuenciación, durante la amplificación de la librería. La polimerasa introdujo el error, así que todas las copias del cluster tienen el mismo error. Illumina lo lee con Q40 porque la señal es perfecta — pero la base está mal desde el inicio.
Por estas razones, Illumina tiende a sobreestimar la calidad — el error real a Q30 puede ser 0.3-0.5% en vez del 0.1% teórico. Esto es lo que justifica que DADA2 aprenda su propio modelo de error directamente de tus datos, en lugar de confiar solo en los Q-scores.
Explorando tus archivos FASTQ
Para ver los primeros reads de un archivo:
head -8 ~/metabarcoding-code/raw_fastqs/12S-GC-001-d1_1_S1_L001_R1_001.fastqEsto muestra las primeras 2 lecturas (4 líneas cada una).
Para contar el número de lecturas en un archivo:
echo $(( $(wc -l < ~/metabarcoding-code/raw_fastqs/12S-GC-001-d1_1_S1_L001_R1_001.fastq) / 4 ))Para ver cuántos archivos FASTQ tienes:
ls ~/metabarcoding-code/raw_fastqs/*.fastq | wc -lOrganización de los archivos en el curso
Los archivos FASTQ del curso siguen una convención de nombres que permite al pipeline identificar automáticamente el locus, la muestra y la dirección de lectura. Esta convención se describe en detalle en la sección de Preparación del entorno.
Cada muestra tiene un par de archivos (R1 y R2) en la carpeta raw_fastqs/:
raw_fastqs/
├── 12S-GC-001-d1_1_S1_L001_R1_001.fastq
├── 12S-GC-001-d1_1_S1_L001_R2_001.fastq
├── 12S-GC-002-d1_1_S2_L001_R1_001.fastq
├── 12S-GC-002-d1_1_S2_L001_R2_001.fastq
└── ...