PRÁCTICA DE ALINEAMIENTO o MAPEO DE SECUENCIAS RNA-Seq con TopHat
Prededentes:
En la carpeta de la UCO /usr/local/uco/bms/practica3, hay 3 carpetas:
- Carpeta reference: que contenía inicialmente dos archivos:
- chr1.fa (que es la secuencia en fasta del cromosoma 1 humano que usaremos como genoma de referencia)
- Trata de determinar cuantas secuencias hay con la orden cat chr1.fa | grep -c ">"
- gencode_v18_chr1.gtf, que incluye las anotaciones sobre la secuencia anterior.
- [práctica1] Haz un $more /usr/local/uco/bms/practica3/reference/chr1.fa y sobre el gencode_v18_chr1.gtf para ver estos archivos, y analiza y descríbe dicho contenido. En vez de more, puedes usar la orden less
- Busca con Google las especificaciones de un archivo gtf para que aprendas a interpretar el contenido del archivo gtf
- Si necesitas saber cómo funciona la orden more o less de Linux haz un $man more o un $man less
- Pero hay otros archivos mas que terminan con .bt2 que son los árchivos índice creados con el programa bowtie2 usando la secuencia chr1.fa. Estos archivos se han creado dando la orden bowtie2-build chr1.fa chr1. Se han creado estos archivos aquí dada las limitaciones en el espacio en disco de los ordenadores de la UCO. Si crearas estos archivos índice en tu propia cuenta, te puedes quedar sin espacio. Si tienes un ordenador propio, puedes crear estos archivos índice donde quieras. Deberás instalar el programa bowtie2 para ello
- La indexación del archivo fasta chr1.fa se requiere para que bowtie sea capaz de mapear las lecturas de RNA-Seq a velocidades muy superiores a las que es capaz de mapear otros programas como BLAST (lo que bowtie consigue en minutos, BLAST tardaría semanas o incluso meses en conseguirlo)
- Carpeta stranded: que contiene dos archivos de secuencias RNA-Seq stranded obtenidas a partir de una librería hecha con la tecnología dUTP que rinde secuencias del tipo fr-firststrand
- [práctica2] Abre la cabecera del archivo H1hesc_R1_chr1.fastq y H1hesc_R2_chr1.fastq, y describe para la primera lectura de ambos archivos su contenido. Indica:
- qué parte de estos archivos vincula la lectura de un archivo con el del otro archivo..
- qué tipo de codificación en la calidad tienen (está basado en Phred33, o Phred64?)
- la línea de flujo del sistema Illumina en el que se secuenciaron
- la tesela, y las coordenadas en las que están emplazadas
- si tienen o no secuencias barcode o index
- y si son pareadas o no
- y el número de lecturas que tiene cada archivo
- Haz de nuevo un control de calidad de las lecturas con FastQC para determinar si necesitas filtrar las secuencias por criterios de calidad
- Carpeta unstranded: que contiene dos archivos de secuencias RNA-Seq hechas con una librería de tipo no stranded
Objetivos de la práctica
- Buscar con Google el programa bowtie2, e inspeccionar la página para encontrar cómo instalarlo y obtener el manual que te indica cómo se usa.
- Lo mismo con el programa Tophat.
- Reconocer el contenido del archivo chr1.fa (que contiene el cromosoma 1 humano, versión de anotación 18 que usaremos con genoma de referencia)
- Reconocer el contenido de su correspondiente archivo de anotaciones tipo gtf. Nota: usaremos solo la secuencia del cromosoma 1, y no del genoma humano completo para no generar archivos de gran tamaño y extrema exigencias de computación)
- Reconocer el contenido de los archivos fastq correspondientes a un experimento de RNA-Seq. Ver su contenido y la información que nos proporciona.
- hay que identificar si son secuencias pareadas o no
- Si son archivos sincronizados, esto es, si tienen el mismo número de lecturas cada uno, y si los nombres de las lecturas coinciden en orden. Para ello usad cat en combinación con wc -l, y head y tail
- Usar el programa adecuado de bowtie2 para indexar el archivo fasta del cromosoma 1 humano que usaremos como genoma de referencia, algo que es imprescindible para mapear rápidamente las secuencias obtenidas de un experimento RNA-Seq
- Una vez creado el archivo índice con bowtie2, realizaremos el mapeo con TopHat, uno de los programas más conocidos de mapeo transcriptómico. Señalar que hay otros mapeadores, como STAR, HISAT, o incluso otras versiones como TopHat2, HISAT2.
- Veremos por primera vez lo que es un archivo BAM/SAM, que es el archivo que TopHat y otros mapeadores dan como resultado, y lo que son los archivos BED, ya que TopHat proporciona información de las delecciones y las inserciones con archivos de este formato BED
- Analizaremos la información que TopHat da sobre el mapeo, como el porcentaje de lecturas que mapean, las delecciones, las inserciones, los junctions...
- Haremos un control de calidad del mapeo obtenido analizando el archivo BAM con el programa samstat.
- Aprenderemos cómo podemos manipular y extraer información de los archivos SAM/BAM usando el conjunto de programas incluido en samtools. Aprenderemos a ver el contenido interno de dichos archivos, la estadística que aporta, como extraer información de los archivos SAM, y un largo etcétera
- Aprenderemos las bases de cómo interpretar la información del apartado FLAGS con ayuda de la información proporcionada por esta página WEB
- Aprenderemos a obtener información del contenido del apartado CIGAR y de otros campos
- Aprenderemos a extraer alguna información útil de los archivos SAM/BAM con ayuda de cut, grep, sort, uniq, etc..
- Aprenderemos a ordenar primero y luego a indexar el archivo de mapeo BAM/SAM con ayuda de samtools generando el correspondiente archivo de índices .bai. Muchos programas exigen que los archivos BAM estén ordenados e indexados, como el programa IGV (Integrative Genome Viewer) que veremos en el siguiente punto. El indexado u organización de estos archivos son necesarios para que la información que contienen se muevan fluidos por los programas
- Cargaremos el genoma de referencia, su correspondiente archivo gtf y el archivo BAM de resultados indexado en el programa IGV, y veremos qué información nos porporciona dicho programa. Veremos la cobertura del mapeo, inserciones, delecciones y variantes en comparación con el genoma de referencia. Añadiremos los archivos junctions.bed para ver qué información nos da. Para ello visitaremos en parte la ayuda del programa IGV, como ésta que te da información de los junctions
- Y si nos da tiempo, haremos un contaje de secuencias RNA-Seq mapeadas, usando el archivo bam/sam y el programa htseq-count
- No podremos hacer un análisis de expresión diferencial porque solo disponemos de una muestra, pero podemos sentar las bases de lo que hay que hacer
EJECUCIÓN DE LA PRÁCTICA
- Como se supone que ya hemos aprendido a instalar y compilar programas como velvet bajo linux (que no es más que leerse las instrucciones y usar en su caso la orden make, o la configure/make), le he pedido al administrador del sistema de la UCO que intale por nosotros los siguientes programas. Todos los programas están definidos en el PATH y por tanto se pueden invocar sin necesidad de usar el "./"
- tophat, que se lanza bajo linux con esta orden $tophat. Tophat es un programa mapeador de secuencias que es "splicing aware", y que usa bowtie para mapear secuencias al genoma de referencia. También le he solicitado al administrador de la UCO que instale bowtie. cd /tmp/
- bowtie2, uno de los mapeadores más afamados junto con BWA. La denominación 2 es porque usaremos la versión 2 del programa. Es necesario incluir la localización de este programa en el PATH de Linux porque Tophat debe ser capaz de encontrar el programa
- samtools, que se lanza bajo linux con esta orden $samtools. Samtools se usa para estudiar y manipular los archivos de resultado bam/sam que son los archivos resultado del mapeo que Tophat (y otros programas) nos van a proporcionar
- SAM (Sequence Aligment Map) es un archivo de texto no comprimido. BAM es el mismo archivo SAM pero comprimido y por tanto, es binario. El programa samtools convierte ambos formatos
- Puedes acceder a las especificaciones de los archivos SAM/BAM desde este enlace. Fíjate en particular en los códigos FLAG y CIGAR
- Si se desea obtener más información sobre una utilidad en particular de las incluidas en samtools, se le invoca directamente, por ejemplo $samtools view
- samstat, que se lanza bajo linux con la orden $samstat, que nos proporciona un documento HTML5 con la calidad del mapeo obtenido con TopHat u otros programas
- IGV, o integrative genome viewer que nos va a dar información gráfica sobre el mapeo RNA-Seq
- htsec-count que nos sará el contaje (raw, sin normalizar) de los mapeos asignados en el genoma de referencia
- Si tienes un ordenador propio que tiene instalado Linux, haz una copia de las secuencias localmente. Te hará falta el genoma de referencia, el GTF, y las dos secuencias stranded
- Si no tienes un ordenador con una instalación local de Linux habrás de trabajar como es acostumbrado o bien en los ordenadores de las aulas de la UCO o mediante una conexión con ts.uco.es
- Antes que nada, deberíamos hacer un control de calidad de las secuencias con ayuda de FastQC. Lo haremos sobre las secuencias incluidas en la carpeta /usr/local/uco/bms/practica3/stranded. Debeis saber:
- Si las secuencias son pareadas o no.
- Y si son secuencias pareadas, si los archivos están sincronizados, esto es, que cada lectura tenga su compañero (mate) en el otro archivo. O dicho de otro modo, que no haya lecturas huérfanas. Lo podéis hacer con un wc -l (para ver el número total de líneas), con un head y un tail, para comprobar que el encabezamiento o la cola del archivo son los mismos. Si veis que algo difiere de la normalidad, usad un programa que lo sincronize, como el programa reformat.sh del paquete BBMap
- Si todo es correcto, podemos hacer el mapeo de las lecturas de RNA-Seq.
- Como TopHat mapea usando bowtie2, tenemos que indexar con bowtie2 el genoma de referencia
- Haz un "ls -l" de la carpeta /usr/local/uco/bms/practica3/reference para ver el contenido. Analiza qué es cada archivo
- Como no tenemos permiso para escribir en la carpeta pública /usr/local/uco/bms, y tenemos los problemas de espacio en nuestras carpetas locales le he pedido al administrador de la UCO que nos grabe en la carpeta reference los archivos de índice creado por bowtie2-build. Los encontramos en la carpeta reference.
- Lanza la orden bowtie2-build path_al_archivo/reference/chr1.fa chr1 (tendrás que hacerlo desde un sitio donde tengas permiso de escritura)
- Cuando veas que está funcionando, puedes optar por dejarlo andar o hacer un Control-C para detener el proceso. Y es que puedes o no tener espacio en tu cuenta personal para que se puedan crear esos archivos de índice. Por eso, y por prevenir, le he pedido al administrador que cree los archivos por nosotros que se ha guardado en /usr/local/uco/bms/practica3/reference
- Mira en la carpeta que archivos nuevos se han creado
- Mapea las secuencias contenidas en /usr/local/uco/bms/practica3/stranded con tophat usando la siguiente información
- que el insert size de los fragmentos shotgun es de 450, con una desviación estándar de 350 (siempre referido a bases)
- Ejecuta Tophat y mira todos los parámetros con los que se puede configurar. Anótalos. Puedes lanzar la orden $tophat >& ayuda.tophat para crear un archivo que luego con $less ayuda.tophat puedas ver cómodamente
- Vamos a crear un script para hacerlo todo más cómodo. Si tienes fallos o quieres añadir o quitar algo, lo puedes hacer con el editor vi o pico
- Crea una carpeta en el directorio temporal con mkdir /tmp/tu_login (donde tu_login es el nombre de tu cuenta, en mi caso, tu_login es bb1rofra)
- Escribe cat > tophat.sh (enter) o con pico tophat.sh
- #! usr/bin/bash (enter)
- $tophat -o /tmp/tu_login/TOPHAT \(enter)
- --no-coverage-search \(enter)
- -r 450 # La distancia entre las lecturas en el fragmento
- --mate-std-dev 350 \(enter) # La desviación estándar de la distancia
- -p 4 \(enter) # Usará cuatro núcleos. Si tienes más, aumenta el número
- -G /usr/local/uco/bms/practica3/reference/gencode_v18_chr1.gtf \(enter)
- --library-type fr-firststrand \(enter) # Esto es porque es stranded con el método dUTP
- /usr/local/uco/bms/practica3/reference/chr1 \(enter) # Este es el índice
- /usr/local/uco/bms/practica3/stranded/H1hesc_R1_chr1.fastq \(enter)
- /usr/local/uco/bms/practica3/stranded/H1hesc_R2_chr1.fastq(enter)
- (acaba el archivo y terminalo dándole a un Control + D)
- Recuerda darle permisos de ejecución con chmod. En ese caso has de ejecutarlo como siempre, con el ./tophat.sh. O eso, o lo ejecutas con la orden bash tophat.sh aunque no tenga permiso de ejecución
- Explicación
- - o /tmp/tu_login/TOPHAT creará esa carpeta donde los resultados que TopHat genere serán guardados. Recuerda que antes de ejecutar este script deberás crear la carpeta /tmp/tu_login
- --no coverage-search es en un principio prescindible. El cálculo de la cobertura exige tiempo y por eso no lo haremos en esta práctica (fíjate que hay un doble guión al principio)
- -r 450 indica el tamano interno desconocido de los fragmentos. La separación entre los finales de las lecturas pareadas en un fragmento. Explicaremos en clase exactamente qué parte es la que hay que poner
- --mate-std-dev 350 indica a tophat como de variable son las secuencias pareadas en longitud (fíjate el doble guión del principio)
- Al introducir el archivo GTF en tophat se consiguen dos cosas. Por un lado introducir el nombre del gen al que mapea dentro del archivo resultado. Otro proposito es tener en cuenta la información de los exones e intrones que hay en la secuencia GTF como ayuda en el mapeo y para hacer el splicing. De esa forma se hace un mapeo asistido porque permite al programa generar un transcriptoma canónico, el especificado en el archivo GTF
- --library-type fr-firststrand indica qué librería se está usando. En este caso se usa una librería stranded hecha con dUTP. Eso lo sabéis vosotros cuando hacéis la librería al pactarlo con la empresa de secuenciación (fíjate el doble guión del principio)
- /usr/local/uco/bms/practica3/reference/chr1 senala al programa el lugar donde están los archivos índice del genoma de referencia. Como el índice tiene el mismo nombre que la secuencia fasta, se reconocen mutuamente
- y en las dos ultimas partes debes indicar el path y el nombre de las dos secuencias pareadas
- Cuando ejecutes tophat, ve mirando lo que aparece en la pantalla y describe más o menos lo que está haciendo. Descubriras que
- hace algún filtrado de las secuencias por calidad.
- cómo invoca a bowtie2 para hacer los alineamientos para comprobar que el programa está disponible. Recuerda que TopHat no hace los mapeos, solo gestiona el uso del programa mapeador (bowtie2) para hacerlo sensible a la presencia de splicing o ayustamiento
- como usa la información del gtf para generar un transcriptoma, y como lo indexa con bowtie2-build. La generación de este transcriptoma permite mapear las lecturas "canónicas", las ya conocidas y reconocidas, con lo que ahorra bastante tiempo porque no tiene necesidad de "romper" las lecturas en las "junctions"
- que empieza a mapear las lecturas izquierda y derecha con ese transcriptoma
- que guarda por un lado las lecturas que han mapeado con ese transcriptoma y las que no han mapeado
- que luego "rompe" las lecturas que no han mapeado en 2-3 trozos (depende de la longitud de las lecturas) y las vuelve a mapear
- Cuanto termine, haz como mínio una copia del archivo accepted_hits.bam en tu cuenta personal. Ahora trabajaremos con ella
VIENDO LOS ALINEAMIENTOS CON IGV
- Abre IGV invocándolo directamente desde Linux. IGV es un programa creado en JAVA que funciona con cualquier sistema operativo. Dispones de un tutorial y de una guía de usuario en este enlace. El programa se ha instalado en la UCO, pero puede descargarse localmente e incluso ejecutarse desde la propia página IGV
- Abre el programa y ejecuta File / New Session para empezar desde cero
- Si ves que hay cargado datos, pulsa con el botón derecho del ratón sobre la columna izquierda que contiene esos datos y dale a la opción Remove Track. Esto hay que hacerlo porque IGV se carga de forma predeterminada con el genoma humano completo
- Con la opción Genomes, carga el archivo chr1.fa. Antes, deberás hacer una copia de él en tu carpeta principal, porque para usarlo, tendrás que tener permisos de escritura en dicha carpeta.
- Con la opción File, ve incorporando dentro de IGV el correspondiente archivo gtf de anotaciones. El programa te avisará de que tiene que indexarlo, pero lo hará él automaticamente siempre que tengas una copia de este archivo en tus carpetas con permisos de escritura. En este momento tienes un archivo fasta con la secuencia cargada en el programa, y además, su correspondiente archivo de anotaciones que describe dónde están los genes, sus nombres y propiedades, y los distintos elementos que contiene, en particular los intrones.
- Juega con el nivel de zoom (hay una barra con un menos y un más en la parte superior derecha) para ver la información de los genes. Es importante que tengas en cuenta el nivel de zoom, porque a elevados valores, no serás capaz de ver nada.
- Juega con el botón derecho del menú para ver cuántas isoformas hay descritos en estos genes (opción Expanded o Squished)
- Juega con las otras opciones para ver lo que hace el programa
- Acude a la ayuda o Guía de Usuario del programa
- Acude al canal de Youtube que explica muchas de las propiedades que tiene este programa
- Ahora ejecuta esta orden samtools index accepted_hits.bam. Esto sirve para indexar (ordenar) el archivo bam para que funcione correcta y más rapidamente dentro del programa. Se va a generar un archivo de índice con la terminación *bai. Ten en cuenta que los archivos BAM contienen una gran cantidad de información. La indexación permite su uso más rápido y racional
- Ahora carga el archivo accepted-hits.bam. Se cargarán a la vez la información de los alineamientos, y el archivo índice. SI no has generado un archivo índice con el mismo nombre que el bam, el programa te lo va a indicar
- Verás como lo acepta sin problemas, siempre que mantengas el archivo bai de índice en el mismo directorio que su correspondiente archivo bam del que procede
- Maneja las diferentes partes del programa y familiarizate sobre todo con los niveles de zoom hasta ser capaz de ver las lecturas
- Selecciona en el campo que está a la izquierda de Go la zona chr1:226040038-226045165 (aunque el propio programa le ponga comas, no hace falta ponerlas al escribirlas)
- Mira la información de la cobertura de la secuenciación y algunos colores en algunas columnas. Debes tener en cuenta que son muy pocas las lecturas que hemos incluido en el mapeo. Puedes optar por mapear las lecturas de las secuencias pareadas que usamos para ensamblar el genoma de E.coli y un genoma de Ecoli para ver una cobertura mayor
- Mira la correspondencia de las lecturas con la de los intrones indicados por el programa
- Fíjate en los límites de las lecturas que definen los exones/intrones
- Centra la página donde ves los colorines en las columnas de la cobertura ¿A qué crees que se corresponden?
- Juega con el nivel de zoom hasta llegar a ver las bases
- Juega con el menú del botón derecho del raton y los niveles de zoom para ver las variantes
- Mira en la parte de abajo donde se señala la posición de la secuencia indicada por el ratón. Busca la base 226040705 e indica qué es lo que ves
- Mira en esta región chr1:226,037,699-226,037,738 e indica qué significa los colores que aparecen en la cobertura del alineamiento
- Si re preguntas por qué ves lecturas en color rojo, mira esta página sobre el color dependiendo del tamaño del inserto. Si de veras quieres sacarle partido a este programa, no tendrás mas remedio que leerte la guía de usuario del programa
- Mira en ESTA PÁGINA para ver como se interpretan las orientaciones de las lecturas y cómo se descubren las reorganizaciones génicas, duplicaciones en tandem, translocaciones en el mismo cromosoma, etc
- Mira esta página para ver cómo se pueden ver las "splice junctions" a través de las Sashimi plots. Más información sobre las Sashimi plots en esta página
- Ya que TopHat te da los archivos BED tanto de las inserciones como de las delecciones,
- Busca información sobre cómo se representan estas lecturas mapeadas desde ESTA PÁGINA
- Busca con IGV estas zonas
- chr1:150226611-150247125
- chr1:18745 (para que veas que también se puede buscar una sola base)
- Busca mutaciones o fallos en la secuenciación seleccionado esta región en IGV chr1:150233921-150234000
- Explora los límites de las lecturas jugando con los niveles de zoom y mira si corresponden a los límites de los exones señalados por el archivo gtf (por ejemplo chr1:150233801-150234120)
- Carga el archivo gtf para ver cómo las lecturas se ajustan a los perfiles de los exones, y cómo muchas de las lecturas se han tenido que "romper" para alinearlas al genoma de referencia dejando un intrón en su interior
- Carga el archivo de junctions (junctions.bed) que TopHat te ha proporcionado, y juega con el botón derecho del ratón para verlo
- Busca información sobre el programa y por qué dibuja con diferentes colores las lecturas (http://software.broadinstitute.org/software/igv/DefaultDisplay)
- (opcional) Lanza el programa tophat con las mismas secuencias, pero esta vez senala --library-type fr-unstranded. Cárgalo todo en IGV y dime si ves algunas diferencias. Se generará un nuevo archivo bam que deberás indexar previamente con samtools para conseguirlo representar dentro de IGV
TRABAJANDO CON LOS ARCHIVOS DE ALINEAMIENTO O MAPEO EN FORMATO SAM/BAM
- Ejecuta por primera vez la orden $samtools
- Mira los diferentes subprogramas u opciones que tiene. En un principio te agrupa los subprogramas que tiene por funciones
- Entre en las diferentes opciones de las opciones invocando samtools y la correspondiente opción (por ejemplo, usando samtools view)
- Busca una opción con samtools que te de la estadística del archivo accepted_hits.bam que ha creado tophat (samtools flagstat accepted_hits.bam)
- Mira el contenido de este archivo bam con la orden samtools view (usando o no un pipe con las órdenes head, tail, more o less)
- Busque la orden que le permita ver la cabecera del archivo accepted_hits.bam con la orden samtools view (nota: esto es por que observe que si trabaja con un BAM, la orden samtools view no aporta información de la cabecera del archivo)
- Busque el modo de ver sólo una región del archivo accepted_hits.bam
- Mira ESTA PÁGINA y vamos a jugar un poco con la información que podemos obtener del archivo accepted_hits.bam. Por ejemplo:
- Estudie el formato del archivo accepted_hits.bam con la orden samtools view | less -S
- Haga corresponder cada campo (columna) con la información que proporciona
- Vamos a usar la información proporcionada en esta página o la suminsitrada por samtools flags N (donde N es el valor del FLAG) para interpretar lo que tenemos
- Interprete lo que significa el FLAG 99
- Interprete lo que significa el FLAG 147
- Interprete lo que significa el FLAG 577
- Como alternativa a la página anterior, lance la orden samtools flags para ver qué ordenes puede dar
- Ejemplo: samtools flags UNMAP indicará que el código hexadecimal es el 0X4 ó el decimal 4 para indicar un par concordante
- Mire lo que hace la opción samtools view -f y samtools view -F
- ejemplo: samtools view -f 4 | head (o wc -l) dará información o el número de lecturas que no mapean
- samtools view -F 4 dará información de todas las lecturas que mapean, porque -F (en mayúsculas) da la información contraria que -f
- Investigue lo que significa buscar con el FLAG 66. ?¿Cuantas lecturas hay? (samtools view -f 66 accepted_hits.bam).
- Extraiga estas lecturas en un archivo para poder verlas representadas luego en IGV
- Mire lo que significa el flag 6 y el flag 7.
- Busque con -F 6 las lecturas que son mapeadas y pareadas
- Busque con -F 7 las lecturas que son mapeadas, pareadas y concordantes o correctamente mapeadas
- Busque las lecturas que son mapeadas, pareadas y no concordantes con la combinación -F 6 y -f 1
- Haga sumas y restas con las opciones 4, 5 y 6 a ver si salen las cuentas
- Vamos a usar la información del campo RNAME para ver qué lecturas no han sido mapeadas. Buscaremos en el archivo de especificaciones y aplicaremos una orden samtools view adecuada
- Vamos a usar la información del campo CIGAR
- Para ver cuantas lecturas contienen intrones (col 6, CIGAR, buscando la letra N). Use para ello la orden cut para aislar la sexta columna, y la orden grep para encontrar lineas con N
- Para ver la longitud de los intrones
- para ver cuantas lecturas tienen inserciones relativas al genoma de referencia
- para ver cuál es la longitud de esas inserciones
- Mire el significado del valor RNAME, y busque cuantas lecturas han quedado sin mapear
- Ordena por nombres o por coordenadas el archivo accepted_hits.bam con la orden adecuada de samtools.
- Si lo ordenas por coordenadas, lo puedes usar directamente en un programa explorador de genomas como IGV o IGB
- Si lo ordenas por nombres, lo puedes usar con programas como HTSeq-count para obtener una tabla que contiene los nombres de los genes y las cuentas, listo para ser usado en RNA-Seq
- Vamos a preparar el archivo BAM con samtools
par poder usarlo con otros programas o para ver información del mapeo (una ayuda la puedes obrtener desde los propios comandos, o desde esta página)
- Indexa el archivo accepted_hits.bam con la orden samtools index accepted_hits.bam. Verás que se crea el archivo de índice .bai. Como toda indexación, esto permite acelarar y optimizar el uso de estos archivos
- Indexa el archivo chr1.fasta con la orden samtools faidx chr1.fa. Como veis, también se puede indexar los archivos fasta
- Mira la cabecera del archivo con esta orden samtools view -H accepted_hits.bam. Deduzca qué información obtiene de dicha cabecera: Observará los cromosomas que contiene, así como información de si el archivo está ordenado y el criterio de ordenación, que puede ser por coordenadas o por alfabeticamente por el nombre del gen
- Mira una parte del archivo sam/bam con la orden samtools view accepted_hits.bam chr1:150226611-150247125
- Genera un nuevo archivo que contenga solo la parte anterior usando un ">" y el un nuevo archivo con un nuevo nombre de archivo
- Mira la ayuda de samtools tview
(explora el modo de uso)
- Visualiza los alineamientos en formato texto en una posición determinada con samtools tview -d T -p chr1:150233900-150234034 accepted_hits.bam chr1.fa (corresponde a una región donde hay lecturas)
- Visualiza los alineamientos en un modo interactivo con samtools tview -d C -p chr1:150233900-150234034 accepted_hits.bam chr1.fa (corresponde a una región donde hay lecturas)
- Mira los datos en formato mpileup (apilados) con la orden samtools mpileup -f chr1.fa accepted_hits.bam (requiere que el archivo fasta esté indexado con samtools faidx)
- Genera un archivo de variantes en formato VCF no comprimido con la orden samtools mpileup -v -u -f chr1.fa accepted_hits.bam > variantes.vcf
- Aprovecha que has generado el archivo de variantes, para cargarlo en IGV siguiendo las instrucciones indicadas en esta página
- Podrias investigar cómo se puede hacer un diagnóstico con los archivos vcf. Busca y mira páginas que usen arhivos vcf de variantes
- Genera el mismo archivo de variantes en formato BCF comprimido con la orden samtools mpileup -g -f chr1.fa accepted_hits.bam > variantes.bcf
- Elimina los duplicados de PCR con la orden samtools rmdup accepted_hits.bam > accepted_hits_noPCR.sam
- Convierte el archivo archivo accepted_hits.bam al formato de texto normal SAM para ser capaz de ver y leer su contenido. Busca en samtools como hacerlo.
- Regenere desde un archivo BAM todos las lecturas que han sido mapeadas en un archivo fastq. Búsca cómo se hace.
- Regenere desde un archivo BAM todas las lecturas a un archivo fasta. Búsca cómo se hace.
- Mira que orden hay que dar para concatenar o unir dos o más archivos BAM en un único archivo
- Obtén solo la cabecera del archivo BAM/SAM e indica qué información proporciona. Deberás buscar en la ayuda de samtools view cómo hacerlo.
- Ahora haremos un análisis control de calidad del archivo bam de mapeo con samstat. Busca este programa con Google e invocalo directamente con samstat y el nombre del archivo bam. Verás que se genera un archivo html. Abrelo y analizalo.
- Si quieres sacarle más partido a los archivos BAM/SAM mira las utilidades del conjunto de programas Piccard
- Y ahora jugaremos con Rstudio (que está instalado en la UCO con ciertas limitaciones) y esta página WEB que te da información sobre R
- Y hágamos ahora una extracción de cuentas con el programa htseq-count htseq-count -f bam -s yes -m intersection-strict accepted_hits.bam gencode_v18_chr1.gtf > Contaje_genes.txt. Deberás ver la ayuda del programa para entender que hacen estos cualificadores (-f, -s, -m...)
- Esta extracción de cuentas es el preámbulo para realizar el estudio de RNA-Seq final.
- Puedes disponer de un archivo con las cuentas en este directorio de la UCO /usr/local/uco/bms/practica5. De hecho, la usaremos si nos da tiempo para hacer un análisis de expresión diferencial con algunos de los muchos tutoriales que hay en internet para ello
- Se ha de realizar un mapeo independiente por cada una de las muestras, y luego, una extracción de las cuentas con ayuda de htsec-count para obtener un fichero independiente cada uno. Quiero decir que si tienes tres replicas biológicas en un experimento, con dos condiciones distintas, eso implicará que tienes que hacer 6 mapeos en total. Con htseq-count deberás hacer 6 determinaciones indpendientes de las cuentas, cuya naturaleza (tipo de tratamiento, numero y tipo de replica biológica) será reflejada dentro de los programas bajo R (como DESeq2, EdgeR, limma, etc) como factores. Puedes disponer de una ayuda básica de R desde este documento
Tareas y prácticas opcionales y más información
- Las especificaciones oficiales de un archivo SAM (en formato pdf)
- Puedes ver qué significa los valores de FLAG desde todos estos enlaces
- desde esta página (solo funciona en decimal)
- Desde esta otra página en la que ves los flags en binario, decimal y hexadecimal
- Desde esta otra (muy recomendada) para ver algunos valores de FLAGS más característicos (en formato pdf)
- O en esta slideshare (a partir de la diapositiva 32). En esta diapositiva se explica también lo que es un SAM/BAM
- Puedes descargar una publicación PDF que te indica todo lo relacionado con archivos SAM/BAM
- Aquí puedes ver información sobre el pileup incluido en SAM
- Mira esta página para obtener un pequeno tutorial de cómo usar samtools
- Mira esta página para ver cómo se puede utilizar samtools para extraer información sobre el mapeo
- Otro tutorial (magnifico) de cómo usar samtools
- Cómo puedes obtener información de las variantes usando samtools para generar un archivo VCF
- Mira esta página si quieres ver un tutorial sobre IGV
- Un PDF que da indicaciones de cómo hacer un experimento de expresión diferencial con R y el paquete DESeq2
- La ayuda del propio paquete DESeq2 ya da las pautas para aprender a realizar un estudio de expresión diferencial
- Este otro tutorial ya hace algo más que un análisis de expresión diferencial: realiza enriquecimientos funcionales para interpretar lo que se está expresando diferencialmente
- Otro magnifico tutorial que obtiene datos de lecturas desde la base de datos NCBI GEO
- y este último como se integra RStudio para hacer otro tutorial
Significado de los flags
BitHx BitDec Info ------ --------------------------------------------------------------------------
0x0001 1 the read is paired in sequencing, no matter whether it is mapped in a pair
0x0002 2 the read is mapped in a proper pair (depends on the protocol, normally inferred during alignment) 1
0x0004 4 the query sequence itself is unmapped
0x0008 8 the mate is unmapped 1
0x0010 16 strand of the query (0 for forward; 1 for reverse strand)
0x0020 32 strand of the mate 1
0x0040 64 the read is the first read in a pair (see below)
0x0080 128 the read is the second read in a pair (see below)
0x0100 256 the alignment is not primary (a read having split hits may have multiple primary alignment records)
0x0200 512 the read fails platform/vendor quality checks
0x0400 1024 the read is either a PCR duplicate or an optical duplicate