1.背景介绍
病原体基因检测为各种严重感染的诊断提供了依据。病原体检测过程分为五个步骤:1)采集患者样本,如静脉血、痰液、肺泡灌洗液或脑脊液等。2)培养样品并提取样品中的核酸组织。3)通过高通量基因测序仪对核酸序列进行测序。为了保证准确性,高通量测序将长核苷酸序列切割成小片段并分别测序。一般来说,基因序列的读数范围从50pb到200bp。4)高通量测序后,需要查询相关病原体标准序列,找到匹配的基因序列。5)通过分析这些小片段,可以得到所有基因片段的组成成分即检测结果),从而为患者疾病的诊断和精准治疗提供有力支持。
图1。病原体基因检测过程
对于生物分析检测,通常一次病原体检测会产生约5亿个75bp的基因片段。过滤掉一些人的基因组织序列后,我们还需要查询大约1亿个基因片段。通常使用nBlast [1]工具进行基因匹配,这在病原体检测的整个过程中也是非常耗时的部分,大约需要2-3个小时。阿里巴巴Cloud AnalyticDB Vector Edition提供了高效的基因检索工具,大大提升了基因分析的性能,可以在几十分钟内完成病原体查询检测的全过程。
00-1010
2.基因检索应用
图1为病原体基因检索界面。目前,该演示包含12,182种病毒的碱基序列。我们将病毒切割成150bp的片段总共1,590,804个片段),然后将它们转化成载体并存储在AnalyticDB中。在搜索框中,用户可以输入一个基因序列,在我们当前的系统中进行搜索。为了方便大家,我们选取了新冠肺炎、HIV、埃博拉和中东呼吸综合征的基因序列进行演示。用户可以复制相关的序列来测试查询性能。
图2。核酸查询演示
图3用户输入新型冠状病毒的基因序列,可以看到第一个序列片段就是我们要找的新冠肺炎病毒的序列。目前,由于AnalyticDB提供了高效的载体索引,系统将在几毫秒内返回相关基因片段。
图3。基因搜索结果
00-1010我们模拟人体的基因采样,将新型冠状病毒基因塞尔维亚MT450872 [2]、美洲MT450873 [3])和中东呼吸MERS基因NC_019843.3 [10])混合,分散成75bp的序列作为测试集。我们希望通过搜索和分析当前的病毒数据库,可以识别出当前的测试集包含新型冠状病毒和MERS病毒。目前系统通过匹配检测,我们生成图4。
图4。基因匹配结果
可以看到,病毒数据库检索系统检测后返回了三个基因组NC_045512.2、NC_019843.3和NC_038294.1)。NC_045512.265%)为武汉海鲜市场新型冠状病毒基因;NC_019843.320%)是MERS病毒的基因;NC_038294.113%)为英国冠状病毒。经查询,这是MERS病毒的别称[8],也属于MERS病毒。因此,通过分析,目前的混合测试集包含新型冠状病毒和MERS病毒。
00-1010阿里巴巴云基因检索系统的总体架构如图5所示。AnalyticDB负责整个应用程序的所有结构化数据的存储和查询例如,基因序列的长度、基因的名称、基因的种类、基因、DNA或RNA的详细介绍等)。)和基因序列生成的特征向量。在查询过程中,我们使用基因向量提取模型将基因转化为向量,并在AnalyticDB数据库中进行粗行检索。
。在向量匹配的结果集中,我们使用经典的Needleman-Wunsch [4]算法进行精排,返回最相似的基因序列。
图5.基因检索系统框架
3.基因训练和查询模型
3.1 基因查询过程
基因模型的训练已经在上一篇文章中 [5],进行了详细的讲解。通过训练好的DNA K-Mer模型,我们可以得到每个k-mer的向量。给定一段12bp的基因序列(如图6),我们在这段基因序列中抽取出5个8-mers。我们将这5个8-mers转成对应的向量,求和归一化之后,就是这段12bp的基因序列的最终的向量。当然,为了提升精度,我们也可以使用doc2vec [6]等学习模型来对整段基因片段进行转化。
图6.DNA序列转向量
3.2 基因精度分析
我们训练了两个模型,全部病毒模型和21个病原体细菌模型(痤疮丙酸杆菌,金黄色葡萄球菌,表皮葡萄球菌,溶血葡萄球菌,大肠埃希氏菌,鲍曼不动杆菌,结核分枝杆菌,肺炎链球菌,肺炎克雷伯氏菌,流感嗜血杆菌,副流感嗜血杆菌,嗜麦芽窄食单胞菌,铜绿假单胞菌,屎肠球菌,纹带棒状杆菌,人疱疹病毒4型EB病毒),细环病毒,人腺病毒B组,黄曲霉,白色假丝酵母,rqddy肺孢子菌)。我们将一个基因,每隔150个bp,做一下切分。然后将150bp的小的分段,转化成向量存在库里面,进行检索。因此病毒数据集包括12182个病毒, 1590804个分段;21个细菌共275个基因,1521807个分段。
实验1(见表1)系统随机的在当前的基因库里面,取出75bp的小的片段。我们知道这75bp的基因片段是在哪个基因的哪个片段中提取的。我们将这75bp的基因段到库里面进行检索,查找返回前N个结果集中,查看是否包含这75bp的基因段对应的基因片段。Top-n的精度(Precisionn)),用公式(1)进行计算。
其中,n表示查询返回的列表的长度。u表示查询的次数,在实验中u取的是1000次。
表示在第i次查询中,序列si是否出现在Top-n的列表中,出现为1,不出现为0。如果n越小,精度越高,说明我们的方法在实际中非常有效。我们可以看到,针对两个模型来说,top20的精度,都在99%以上。精度在0.99以上,对于实际检验基因片段包含物种基因是足够了的。
表1.基因查询精度检测
数据集top 1top 2top 3top 4top 5top 10top 20病毒0.8660.9650.9830.9860.990.9920.99421个细菌0.9010.9750.9870.9870.9930.9941.0
实验2(见表2)系统随机的在当前的基因库里面,取出75bp的小的片段。我们将这75bp的基因段进行了2%的随机的突变(自然界中的基因突变的概率会更低,比方说人的30亿个碱基,新生儿会有30个基因发生突变。病毒RNA的突变概率会高一些,一般也都小于1%),然后到库里面进行检索,查找返回前N个结果集中,查看是否包含这75bp的基因段对应的基因片段。基因突变之后,虽然查询的精度有所下降,但是top20的精度也都达到了0.99。
表2.基因突变查询精度检测
数据集top1top 2top3top4top5top6top7病毒0.8460.9540.9600.9760.980.9820.9921个细菌0.8840.9610.9680.9730.9730.9891.0
实验3(见表3)对基因检索的速度进行了比较。我们下载了病毒序列,菌类的基因序列,以及部分植物基因序列 [7],总共9.7G。我们分别将相关数据,导入到AnalyticDB数据库中和Blast库中。我们跑了100次不同的查询,对实验结果取了平均。Blast需要3.22秒才能返回结果,我们算法精度在top30的情况下,保证精度在0.95的准确性下,测试端到端的查询(包括查询基因转向量,向量粗排和Needleman-Wunsch算法的精排)只需要0.257s(提升了12.5倍)。
表3.检索时间