stringtranslate.com

Ensamblador de terciopelo

Velvet es un paquete de algoritmos que ha sido diseñado para manejar el ensamblaje de genomas de novo y alineaciones de secuenciación de lecturas cortas . Esto se logra mediante la manipulación de gráficos de De Bruijn para el ensamblaje de secuencias genómicas mediante la eliminación de errores y la simplificación de regiones repetidas. [2] Velvet también se ha implementado en paquetes comerciales, como Sequencher , Geneious , MacVector y BioNumerics .

Introducción

El desarrollo de secuenciadores de nueva generación (NGS) permitió una mayor rentabilidad en la secuenciación de lecturas muy cortas. La manipulación de los gráficos de De Bruijn como método de alineación se volvió más realista, pero se necesitaban más desarrollos para abordar problemas con errores y repeticiones. [3] Esto condujo al desarrollo de Velvet por Daniel Zerbino y Ewan Birney en el Instituto Europeo de Bioinformática en el Reino Unido. [4]

Velvet funciona manipulando de manera eficiente los gráficos de Bruijn mediante la simplificación y la compresión, sin pérdida de información gráfica, al hacer converger caminos que no se intersecan en nodos individuales. Elimina errores y resuelve repeticiones utilizando primero un algoritmo de corrección de errores que fusiona las secuencias. Luego, las repeticiones se eliminan de la secuencia a través del solucionador de repeticiones que separa los caminos que comparten superposiciones locales.

La combinación de lecturas cortas y pares de lecturas permite a Velvet resolver repeticiones pequeñas y producir contigs de longitud razonable. Esta aplicación de Velvet puede producir contigs con una longitud N50 de 50 kb en datos procariotas de extremos emparejados y una longitud de 3 kb para regiones de datos de mamíferos .

Algoritmo

Como ya se mencionó, Velvet utiliza el gráfico de De Bruijn para ensamblar lecturas cortas. Más específicamente, Velvet representa cada k-mero diferente obtenido a partir de las lecturas por un nodo único en el gráfico. Dos nodos están conectados si sus k-meros tienen una superposición de k-1. En otras palabras, existe un arco desde el nodo A hasta el nodo B si los últimos k-1 caracteres del k-mero, representados por A, son los primeros k-1 caracteres del k-mero representado por B. La siguiente figura muestra un ejemplo de un gráfico de De Bruijn generado con Velvet:

Figura 1: Ejemplo de hash de lectura y gráfico de Bruijn correspondiente

El mismo proceso se realiza simultáneamente con el complemento inverso de todos los k-meros para tener en cuenta las superposiciones entre las lecturas de cadenas opuestas. Se pueden realizar varias optimizaciones sobre el gráfico, que incluyen la simplificación y la eliminación de errores.

Simplificación

Una forma sencilla de ahorrar costes de memoria es fusionar nodos que no afecten a la trayectoria generada en el grafo, es decir, siempre que un nodo A tenga un solo arco de salida que apunte al nodo B, con un solo arco de entrada, se pueden fusionar los nodos. Es posible representar ambos nodos como uno solo, fusionándolos y toda su información. La siguiente figura ilustra este proceso en la simplificación del ejemplo inicial.

Figura 2: Gráfico de De Bruijn simplificado

Eliminación de errores

Los errores en el gráfico pueden ser causados ​​por el proceso de secuenciación o simplemente podría ser que la muestra biológica contenga algunos errores (por ejemplo, polimorfismos ). Velvet reconoce tres tipos de errores: puntas, burbujas y conexiones erróneas.

Consejos

Un nodo se considera una punta y debe borrarse si está desconectado en uno de sus extremos, la longitud de la información almacenada en el nodo es menor a 2k y el arco que conduce a este nodo tiene una multiplicidad baja (número de veces que se encontró el arco durante la construcción del grafo) y, como resultado, no se puede comparar con otros caminos alternativos. Una vez eliminados estos errores, el grafo vuelve a someterse a una simplificación.

Figura 3: Ejemplo de puntas

Burbujas

Las burbujas se generan cuando dos caminos distintos comienzan y terminan en los mismos nodos. Normalmente, las burbujas son causadas por errores o variantes biológicas. Estos errores se eliminan utilizando el algoritmo Tour Bus, que es similar al algoritmo de Dijkstra , una búsqueda en amplitud que detecta el mejor camino a seguir y determina cuáles deben eliminarse. En la figura 4 se muestra un ejemplo sencillo.

Figura 4: Ejemplo de borrado de burbujas

Este proceso también se muestra en la figura 5 siguiendo los ejemplos mostrados en las figuras 1 y 2.

Figura 5: Ejemplo de detección de burbujas

Conexiones erróneas

Se trata de conexiones que no generan rutas correctas o no crean estructuras reconocibles dentro del grafo. Velvet borra estos errores una vez finalizado el algoritmo Tour Bus, aplicando un corte de cobertura simple que debe ser definido por el usuario.

Comandos de terciopelo

Velvet proporciona las siguientes funciones:

terciopelo
Este comando ayuda a construir el conjunto de datos (hashes de las lecturas) para velvetg e incluye información sobre el significado de cada archivo de secuencia.
terciopelo
Este comando construye el gráfico de De Bruijn a partir de los k-meros obtenidos por velveth y ejecuta la simplificación y la corrección de errores sobre el gráfico. Luego extrae los contigs.

Después de ejecutar velvetg, se generan varios archivos. Lo más importante es que un archivo de contigs contiene las secuencias de contigs de más de 2k de longitud, donde k es la longitud de palabra utilizada en velveth.

Para obtener más detalles y ejemplos, consulte el Manual Velvet [5].

Motivación

Las tecnologías actuales de secuenciación de ADN, incluida la NGS, son limitadas debido a que los genomas son mucho más grandes que cualquier longitud de lectura. Por lo general, las NGS funcionan con lecturas pequeñas, de menos de 400 pb, y tienen un costo por lectura mucho menor que las máquinas de primera generación anteriores . También son más simples de operar, con mayor operación en paralelo y mayor rendimiento. [3]

Sin embargo, las lecturas cortas contienen menos información que las lecturas más largas, por lo que se requiere una mayor cobertura de lecturas de ensamblaje para permitir superposiciones detectables. Esto, a su vez, aumenta la complejidad de la secuenciación y aumenta significativamente los requisitos computacionales. Una mayor cantidad de lecturas también aumenta el tamaño del gráfico de superposición, lo que hace que sea más difícil y largo de calcular. Las conexiones entre las lecturas se vuelven más indistintas debido a la disminución de las secciones superpuestas, lo que genera una mayor posibilidad de errores.

Para superar estos problemas, se desarrollaron programas de secuenciación dinámica que son eficientes, muy rentables y capaces de resolver errores y repeticiones. Los algoritmos Velvet fueron diseñados para esto y son capaces de realizar alineaciones de secuenciación de novo de lectura corta en un tiempo computacional relativamente corto y con un uso de memoria menor en comparación con otros ensambladores. [6]

Interfaz gráfica

Uno de los principales inconvenientes en el uso de Velvet es el uso de la interfaz de línea de comandos y las dificultades que los usuarios, especialmente los principiantes, encuentran en la implementación de sus datos. En 2012 se desarrolló una interfaz gráfica de usuario para el ensamblador Velvet diseñada para superar este problema y simplificar el funcionamiento de Velvet. [7]

Véase también

Referencias

  1. ^ Zerbino, DR (2010). "Uso del ensamblador Velvet de novo para tecnologías de secuenciación de lectura corta". En Andreas D. Baxevanis (ed.). Uso del ensamblador Velvet de novo para tecnologías de secuenciación de lectura corta . Vol. 31. pp. Unidad 11.5. doi :10.1002/0471250953.bi1105s31. ISBN 978-0471250951. PMC  2952100 . PMID  20836074. {{cite book}}: |journal=ignorado ( ayuda )
  2. ^ Zerbino, DR; Birney, E. (2008). "Velvet: ensamblaje de novo utilizando lecturas muy cortas". Consultado el 18 de octubre de 2013.
  3. ^ ab Miller, JR; Koren, S; Sutton, G (2010). "Algoritmos de ensamblaje para datos de secuenciación de próxima generación". Genómica . 95 (6): 315–27. doi :10.1016/j.ygeno.2010.03.001. PMC 2874646 . PMID  20211242. 
  4. ^ Zerbino, DR; Birney, E. (2008). "Velvet: Algoritmos para el ensamblaje de lecturas cortas de novo utilizando grafos de Bruijn". Genome Research . 18 (5): 821–829. doi :10.1101/gr.074492.107. PMC 2336801 . PMID  18349386. 
  5. ^ "Manual de Velvet" Consultado el 18 de octubre de 2013
  6. ^ Zhang, W.; Chen, J.; Yang, Y.; Tang, Y.; Shang, J.; Shen, B. (2011). "Una comparación práctica de herramientas de software de ensamblaje de genoma de novo para tecnologías de secuenciación de próxima generación". PLOS ONE . ​​6 (3): e17915. Bibcode :2011PLoSO...617915Z. doi : 10.1371/journal.pone.0017915 . PMC 3056720 . PMID  21423806. 
  7. ^ Powell, DR; Seemann, T (2013). "VAGUE: Una interfaz gráfica de usuario para el ensamblador Velvet". Bioinformática . 29 (2): 264–5. doi : 10.1093/bioinformatics/bts664 . PMID  23162059.