Summary
本教程描述了构建深度学习算法的简单方法,用于执行计量数据的 2 级序列分类。
Abstract
在许多元基因组数据分析中,预计会执行各种生物序列分类任务,如物种分类、基因功能分类和病毒宿主分类。由于元基因组数据包含大量新物种和基因,许多研究都需要高性能的分类算法。生物学家在为特定任务找到合适的序列分类和注释工具时经常遇到挑战,而且由于缺乏必要的数学和计算知识,往往无法自行构建相应的算法。深度学习技术最近成为热门话题,在许多分类任务中显示出很强的优势。迄今为止,许多高度包装的深度学习包已经开发出来,这使得生物学家能够根据自己的需要构建深度学习框架,而无需深入了解算法细节。在本教程中,我们为构建一个易于使用的序列分类深度学习框架提供了指导,而无需足够的数学知识或编程技能。所有代码都在虚拟机器中进行优化,以便用户可以使用自己的数据直接运行代码。
Introduction
元基因组测序技术绕过了菌株分离过程,直接对环境样本中的总DNA进行测序。因此,元基因组数据包含来自不同生物体的DNA,大多数生物序列来自当前数据库中不存在的新生物体。根据不同的研究目的,生物学家需要从不同的角度对这些序列进行分类,如分类分类1、病毒细菌分类2、3、4、染色体质粒分类3、5、6、7和基因功能注释(如抗生素耐药性基因分类8和毒因子分类9)).由于元基因组数据包含大量新颖的物种和基因,因此不依赖已知数据库进行序列分类(包括DNA分类和蛋白质分类)的ab initio算法是计量数据分析的重要方法。然而,这种算法的设计需要专业的数学知识和编程技能:因此,许多生物学家和算法设计初学者很难构建一个分类算法来满足自己的需要。
随着人工智能的发展,深度学习算法已广泛应用于生物信息学领域,以完成计量学分析序列分类等任务。为了帮助初学者理解深度学习算法,我们以易于理解的方式描述算法。
图1显示了深度学习技巧的概况。深度学习算法的核心技术是人工神经网络,它受到人脑结构的启发。从数学角度来看,人工神经网络可以被视为一个复杂的功能。每个对象(如DNA序列、照片或视频)首先进行数字化。然后,数字化对象导入到函数中。人工神经网络的任务是根据输入数据给出正确的响应。例如,如果构建人工神经网络以执行 2 级分类任务,则网络应为每个对象输出 0-1 之间的概率分数。神经网络应给正对象一个更高的分数(如高于0.5的分数),同时给负对象一个较低的分数。为了实现这一目标,通过培训和测试过程构建了人工神经网络。在这些过程中,从已知数据库下载数据,然后分为培训集和测试集。每个对象都以正确的方式进行数字化,并给出一个标签(正对象为"1",负对象为"0")。在培训过程中,培训集中的数字化数据被输入到神经网络中。人工神经网络构建的损失函数表示输入对象的输出分数与对象的相应标记之间的差异。例如,如果输入对象的标签为"1",而输出分数为"0.1",则损失函数会很高:如果输入对象的标签为"0",而输出分数为"0.1",则损失函数将较低。人工神经网络采用特定的迭次算法来调整神经网络的参数,以最大限度地减少损失功能。当损失功能不能明显进一步降低时,培训过程就结束了。最后,测试组中的数据用于测试固定神经网络,并评估神经网络计算新对象正确标签的能力。在 LeCun 等人的评论中可以找到更多深度学习算法的原则。10.
虽然深度学习算法的数学原理可能很复杂,但最近已经开发出许多高度包装的深度学习包,程序员可以直接构建一个只有几行代码的简单人工神经网络。
为了帮助生物学家和算法设计初学者更快地开始使用深度学习,本教程为构建序列分类的易于使用的深度学习框架提供了指导。此框架使用"一热"编码形式作为数学模型来数字化生物序列,并使用卷积神经网络执行分类任务(见 补充材料)。用户在使用此准则之前唯一需要做的是以"fasta"格式准备四个序列文件。第一个文件包含培训过程的正类的所有序列(指"p_train.fasta"):第二个文件包含培训过程的负类的所有序列(指"n_train.fasta"):第三个文件包含测试过程的阳性类的所有序列(指"p_test.fasta"):最后一个文件包含测试过程的阴性类的所有序列(指"n_test.fasta")。本教程的流程图概述详情见 图2,详情见下文。
Subscription Required. Please recommend JoVE to your librarian.
Protocol
1. 虚拟机器的安装
- 从(https://github.com/zhenchengfang/DL-VM)下载虚拟机文件。
- 从 https://www.virtualbox.org 下载虚拟框软件。
- 使用相关软件(如"7-Zip"、"WinRAR"或"WinZip")解压".7z"文件。
- 通过单击每个步骤中的 下一个 按钮来安装虚拟框软件。
- 打开虚拟框软件并单击 新 按钮以创建虚拟计算机。
- 第 6 步:在"名称"框架中输入指定的虚拟机名,在"类型"框架中选择 Linux 作为操作系统,在"版本"框架中选择 Ubuntu 并单击 "下一个 "按钮"。
- 分配虚拟机器的内存大小。我们建议用户将按钮拉到绿色条的右侧,以便将尽可能多的内存分配给虚拟计算机,然后单击 "下一个 "按钮。
- 选择 使用现有的虚拟硬盘文件 选择,选择从步骤 1.1 下载的文件"VM_Bioinfo.vdi",然后单击 "创建" 按钮。
- 单击 星 形按钮以打开虚拟计算机。
注: 图3 显示虚拟机桌面的截图。
2. 创建共享文件夹,用于物理主机和虚拟计算机之间的文件交换
- 在物理主机中,创建名为"shared_host"的共享文件夹,在虚拟机的桌面上创建名为"shared_VM"的共享文件夹。
- 在虚拟机的菜单栏中,请连续单击 "设备"、"共享文件夹"、"共享文件夹"设置 。
- 单击右上角的按钮。
- 选择步骤 2.1 中创建的物理主机中的共享文件夹,并选择 自动安装 选项。单击 "确定" 按钮。
- 重新启动虚拟计算机。
- 单击虚拟机器桌面并打开终端的右键。
- 将后续命令复制到终端:
苏多安装 -t vboxsf shared_host./桌面/shared_VM- 当提示密码时,输入"1"并点击"输入"键,如图 4所示。
3. 为培训集和测试集准备文件
- 将所有四个序列文件以"fasta"格式复制,用于培训和测试过程,以物理主机的"shared_host"文件夹。这样,所有文件也将出现在虚拟计算机的"shared_VM"文件夹中。然后,将"shared_VM"文件夹中的文件复制到虚拟计算机的"深度学习"文件夹。
4. 使用"一热"编码形式对生物序列进行数字化
- 进入"深度学习"文件夹,单击右键单击并打开终端。键入以下命令:
./ onehot_encoding p_train. 法斯塔 · n_train. 法斯塔 · p_test. 法斯塔 · n_test. 法斯塔 · 阿
(对于氨基酸序列)
或
./ onehot_encoding p_train. 法斯塔 · n_train. 法塔 · p_test. 法斯塔 · n_test. 法斯塔 nt
(对于核酸序列)
注:此过程的截图提供于图 5中。
5. 训练和测试人工神经网络
- 在终端中,键入 图 6中显示的以下命令:
巨蛇 train.py
注:培训过程将开始。
Subscription Required. Please recommend JoVE to your librarian.
Representative Results
在我们之前的工作中,我们开发了一系列的序列分类工具,用于元数据使用类似于此教程3,11,12的方法。例如,我们将培训集子集和测试集的子集的序列文件(从我们以前的工作3、11中存入虚拟机中)。
方和周11 旨在从病毒数据中识别出完整的和部分的前列腺病毒病毒蛋白。文件"p_train.fasta"包含训练集的病毒病毒蛋白片段:文件"n_train.fasta"包含用于训练集的病毒非病毒蛋白片段:文件"p_test.fasta"包含测试集的病毒病毒蛋白片段:文件"n_test.fasta"包含测试集的病毒非病毒蛋白片段。用户可以直接执行以下两个命令来构建神经网络:
./ onehot_encoding p_train. 法斯塔 · n_train. 法斯塔 · p_test. 法斯塔 · n_test. 法斯塔 · 阿
和
巨蛇 train.py
表演显示在 图7中。
方等人3 旨在从细菌染色体DNA片段中识别噬菌体DNA片段。文件"phage_train.fasta"包含训练集的噬菌体DNA片段:文件"chromosome_train.fasta"包含训练集的染色体DNA片段:文件"phage_test.fasta"包含测试集的噬菌体DNA片段:文件"chromosome_test.fasta"包含测试集的染色体DNA片段。用户可以直接执行以下两个命令来构建神经网络:
./ onehot_encoding phage_train. 法斯塔 · chromosome_train. 法斯塔 · phage_test. 法斯塔 · chromosome_test. 法斯塔 nt
和
巨蛇 train.py
表现见图8。
值得注意的是,由于该算法包含一些随机性的过程,因此如果用户重新运行脚本,上述结果可能会略有不同。
图1。深度学习技术概述。请单击此处查看此图的较大版本。
图2。本教程流程图概述。请单击此处查看此图的较大版本。
图3。虚拟机器桌面的截图。请单击此处查看此图的较大版本。
图4。激活共享文件夹的截图。请单击此处查看此图的较大版本。
图5。序列数字化过程的截图。请单击此处查看此图的较大版本。
图6。训练和测试人工神经网络。请单击此处查看此图的较大版本。
图7。前列腺病毒病毒病毒蛋白片段识别的性能。评估标准是Sn=TP/(TP+FN), Sp=TN/(TN+FP), Acc=(TP+TN) /(TP+TN+FN+FP)和AUC。请单击此处查看此图的较大版本。
图8。噬菌体DNA片段鉴定的性能。评估标准是Sn=TP/(TP+FN), Sp=TN/(TN+FP), Acc=(TP+TN) /(TP+TN+FN+FP)和AUC。请单击此处查看此图的较大版本。
补充材料:请点击这里下载此文件。
Subscription Required. Please recommend JoVE to your librarian.
Discussion
本教程为生物学家和算法设计初学者提供了如何构建一个易于使用的深层学习框架,用于在元基因组数据中进行生物序列分类。本教程旨在提供对深度学习的直观理解,并解决初学者在安装深度学习包和为算法编写代码时经常遇到的挑战。对于一些简单的分类任务,用户可以使用该框架执行分类任务。
考虑到许多生物学家不熟悉Linux操作系统的指挥线,我们预装了虚拟机器中的所有依赖软件。这样,用户可以按照上述协议直接在虚拟机中运行代码。此外,如果用户熟悉 Linux 操作系统和 Python 编程,他们还可以直接在服务器或本地 PC 上运行此协议。这样,用户应预装以下依赖软件:
Python 2.7.12 (https://www.python.org/)
Python 包:
numpy 1.13.1 (http://www.numpy.org/)
h5py 2.6.0 (http://www.h5py.org/)
滕索流 1.4.1 (https://www.tensorflow.org/)
凯拉斯 2.0.8 (https://keras.io/)
MATLAB 组件运行时间 (MCR) R2018a (https://www.mathworks.com/products/compiler/matlab-runtime.html)
我们以前工作的手册3对安装有简要的描述。请注意,每个包的版本编号与我们在代码中使用的版本相对应。在没有虚拟机器的情况下在服务器或本地 PC 中运行代码的优点是代码可以以这种方式加速使用 GPU,从而在培训过程中节省大量时间。这样,用户应安装 TtensorFlow 的 GPU 版本(参见之前工作手册 3)。
协议中的某些关键步骤如下。在第 4.1 步中,"p_train.fasta"、"n_train.fasta"、"p_test.fasta"和"n_test.fasta"的文件名称应替换为已使用的文件名称。此命令中这四个文件的顺序无法更改。如果文件包含氨基酸序列,则最后参数应为"aa":如果文件包含核酸序列,则最后参数应为"nt"。此命令使用"一热"编码形式对生物序列进行数字化。补充材料中介绍了"一热"编码表。在第 5.1 步中,由于虚拟计算机无法与 GPU 加速,此过程可能需要几个小时或几天的时间,具体取决于数据大小。每个迭代的进度条显示在终端中。我们将时间数设定为 50 个,因此,培训过程结束后将显示总共 50 个进度栏。测试过程完成后,测试集的精度将显示在终端中。在虚拟计算机的"深度学习"文件夹中,将创建一个名为"预测.csv"的文件。此文件包含测试数据的所有预测分数。这些分数的顺序对应于"p_test.fasta"和"n_test.fasta"的顺序顺序(这些分数的前半部分对应于"p_test.fasta",而这些分数的后半部分对应于"n_test.fatsa")。如果用户想要对真实类未知的序列进行预测,他们也可以将这些未知序列存入"p_test.fasta"或"n_test.fasta"文件中。这样,这些未知序列的分数也将显示在"预测.csv"文件中,但终端中的"准确性"显示没有意义。此脚本使用一个汇总神经网络执行分类。神经网络的结构和神经网络的代码显示在 补充材料中。
深度学习的特点之一是,许多参数设置需要一些经验,这可能是初学者的主要挑战。为了避免初学者因大量公式而感到忧虑,我们不注重深度学习的数学原理,在虚拟机器中,我们不提供特殊的参数设置界面。虽然这可能是初学者的一个很好的选择,但不恰当的参数选择也可能导致精度下降。为了让初学者更好地体验如何修改参数,在脚本"train.py"中,我们在相关代码中添加一些注释,用户可以修改相关参数,如卷积内核的数量,以了解这些参数如何影响性能。
此外,许多深度学习计划应在 GPU 下运行。但是,配置 GPU 还需要一些非计算机专业人员可能难以掌握的计算机技能:因此,我们选择在虚拟机器中优化代码。
在根据此准则解决其他序列分类任务时,用户只需用自己的数据替换四个序列文件。例如,如果用户需要区分元基因组数据中的质粒衍生序列和染色体衍生序列,他们可以直接从 RefSeq 数据库下载质粒基因组(https://ftp.ncbi.nlm.nih.gov/refseq/release/plasmid/)和细菌染色体基因组(https://ftp.ncbi.nlm.nih.gov/refseq/release/bacteria/),并将基因组分离成训练集和测试集。值得注意的是,元基因组数据中的DNA序列往往是支离破碎的,而不是完整的基因组。在这种情况下,用户可以使用 MetaSim13 工具从完整的基因组中提取 DNA 片段。MetaSim 是一款用户友好的工具,具有 GUI 界面,用户无需在键盘上键入任何命令即可使用鼠标完成大部分操作。为了简化初学者的操作,我们的教程设计为两类分类任务。但是,我们需要在许多任务中执行多分类。在这种情况下,初学者可以尝试将多分类任务分为几个两类分类任务。例如,为了识别噬菌体宿主,张 等人 构建了9个二级分类器,以确定给定的噬菌体序列是否可以感染某个宿主。
此教程的主页存放在 GitHub 网站上 https://github.com/zhenchengfang/DL-VM。教程的任何更新将在网站上描述。用户还可以在网站上提出有关此教程的问题。
Subscription Required. Please recommend JoVE to your librarian.
Disclosures
作者宣称不存在利益冲突。
Acknowledgments
这项研究得到了中国国家自然科学基金(81925026、82002201、81800746、82102508)的资助。
Materials
Name | Company | Catalog Number | Comments |
PC or server | NA | NA | Suggested memory: >6GB |
VirtualBox software | NA | NA | Link: https://www.virtualbox.org |
References
- Liang, Q., Bible, P. W., Liu, Y., Zou, B., Wei, L. DeepMicrobes: taxonomic classification for metagenomics with deep learning. NAR Genomics and Bioinformatics. 2 (1), (2020).
- Ren, J., et al. VirFinder: a novel k -mer based tool for identifying viral sequences from assembled metagenomic data. Microbiome. 5 (1), 69 (2017).
- Fang, Z., et al. PPR-Meta: a tool for identifying phages and plasmids from metagenomic fragments using deep learning. GigaScience. 8 (6), (2019).
- Ren, J., et al. Identifying viruses from metagenomic data using deep learning. Quantitative Biology. 8 (1), 64-77 (2020).
- Zhou, F., Xu, Y. cBar: a computer program to distinguish plasmid-derived from chromosome-derived sequence fragments in metagenomics data. Bioinformatics. 26 (16), 2051-2052 (2010).
- Krawczyk, P. S., Lipinski, L., Dziembowski, A. PlasFlow: predicting plasmid sequences in metagenomic data using genome signatures. Nucleic Acids Research. 46 (6), (2018).
- Pellow, D., Mizrahi, I., Shamir, R. PlasClass improves plasmid sequence classification. PLOS Computational Biology. 16 (4), (2020).
- Arango-Argoty, G., et al. DeepARG: a deep learning approach for predicting antibiotic resistance genes from metagenomic data. Microbiome. 6 (1), 1-15 (2018).
- Zheng, D., Pang, G., Liu, B., Chen, L., Yang, J. Learning transferable deep convolutional neural networks for the classification of bacterial virulence factors. Bioinformatics. 36 (12), 3693-3702 (2020).
- LeCun, Y., Bengio, Y., Hinton, G.
Deep learning. Nature. 521 (7553), 436-444 (2015). - Fang, Z., Zhou, H. VirionFinder: Identification of Complete and Partial Prokaryote Virus Virion Protein From Virome Data Using the Sequence and Biochemical Properties of Amino Acids. Frontiers in Microbiology. 12, 615711 (2021).
- Fang, Z., Zhou, H. Identification of the conjugative and mobilizable plasmid fragments in the plasmidome using sequence signatures. Microbial Genomics. 6 (11), (2020).
- Richter, D. C., Ott, F., Auch, A. F., Schmid, R., Huson, D. H. MetaSim-a sequencing simulator for genomics and metagenomics. PLoS One. 3 (10), 3373 (2008).
- Zhang, M., et al. Prediction of virus-host infectious association by supervised learning methods. BMC Bioinformatics. 18 (3), 143-154 (2017).