• No se han encontrado resultados

Reporte de proyecto de grado Alineador de secuencias en NGSEP

N/A
N/A
Protected

Academic year: 2022

Share "Reporte de proyecto de grado Alineador de secuencias en NGSEP"

Copied!
12
0
0

Texto completo

(1)

Facultad de Ingeniería

Departamento de Sistemas y Computación Germán Andrade 201511422

Reporte de proyecto de grado Alineador de secuencias en NGSEP Resumen

Se implementó un alineador de secuencias cortas contra un genoma referencia, con soporte para lecturas pareadas y capaz de cargar Short Tandem Repeats (STRs) y realinear los alineamientos en esas regiones. La motivación surge en primer lugar de la utilidad de este alineador en múltiples análisis biológicos dentro de los cuales se destaca la detección de variantes. En segundo lugar, las limitaciones existentes de las herramientas actuales teniendo en cuenta que el software desarrollado por el grupo de investigación del profesor Jorge Duitama (NGSEP), es un framework multiplataforma escrito en java y actualmente utiliza un alineador de secuencias escrito en C lo que dificulta la instalación y la usabilidad del producto para sus usuarios. El resultado obtenido es una primer versión del alineador de secuencias, escrito totalmente en java, con pruebas unitarias, soporte de lecturas pareadas y con una tasa de mapeo del 98%.

Introducción

La técnicas de secuenciación de nueva generación son ahora el standard para producir conocimiento genómico de un organismo (Schbath 2012). Lo anterior ya que permiten generar billones de bases por experimento a un bajo costo, tanto así que su tasa de crecimiento ha sobrepasado incluso a la ley de moore. Ahora bien, esto es posible dado que ahora tenemos secuencias de referencia que nos permiten disminuir el tamaño de la lectura y compararla contra la referencia para identificar variación genética (​Bentley​ 2008).

El desarrollo de la secuenciación pareada permite secuenciar ambos sentidos de los fragmentos de ADN y alinear las lecturas como lecturas pareadas tanto en el sentido lo que permite alinear lecturas sobre zonas repetitivas de manera más precisa. Además de producir el doble lecturas para el mismo tiempo las lecturas pareadas permiten alineamientos más exactos y la habilidad de detectar indels, lo cual no es posible con las lecturas sencillas (Bentley 2008).

Imagen 1. Proceso de alineamiento de lecturas pareadas

(2)

El alineamiento de secuencias es el primer paso en la mayoría de análisis sobre lecturas (Langmead, 2017). Consiste en alinear las lecturas cortas contra un genoma de referencia. En la imagen 2 vemos un ejemplo muy simplificado, el objetivo es encontrar las regiones en el genoma de referencia en donde encaja mejor la lectura. Puede darse el caso que la lectura tenga más de un alineamiento, pero algunos alineamientos pueden ser mejores que otros. Por ejemplo, el alineamiento 1 es perfecto ya que es un ​alineamiento exacto de la lectura, los alineamientos 2, 3 y 4 presentan 1 variación respecto a la lectura que puede ser producto de una mutación en el adn o de un error de secuenciación y por lo tanto son conocidos como alineamientos inexactos.

Imagen 2. Ejemplo de alineamiento simple de una lectura contra un genoma de referencia

Los resultados obtenidos son una primer versión del alineador de secuencias que soporta lecturas pareadas y permite el realineamiento cuando se encuentran regiones repetitivas, este alineador cuenta con pruebas unitarias y una tasa de mapeo de más del 98%, presentando un pequeño aumento en tiempo al compararlo con bowtie2 su principal competidor.

Actualmente, hay muchas formas de abordar el problema del alineamiento, la mayoría de las herramientas se basan en técnicas de hashing o en la transformada de burrows-wheeler. Estas estrategias nos brindan formas eficientes de realizar búsquedas exactas sobre el genoma de referencia, pero necesitan de estrategias adicionales para permitir las búsquedas inexactas.

Una de las estrategias más utilizada consiste en dividir la lectura en partes más pequeñas, llamadas semillas y realizar la búsqueda exacta con el objetivo de encontrar únicamente los alineamientos candidatos y extender los lugares donde se encontraron las semillas hasta llegar a una coincidencia de un tamaño similar al de la lectura (Schbath 2012).

Ahora bien, dado que el tamaño del genoma de referencia y la cantidad de lecturas pueden ser muy grandes se necesitan técnicas adicionales para disminuir la complejidad temporal y espacial de los algoritmos. Para el caso de los algoritmos basados en la transformada de burrows-wheeler es común el uso de un índice fm que en esencia es una estructura de datos que permite el almacenamiento del genoma de referencia de manera comprimida e indexada permitiendo mejoras en tiempo y espacio. Estas son las técnicas utilizadas por bowtie2 y BWA que son dos de los alineadores más populares, quienes además implementan una fase final de refinamiento sobre los alineamientos candidatos mediante el algoritmo de programación dinámica de Smith-Waterman (Langmead, 2012).

(3)

Identificación del problema y su importancia

La importancia del problema del alineamiento de lecturas contra un genoma de referencia no tiene que ver únicamente con la disminución en los costos de secuenciación y con el aumento de la salida de los secuenciadores, también, tiene que ver con la importancia de este proceso como inicio de muchos otros análisis biológicos y el impacto positivo al aumentar la calidad de los alineamientos, facilitar el uso de los frameworks y disminuir el tiempo de procesamiento.

Objetivos

En los últimos años, el grupo de investigación del profesor Jorge Duitama ha desarrollado el software NGSEP, el cual es un framework multiplataforma escrito en java para el análisis de lecturas de nueva generación cuya principal funcionalidad es el detector de variantes que permite hacer descubrimientos simultáneos de mutaciones (Perea ​et al​., ​2016​). El detector de variantes actualmente recibe como entrada el resultado del alineamiento de lecturas cortas, el cual puede ser producido por cualquiera de las herramientas anteriormente mencionadas. En su versión de interfaz gráfica, NGSEP integra el alineador bowtie2.

Aunque Bowtie2 es un excelente alineador de secuencias, el hecho de ser un programa escrito en C++ dificulta su integración en un framework multiplataforma como NGSEP. Se busca mejorar la usabilidad de NGSEP reemplazando bowtie2 por una herramienta equivalente, multiplataforma y escrita en Java.

Objetivos específicos

● Garantizar el correcto funcionamiento del alineador mediante la metodología TDD

● Soportar lecturas pareadas

● Soportar regiones repetitivas (STRs por sus siglas en inglés)

Diseño y especificaciones

Definición del problema

El problema del alineamiento de lecturas simples tiene dos entradas y una salida. En primer lugar recibe un archivo con el genoma de referencia, este archivo es básicamente una lista de cadenas de texto cada cadena representa un cromosoma y tiene un alfabeto de 5 letras donde cada letra representa un nucleótido (A, C, G, T, N) cada cadena puede ser muy grande dependiendo de la especie a la que pertenezca. El segundo lugar, recibe un archivo de lecturas que consiste en una lista donde cada lectura tiene un nombre, una cadena de nucleótidos y una cadena igual de larga de calidades.

Ahora bien, el archivo de salida contiene para cada lectura la posición en el genoma de referencia donde hubo alineamiento, además contiene diferentes flags dependiendo del alineamiento que hubo, por ejemplo si fue un alineamiento perfecto o hubo inserciones o deleciones, estos flags están en formato SAM.

(4)

El problema de alineamiento de lecturas pareadas tiene las mismas entradas del alineamiento simple y además una entrada adicional que es otro archivo de lecturas, sólo que éstas lecturas van en el sentido opuesto al otro archivo de lecturas. El objetivo es el mismo, pero esta vez se tiene información sobre ambas cadenas de adn, lo que permite alineamientos más acertados, así mismo, el archivo de salida debe reflejar para cada lectura si el alineamiento fue pareado, simple o si no hubo alineamiento.

Finalmente, el problema de las regiones repetitivas recibe un alineamiento, que consiste en una posición inicial relativa al genoma, una posición final y los flags, que contienen información sobre si hubo inserciones o deleciones. Además, recibe una lista con las regiones repetitivas y tiene como salida un nuevo alineamiento si el alineamiento inicial se sobrelapa con alguna región repetitiva.

Especificaciones

Requerimientos funcionales:

Alineamiento de lecturas pareadas: Dadas las lecturas en dirección positiva y negativa, y el genoma de referencia retornar el alineamiento si existe.

Regiones repetitivas: Dadas una lista de regiones repetitivas y un alineamiento, si el alineamiento sobrelapa con alguna de las regiones repetitivas retornar un nuevo alineamiento teniendo en cuenta que la información de la región repetitiva no es confiable.

Requerimientos no funcionales:

● Seguir la metodología de Test Driven Development con el objetivo de de garantizar el correcto funcionamiento del software

● Bajo consumo de memoria con el objetivo de que el software pueda correr en computadores personales sin problema para el genoma de humanos por ejemplo.

Restricciones

Tiempo: Las funcionalidades completas, el poster y este documento deben completarse en 12 semanas.

Mantenibilidad: NGSEP es un framework maduro, con más de 6 años en el mercado y cientos de usuarios, cada funcionalidad nueva debe ser independiente y debe poder mantenerse y actualizarse fácilmente.

Java: NGSEP debe ser un framework fácil de instalar y utilizar, dado que está desarrollado totalmente en Java tiene sentido desarrollar las funcionalidades en el mismo lenguaje.

La solución propuesta consiste realizar el alineamiento de lecturas simples mediante un índice fm, una estructura de datos que utiliza la transformada de burrows-wheeler para realizar búsquedas exactas de las lecturas en el genoma de referencia. Se procesan las lecturas y se dividen en fragmentos y se realiza la búsqueda exacta de estos fragmentos mediante el índice fm y luego se procesan los resultados para encontrar las lecturas candidatas. Ahora bien, Con las lecturas candidatas se procede a utilizar el algoritmo de Smith-Waterman que consiste en realizar un alineamiento local mediante programación dinámica.

(5)

Así mismo, el alineamiento de lecturas pareadas utiliza el alineamiento de lecturas simples con cada una de las lecturas y luego las procesa en paralelo para encontrarle a cada alineamiento el correspondiente compañero en la lectura que viene de la otra dirección y que cumple con las características de distancia y longitud. Sin embargo, si no existe un alineamiento con esas características la lectura se marca como simple.

Finalmente, el realineamiento de regiones repetitivas se lleva a cabo cargando el archivo de regiones repetitivas y realizando un proceso de aplanamiento para tener regiones repetitivas únicas. Además, el proceso de alineamiento de lecturas pareadas revisa si el alineamiento encontrado hace parte de una región repetitiva y lo realinea dependiendo del lugar donde se encuentre. Hay 3 casos principales, cuando la región repetitiva está a la izquierda del alineamiento, cuando está a la derecha o cuando está dentro.

Imagen 3. Casos de regiones repetitivas presentes en un alineamiento

Desarrollo del diseño

El diseño de las funcionalidades obedece a encajar dentro del framework preexistente, se siguió el patrón de programación orientada a objetos y se modelaron las entradas y salidas para cumplir los formatos esperados por el usuario. En primer lugar, para la funcionalidad de alineamiento de secuencias se requiere que el usuario previamente haya creado el índice fm para su genoma de referencia y se recibe únicamente la ruta del archivo de este índice, que también es generado por otra funcionalidad de NGSEP.

Gran parte de las abstracciones necesarias para modelar el problema ya estaban incluidas dentro del framework y por lo tanto se trató de reutilizar estas clases para reducir la duplicación del código, el desarrollo de las funcionalidades se llevó a cabo en la clase ReadsAligner que se encuentra dentro del paquete alignments.

(6)

Imagen 4. Diagrama de clases simplificado

El diseño de las pruebas obedece a los casos encontrados para cada funcionalidad y los objetos esperados dependiendo de cada entrada dada.

Recolección de información

NGSEP es una herramienta de consola de comandos principalmente, la interacción más común de un usuario con el Framework es a través del jar. De esta manera, el usuario elige la funcionalidad que desea ejecutar, provee los parámetros obligatorios y en ocasiones los opcionales y espera a que la instrucción se ejecute.

Test Driven Development (TDD) es una metodología de desarrollo en la cual los tests unitarios son desarrollados de manera prioritaria y antes de la implementación de funcionalidades. El objetivo es garantizar la calidad del producto en todo momento y realizar el desarrollo de manera ágil Además, aumenta la mantenibilidad del código ya que le permite al equipo de desarrollo de realizar cambios en el producto y detectar rápidamente errores (Siniaalto et al, 2007).

Implementación

En cuanto a la implementación del alineamiento simple se utilizó la estrategia de cortar las lecturas en varios pedazos y realizar la búsqueda exacta de estos. Posteriormente, se revisan las zonas donde varios pedazos se encontraron consecutivamente, si se tiene un archivo con las regiones repetitivas se revisa si el alineamiento pasa por alguna zona repetitiva, sino simplemente se utiliza el alineamiento local mediante el algoritmo de smith-waterman utilizando programación dinámica y se retorna el algoritmo resultante.

Ahora bien, para el alineamiento de lecturas pareadas se utiliza como base el alineamiento de lecturas simples. En primer lugar, se alinean las lecturas provenientes del archivo de lecturas 1 y el archivo 2. Luego, se procesan ambos alineamientos en paralelo y se trata de buscar la pareja de cada alineamiento si existe. Finalmente, se reportan los alineamientos pareados encontrados, los alineamientos simples y en caso de que no exista alineamiento.

(7)

La estrategia a utilizar en cuanto a los STRs consiste en pedirle al usuario un archivo con las regiones donde se han identificado regiones repetitivas e ignorar las regiones de los alineamientos que pertenecen a strs y enfocar los esfuerzos en alinear la región resultante del alineamiento. El primer paso, es ordenar estas regiones que provee el usuario y eliminar los sobrelapes que existan, de esta manera cuando se desee comprobar si un alineamiento hace parte de una región repetitiva basta con hacer una búsqueda binaria para encontrar la región o darse cuenta que no existe.

Ahora bien, cuando la región existe se han encontrado 3 casos en los que es posible realizar la realineación, el primero consiste en que la región repetitiva se encuentra a la derecha del alineamiento tal y como se muestra en la imagen 5a. En este caso, se realiza smith-waterman sobre el nuevo alineamiento y se ignora la región del sobrelape entre el alineamiento y la región repetitiva.

Imagen 5a. Región repetitiva a la derecha del alineamiento

De igual manera, cuando la región repetitiva está a la izquierda del alineamiento se reporta el sobrelape con la región repetitiva y se hace alineamiento local sobre el nuevo alineamiento.

Este caso es el mostrado en la imagen 5b.

Imagen 5b. Región repetitiva a la izquierda del alineamiento

(8)

Finalmente, el último caso es cuando la región repetitiva se encuentra dentro del alineamiento tal y como se observa en la imagen 5c, en este caso, se obtiene un alineamiento a la izquierda y otro a la derecha, se realiza alineamiento local sobre cada uno y se construye el alineamiento real a partir de ellos.

Imagen 5c. Región repetitiva dentro del alineamiento

Etapas

Dado que el proyecto estuvo orientado bajo la modalidad de Test Driven Development se identifican dos etapas principales en el desarrollo de cada funcionalidad, en primer lugar el desarrollo de los casos de prueba y la implementación de las pruebas unitarias y en segundo lugar la implementación de las funcionalidades con la mínima cantidad de código que permitiera que las pruebas unitarias salieran exitosas.

De esta manera, el proyecto se dividió en 4 etapas:

Etapa Fechas

Desarrollo de casos de prueba e implementación de pruebas unitarias para el alineamiento de lecturas pareadas

25/2/2019-10/3/2019

Implementación de alineamiento para lecturas pareadas 11/3/2019-24/3/2019 Desarrollo de casos de prueba e implementación de pruebas

unitarias para el realineamiento de regiones repetitivas

25/3/2019-8/4/2019

Implementación del realineamiento de regiones repetitivas 9/4/2019-5/5/2019

(9)

Resultados esperados

El principal resultado esperado es el alineador de secuencias que soporte lecturas pair-end y realineamiento de regiones repetitivas. Sin embargo, también se incluyen los tests unitarios con el objetivo de garantizar el correcto funcionamiento de la solución.

Validación

Métodos

La validación de la solución se llevó a cabo mediante tests unitarios, se creó un test para cada funcionalidad y se simularon los ambientes en los que debe correr el código, se generaron archivos temporales para probar el correcto funcionamiento de cada funcionalidad y al finalizar cada test estos archivos desaparecen. En primer lugar, se revisó la funcionalidad de lecturas pareadas, se simularon alineamientos en cada sentido de la lectura y se probó con la respuesta esperada de la funcionalidad.

Ahora bien, para la funcionalidad del realineamiento de regiones repetitivas fue necesario comprobar que la carga del archivo de regiones repetitivas fuera correcta, que el algoritmo de ordenamiento de las regiones fuera correcto y que los sobrelapes de las regiones se hayan eliminado. Además, se probó que cada uno de los casos de la posición de la región repetitiva fuera correcto y genera alineamientos consistentes.

Validación de resultados

Con el Apoyo de Luis Chica, estudiante de Biología se logró generar la gráfica mostrada en la imagen 6. Esta gráfica fue construida con datos simulados y nos permite comparar la cantidad de errores del algoritmo y compararlo contra las soluciones existentes. En el eje X se muestra el valor de 1-Especificidad que son los falsos positivos, en este caso la cantidad de errores cometidos en el alineamiento. Mientras, el eje Y muestra la sensitividad, es decir el porcentaje de alineamientos que mapean bien.

Imagen 6. Gráfica comparativa de Sensitividad vs Especificidad

(10)

La principal validación de los resultados es que los tests unitarios están pasando, estos representan un métrica importante y una herramienta invaluable, sobre todo a futuro. Ya que, cuando se deseen hacer cambios o agregar funcionalidades se podrá verificar fácilmente que estos cambios no perjudiquen el funcionamiento esperado.

A nivel del alineador de secuencias fue posible llegar hasta una tasa de mapeo de 98% en el genoma de levadura con lecturas pareadas. De esta manera, estos resultados demuestran que el alineador implementado cumple con las expectativas en comparación con la solución actual implementada en NGSEP.

Conclusiones

Discusión

En primer lugar, es importante resaltar que se cumplió el objetivo, se tiene una alineador de secuencias cortas contra un genoma de referencia que soporta lecturas pareadas y permite realinear regiones repetitivas. Por ejemplo, hay una región repetitiva conocida cromosoma IX de levadura entre la posición 180250 y 180267, la mayoría de alineadores trata de alinear esta región y no lo consigue por los STRs,en la imagen 7 se observa una comparación entre los alineamientos de NGSEP y de Bowtie2, NGSEP logra alinear esta región mientras Bowtie2 no.

Imagen 7. Visualización de alineamientos en el cromosoma IX de levadura 180100-180500 NGSEP vs Bowtie2

(11)

Ahora bien, el reto más grande fue el contexto biológico requerido para entender el problema y aterrizar las ideas y expectativas a una solución que cumpliera con las limitaciones impuestas. Otro reto importante fue seguir la metodología de Test Driven Development, ya que dada la naturaleza del proyecto la cantidad de datos que se tienen es muy grande y dada la limitación de almacenamiento en el repositorio no era viable subir todos los artefactos generados y necesarios. Como alternativa, se planteó el uso de los genomas existentes en el repositorio y el uso de una muestra representativa de las lecturas para las pruebas en lugar de realizar la carga completa de los datos.

Trabajo Futuro

En primer lugar, hay que resaltar que esta es una primera versión del alineador de secuencias, hay mucha oportunidad de mejora, por ejemplo el cálculo de la calidad del alineamiento, el desempeño y la manipulación de parámetros. Además, una integración del ordenamiento de los archivos BAM de salida puede representar una funcionalidad interesante para los usuarios de NGSEP.

En segundo lugar, una de las áreas más importantes de mejora es el tema de las pruebas automáticas. Dada la naturaleza de la información y los volúmenes de datos de las entradas hacer pruebas realistas representa múltiples retos, se hace necesaria la construcción de distintos artefactos para llevar a cabo las pruebas y se deben cubrir gran cantidad de escenarios y finalmente, se deben tener en cuenta distintos tipos de muestras para garantizar que el software funciona bien.

Finalmente, otra área de mejora es el tema de procesamiento paralelo, es posible aprovechar los múltiples hilos de ejecución de los computadores modernos con el fin de disminuir el tiempo de alineamiento, sin embargo, esto representa un reto a la hora de coordinar el procesamiento y de realizar una distribución de trabajo eficiente y que no deteriore la calidad del resultado final.

Referencias

● Schbath, S., Martin, V., Zytnicki, M., Fayolle, J., Loux, V., & Gibrat, J. F. (2012).

Mapping reads on a genomic sequence: an algorithmic overview and a practical comparative analysis. Journal of computational biology : a journal of computational molecular cell biology, 19(6), 796-813.

● Bentley​, D., et al (2008). Accurate whole human genome sequencing using reversible terminator chemistry

● Langmead, B (2017). A tandem simulation framework for predicting mapping quality

● Schbath, S., Martin, V., Zytnicki, M., Fayolle, J., Loux, V., & Gibrat, J. F. (2012).

Mapping reads on a genomic sequence: an algorithmic overview and a practical comparative analysis. ​Journal of computational biology : a journal of computational molecular cell biology​, ​19​(6), 796-813

(12)

● Langmead, B., & Salzberg, S. L. (2012). Fast gapped-read alignment with Bowtie 2.

Nature methods​, ​9​(4), 357-9. doi:10.1038/nmeth.1923

● Perea, C., De La Hoz, J. F., Cruz, D. F., Lobaton, J. D., Izquierdo, P., Quintero, J. C., Raatz, B. and Duitama, J. ‘Bioinformatic analysis of genotype by sequencing (GBS) data with NGSEP’, ​BMC Genomics​, Vol. 17, (2016) p. 498.

● Siniaalto, M., & Abrahamsson, P. (2007). A comparative case study on the impact of test-driven development on program design and test coverage. In Empirical Software Engineering and Measurement, 2007. ESEM 2007. First International Symposium on (pp. 275-284). IEEE.

● Gemayel, R., Vinces, M.D., Legendre, M., & Verstrepen, K.J. (2010). Variable tandem repeats accelerate evolution of coding and regulatory sequences. Annual review of genetics, 44, 445-77 .

Referencias

Documento similar