🚀 免费试用 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 生成摩根指纹,它定义了特定原子的半径,并计算半径范围内化学结构的数量,从而生成化学指纹。为半径和位数指定不同的值,可获取不同化学结构的化学指纹。化学结构以 SMILES 格式表示。

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

2.搜索化学结构

然后,我们可以将摩根指纹导入 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 距离作为度量标准。

检查指定的化学结构是否存在。这种搜索要求完全匹配。

计算化学指纹

谷本距离通常用作化学指纹的度量。在 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 距离是一致的。

系统演示

为了更好地演示系统的工作原理,我们制作了一个演示,使用 Milvus 搜索了 9000 多万个化学指纹。使用的数据来自 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

扩展阅读