1.背景介绍

病原体基因检测,为各种严重感染的诊断提供了基础。病原体检测流程分成五个步骤:(1)采集病人的样本,比方说静脉血,痰液,肺泡灌洗液,或者脑脊髓液等。(2)对样本进行培养,提取样本中的核酸组织。(3)通过高通量基因测序仪,对核酸序列进行测序。高通量测序为了保证精度,会将很长的核苷酸序列,切成小的分片,分别进行测序,在读取基因序列上,一般是50pb到200bp不等。(4)高通量测序之后,需要查询相关的病原体标准序列,找到匹配的基因序列。(5)通过将这些小的片段进行分析,得到全部基因片段的组成成分(即检测结果),从而为病人的疾病确诊以及精准治疗提供有力的支持。

图1. 病原体基因检测流程

对于生物分析检测来说,通常情况下,一次病原体检测,大约会生成5亿左右的75bp的基因片段。过滤掉一些人的基因组织序列之后,还需要查询1亿左右的基因片段。通常情况下,会使用nBlast [1]工具来进行基因匹配,这部分在整个病原体检测过程中,也是非常耗时的部分,大约需要2-3个小时。阿里云AnalyticDB向量版提供了一个高效的基因检索工具,大大提升了基因分析的性能,能够在几十分钟内完成整个病原体的查询检测过程。

2.基因检索应用

2.1 基因检索功能

图1展示了病原体基因检索的界面。当前演示包含了12182个病毒的碱基序列,我们将病毒切分成150bp的小片段(总共1590804个片段),转化成向量之后,存储到AnalyticDB中。在检索框中,用户可以输入一段基因序列,到我们当前的系统中进行检索。为了方便大家使用,我们挑了新冠病毒,艾滋病毒,埃博拉病毒和中东呼吸综合症的基因序列来进行演示,用户可以拷贝相关的序列,来检测查询的性能。

图2. 核酸查询演示

图3用户输入了一段新型冠状病毒的基因序列,可以看到排到前面的序列片段就是我们要找的新冠的病毒的序列。因为当前AnalyticDB提供高效的向量索引,系统会在毫秒级的时间内,返回相关的基因片段。

图3.基因检索结果

2.2 端到端的基因分析

我们模拟了人体的基因采样,将新型冠病毒基因(塞尔维亚MT450872 [2],美国MT450873 [3])和中东呼吸症MERS基因(NC_019843.3 [10]),三株病毒混合在一起,打散成75bp的序列,当做测试集合。我们希望,通过当前病毒库的检索分析,能够识别出当前测试集合中包含新型冠状病毒和MERS病毒。当前系统通过匹配检测,我们生成图4。

图4. 基因匹配结果

可以看到经过检测,病毒库检索系统返回了三个基因组(NC_045512.2,NC_019843.3和NC_038294.1)。NC_045512.2(65%)是武汉海鲜市场的新型冠状病毒的基因;NC_019843.3(20%)是MERS病毒的基因;而NC_038294.1(13%)是beta型英国冠状病毒,经过查询这个是MERS病毒的另外一个名字 [8],也属于MERS病毒。因此,通过分析,当前混合测试集合中包含了新型冠状病毒和MERS病毒。

2.3 应用架构总体设计

阿里云基因检索系统的总体架构如图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组,黄曲霉,白色假丝酵母,耶氏肺孢子菌)。我们将一个基因,每隔150个bp,做一下切分。然后将150bp的小的分段,转化成向量存在库里面,进行检索。因此病毒数据集包括12182个病毒, 1590804个分段;21个细菌共275个基因,1521807个分段。

实验1(见表1)系统随机的在当前的基因库里面,取出75bp的小的片段。我们知道这75bp的基因片段是在哪个基因的哪个片段中提取的。我们将这75bp的基因段到库里面进行检索,查找返回前N个结果集中,查看是否包含这75bp的基因段对应的基因片段。Top-n的精度(Precision(n)),用公式(1)进行计算。


其中,n表示查询返回的列表的长度。u表示查询的次数,在实验中u取的是1000次。表示在第i次查询中,序列si是否出现在Top-n的列表中,出现为1,不出现为0。如果n越小,精度越高,说明我们的方法在实际中非常有效。我们可以看到,针对两个模型来说,top20的精度,都在99%以上。精度在0.99以上,对于实际检验基因片段包含物种基因是足够了的。

表1.基因查询精度检测

数据集 top 1 top 2 top 3 top 4 top 5 top 10 top 20
病毒 0.866 0.965 0.983 0.986 0.99 0.992 0.994
21个细菌 0.901 0.975 0.987 0.987 0.993 0.994 1.0

实验2(见表2)系统随机的在当前的基因库里面,取出75bp的小的片段。我们将这75bp的基因段进行了2%的随机的突变(自然界中的基因突变的概率会更低,比方说人的30亿个碱基,新生儿会有30个基因发生突变。病毒RNA的突变概率会高一些,一般也都小于1%),然后到库里面进行检索,查找返回前N个结果集中,查看是否包含这75bp的基因段对应的基因片段。基因突变之后,虽然查询的精度有所下降,但是top20的精度也都达到了0.99。

表2.基因突变查询精度检测

数据集 top1 top 2 top3 top4 top5 top6 top7
病毒 0.846 0.954 0.960 0.976 0.98 0.982 0.99
21个细菌 0.884 0.961 0.968 0.973 0.973 0.989 1.0

实验3(见表3)对基因检索的速度进行了比较。我们下载了病毒序列,菌类的基因序列,以及部分植物基因序列 [7],总共9.7G。我们分别将相关数据,导入到AnalyticDB数据库中和Blast库中。我们跑了100次不同的查询,对实验结果取了平均。Blast需要3.22秒才能返回结果,我们算法精度在top30的情况下,保证精度在0.95的准确性下,测试端到端的查询(包括查询基因转向量,向量粗排和Needleman-Wunsch算法的精排)只需要0.257s(提升了12.5倍)。

表3.检索时间

4.结尾

详细的基因模型以及相关系统信息请加入我们的钉钉群,欢迎大家讨论和使用。

[1] blast+ https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/
[2] https://www.ncbi.nlm.nih.gov/nuccore/MT450872
[3] https://www.ncbi.nlm.nih.gov/nuccore/MT450873
[4] Needleman, Saul B. & Wunsch, Christian D. (1970). "A general method applicable to the search for similarities in the amino acid sequence of two proteins". Journal of Molecular Biology. 48 (3): 443–53. doi:10.1016/0022-2836(70)90057-4. PMID 5420325.
[5]汉朝. "阿里云提供高效基因序列检索功能,助力冠状病毒序列快速分析", https://developer.aliyun.com/article/753097?utm_content=g_1000111278

[6] Mikolov Tomas; et al. (2013). "Efficient Estimation of Word Representations in Vector Space". arXiv:1301.3781
[7] 基因数据集 https://www.ncbi.nlm.nih.gov/genome/viruses/variation/help/flu-help-center/ftp/
[8] de Groot RJ Baker SC Baric RS et al. Middle East respiratory syndrome coronavirus (MERS-CoV): announcement of the Coronavirus Study Group. J Virol. 2013; 87: 7790-7792
[9] https://www.ncbi.nlm.nih.gov/nuccore/NC_045512.2
[10] https://www.ncbi.nlm.nih.gov/nuccore/NC_019843.3
[11] https://www.ncbi.nlm.nih.gov/nuccore/NC_038294.1

往期文献:

[1] 戴口罩也能刷门禁?疫情下AnalyticDB亮出社区管理的宝藏神器!https://developer.aliyun.com/article/745160
[2] 阿里云提供高效基因序列检索功能,助力冠状病毒序列快速分析
https://developer.aliyun.com/article/753097

原文链接
本文为云栖社区原创内容,未经允许不得转载。

解密阿里云高效病原体基因检测工具相关推荐

  1. 阿里云高效基因序列检索助力新冠肺炎病毒序列快速分析

    简介: 阿里云高效基因序列检索助力新冠肺炎病毒序列快速分析 AnalyticDB for MySQL是云端托管的PB级高并发低延时数据仓库,通过AnalyticDB for MySQL向量检索功能构建 ...

  2. 【云周刊】第213期:对话行癫:解密阿里云顶层设计和底层逻辑

    欢迎订阅云周刊 本期头条 对话行癫:解密阿里云顶层设计和底层逻辑 几十个问题,万字长文,阿里云新任总裁行癫履新后首次出面与钛媒体独家深入讨论了一下阿里云对云计算未来的判断,深度解读未来阿里云生态战略, ...

  3. 【云周刊】第213期:对话行癫:解密阿里云顶层设计和底层逻辑...

    欢迎订阅云周刊 本期头条 对话行癫:解密阿里云顶层设计和底层逻辑 几十个问题,万字长文,阿里云新任总裁行癫履新后首次出面与钛媒体独家深入讨论了一下阿里云对云计算未来的判断,深度解读未来阿里云生态战略, ...

  4. 4月2日云栖精选夜读 | 对话行癫:解密阿里云顶层设计和底层逻辑

    [点击订阅云栖夜读周刊] 几十个问题,万字长文,阿里云新任总裁行癫履新后首次出面与钛媒体独家深入讨论了一下阿里云对云计算未来的判断,深度解读未来阿里云生态战略,揭秘阿里技术委员会和阿里中台思想的原生思 ...

  5. 对话行癫:解密阿里云顶层设计和底层逻辑 1

    几十个问题,万字长文,阿里云新任总裁行癫履新后首次出面与钛媒体独家深入讨论了一下阿里云对云计算未来的判断,深度解读未来阿里云生态战略,揭秘阿里技术委员会和阿里中台思想的原生思考.转载自钛媒体,作者:刘 ...

  6. 4月2日云栖精选夜读 | 对话行癫:解密阿里云顶层设计和底层逻辑...

    [点击订阅云栖夜读周刊] 几十个问题,万字长文,阿里云新任总裁行癫履新后首次出面与钛媒体独家深入讨论了一下阿里云对云计算未来的判断,深度解读未来阿里云生态战略,揭秘阿里技术委员会和阿里中台思想的原生思 ...

  7. 做了一个阿里云MQTT单片机编程小工具

      做了一个阿里云MQTT单片机编程小工具,点击测试http://www.norra.cn:9091/   传感云是采集.传输.存储.可视化.接口.APP.微信一体的传感器与应用服务平台,支持多种模式 ...

  8. 阿里云视频点播-->>>阿里云媒资上传工具类及配置

    阿里云媒资上传 官网: 介绍 1.阿里云视频点播 2.视频服务流程 三,测试类中编写代码 四,媒资管理管理配置-存储管理 五,开始编写我们的JAVA代码 1.application.yml 2.配置类 ...

  9. 【一键检测】这么高效的PCB检测工具,早点知道就好了

    [一键检测]这么高效的PCB检测工具,早点知道就好了 高效检测PCB,打板钱排除设计问题,顺利打板量产. 国内首款免费PCB可制造性可装配分析软件,分享如何利用该款工具高效完成工作.和30万+工程师小 ...

最新文章

  1. java 产生的固体物的基础上 增删改的SQL声明
  2. 【前端】JSON.stringfy 和 JSON.parse(待续)
  3. 禁止鼠标右键的代码(转)
  4. python(40):利用utf-8编码判断中文英文字符
  5. 浅谈线程池(下):相关试验及注意事项
  6. PHP用CURL伪造IP和来源
  7. 最新版mac使用m1芯片,使用nvm安装低版本的node报错问题
  8. c语言数据结构学习心得——线性表
  9. 20165203 2017-2018-2 《Java程序设计》第一周学习总结
  10. Windows Mobile 5.0
  11. .net 启动mysql数据库连接,ASP.NET实战002:MySQL数据库连接
  12. PHP中数字检测is_numeric与ctype_digit的区别介绍
  13. win7系统服务器错误404,Win7旗舰版系统下无法打开http://localhost出现404错误如何解决...
  14. 环保数采仪 环保行业的绿色卫士
  15. 逆战ds服务器怎么修复,IBMDS3512存储硬盘坏了正确的更换方法应该是怎么
  16. linux引导文件制作U盘,Linux下制作U盘系统启动盘的方法
  17. 经典的机器人入门资料
  18. 云知声临门一脚不敢踹:科大讯飞指其数据造假,业绩持续增长存疑
  19. Android 实现拍照功能,并将图片保存到本地存储
  20. 企业应该怎么运营微信公众号?

热门文章

  1. 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
  2. simulink和psim仿真结果不同_在HFSS进行AC耦合电容仿真优化怎么做?
  3. vscode中如何创新建php文件,vscode如何创建代码模板
  4. leetcode32 --- longestValidParentheses
  5. html调用父页面的函数,javascript – 如何从子窗口jquery调用父窗口函数?
  6. 劲乐团u显示服务器维护,劲乐团9YOU原版服务端架设教程
  7. 柏林噪声双线性插值初步了解(js)
  8. helm安装mysql_helm安装配置
  9. 实验室最拼命的博士生,为什么却面临延毕?
  10. 院士拿布袋领奖归来,朋友圈刷屏了