🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI

Introducción

  • Scenarios
February 06, 2020
Shiyu Chen

Introducción

El descubrimiento de fármacos, como fuente de innovación en medicina, es una parte importante de la investigación y el desarrollo de nuevos medicamentos. El descubrimiento de fármacos se lleva a cabo mediante la selección y confirmación de dianas. Cuando se descubren fragmentos o compuestos principales, se suelen buscar compuestos similares en bibliotecas de compuestos internas o comerciales con el fin de descubrir la relación estructura-actividad (SAR), la disponibilidad de compuestos, evaluando así el potencial de los compuestos principales para ser optimizados como compuestos candidatos.

Para descubrir compuestos disponibles en el espacio de fragmentos de bibliotecas de compuestos a escala de miles de millones, se suele recuperar la huella química para la búsqueda de subestructuras y similitudes. Sin embargo, la solución tradicional requiere mucho tiempo y es propensa a errores cuando se trata de huellas químicas de alta dimensión a escala de miles de millones. Además, algunos compuestos potenciales pueden perderse en el proceso. Este artículo analiza el uso de Milvus, un motor de búsqueda de similitudes para vectores a gran escala, con RDKit para construir un sistema de búsqueda de similitudes de estructuras químicas de alto rendimiento.

En comparación con los métodos tradicionales, Milvus tiene una velocidad de búsqueda más rápida y una cobertura más amplia. Al procesar huellas químicas, Milvus puede realizar búsquedas de subestructuras, similitudes y búsquedas exactas en bibliotecas de estructuras químicas para descubrir medicamentos potencialmente disponibles.

Visión general del sistema

El sistema utiliza RDKit para generar huellas químicas y Milvus para realizar búsquedas por similitud de estructuras químicas. Consulte https://github.com/milvus-io/bootcamp/tree/master/solutions/molecular_similarity_search para obtener más información sobre el sistema.

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

1. Generación de huellas químicas

Las huellas químicas suelen utilizarse para la búsqueda de subestructuras y la búsqueda de similitudes. La siguiente imagen muestra una lista secuencial representada por bits. Cada dígito representa un elemento, un par de átomos o un grupo funcional. La estructura química es C1C(=O)NCO1.

2-identifying-patterns-molecules.png 2-identificación-patrones-moléculas.png

Podemos utilizar RDKit para generar huellas Morgan, que define un radio a partir de un átomo específico y calcula el número de estructuras químicas dentro del rango del radio para generar una huella química. Especifique diferentes valores para el radio y los bits para obtener las huellas químicas de diferentes estructuras químicas. Las estructuras químicas se representan en formato SMILES.

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

2. Búsqueda de estructuras químicas

A continuación, podemos importar las huellas Morgan en Milvus para construir una base de datos de estructuras químicas. Con diferentes huellas químicas, Milvus puede realizar búsquedas de subestructuras, búsquedas de similitudes y búsquedas exactas.

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)

Comprueba si una estructura química contiene otra estructura química.

Busca estructuras químicas similares. Por defecto, se utiliza la distancia de Tanimoto como métrica.

Comprueba si existe una estructura química especificada. Este tipo de búsqueda requiere una coincidencia exacta.

Cálculo de huellas químicas

La distancia de Tanimoto se utiliza a menudo como métrica para las huellas químicas. En Milvus, la distancia de Jaccard se corresponde con la distancia de Tanimoto.

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

Basándose en los parámetros anteriores, el cálculo de huellas dactilares químicas puede describirse como:

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

Podemos ver que 1- Jaccard = Tanimoto. Aquí utilizamos Jaccard en Milvus para calcular la huella química, que en realidad es coherente con la distancia de Tanimoto.

Demostración del sistema

Para demostrar mejor cómo funciona el sistema, hemos construido una demo que utiliza Milvus para buscar más de 90 millones de huellas químicas. Los datos utilizados proceden de ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF. La interfaz inicial tiene el siguiente aspecto:

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

Podemos buscar estructuras químicas especificadas en el sistema y nos devuelve estructuras químicas similares:

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

Conclusión

La búsqueda por similitud es indispensable en numerosos campos, como las imágenes y los vídeos. En el descubrimiento de fármacos, la búsqueda por similitud puede aplicarse a bases de datos de estructuras químicas para descubrir compuestos potencialmente disponibles, que luego se convierten en semillas para la síntesis práctica y las pruebas en el punto de atención. Milvus, como motor de búsqueda de similitudes de código abierto para vectores de características a escala masiva, está construido con una arquitectura informática heterogénea para obtener la mejor rentabilidad. Las búsquedas en vectores a escala de miles de millones sólo tardan milisegundos con recursos informáticos mínimos. De este modo, Milvus puede ayudar a implementar búsquedas precisas y rápidas de estructuras químicas en campos como la biología y la química.

Puede acceder a la demo visitando http://40.117.75.127:8002/, ¡y no olvide visitar también nuestro GitHub https://github.com/milvus-io/milvus para obtener más información!

Like the article? Spread the word

Sigue Leyendo