Fundamentos de NGS

Autor/a

Francisco Ascue Orosco

¿Qué son los datos de secuenciación de nueva generación (NGS)?

Los datos NGS son las secuencias tal como provienen directamente de la plataforma de secuenciación en su forma cruda que a menudo contienen cierto grado de información no deseada:

Dado que los datos crudos ocupan mucho espacio en disco y una parte significativa de ellos es información no deseada, por lo general, estos datos crudos no se almacenan en repositorios públicos, como SRA, hasta que han pasado por procesos de filtrado previo (pre-procesamiento).

Archivos FASTQ

Representación de secuencias

En informática las secuencias de ADN son una string (cadena) de caracteres.

  • Secuencias genómicas {A,C,G,T}+

  • Secuencias mRNA {A,C,G,U}+

Secuencias simples: FASTA

Línea 1: información de la secuencia

Línea 2: la secuencia.

>gi|365266830|gb|JF701598.1| Pinus densiflora var. densiflora voucher Pf0855 trnS-trnG intergenic spacer, partial sequence; chloroplast
GCAGAAAAAATCAGCAGTCATACAGTGCTTGACCTAATTTGATAGCTAGAATACCTGCTGTAAAAGCAAG
AAAAAAAGCTATCAAAAATTTAAGCTCTACCATATCTTCATTCCCTCCTCAATGAGTTTGATTAAATGCG
TTACATGGATTAGTCCATTTATTTCTCTCCAATATCAAATTTTATTATCTAGATATTGAAGGGTTCTCTA
TCTATTTTATTATTATTGTAACGCTATCAGTTGCTCAAGGCCATAGGTTCCTGATCGAAACTACACCAAT
GGGTAGGAGTCCGAAGAAGACAAAATAGAAGAAAAGTGATTGATCCCGACAACATTTTATTCATACATTC
AGTCGATGGAGGGTGAAAGAAAACCAAATGGATCTAGAAGTTATTGCGCAGCTCACTGTTCTGACTCTGA
TGGTTGTATCGGGCCCTTTAGTTATTGTTTTATCAGCAATTCGCAAAGGTAATCTATAATTACAATGAGC
CATCTCCGGAGATGGCTCATTGTAATGATGAAAACGAGGTAATGATTGATATAAACTTTCAATAGAGGTT
GATTGATAACTCCTCATCTTCCTATTGGTTGGACAAAAGATCGATCCA

Fastq: Illumina Reads

Secuencia fasta + detalles calidad de la información (la Q es de Quality).

  • Línea 1: Encabezado (Header): comienza con @.

  • Línea 2: la secuencia.

  • Línea 3: Comienza con +. Puede ser sólo el símbolo + o repetir la info del Header.

  • Línea 4: Información de la calidad de secuenciación de cada base. Cada letra o símbolo representa a una base de la secuencia codificado en formato ASCII.

La info de calidad se codifica en ASCII porque esto permite en 1 sólo caracter codificar un valor de calidad. Por lo tanto la línea 2 y la 4 tienen el mismo número de caracteres.

Ordenados de menor a mayor estos son los caracteres ASCII usados para representar calidad en FASTQ:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Ojo

@ y + están dentro de los caracteres ASCII utilizados para codificar la calidad.

Ejemplos:

Ejemplo de datos FASTQ recién salidos de Illumina:

@HWI-ST999:102:D1N6AACXX:1:1101:1235:1936 1:N:0:
ATGTCTCCTGGACCCCTCTGTGCCCAAGCTCCTCATGCATCCTCCTCAGCAACTTGTCCTGTAGCTGAGGCTCACTGACTACCAGCTGCAG
+
1:DAADDDF<B<AGF=FGIEHCCD9DG=1E9?D>CF@HHG??B<GEBGHCG;;CDB8==C@@>>GII@@5?A?@B>CEDCFCC:;?CCCAC
@OBIWAN:24:D1KUMACXX:3:1112:9698:62774 1:N:0:
TAATATGGCTAATGCCCTAATCTTAGTGTGCCCAACCCACTTACTAACAAATAACTAACATTAAGATCGGAAGAGCACACGTCTGAACTCAGTCACTGACC
+
CCCFFFFFHHHHHIJJJJJJJJJJJJIIHHIJJJJJJJJJJJJJJJJJJJJIJJJJJJIJJJJIJJJJJJJHHHHFDFFEDEDDDDDDDDDDDDDDDDDDC

¿Quieres saber cuáles son las partes del Header? Clic aquí.

Ejemplo de datos FASTQ del SRA:

@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC
+SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC

Los datos FASTQ típicamente están comprimidos en formato gzip (.gz) o tar (.tar.gz o .tgz).

Análisis de datos NGS illumina

Control de Calidad

Antes de saltar a filtrar tus datos con filtros de calidad que la terminal ejecute muy obediente, lo mejor es ver algunos gráficos básicos que nos dicen mucho más que una serie de caracteres ASCII. Usaremos para ello FASTQC que es un programa que hace una serie de análisis básicos y estándar decalidad.

Los análisis de FASTQC son útiles para identificar problemas que pudieron surgir durante el laboratorio o durante la secuenciación.

El análisis de FASTQC consiste en los siguientes campos:

  • FASTQ automáticamente dice si nuestra muestra “pasó” o “falló” la evaluación. Sin embargo debemos tomar esto dentro del contexto de lo que esperamos de nuestra librería, ya que FASTQ espera una distribución diversa y al azar de nucleótidos, lo que puede no cumplirse en algunos protocolos.

Vamos a la página de dicho programa a ver ejemplos de:

¿Qué que son los dímeros de adaptadores?

Los adaptadores se ligan al ADN de nuestras muestras en un paso de ligación, sin embargo, también pueden ligarse entre sí y luego pegarse a la flow cell. Resultado: son secuenciados pero no proven datos útiles, simplemente la secuencia de los adaptadores repetida muchas veces. Adelante veremos cómo lidiar con ellos bioinformáticamente, pero se recomienda intentar deshacerse de ellos desde el laboratorio (con pequeños, pequeños imanes como Agencourt o símiles de otras marcas).

¿Qué tanto importa el análisis FASTQC?

Mucho, a partir del análisis FASTQC es que decidirás si tu secuenciación fue exitosa y qué parámetros de pre-procesamiento deberás utilizar para deshacerte del ruido y quedarte con datos limpios.

Escoger los parámetros adecuados de pre-procesamiento es vital ya que todas las corridas de secuenciación son diferentes. Además entender bien tu FASTQC puede permitirte rescatar datos usables incluso dentro de una mala corrida.

Comando de Fastqc en Linux

Recuerda moverte a la ubicacion donde se encuentras los archivos Fastq con el comando cd y la direccion.

mkdir -p results/quality
fastqc -t 2 *fastq.gz -o results/quality/
Aclaración
  • Durante el curso veremos que estos comandos pueden aplicarse en R y complementaremos con comandos en Linux.

Filtrado de Reads

Pre-procesamiento

El pre-procesamiento es esencial para obtener datos limpios a partir de datos crudos en el campo de la bioinformática. Se utiliza principalmente en el análisis de datos biológicos y se inicia con archivos .fastq como entrada, generando también archivos .fastq como salida, posiblemente en versiones comprimidas.

  • Recortar secuencias por calidad (Sequence Quality Trimming): Elimina las bases de baja calidad, típicamente en las últimas bases (-3’ end) de secuencias. La cantidad de bases a recortar se decide visualmente o con un parámetro de calidad, utilizando herramientas como FASTQC.

  • Recortar secuencias (Trimming): Elimina una cantidad específica de bases que no son relevantes para el análisis, como códigos de barras o sitios de restricción.

  • Filtrar secuencias por calidad: Descarta las secuencias que no cumplen con ciertos estándares de calidad, como un número mínimo de bases con calidad o un promedio de calidad específico.

  • Quitar adaptadores: Busca secuencias de adaptadores y las elimina de las secuencias finales. También es posible limitar las secuencias finales a aquellas con un adaptador específico.

  • Filtrar artefactos: Identifica y elimina primers de PCRs, quimeras y otros artefactos de los datos finales.

  • Separar por barcodes “demultiplexear”: Identifica y separa secuencias que contienen códigos de barras (barcodes) únicos por muestra, permitiendo la distinción de secuencias de diferentes muestras. Esto requiere una lista de barcodes y su ubicación en las secuencias.

  • Paired end merging: En el caso de secuenciación Illumina en ambos lados (pair end), se unen las lecturas si se detecta que coinciden, lo que permite corregir errores de secuenciación utilizando la base de mayor calidad.

  • Remover otras secuencias no deseadas: Busca y elimina secuencias no deseadas, como genoma de E. coli, restos de PhiX o partes del genoma que no son de interés, como cpDNA.

Es importante destacar que la lista de barcodes y nombres de muestras es información crítica en un proyecto de bioinformática y debe manejarse con cuidado.

Comando de Trim_galore en Linux

#trim_galore 
trim_galore --quality 20 --fastqc --length 250 --output_dir *.gz

Descargar secuencia de ejemplo Fastq

download.file("ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR156/079/SRR15616379/SRR15616379_1.fastq.gz", "SRR15616379_1.fastq.gz")

download.file("ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR156/079/SRR15616379/SRR15616379_2.fastq.gz", "SRR15616379_2.fastq.gz")
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR156/079/SRR15616379/SRR15616379_1.fastq.gz
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR156/079/SRR15616379/SRR15616379_2.fastq.gz

Alineamiento

Formato SAM/BAM

El formato SAM (Sequence Alignment Map) y su versión binaria comprimida BAM (Binary Alignment Map) son herramientas cruciales en el análisis de datos de secuenciación de nueva generación (NGS). Estos formatos se utilizan para representar alineamientos de secuencias con el objetivo de mapear las letras (bases) de dos o más secuencias, permitiendo incluso la detección de espaciadores (indels) y otros tipos de variaciones. A continuación, se detalla el contenido y la importancia de estos formatos:

El formato SAM consta de dos partes principales: el encabezado (Header) y el cuerpo del alineamiento (Alignment). El encabezado contiene líneas que comienzan con “@” y proporciona información vital sobre el alineamiento, como la longitud de cada cromosoma, el programa utilizado para generar el alineamiento, entre otros detalles relevantes.

El cuerpo del alineamiento incluye una línea por cada alineamiento de secuencias. Cada línea contiene varias columnas que describen las características del alineamiento. Aquí se enumeran las columnas y su significado:

Read id: Identificador único de la lectura.
FLAG: Información sobre el alineamiento, como orientación, calidad, etc.
Chr: Cromosoma al que se alinea la secuencia.
Start: Posición de inicio en el cromosoma.
Mapping quality: Calidad del mapeo.
CIGAR (alignment): Describe las operaciones de alineamiento, como inserciones, deleciones y sustituciones.
MateChr: Cromosoma del compañero de lectura (en el caso de lecturas pareadas).
MateStart: Posición de inicio del compañero de lectura.
MateDist: Distancia entre las lecturas pareadas.
QuerySeq: Secuencia de la lectura.
QueryBaseQuals: Calidad de las bases en la lectura.
AlignmentScore: Puntuación de alineamiento.
Edit-distance-to-reference: Distancia de edición con respecto a la secuencia de referencia.
Number-of-hits: Número de alineamientos similares.
Strand: Orientación de la lectura.
Hit-index: Índice del alineamiento.

Ejemplo de un alineamiento en SAM:

Alineamiento convecional

Coor     12345678901234  5678901234567890123456789012345
ref      AGCATGTTAGATAA**GATAGCTGTGCTAGTAGGCAGTCAGCGCCAT
+r001/1        TTAGATAAAGGATA*CTG
+r002         aaaAGATAA*GGATA
+r003       gcctaAGCTAA
+r004                     ATAGCT..............TCAGC
-r003                            ttagctTAGGC
-r001/2                                        CAGCGGCAT

En SAM se codifica así:

@HD VN:1.5 SO:coordinate
@SQ SN:ref LN:45
r001   99 ref  7 30 8M2I4M1D3M = 37  39 TTAGATAAAGGATACTG *
r002    0 ref  9 30 3S6M1P1I4M *  0   0 AAAAGATAAGGATA    *
r003    0 ref  9 30 5S6M       *  0   0 GCCTAAGCTAA       * SA:Z:ref,29,-,6H5M,17,0;
r004    0 ref 16 30 6M14N5M    *  0   0 ATAGCTTCAGC       *
r003 2064 ref 29 17 6H5M       *  0   0 TAGGC             * SA:Z:ref,9,+,5S6M,30,1;
r001  147 ref 37 30 9M         =  7 -39 CAGCGGCAT         * NM:i:1

Preparacion del index

Además de la representación de alineamientos, también es importante entender cómo se prepara el índice del genoma de referencia y cómo se realizan los alineamientos de secuencias. El índice se crea a partir del genoma de referencia y es esencial para realizar alineamientos eficientes. Aquí se presentan los comandos utilizados en el proceso:

## creamos una carpeta para el indexado de genoma

mkdir index 
cd index

## descarga de genoma de referencia

wget https://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/Metamycoplasma_hominis/latest_assembly_versions/GCF_000085865.1_ASM8586v1/GCF_000085865.1_ASM8586v1_genomic.fna.gz

## realizamos el indexado del genoma

bwa index -p ref GCF_000085865.1_ASM8586v1_genomic.fna.gz
## Descargar genoma

url <- fromJSON(file = "data/reference/ref.json")
filename <- "GCF_000085865.1_ASM8586v1_genomic.fna.gz"
download_genome(url$urlref, filename, "data/reference/")

## Generar Indice
bowtie2_build("data/reference/GCF_000085865.1_ASM8586v1_genomic.fna", 
    bt2Index = "data/reference/index/myco" , overwrite = TRUE)
Aclaracion

En esta sección se plantea la ejecución en paralelo de R y BASH. Despues ahondaremos en R.

Alineamiento de secuencias

Estos comandos ilustran la descarga del genoma de referencia, la creación de un índice para el genoma y el proceso de alineamiento de secuencias utilizando la herramienta Bowtie2. Posteriormente, los alineamientos se convierten en formato BAM utilizando Samtools.

## Alineamineto de genoma
bwa mem -t 4 -o gen.sam reference/index/ref SRR15616380_1.fastq.gz SRR15616380_2.fastq.gz

## Creación de Archivo BAM
samtools view -u@ 2 gen.sam | \
samtools sort -@ 2 -o gen.sorted.bam -
samtools index gen.sorted.bam
## Alineamineto de genoma
bowtie2(bt2Index = "data/reference/index/myco", 
        samOutput = "results/SRR15616379.sam", 
        seq1 = "data/processed_data/filtered_F/SRR15616379_filt_1.fastq", 
        seq2 = "data/processed_data/filtered_R/SRR15616379_filt_2.fastq", 
        "--threads=3")
        
## Creación de Archivo BAM
asBam("results/SRR15616379.sam")       
En resumen

El formato SAM/BAM y los procesos de indexado y alineamiento son elementos esenciales en el análisis de datos de secuenciación de nueva generación (NGS), permitiendo la representación y procesamiento de alineamientos de secuencias de manera eficiente. Para obtener más información detallada sobre estos formatos y sus aplicaciones, se recomienda consultar la documentación oficial de Samtools y la especificación del formato SAM aquí.

Volver arriba