预测噬菌体生活方式的随机森林分类器
项目描述
BACPHLIP - 噬菌体生活方式预测工具
Adam J. Hockenberry 和 Claus O. Wilke
参考:
预印本可在:https ://www.biorxiv.org/content/10.1101/2020.05.13.094805v1
概述和重要警告
BACPHLIP 软件旨在测试给定的噬菌体基因组(.fasta格式化)是否可能是温和的(溶原的)或毒性的(裂解的)。该软件通过搜索一组特定的假设为“温带特异性”蛋白质结构域来做出这一决定。BACPHLIP 有几个用户应该注意的假设:
-
用户输入是一个噬菌体基因组(核苷酸)序列。BACPHLIP 不对输入的核苷酸序列是否为噬菌体进行任何检查,因此请用户在运行 BACPHLIP 之前自行验证这一事实。随机的 DNA 片段将被称为毒性噬菌体(假设在随机序列中没有发现相关结构域),不是因为有任何迹象表明该序列是毒性噬菌体,而是因为没有数据推翻最初的假设(您提供了噬菌体程序,见下文第 3 点)。如果您向 BACPHLIP 提供整个细菌染色体,也会出现类似的奇怪结果,这些可能被称为温带噬菌体,因为很可能会在染色体的某处发现几个相关的“温带域”。
-
噬菌体基因组是完整的。我们强调,没有证据并不是没有证据。如果基因组不完整,我们根本没有足够的信息来确定是否存在溶原相关蛋白结构域,因此不应将不完整/部分组装的基因组用作输入。
-
默认/起始假设是任何给定的输入文件都是毒性(裂解)噬菌体。根据发现的各种溶原性相关蛋白的数量和身份,随机森林分类器可能会更新此默认假设,以表明该序列实际上是温和的。然而,如果根本没有发现感兴趣的蛋白质结构域,结果将是噬菌体具有毒性。
-
用户应在使用前通读所有文档,以及(2 页)随附的手稿。我们已经仔细列举了这个软件包的用例和限制。例如,BACPHLIP 在一个几乎完全由来自Caudovirales目的噬菌体组成的数据集上进行了训练,其中大多数感染了Actinobacteria、Gammaproteobacteria和Bacilli目中的宿主。我们敦促在这些订单之外的物种上使用该软件时要谨慎,但请注意,随着我们在未来版本中更新和扩展训练集数据,这一事实可能会发生变化。
安装
您可以使用 pip 安装 BACPHLIP:
pip install bacphlip
或者,用户可以克隆/下载最新的 github 存储库,导航到下载 BACPHLIP 的目录并运行:
pip install .
BACPHLIP 在标准库之外有几个必需的依赖项:biopython、pandas、joblib和scikit-learn。
此外,用户需要安装HMMER3 软件套件(除了 HMMER3 网站上列出的安装路线,我们注意到此工具也可以通过conda安装)。默认情况下,BACPHLIP 假定 HMMER3 安装在系统路径中,但本地路径可以作为运行时标志提供(见下文)。
例子
BACPHLIP 最直接的用法是作为命令行工具。所需的输入是fasta包含一条记录的基因组(核苷酸)文件。假设/valid/path/to/a/genome.fasta存在,您可以使用以下命令调用 BACPHLIP:
bacphlip -i /valid/path/to/a/genome.fasta
此命令应在目标路径中创建 4 个单独的文件,genome.fasta其中genome.fasta.bacphlip包含最终模型预测(制表符分隔格式),就输入噬菌体为“毒性”或“温和”的概率而言(其他文件附加.6frame、.hmmsearch和.hmmsearch.tsv到基因组文件)。尝试第二次运行此命令(假设第一次有效)应该会产生错误,因为输出文件已经存在。可以使用标志更改此行为以强制覆盖文件:
bacphlip -i /valid/path/to/a/genome.fasta -f
hmmsearch可以在命令行中指定本地 HMMER3 安装(特别是工具)的路径:
bacphlip -i /valid/path/to/a/genome.fasta --local_hmmsearch /valid/path/to/hmmsearch
鼓励希望在多个噬菌体上批量运行 BACPHLIP 的用户使用--multi_fasta运行时标志。在这种情况下,输入基因组(核苷酸)fasta 文件应包含多个序列记录(每个完整基因组一个),具有唯一 ID(由 解析biopython)。BACPHLIP 将创建一个以输入文件命名的目录,与每个序列记录关联的中间文件将从记录 id 命名并写入该目录。最后,最终输出文件将包含一个表格,其中包含每个基因组的预测。假设multigenome.fasta存在:
bacphlip -i /valid/path/to/a/multigenome.fasta --multi_fasta
此外,BACPHLIP 也可以作为 python 库访问和使用。从 python 解释器只需键入:
import bacphlip
bacphlip.run_pipeline('/valid/path/to/a/genome.fasta')
可以使用此库功能将一批输入文件作为循环运行(它将.bacphlip为每个输入输出并保存单独的预测 [,一种简单的制表符分隔格式] 文件:
import bacphlip
import glob
for infile_loc in glob.glob('/valid/path/to/a/set/of/files/*.fasta'):
bacphlip.run_pipeline(infile_loc)
或者如果多个基因组包含在同一个.fasta文件中,则可以使用该函数分析多个基因组,该函数将为每个输入run_pipeline_multi创建一个包含行:.bacphlip
import bacphlip
multi_fasta_file = '/valid/path/to/multi.fasta'
bacphlip.run_pipeline_multi(infile_loc)
最后,使用 BACPHLIP 作为库可以使用户可以使用各个函数,以便运行单个步骤并可能对其进行故障排除。IE:
import bacphlip
bacphlip.six_frame_translate( ... )
bacphlip.hmmsearch_py( ... )
bacphlip.process_hmmsearch( ... )
bacphlip.predict_lifestyle( ... )
每个函数都有一组相关的参数,应该从文档中清楚地看到。我们希望以这种方式运行 BACPHLIP 将在文件名方面提供更大的灵活性,并且可能对某些用户有用。
下一步
我们有几个计划的后续步骤,包括:
examples在即将发布的文件夹中添加库使用教程作为 jupyter 笔记本。- 添加以“安静”模式运行管道的能力
- (在此处插入您的建议)
杂项
该软件是根据 MIT 许可提供给您的(参见文件LICENSE.txt)。该软件的最新版本可在
https://github.com/adamhockenberry/bacphlip获得。
的开发BACPHLIP是在一个单独的存储库中提供的,以提高透明度。请参阅bacphlip-model-dev。
贡献
欢迎在 GitHub 上提出解决错误或添加新功能的拉取请求。但是,要被接受,贡献必须通过pytest单元测试。