🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI

簡介

  • Scenarios
February 06, 2020
Shiyu Chen

簡介

新藥發現是藥物創新的源頭,也是新藥研發的重要一環。新藥發現是透過目標選擇與確認來實現的。當片段或先導化合物被發現時,通常會在內部或商業化合物庫中搜尋類似化合物,以發現結構-活性關係 (SAR)、化合物可用性,進而評估先導化合物優化成候選化合物的潛力。

為了從十億規模的化合物庫中發現片段空間中的可用化合物,通常會擷取化學指紋進行次結構搜尋與相似性搜尋。然而,對於十億級的高維化學指紋,傳統的解決方案既費時又容易出錯。一些潛在的化合物也可能在過程中遺失。本文將討論使用 Milvus 這個適用於大規模向量的相似性搜尋引擎,搭配 RDKit 來建立一個高效能的化學結構相似性搜尋系統。

相較於傳統方法,Milvus 的搜尋速度更快、涵蓋範圍更廣。透過處理化學指紋,Milvus 可以在化學結構庫中執行次結構搜尋、相似性搜尋和精確搜尋,以發掘潛在的可用藥物。

系統概述

本系統使用 RDKit 來產生化學指紋,並使用 Milvus 來執行化學結構相似性搜尋。請參考 https://github.com/milvus-io/bootcamp/tree/master/solutions/molecular_similarity_search 以瞭解更多有關系統的資訊。

1-system-overview.png 1-system-overview.png

1.產生化學指紋

化學指紋通常用於次結構搜尋和相似性搜尋。下圖顯示一個以位元表示的順序清單。每個位元代表一個元素、原子對或官能基。化學結構為C1C(=O)NCO1

2-identifying-patterns-molecules.png 2-identifying-patterns-molecules.png

我們可以使用 RDKit 來產生 Morgan 指紋,它會定義從特定原子開始的半徑,並計算半徑範圍內化學結構的數量,以產生化學指紋。為半徑和位元指定不同的值,即可取得不同化學結構的化學指紋。化學結構以 SMILES 格式表示。

from rdkit import Chem
mols = Chem.MolFromSmiles(smiles)
mbfp = AllChem.GetMorganFingerprintAsBitVect(mols, radius=2, bits=512)
mvec = DataStructs.BitVectToFPSText(mbfp)

2.搜尋化學結構

我們可以將 Morgan 指紋匯入 Milvus,建立化學結構資料庫。有了不同的化學指紋,Milvus 可以執行子結構搜尋、相似性搜尋和精確搜尋。

from milvus import Milvus
Milvus.add_vectors(table_name=MILVUS_TABLE, records=mvecs)
Milvus.search_vectors(table_name=MILVUS_TABLE, query_records=query_mvec, top_k=topk)

檢查一個化學結構是否包含另一個化學結構。

搜尋相似的化學結構。預設使用 Tanimoto 距離為指標。

檢查指定的化學結構是否存在。這種搜尋需要完全匹配。

計算化學指紋

Tanimoto 距離通常用於化學指紋的度量。在 Milvus 中,Jaccard 距離與 Tanimoto 距離相對應。

3-computing-chem-fingerprings-table-1.png 3-computing-chem-fingerprings-table-1.png

根據之前的參數,化學指紋計算可描述為:

4-computing-chem-fingerprings-table-2.png 4-computing-chem-fingerprings-table-2.png

我們可以看到1- Jaccard = Tanimoto 。這裡我們使用 Milvus 中的 Jaccard 來計算化學指紋,這其實與 Tanimoto distance 是一致的。

系統示範

為了更好地展示系統如何運作,我們建立了一個使用 Milvus 搜尋超過 9000 萬個化學指紋的 demo。使用的資料來自 ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF。初始介面如下:

5-system-demo-1.jpg 5-system-demo-1.jpg

我們可以在系統中搜尋指定的化學結構,並返回相似的化學結構:

6-system-demo-2.gif 6-system-demo-2.gif

結論

相似性搜尋在許多領域都是不可或缺的,例如圖片和影片。對於藥物發現,相似性搜尋可應用於化學結構資料庫,以發現潛在的可用化合物,然後將其轉換為種子進行實際合成和護理點測試。Milvus 作為針對大規模特徵向量的開放原始碼相似性搜尋引擎,採用異質運算架構,以達到最佳的成本效益。使用最少的運算資源,搜尋十億級的向量只需要幾毫秒。因此,Milvus 可協助在生物和化學等領域實現精確、快速的化學結構搜尋。

您可以造訪 http://40.117.75.127:8002/ 來存取示範,同時也別忘了造訪我們的 GitHub https://github.com/milvus-io/milvus 來瞭解更多資訊!

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀