用 AI 識別基因,從向量化 DNA 序列開始

語言: CN / TW / HK

​DNA 序列在分子生物學和醫藥研究中有著廣泛的應用,比如基因溯源、物種鑑定、疾病診斷等。如果結合正在興起的基因大資料,採取大量的樣本,那麼通常實驗結果更具說服力,也能夠更有效地投入現實應用。

同時如同其他行業一樣,人工智慧的介入正在受到廣泛的關注,承載著業界對更智慧高效的研究方法的期待。然而傳統的核酸序列比對方法有著諸多限制,並不適用於大規模的資料 [1] ,這使現實應用不得不在成本和準確率中做出取捨。為緩解核酸序列資料特性的掣肘,向量化是面對大量 DNA 序列時的一個更優選擇。

Milvus 作為一款開源的、對海量資料友好的向量資料庫,能夠高效地儲存和檢索核酸序列的嵌入。在提高效率的同時,Milvus 也能夠幫助降低專案研究或系統搭建的成本。由 Milvus 搭建的 DNA 序列分類系統,不僅毫秒之間能夠識別基因的類別,還比機器學習領域裡常見的分類器們更加精準。

資料處理

基因是帶有遺傳資訊的 DNA 序列片段,由數個鹼基【A, C, G, T】排列組合而成。每個生物都有不同的基因組,比如人類基因組中含有3萬個左右基因,約30億個 DNA 鹼基對,每個鹼基對有2個對應的鹼基。

針對不同的需求和目的,DNA 序列可以被各種分類,支援著多樣的學術研究和現實應用。原始的 DNA 序列資料通常長短不一,常存在長序列。為了減少處理資料的成本,業內通常使用 k-mer [2] 預處理序列,同時能夠使 DNA 序列更接近普通文字的詞句結構。而向量化資料則能夠進一步提高計算速度,並適用於大資料分析與機器學習。

k-mer

一種常見的 DNA 序列預處理方式是 k-mer,從原始序列第一個鹼基開始,以一個鹼基為單位每次向後一位,每次取一個長度為k的短序列。經過 k-mer 之後,一條長度為 s 的長序列就被轉換成了(s-k+1)個短序列。通過調節k的值,可以提高模型的準確性。轉換後的短序列可以更好地進行資料讀取、特徵提取、向量化。

向量化

向量化 DNA 序列的過程其實是將其當作普通文字,一條被 kmer 拆分後的序列就像是一個句子,拆成的單個短序列是一個單詞,鹼基則對應字元。因此常見的 NLP 模型都可以被用來處理 DNA 序列資料,進行模型訓練、特徵提取、序列編碼。

每個模型都有自己的特點和限制,實際操作中可以根據資料的特點進行選擇和比較。以詞袋模型為例,CountVectorizer 是一種比較輕便的特徵提取方法,對序列長度沒有限制,但相似度區分不明顯。

Milvus示例

Milvus 使用簡化的非結構化資料管理,能夠將目標物件在萬億條向量資料中根據近似最近鄰搜尋(ANN)演算法進行比對,以平均延遲以毫秒計的速度召回相似結果。它對海量非結構化資料的友好與高效的相似搜尋,毫無疑問能夠輕鬆地管理大量 DNA 序列資料,從而促進生物或基因學的研究與應用。

一個簡單的演示案例展現瞭如何使用Milvus搭建 DNA 序列的分類系統,實驗資料[3]包含了三個物種的7種基因序列。在插入 Milvus 之前,該示例首先將所有的 DNA 序序列進行了 k-mer 處理,然後訓練了詞袋模型用以特徵提取與向量化。該結合 Milvus 與 Mysql 的分類模型結構如下圖所示,包括了插入和搜尋兩個流程。

(https://github.com/milvus-io/bootcamp/tree/master/solutions/dna_sequence_classification)

得到每條 DNA 序列對應的向量之後,將其插入 Milvus 中事先建好的 Milvus 集合中(可指定分集),以供比對與搜尋。向量之間的距離反映了序列之間的相似度,從而實現基因序列的分類和種類之間的相似度比較。

基因序列分類

輸入未知類別的 DNA 序列,在 Milvus 資料庫中搜索與其相似的序列便可以對搜尋物件進行基因分類,以此瞭解其可能的功能。比如一段序列被分類為GPCRs(G蛋白偶聯受體),則表示該序列或許關係著樣本採取物件的各種生理功能[4]。示例中的模型對未插入集合的人類基因序列進行搜尋,成功根據搜尋結果返回了正確的基因類別,證明了 Milvus 的向量相似性搜尋能夠分類基因序列。

物種相似程度

通過比較不同物種之間基因序列的平均相似度,也可以看出哪些物種之間基因更為相似。示例中計算了黑猩猩與人類、狗與人類的基因序列的平均內積距離(Average Inner Product Distance: 0.97 > 0.70),驗證了黑猩猩比狗在基因上更接近人類。由此可見,Milvus 能夠通過計算基因序列之間的向量距離來支援科學研究。

實驗表現

對示例採用的人類基因序列樣本資料(共 3629 條)進行 k-mer 處理後,隨機取20% 作為測試資料。使用剩下的 80% 作為訓練資料,進行特徵提取,訓練不同的分類模型或搭建 Milvus + Mysql 搜尋系統。實驗採用了五種分類器分別對測試序列進行了分類,通過計算並比較準確率(正確分類的基因序列個數 / 測試序列的總個數),Milvus + Mysql 搭建的分類模型的準確率(90.77%)超過了所有的常用分類器。

應用拓展

隨著基因大資料的發展和完善,向量化後的 DNA 序列資料能夠更好地參與科學研究與實踐應用。如果能夠結合生物學的專業知識,便可以更合理地向量化 DNA 序列、計算距離、解讀結果。

融入生物學並採用大量的樣本能夠很大程度地改進基因序列的向量資料庫,Milvus 便能夠更好地發揮所長。根據現實需求,Milvus 相似性搜尋和距離計算有很大的潛力被投入各種應用。

  • 未知序列研究:研究表明向量化序列能夠壓縮資料,根據已知基因序列研究未知序列的結構、功能、進化關係。[5] 當擁有足夠的序列資料進行研究時,實驗結果會更加可靠有效,但資料的儲存和處理會成為一個問題。將其向量化後使用 Milvus 能夠在節約資料處理成本的同時,保持甚至提高模型準確率。

  • 適配硬體:受到傳統的生物分子序列比對演算法限制,基因序列相似性搜尋無法受益於硬體(CPU/GPU)的發展[6][7]。Milvus 的加入可以從距離演算法上解決這一問題,更好地根據資料規模適配硬體,從而顯著提高搜尋效率。

  • 鑑定或溯源病毒:現實中鑑定新冠病毒的起源時,科學家通過比較毒株核苷酸序列推測出新冠病毒或起源於蝙蝠,同時發現其比起 MERS 更接近 SARS 病毒。[8] 該實驗採用了 5 例病患的資料,如果在此基礎上使用更大的樣本進行驗證或者研究,結論能夠更具說服力,或發現更多的模式。

  • 疾病診斷:臨床上一般是對比檢查物件與健康人的基因序列,找出可引起疾病的變異基因。[9] 在疾病對應的基因位置得到序列,根據健康與否、嚴重程度或疾病型別將大量的樣本資料分類。將這些資料通過合適的演算法提取特徵並向量化後插入 Milvus,計算向量距離並轉換成患病概率,就可以實現基於基因序列的人工智慧疾病診斷系統。除了能夠協助疾病診斷外,該應用也能夠幫助推進靶向治療的發展[10]。

參考資料

https://www.frontiersin.org/articles/10.3389/fbioe.2020.01032/full#h5

https://en.wikipedia.org/wiki/K-mer#:~:text=Usually%2C%20the%20term%20k%2Dmer,total%20possible%20k%2Dmers%2C%20where

https://www.kaggle.com/nageshsingh/dna-sequence-dataset

https://baike.baidu.com/item/G%E8%9B%8B%E7%99%BD%E5%81%B6%E8%81%94%E5%8F%97%E4%BD%93/9495289#4

https://iopscience.iop.org/article/10.1088/1742-6596/1453/1/012071/pdf

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7884812/

https://mjeer.journals.ekb.eg/article_146090.html

http://rs.yiigle.com/yufabiao/1180150.htm

http://www.xinhuanet.com/science/2018-04/16/c_137114251.htm

https://www.frontiersin.org/articles/10.3389/fgene.2021.680117/full

 

✏️ 作者:顧夢佳,Zilliz 資料工程師,麥吉爾大學資訊學碩士。在 Zilliz 的主要工作是參與開源專案 Milvus 的社群運營與維護,為使用者提供升級推薦系統、搭建基因序列分類模型等不同場景下的解決方案。野草般頑強,解決問題時百折不撓、遇強愈強。