Pembuatan dan eksplorasi pangenome cepat dan bebas penyelarasan
Rilis: Pengembangan: @master:
FindMyFriends adalah paket R untuk melakukan analisis pangenomic pada genom mikroba. Ini dirilis sebagai bagian dari proyek Bioconductor dan dapat diinstal dengan fungsi BiocManager::install()
:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
Untuk versi terbaru, instal langsung dari GitHub:
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
Dalam genomik mikroba komparatif, pangenome didefinisikan sebagai pengelompokan gen antar genom berdasarkan kesamaan. Ukuran kemiripan ini tidak ditentukan secara pasti, namun sering kali berasal dari BLASTing setiap pasangan gen terhadap satu sama lain. Ini adalah ide yang buruk karena beberapa alasan: membandingkan semua dengan semua akan menyebabkan skala waktu komputasi yang sangat buruk seiring bertambahnya jumlah gen, BLAST secara umum sangat lambat, dan kesamaan urutan saja tidak dapat membedakan gen ortolog dari paralog. Poin terakhir telah diatasi oleh alat-alat terbaru seperti PanOCT dan Roary, namun dua yang pertama masih bertahan (meskipun Roary melakukan sesuatu yang cerdas untuk mengurangi masalah tersebut).
Masuk ke Temukan Teman Saya...
Ini juga merupakan algoritma lain. Namun yang lebih penting, ini adalah kerangka kerja untuk melakukan analisis pangenom yang sepenuhnya tidak bergantung pada cara Anda memperoleh pangenom. FindMyFriends mendefinisikan daftar kelas yang dapat diperluas untuk menangani data pangenome secara transparan, dan dihubungkan langsung ke beragam alat genom yang ditawarkan oleh Bioconductor.
Oke, kembali ke algoritma. FindMyFriends bekerja dengan menggunakan CD-Hit untuk membuat pengelompokan gen yang sangat kasar dalam kumpulan data Anda, lalu menyempurnakan pengelompokan ini dalam sekejap menggunakan pengukuran kesamaan tambahan. Hal ini berbeda dengan Roary yang menggunakan CD-Hit, tetapi hanya untuk mengelompokkan gen yang paling mirip sebelum menjalankan BLAST. Jalur kedua di FindMyFriends adalah tempat semua keajaiban terjadi. Gen-gen dalam setiap kelompok besar dibandingkan berdasarkan kesamaan urutan (menggunakan kesamaan kosinus kmer), panjang urutan, keanggotaan genom, dan kesamaan lingkungan. Berdasarkan perbandingan ini, sebuah grafik dibuat untuk setiap kelompok, dengan tepinya menentukan kesamaan di atas ambang batas tertentu antar gen. Dari grafik ini, klik-klik diekstraksi secara bertahap sedemikian rupa sehingga memastikan klik-klik dengan kualitas terbaik diekstraksi terlebih dahulu. Klik-klik ini menentukan pengelompokan gen terakhir. Karena mereka merupakan kelompok, maka pengguna dapat yakin bahwa semua anggota kelompok gen yang dihasilkan memiliki kemiripan tertentu satu sama lain dan tidak ada gen yang dapat dikelompokkan dengan gen lain berdasarkan kemiripan yang tinggi pada satu anggota.
Ya, hasil berkualitas tinggi lebih penting daripada kecepatan! Tapi ini adalah salah satu kasus langka di mana Anda bisa mendapatkan kue dan memakannya juga. FindMyFriends, dengan selisih yang besar, merupakan algoritma tercepat yang pernah ada:
FindMyFriends berskala hingga ribuan genom, dan dapat menangani keragaman yang besar (yaitu tidak terbatas pada tingkat spesies). Sebagai contoh, pangenome berdasarkan ~1200 strain dari ordo Lactobacillales (Bakteri Asam Laktat) dibuat dalam waktu sekitar 8 jam pada instance AWS c3x8.large menggunakan satu inti.
Sebagai kerangka kerja, ada banyak hal yang dapat Anda lakukan dan banyak cara berbeda untuk melakukannya. Berikut adalah pendekatan yang disarankan untuk menghitung pangenome:
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 )
silakan lihat sketsa untuk informasi lebih lanjut tentang berbagai langkah serta contoh tentang apa yang dapat Anda lakukan dengan data Anda setelah Anda selesai mengelompokkan gen Anda.
Berikut adalah beberapa fitur yang sedang dikerjakan/dipertimbangkan: