阿里雲推出高效病毒基因序列檢索功能,它的底層邏輯原來是這樣的

1.背景介紹

2019年年末,中國的新興的商業中心武漢,爆發了一種新型的冠狀病毒,在流行的兩個多月中,在中國形成了3300多人死亡,8萬2千多人感染。隨着疫情的進一步蔓延,目前已經橫跨了109個國家,形成了80多萬人感染,4萬多人失去了生命。到目前爲止,疫情使得50多個國家停擺,全世界範圍內形成了數千億美圓的經濟損失。阿里雲提供高效基因序列檢索助力冠狀病毒序列分析用於疫情防治。算法

對於當下疫情,基因序列分析技術主要用在一下幾個方面。數據庫

第一,用在新冠狀病毒的溯源和分析,能夠幫助人們找到病毒宿主,作好有效的防範。經過基因匹配技術,咱們能夠發現,蝙蝠和穿山甲身上的冠狀病毒的RNA序列匹配度達到到了96%和99.7%,所以穿山甲和蝙蝠極可能是新型冠狀病毒的宿主。架構

第二,經過基因序列分析,對基因序列進行功能區域劃分,瞭解各個模塊的功能,從而更好地分析出病毒的複製,傳播的過程。找到關鍵節點,設計出相關的藥物和疫苗。併發

第三,同時也能夠檢索到與冠狀病毒類似的病毒基因序列,比方說SARS,MERS等病毒。從而能夠借鑑相關的藥物靶點的設計機制,更快更高效的設計出來相關的檢測試劑盒,疫苗,以及相關的治療藥物。框架

可是,當前的的基因匹配算法太慢,於是迫切的須要高效的匹配算法來進行基因序列分析。阿里雲AnalyticDB團隊將基因序列片斷轉化成對應的1024維的向量特徵。兩個基因片斷的匹配問題,轉換成了兩個向量的距離計算問題,從而大大的下降了計算開銷,系統能夠在毫秒級別就能夠返還回來相關的基因片斷,完成基因片斷的初篩。機器學習

而後,使用基因類似計算的BLAST算法[6],完成基因類似度的精排,從而高效的完成基因序列的匹配計算。匹配算法由原來O(M+N)的算法複雜度,下降到了O(1)。同時,阿里雲AnalyticDB提供了強大的機器學習分析工具,經過基因轉向量技術,將局部的和疾病相關的關鍵的靶點基因片斷轉成特徵向量,用於基因藥物的設計,從而大大加速了基因分析過程。分佈式

2. 基因檢索應用

2.1 基因檢索功能

新冠狀病毒的RNA序列能夠表達一串核酸序列(又叫鹼基序列)。RNA序列一共存在四種核苷酸,用A,C,G和T來表示,分別表明腺嘌呤,胞嘧啶,鳥嘌呤,胸腺嘧啶。每一個字母表明一種鹼基,他們無間隔的排列在一塊兒。每個物種的RNA序列是不同的且有規律的。基因檢索系統,能夠經過輸入一串病毒的基因片斷,來查詢類似的基因,用來對病毒RNA進行。ide

爲了演示咱們的基因片斷檢索的方法,咱們從genbank下載了大量的病毒RNA的片斷,和genbank內部的關於病毒的論文以及google scholar中相關病毒的論文導入到AnalyticDB基因檢索數據庫中。高併發

基因檢索的演示界面如圖1,用戶將冠狀病毒的序列(COVID-19)上傳到AnalyticDB基因檢索工具中來。系統在幾個毫秒就能夠檢索到類似的基因片斷(當前系統只返回匹配度超過0.8的基因片斷)。咱們能夠看到,穿山甲攜帶的冠狀病毒(GD/P1L),蝙蝠攜帶的冠狀病毒(RaTG13),以及SARS和MARS病毒被返回出來。其中GD/P1L的序列匹配度最高,有0.974,冠狀病毒極可能是經過穿山甲傳染到人的身上的。工具

1.png

圖1.基因檢索界面

衆所周知,RNA片斷很是類似,說明這兩個RNA可能有類似的蛋白質表達和結構。經過基因檢索工具,咱們能夠看到SARS和MARS與冠狀病毒的匹配度0.8以上。說明能夠將一些SARS或者MARS的研究成果用到新冠狀病毒上面來。系統爬取了每種病毒的論文,經過文本分類的算法,將這些論文分紅檢測類,疫苗類和藥物類。

咱們點開SARS (如圖2),就能夠看到SARS檢測類有七種方法,疫苗類有四種方法,藥物類十種方法。能夠看到,其中的對SARS有效的熒光定量PCR檢測,如今正在應用於冠狀病毒的檢測。對於疫苗來講,基因疫苗的方法,以及誘導體內免疫疫苗的方法,也正在如火如荼的展開。對於藥物,瑞德西韋,以及相關的干擾素也都用在新型冠狀病毒的治療上面。

2.png

圖2.相關論文分類

圖3展現了點開相關的干擾素的連接,能夠看到相關的論文。當前系統調用了自動翻譯軟件,抽取了中文版的文件名的關鍵詞,做爲文件名,方便用戶閱讀。

3.png

圖3. 點開干擾素的連接

2.2 應用架構整體設計

阿里雲基因檢索系統的整體架構如圖4所示,AnalyticDB負責整個應用的所有的結構化數據(比方說,基因序列的長度,包含這個基因的論文名稱,以及基因的種類,DNA或者RNA等,見圖4查詢返回結果部分)和基因序列產生的特徵向量的存儲和查詢。在查詢的時候,咱們使用基因向量抽取模型,將基因轉化成向量,在AnalyticDB庫中進行粗排檢索。在向量匹配的結果集中,咱們使用經典的BLAST[7]算法進行精排,返回最類似的基因序列。

其中核心的是基因向量抽取模塊包含將核苷酸序列轉化成向量。咱們目前抽取了各類病毒RNA的所有序列樣原本進行訓練,所以能夠方便的對病毒RNA進行類似度的計算。固然,當前的向量抽取模型能夠方便的擴展到其餘物種基因上面來。基因向量抽取模型會在第三章進行詳細介紹。

4.png

圖4. 基因檢索框架

3. 關鍵算法介紹

3.1 基因向量抽取算法

先介紹和基因抽取向量的最相關的詞向量算法。

詞向量1是一個很是成熟的技術,被普遍應用在機器翻譯,閱讀理解,語義分析等相關的領域,並取得了巨大的成功。詞向量化採用了分佈式語義的方法來表示一個詞的含義,一個詞的含義就是這個詞所處的上下文語境。

舉個例子,高中英語完形填空題,一篇短文空出10個空,根據空缺詞的上下文語境選擇合適的詞。也就是說上下文語境已經可以準確的表達這個詞。給出正確的選詞,代表理解了空缺詞的意思。所以,經過上下文詞的關係,採用詞向量算法,每一個詞能夠生成一個向量。經過計算兩個詞之間向量的類似度,從而獲得兩個詞的類似度。比方說,「勺子」和「碗」類似度很高,由於他們老是出如今吃飯的場景中。

一樣的由於基因序列的排列是有必定的規律的,而且每一部分的基因序列所表達的功能和含義是不同的。所以,咱們能夠將很長的基因序列劃分紅小的單元片斷(也就是「詞」)進行研究。而且這些詞也是有上下語境的,由於這些詞相互鏈接相互做用共同完成相對應的功能,造成合理的表達。所以上,生物科學家們8[10]採用詞向量的算法對基因序列單元進行向量化。兩個基因單元類似度很高,說明這兩個基因單元老是在一塊兒,共同來表達完成相應的功能。

總結來講,向量抽取的具體作法主要分紅三步:

首先,咱們要先解決如何在氨基酸序列中定義出一個一個的詞出來,生物信息學中用K-mers[3]來分析氨基酸序列。k-mer是指將核酸序列分紅包含k個鹼基的字符串,即從一段連續的核酸序列中迭代地選取長度爲K個鹼基的序列,若核酸序列長度爲L,k-mer長度爲K,那麼能夠獲得L-K+1個k-mers。如圖5所示,假設這裏存在某序列長度爲12,設定選取的k-mer長度爲8,則獲得(12-8+1=5)個5-mers。這些k-mer,就是氨基酸序列中的一個一個的「詞」。

5.png

圖5. 8-mer核酸序列圖

其次,對於詞向量算法來講,另外一個重要的問題就是上下文的語境。咱們會在氨基酸片斷中選擇一個長度爲L的窗口,這個窗口內的氨基酸片斷就認爲在同一個語境以內。舉個例子來講,咱們選取了長度爲10的窗口(CTGGATGA一段核酸序列),咱們將其轉換成5個5-mers:{AACTG, ACTGG, CTGGA, GGATG, GATGA}。對於其中的一個5-mer {CTGGA},那麼和其相關連的5-mers就是{AACTG, ACTGG, GGATG, GATGA},這四個5-mers就是當前5-mer {CTGGA} 的上下文的語境。咱們套用詞向量空間的訓練模型,對已有的生物的基因的k-mers進行訓練,就能夠將一個k-mer(基因序列中的一個「詞」)轉換成1024維的向量。

再次,相似於詞向量模型,k-mer向量模型也擁有着和詞向量模型類似的數理計算的性質。

公式一代表核苷酸序列ACGAT的向量減去GAT序列的向量和AC的序列的向量的距離是很是近的。公式二代表核苷酸序列AC的向量加上ATC序列的向量和ACATC的序列的向量的距離也是很近的。所以,根據這些數理特徵,當咱們要計算一個長的氨基酸序列的向量的時候,咱們將這個序列中的每一段的k-mer序列進行累加,最後進行歸一化就能夠獲得整個氨基酸序列的向量。固然,進一步爲了提高精度,咱們能夠將基因片斷看作一個文本, 而後使用doc2vec4將整個序列轉換成向量進行計算。

爲了進一步驗證算法的性能,咱們計算了經常使用在基因檢索庫中的BLAST[6]算法的序列和基因轉向量的l2距離序列的類似度,兩個序列的斯皮爾曼等級相關係數[7]是0.839。 所以上,將DNA序列轉換成向量用於類似基因片斷的初篩是有效且可行的。

3.2 AnalyticDB向量版特性介紹

分析型數據庫(AnalyticDB)是阿里雲上的一種高併發低延時的PB級實時數據倉庫,能夠毫秒級針對萬億級數據進行即時的多維分析透視和業務探索。

AnalyticDB for MySQL 全面兼容MySQL協議以及SQL:2003 語法標準, AnalyticDB forPostgreSQL 支持標準 SQL:2003,高度兼容 Oracle 語法生態. 目前兩款產品都包含向量檢索功能, 能夠支持圖像, 推薦,聲紋,核苷酸序列分析等類似性查詢。目前AnalyticDB在真實應用場景中能夠支持10億級別的向量數據的查詢, 100毫秒級別的響應時間. AnalyticDB已經在多個城市的安防項目中大規模部署。

在通常的包含向量檢索的的應用系統中, 一般開發者會使用向量檢索引擎(例如Faiss)來存儲向量數據, 而後使用關係型數據庫存儲結構化數據. 在查詢時也須要交替查詢兩個系統, 這種方案會有額外的開發工做而且性能也不是最優。

AnalyticDB支持結構化數據和非結構化數據(向量)的檢索,僅僅使用SQL接口就能夠快速的搭建起基因檢索或者基因+結構化數據混合檢索等功能。AnalyticDB的優化器在混合檢索場景中會根據數據的分佈和查詢的條件選擇最優的執行計劃,在保證召回的同時,獲得最優的性能。

RNA核酸序列檢索, 能夠經過一條SQL實現:

-- 查找RNA和提交的序列向量相近的基因序列。

select  title, # 文章名
        length, # 基因長度
        type, # mRNA或DNA等
        l2_distance(feature, array[-0.017,-0.032,...]::real[]) as distance # 向量距離 
from demo.paper a, demo.dna_feature b
where a.id = b.id
order by distance; # 用向量類似度排序

其中表demo.paper中存儲了上傳的各個文章的基本信息,demo.dna_feature存儲了各個物種的基因的序列所對應的向量。經過基因轉向量模型,將要檢索的基因轉成向量[-0.017,-0.032,...],在阿里雲AnalyticDB數據庫中進行檢索。

固然,當前系統也支持結構化信息+非結構化信息(核苷酸序列)混合檢索。例如咱們想查找和冠狀病毒相關的相似基因片斷。在這種狀況下, 使用AnalyticDB咱們只須要在SQL中增長 where title like'%COVID-19%' 就能夠輕易實現。


參考文章

[1] Mikolov Tomas; et al. (2013). "Efficient Estimation of Word Representations in Vector Space". arXiv:1301.3781

[2] Mikolov Tomas, Sutskever Ilya, Chen Kai, Corrado, Greg S. and Dean Jeff (2013). Distributed representations of words and phrases and their compositionality. Advances in Neural Information Processing Systems. arXiv:1310.4546. Bibcode:2013arXiv1310.4546M.

[3] Mapleson Daniel, Garcia Accinelli, Gonzalo, Kettleborough George, Wright Jonathan and Clavijo, Bernardo J. (2016). "KAT: a K-mer analysis toolkit to quality control NGS datasets and genome assemblies". Bioinformatics. 33(4): 574–576. doi:10.1093/bioinformatics/btw663. ISSN 1367-4803. PMC 5408915. PMID 27797770.

[4] Quoc Le and Tomas Mikolov. (2014). Distributed representations of sentences and documents. In International Conference on Machine Learning, pages 1188–1196.

[5] 人類基因組hg38,http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.chromFa.tar.gz
[6] Stephen F Altschul, Warren Gish, Webb Miller, Eugene W.Myers and David J.Lipman: Basic local alignment search tool. (1990), Journal of Molecular Biology, 215(3):403–410.

[7] Julia Piantadosi, Phil Howlett and John Boland. (2007). "Matching the grade correlation coefficient using a copula with maximum disorder", Journal of Industrial and Management Optimization, 3 (2), 305–312

[8] Stephen Woloszynek, Zhengqiao Zhao, Jian Chen and Gail L. Rosen. (2019). "16s rRNA sequence embeddings: Meaningful numeric feature representations of nucleotide sequences that are convenient for downstream analyses", PLoS Computational Biology, 15(2), e1006721.

[9] James K. Senter, Taylor M. Royalty, Andrew D. Steen and Amir Sadovnik. (2019) "Unaligned Sequence Similarity Search Using Deep Learning.", arXiv e-prints

[10] Ng Patrick. (2017) dna2vec: consistent vector representations of variable-length k-mers. arXiv preprint, arXiv:1701.06279.

相關文章
相關標籤/搜索