Création et exploration rapides et sans alignement du pangénome
Sortie : Développeur : @master :
FindMyFriends est un package R permettant d'effectuer des analyses pangénomiques sur les génomes microbiens. Il est publié dans le cadre du projet Bioconductor et peut être installé avec la fonction BiocManager::install()
:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
Pour obtenir la dernière version absolue, installez directement depuis GitHub :
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
En génomique microbienne comparative, un pangénome est défini comme un regroupement de gènes à travers les génomes basé sur une sorte de similarité. Cette mesure de similarité n’est pas gravée dans le marbre, mais elle est souvent dérivée du BLASTing de chaque paire de gènes les uns contre les autres. C'est une mauvaise idée pour plusieurs raisons : comparer tous contre tous conduit à une horrible réduction du temps de calcul à mesure que le nombre de gènes augmente, BLAST est en général très lent et la similarité de séquence à elle seule ne peut pas distinguer les gènes orthologues des paralogues. Le dernier point a été abordé par des outils récents tels que PanOCT et Roary, mais les deux premiers sont toujours d'actualité (bien que Roary fasse quelque chose d'intelligent pour que ce soit moins problématique).
Entrez FindMyFriends...
C'est aussi un autre algorithme. Mais plus important encore, il s’agit d’un cadre permettant de mener une analyse du pangénome qui est totalement indépendant de la manière dont vous avez dérivé votre pangénome en premier lieu. FindMyFriends définit une liste extensible de classes pour gérer les données du pangénome de manière transparente et se connecte directement à la vaste gamme d'outils génomiques proposés par Bioconductor.
Bon, revenons aux algorithmes. FindMyFriends fonctionne en utilisant CD-Hit pour créer un regroupement très grossier des gènes de votre ensemble de données, puis affine ce regroupement lors d'un deuxième passage à l'aide de mesures de similarité supplémentaires. Cela contraste avec Roary qui utilise CD-Hit, mais uniquement pour regrouper les gènes les plus similaires avant d'exécuter BLAST. C'est dans le deuxième passage de FindMyFriends que toute la magie opère. Les gènes de chaque grand groupe sont comparés par similarité de séquence (en utilisant la similarité cosinus kmer), longueur de séquence, appartenance au génome et similarité de voisinage. Sur la base de ces comparaisons, un graphique est créé pour chaque groupe, avec des bords définissant la similarité au-dessus d'un certain seuil entre les gènes. À partir de ce graphique, les cliques sont progressivement extraites de manière à garantir que les cliques de la plus haute qualité soient extraites en premier. Ces cliques définissent le regroupement final de gènes. Parce qu'il s'agit de cliques, l'utilisateur peut être sûr que tous les membres des groupes de gènes résultants partagent une similarité définie les uns avec les autres et qu'aucun gène ne peut être regroupé solennellement avec d'autres sur la base d'une similarité élevée avec un membre.
Eh bien, des résultats de haute qualité sont plus importants que la rapidité ! Mais c’est l’un des rares cas où l’on peut avoir le gâteau et le manger en même temps. FindMyFriends est, de loin, l'algorithme le plus rapide du marché :
FindMyFriends s'adapte à des milliers de génomes et peut gérer une grande diversité (c'est-à-dire sans se limiter au niveau des espèces). À titre d'exemple, un pangénome basé sur environ 1 200 souches de l'ordre des Lactobacillales (bactéries lactiques) a été créé en 8 heures environ sur une instance AWS c3x8.large à l'aide d'un seul cœur.
En tant que cadre, vous pouvez faire beaucoup de choses et de nombreuses façons différentes de le faire. Voici l’approche recommandée pour calculer un pangénome :
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 )
veuillez consulter la vignette pour plus d'informations sur les différentes étapes ainsi que des exemples de ce que vous pouvez faire avec vos données une fois que vous avez terminé de regrouper vos gènes.
Voici quelques-unes des fonctionnalités qui sont en cours de développement/considérées :