🚀 Попробуйте 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. Поиск химических структур

Затем мы можем импортировать отпечатки Моргана в 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)

Проверяет, содержит ли химическая структура другую химическую структуру.

Поиск схожих химических структур. По умолчанию в качестве метрики используется расстояние Танимото.

Проверяет, существует ли указанная химическая структура. Этот вид поиска требует точного совпадения.

Вычисление химических отпечатков пальцев

Расстояние Танимото часто используется в качестве метрики для химических отпечатков пальцев. В Milvus расстояние Жаккарда соответствует расстоянию Танимото.

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 для вычисления химического отпечатка, что фактически соответствует расстоянию Танимото.

Демонстрация системы

Чтобы лучше продемонстрировать работу системы, мы создали демо-версию, которая использует Milvus для поиска более 90 миллионов химических отпечатков пальцев. Используемые данные взяты с сайта 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, чтобы узнать больше!

Like the article? Spread the word

Продолжить чтение