Se utiliza el programa pIRS para la generación de las lecturas.
Debido a que este programa no puede generar lecturas en regiones no adyacentes se procedió a la generación de un genoma haploide artificial que cubriera las regiones de interés más 100 pb a cada lado. La creación de este genoma artificial se realizó concatenando las diferentes regiones de interés, y en y en la región de unión de cada exón se le añaden 100N que indica secuencia desconocida, pIRS solamente genera lecturas en las zonas en las que los nucleótidos están bien definidos. Para ello se utilizó el script
para generar un genoma de referencia de las regiones de estudio (disponible en el anexo E)
Se procede a la generación del genoma diploide mediante pIRS, con 2134 variantes en la región de interés. Las lecturas son generadas con una longitud de 100 pb en un formato paired end y con tamaño de inserto de 200pb. El resto de las opciones del programa se utilizaron por defecto. Se generaron las lecturas a 4 profundidades de cobertura media diferentes: 50x , 100x , 400x , 1000x.
Alineamiento
Para realizar el alineamiento frente al genoma de referencia, hg19, se utilizaron dos programas diferentes BWA y Stampy, ambos con los parámetros por defecto.
El funcionamiento de estos alineadores de lecturas cortas es similar:
1.- Construcción de un índice de la secuencia de referencia, este paso sólo se requiere hacer una vez:
bwa index hg19.fasta
./stampy.py --species=human --assembly=hg19 -G hg19.fasta
La construcción del indexado consiste simplemente en cambiarle el formato al genoma de referencia para que el programa pueda buscarlo eficientemente; cada programa construye un tipo diferente de índice. 2.- Las lecturas en formato Fastq son alineadas contra la secuencia de referencia.
87
./stampy.py -g hg19 -h hg19 -M $i_R1* $i_R2 >$i.sam
El resultado es un fichero en formato SAM (Sequence Aligment Map), es uno de los más recientes formatos utilizados en bioinformática y se ha convertido en el formato estándar para almacenar y representar los resultados procedentes de NGS. La figura 18 muestra como es el formato SAM
Figura 33. Se muestran las primeras líneas de un fichero en format SAM
El formato SAM contiene toda la información sobre la muestra y su alineamiento, se puede consultar más información en el siguiente enlance.
http://samtools.github.io/hts-specs/SAMv1.pdf
El fichero SAM es un fichero de texto delimitado por tabulaciones y consiste en una sección de encabezado (Header) donde cada línea contiene metadata y la sección del alineamiento donde cada línea contiene la información del alineamiento. Este formato requiere de al menos las siguientes columnas
1. QNAME String [!-?A-~]{1,254} Query template NAME 2. FLAG Int [0,65535] bitwise FLAG
3. RNAME String *|[!-()+-<>-~][!-~]* Reference sequence NAME 4. POS Int [0,2147483647] 1-based leftmost mapping POSition 5. MAPQ Int [0,255] MAPping Quality
6. CIGAR String *|([0-9]+[MIDNSHPX=])+ CIGAR string
7. RNEXT String *|=|[!-()+-<>-~][!-~]* Ref. name of the mate/next read 8. PNEXT Int [0,2147483647] Position of the mate/next read
9. TLEN Int [-2147483647,2147483647] observed Template LENgth 10. SEQ String *|[A-Za-z=.]+ segment SEQuence
11. QUAL String [!-~]+ ASCII of Phred-scaled base QUALity+33 1. QNAME = alineamientos realizados contra una referencia.
88 2. FLAG = Se corresponde a un código numérico en el que se puede encontrar toda la información referente a un alineamiento, se puede consultar los significados de cada flag mediante el comando:
samtools flags,
lo que devuelve:
Figura 34. Descripción de las flags más importantes
De esta manera se pueden identificar los duplicados de secuencia, lecturas que no pareadas, identificar alineamientos primarios (en el caso de que una lectura tenga múltiples alineamientos el software designara una como primaria), alineamientos secundarios, alineamiento suplementario o quimérico. La comprensión de estos tres tipos de alineamientos resulta de gran ayuda cuando se intentan detectar reordenamientos.
3. RNAME Indica el nombre de la secuencia de referencia
4. POS Indica la posición que ocupa la lectura en la secuencia de referencia.
5. MAPQ indica la calidad del alineamiento frente a la referencia. Es la probabilidad de que un alineamiento sea incorrecto, si MAPQ es 60 la probabilidad es 10-6, es decir, hay una probabilidad entre un millón de
que el alineamiento no sea correcto.
El programa BWA ha desarrollado un MAPQ=0 para designar que una lectura alinea igualmente en más de una localización.
89 6. CIGAR: Representa el alineamiento mediante números seguidos por letras:
● M match o mismatch ● I insertion ● D deletion ● S soft clip ● H hard clip ● N skipping
Por ejemplo una lectura con 69M32S indica que 69 bases son match o mismatch y las 32 restante tienen un soft clip.
7. RNEXT indica si las dos lecturas que forman el par están alineadas en el mismo cromosoma , se denota como “ = ”
8. PNEXT Indica la posición de la primera lectura alineada
9. TLEN indica la distancia entre los extremos del alineamiento por parejas 10. SEQ Muestra la secuencia de nucleótidos de la lectura
11. QUAL Indica la calidad con la que es llamada cada nucleótido. BWA genera por defecto los siguiente tags:
● NM Número de bases de una lectura que no están en la secuencia de referencia ● MD Muestra la posición en la lectura que no está presente en la referencia.
Postprocesado
El siguiente paso en el análsisis es la transformación del archivo con formato SAM a un archivo con formato BAM (Binary aligment map). En este proceso se comprime el fichero SAM para que ocupe menos espacio. El fichero BAM almacena toda la información del fichero SAM en menos espacio y siempre es posible revertirlos (BAM/SAM ó SAM/BAM).
samtools view -Sbh fichero.sam >fichero.bam
Posteriormente hay que ordenar el fichero.bam
samtools sort fichero.bam
El siguiente paso fue la eliminación de lecturas duplicadas, éstas son lecturas que después del alineamiento, comienzan y acaban en la misma posición cromosómica y, además, presentan el mismo CIGAR. En este proceso se utilizó la opción Mark duplicates del paquete Picard
90
java -Xmx16G -jar picard/MarkDuplicates.jar \INPUT=fichero.sort.bam \OUTPUT=fichero.marked.bam \METRICS_FILE=13/metrics
\CREATE_INDEX=true \VALIDATION_STRINGENCY=LENIENT
Una vez realizado, se procedió al realineamiento de las posibles indels. Para ello se utilizó el programa RealignerTargetCreator de GATK para la identificación de las regiones que son susceptibles de ser realineadas. Estas zonas pueden aparecer en el CIGAR del fichero bam (alineado) o bien se le puede suministrar una fichero en formato vcf donde se encontraran descritas las indels más comunes. El archivo resultante lo denominamos .bam.list.
java -Xmx16G -jar gatk/GenomeAnalysisTK.jar \-T
RealignerTargetCreator \-R hg19M/hg19M.fa \-o fichero.bam.list \-I fichero.marked.bam
Para finalizar este paso se procedió al realineamiento con la opción IndelRealigner del propio paquete GATK, con la generación de un nuevo fichero bam ya realineado alrededor de las indels. Este proceso minimiza el riesgo de falsos positivos al buscar posteriormente variantes.
java -Xmx16G -jar gatk/GenomeAnalysisTK.jar \ -I
13/13M.marked.bam \ -R hg19M/hg19M.fa \-T IndelRealigner \-
targetIntervals fichero.bam.list \ -o fichero.marked.realigned.bam
El siguiente paso es el recalibrado de las bases secuenciadas. Este proceso es fundamental ya que los quality score son críticos para los pasos posteriores del análisis. Los sesgos sistemáticos generados por el secuenciador tienen una gran importancia en la incorrecta llamada de variantes ya que las calidades reportadas dependen de la posición en la que se encuentre el nucleótido. La opción BaseRecalibrator genera un modelo de errores y el recalibrado de esas calidades. Utiliza como comparador la base de datos de SNPs (dbSNP).
91
java -Xmx16G -jar gatk/GenomeAnalysisTK.jar \ -T BaseRecalibrator \ -R reference.fasta \ -I fichero.marked.realigned.bam \ -knownSites latest_dbsnp.vcf \
-o recal_data.table
El recalibrado de la calidad quedará reflejado en un nuevo fichero bam.
java -Xmx16G -jar gatk/GenomeAnalysisTK.jar \-l INFO \-R hg19M/hg19M.fa \-I fichero.marked.realigned.fixed.bam \-T TableRecalibration \--out
fichero.marked.realigned.fixed.recal.bam \-recalFile recal_data.table