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進行。
為了演示我們的基因片段檢索的方法,我們從genbank下載了大量的病毒RNA的片段,和genbank內部的關於病毒的論文以及google scholar中相關病毒的論文導入到AnalyticDB基因檢索資料庫中。
基因檢索的演示界面如圖1,用戶將冠狀病毒的序列(COVID-19)上傳到AnalyticDB基因檢索工具中來。系統在幾個毫秒就可以檢索到相似的基因片段(當前系統只返回匹配度超過0.8的基因片段)。我們可以看到,穿山甲攜帶的冠狀病毒(GD/P1L),蝙蝠攜帶的冠狀病毒(RaTG13),以及SARS和MARS病毒被返回出來。其中GD/P1L的序列匹配度最高,有0.974,冠狀病毒很可能是通過穿山甲傳染到人的身上的。
圖1.基因檢索界面
眾所周知,RNA片段非常相似,說明這兩個RNA可能有相似的蛋白質表達和結構。通過基因檢索工具,我們可以看到SARS和MARS與冠狀病毒的匹配度0.8以上。說明可以將一些SARS或者MARS的研究成果用到新冠狀病毒上面來。系統爬取了每種病毒的論文,通過文本分類的算法,將這些論文分成檢測類,疫苗類和藥物類。
我們點開SARS (如圖2),就可以看到SARS檢測類有七種方法,疫苗類有四種方法,藥物類十種方法。可以看到,其中的對SARS有效的螢光定量PCR檢測,現在正在應用於冠狀病毒的檢測。對於疫苗來說,基因疫苗的方法,以及誘導體內免疫疫苗的方法,也正在如火如荼的展開。對於藥物,瑞德西韋,以及相關的幹擾素也都用在新型冠狀病毒的治療上面。
圖2.相關論文分類
圖3展示了點開相關的幹擾素的連結,可以看到相關的論文。當前系統調用了自動翻譯軟體,抽取了中文版的文件名的關鍵詞,作為文件名,方便用戶閱讀。
圖3. 點開幹擾素的連結
2.2 應用架構總體設計
阿里雲基因檢索系統的總體架構如圖4所示,AnalyticDB負責整個應用的全部的結構化數據(比方說,基因序列的長度,包含這個基因的論文名稱,以及基因的種類,DNA或者RNA等,見圖4查詢返回結果部分)和基因序列產生的特徵向量的存儲和查詢。在查詢的時候,我們使用基因向量抽取模型,將基因轉化成向量,在AnalyticDB庫中進行粗排檢索。在向量匹配的結果集中,我們使用經典的BLAST[7]算法進行精排,返回最相似的基因序列。
其中核心的是基因向量抽取模塊包含將核苷酸序列轉化成向量。我們目前抽取了各種病毒RNA的全部序列樣本來進行訓練,因此可以方便的對病毒RNA進行相似度的計算。當然,當前的向量抽取模型可以方便的擴展到其他物種基因上面來。基因向量抽取模型會在第三章進行詳細介紹。
圖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. 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 bwhere a.id = b.idorder by distance; # 用向量相似度排序
其中表demo.paper中存儲了上傳的各個文章的基本信息,demo.dna_feature存儲了各個物種的基因的序列所對應的向量。通過基因轉向量模型,將要檢索的基因轉成向量[-0.017,-0.032,...],在阿里雲AnalyticDB資料庫中進行檢索。
當然,當前系統也支持結構化信息+非結構化信息(核苷酸序列)混合檢索。例如我們想查找和冠狀病毒相關的類似基因片段。在這種情況下, 使用AnalyticDB我們只需要在SQL中增加 where title like'%COVID-19%' 就可以輕易實現。