快速免比對泛基因組創建與探索
發布:開發:@master:
FindMyFriends 是一個用於對微生物基因組進行泛基因組分析的 R 軟體包。它作為 Bioconductor 專案的一部分發布,可以使用BiocManager::install()
函數安裝:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
絕對最新版本,請直接從 GitHub 安裝:
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
在比較微生物基因體學中,泛基因組被定義為基於某種相似性的跨基因組的一組基因。這種相似性測量並不是一成不變的,但通常是將每對基因相互進行 BLAST 而得出的。基於以下幾個原因,這是一個壞主意:隨著基因數量的增加,將所有與所有進行比較會導致計算時間的可怕擴展,BLAST 通常非常慢,並且僅序列相似性無法區分直系同源基因和旁系同源基因。最後一點已由 PanOCT 和 Roary 等最新工具解決,但前兩點仍然有效(儘管 Roary 做了一些聰明的事情,使其不再成為問題)。
輸入“尋找我的朋友”...
這也是另一種演算法。但更重要的是,它是一個用於進行泛基因組分析的框架,它與您最初如何衍生泛基因組完全無關。 FindMyFriends 定義了一個可擴展的類別列表,用於以透明的方式處理泛基因組數據,並直接插入 Bioconductor 提供的大量基因組工具中。
好吧,回到演算法。 FindMyFriends 的工作原理是使用 CD-Hit 對資料集中的基因建立非常粗略的分組,然後使用其他相似性度量在第二遍中細化該分組。這與 Roary 形成鮮明對比,Roary 使用 CD-Hit,但僅在運行 BLAST 之前將最相似的基因分組在一起。 FindMyFriends 中的第二個關卡是所有魔法發生的地方。透過序列相似性(使用 kmer 餘弦相似性)、序列長度、基因組成員資格和鄰域相似性來比較每個大組中的基因。基於這些比較,為每個組別建立一個圖表,其中邊緣定義基因之間高於某個閾值的相似性。從該圖中逐漸提取派系,以確保首先提取最高品質的派系。這些派系定義了基因的最終分組。因為它們是派系,所以使用者可以確定所得基因組的所有成員彼此共享定義的相似性,並且沒有基因可以基於與一個成員的高度相似性而鄭重地與其他基因分組。
嗯,高品質的結果比速度更重要!但這是魚與熊掌兼得的極少數情況之一。 FindMyFriends 在很大程度上是最快的演算法:
FindMyFriends 可擴展到數千個基因組,並且可以處理大量多樣性(即不限於物種層級)。例如,在使用單核的 c3x8.large AWS 實例上,大約 8 小時內創建了基於乳酸桿菌目的約 1200 個菌株的泛基因組。
作為一個框架,你可以做很多事情,也可以用很多不同的方式來做。以下是計算泛基因組的建議方法:
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 )
請參閱小插圖,了解有關不同步驟的更多信息,以及完成基因分組後可以如何處理數據的範例。
以下是一些正在開發/考慮的功能: