Creación y exploración rápida de pangenomas sin alineación
Lanzamiento: Desarrollo: @master:
FindMyFriends es un paquete R para realizar análisis pangenómicos de genomas microbianos. Se lanza como parte del proyecto Bioconductor y se puede instalar con la función BiocManager::install()
:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
Para obtener la última versión absoluta, instálela directamente desde GitHub:
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
En genómica microbiana comparada, un pangenoma se define como una agrupación de genes entre genomas basada en algún tipo de similitud. Esta medida de similitud no está escrita en piedra, pero a menudo se deriva de la comparación de cada par de genes entre sí. Esta es una mala idea por varias razones: comparar todos contra todos conduce a una escala horrible del tiempo computacional a medida que aumenta el número de genes, BLAST es en general muy lento y la similitud de secuencia por sí sola no puede distinguir los genes ortólogos de los parálogos. El último punto ha sido abordado por herramientas recientes como PanOCT y Roary, pero los dos primeros siguen en pie (aunque Roary hace algo inteligente para que sea un problema menor).
Ingrese a BuscarMis Amigos...
También es otro algoritmo. Pero lo más importante es que es un marco para realizar análisis de pangenoma que es completamente independiente de cómo se obtuvo su pangenoma en primer lugar. FindMyFriends define una lista ampliable de clases para manejar datos pangenomas de forma transparente y se conecta directamente a la amplia gama de herramientas genómicas que ofrece Bioconductor.
Bien, volvamos a los algoritmos. FindMyFriends funciona utilizando CD-Hit para crear una agrupación muy aproximada de los genes en su conjunto de datos y luego refina esta agrupación en una segunda pasada utilizando medidas de similitud adicionales. Esto contrasta con Roary, que utiliza CD-Hit, pero sólo para agrupar los genes más similares antes de ejecutar BLAST. El segundo paso en FindMyFriends es donde ocurre toda la magia. Los genes de cada grupo grande se comparan mediante similitud de secuencia (utilizando similitud de coseno kmer), longitud de secuencia, pertenencia al genoma y similitud de vecindad. En base a estas comparaciones, se crea un gráfico para cada grupo, con bordes que definen la similitud por encima de un cierto umbral entre genes. De este gráfico, las camarillas se extraen gradualmente de manera que se garantice que se extraigan primero las camarillas de mayor calidad. Estas camarillas definen la agrupación final de genes. Debido a que son camarillas, el usuario puede estar seguro de que todos los miembros de los grupos de genes resultantes comparten una similitud definida entre sí y que ningún gen puede agruparse solemnemente con otros basándose en una alta similitud con un miembro.
Bueno, ¡los resultados de alta calidad son más importantes que la velocidad! Pero este es uno de los raros casos en los que puedes quedarte con tu pastel y comértelo también. FindMyFriends es, con diferencia, el algoritmo más rápido que existe:
FindMyFriends escala a miles de genomas y puede manejar una gran diversidad (es decir, no restringido al nivel de especie). Como ejemplo, se creó un pangenoma basado en aproximadamente 1200 cepas del orden Lactobacillales (bacterias del ácido láctico) en aproximadamente 8 horas en una instancia de AWS c3x8.large utilizando un solo núcleo.
Al ser un marco, hay muchas cosas que puedes hacer y muchas formas diferentes de hacerlo. El siguiente es el enfoque recomendado para calcular un pangenoma:
library( FindMyFriends )
# We expect here that your genomes are stored in amino acid fasta files in the
# working directory.
genomes <- list.files( pattern = ' .fasta ' )
# First we create our pangenome object
pg <- pangenome( genomes , translated = TRUE , geneLocation = ' prodigal ' )
# Then we make the initial grouping
pg <- cdhitGrouping( pg )
# And lastly we refine the groups
pg <- neighborhoodSplit( pg )
consulte la viñeta para obtener más información sobre los diferentes pasos, así como ejemplos sobre lo que puede hacer con sus datos una vez que haya terminado de agrupar sus genes.
A continuación se detallan algunas de las características en las que se está trabajando o considerando: