快速免比对泛基因组创建和探索
发布:开发:@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 )
请参阅小插图,了解有关不同步骤的更多信息,以及完成基因分组后可以如何处理数据的示例。
以下是一些正在开发/考虑的功能: