Schnelle, ausrichtungsfreie Pangenom-Erstellung und -Exploration
Veröffentlichung: Entwickler: @master:
FindMyFriends ist ein R-Paket zur Durchführung pangenomischer Analysen mikrobieller Genome. Es wird als Teil des Bioconductor-Projekts veröffentlicht und kann mit der Funktion BiocManager::install()
installiert werden:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
Für die absolut neueste Version installieren Sie direkt von GitHub:
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
In der vergleichenden mikrobiellen Genomik wird ein Pangenom als eine Gruppierung von Genen über mehrere Genome hinweg definiert, die auf einer Art Ähnlichkeit basieren. Dieses Ähnlichkeitsmaß ist nicht in Stein gemeißelt, sondern wird oft durch das BLASTing jedes Genpaars gegeneinander abgeleitet. Dies ist aus mehreren Gründen eine schlechte Idee: Der Vergleich aller gegen alle führt zu einer schrecklichen Skalierung der Rechenzeit, wenn die Anzahl der Gene zunimmt, BLAST ist im Allgemeinen sehr langsam und Sequenzähnlichkeit allein kann orthologe Gene nicht von paralogen Genen unterscheiden. Der letzte Punkt wurde von neueren Tools wie PanOCT und Roary angegangen, aber die ersten beiden bleiben bestehen (obwohl Roary etwas Cleveres unternimmt, um das Problem weniger problematisch zu machen).
Geben Sie FindMyFriends ein...
Es ist auch ein anderer Algorithmus. Noch wichtiger ist jedoch, dass es sich um einen Rahmen für die Durchführung einer Pangenomanalyse handelt, der völlig unabhängig davon ist, wie Sie Ihr Pangenom überhaupt abgeleitet haben. FindMyFriends definiert eine erweiterbare Liste von Klassen für den transparenten Umgang mit Pangenomdaten und lässt sich direkt in die große Auswahl an Genom-Tools von Bioconductor einbinden.
Okay, zurück zu den Algorithmen. FindMyFriends erstellt mithilfe von CD-Hit eine sehr grobe Gruppierung der Gene in Ihrem Datensatz und verfeinert diese Gruppierung dann in einem zweiten Durchgang mithilfe zusätzlicher Ähnlichkeitsmaße. Dies steht im Gegensatz zu Roary, das CD-Hit verwendet, jedoch nur, um die ähnlichsten Gene vor der Ausführung von BLAST zu gruppieren. Im zweiten Durchgang von FindMyFriends passiert die ganze Magie. Die Gene in jeder großen Gruppe werden anhand der Sequenzähnlichkeit (unter Verwendung der kmer-Cosinus-Ähnlichkeit), der Sequenzlänge, der Genomzugehörigkeit und der Nachbarschaftsähnlichkeit verglichen. Basierend auf diesen Vergleichen wird für jede Gruppe ein Diagramm erstellt, dessen Kanten die Ähnlichkeit zwischen Genen ab einem bestimmten Schwellenwert definieren. Aus diesem Diagramm werden nach und nach Cliquen extrahiert, sodass sichergestellt ist, dass zuerst Cliquen mit der höchsten Qualität extrahiert werden. Diese Cliquen definieren die endgültige Gruppierung von Genen. Da es sich um Cliquen handelt, kann der Benutzer sicher sein, dass alle Mitglieder der resultierenden Gengruppen eine definierte Ähnlichkeit miteinander haben und dass kein Gen aufgrund einer hohen Ähnlichkeit zu einem Mitglied feierlich mit anderen gruppiert werden kann.
Nun, qualitativ hochwertige Ergebnisse sind wichtiger als Geschwindigkeit! Dies ist jedoch einer der seltenen Fälle, in denen Sie Ihren Kuchen haben und ihn auch essen können. FindMyFriends ist mit großem Abstand der schnellste Algorithmus auf dem Markt:
FindMyFriends lässt sich auf Tausende von Genomen skalieren und kann mit großer Vielfalt umgehen (dh nicht auf Artenebene beschränkt). Beispielsweise wurde ein Pangenom basierend auf ca. 1200 Stämmen der Ordnung Lactobacillales (Milchsäurebakterien) in etwa 8 Stunden auf einer c3x8.large AWS-Instanz mit einem einzigen Kern erstellt.
Da es sich um ein Framework handelt, gibt es viele Dinge, die Sie tun können, und viele verschiedene Möglichkeiten, dies zu tun. Nachfolgend finden Sie den empfohlenen Ansatz zur Berechnung eines Pangenoms:
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 )
Weitere Informationen zu den verschiedenen Schritten sowie Beispiele dafür, was Sie mit Ihren Daten machen können, wenn Sie mit der Gruppierung Ihrer Gene fertig sind, finden Sie in der Vignette.
Im Folgenden sind einige der Funktionen aufgeführt, an denen gearbeitet wird bzw. die in Betracht gezogen werden: