🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI

HomeBlogsIntroduzione

Introduzione

  • Scenarios
February 06, 2020
Shiyu Chen

Introduzione

La scoperta di farmaci, in quanto fonte di innovazione medica, è una parte importante della ricerca e dello sviluppo di nuovi farmaci. La scoperta dei farmaci avviene attraverso la selezione e la conferma dei bersagli. Quando vengono scoperti frammenti o composti guida, i composti simili vengono solitamente ricercati in biblioteche di composti interne o commerciali per scoprire la relazione struttura-attività (SAR), la disponibilità dei composti, valutando così il potenziale dei composti guida da ottimizzare in composti candidati.

Per scoprire i composti disponibili nello spazio dei frammenti da librerie di composti su scala miliardaria, l'impronta digitale chimica viene solitamente recuperata per la ricerca di sottostrutture e la ricerca di similarità. Tuttavia, la soluzione tradizionale richiede molto tempo ed è soggetta a errori quando si tratta di impronte chimiche ad alta dimensionalità su scala miliardaria. Inoltre, alcuni composti potenziali possono andare persi nel processo. In questo articolo si parla dell'utilizzo di Milvus, un motore di ricerca di similarità per vettori su scala massiva, con RDKit per costruire un sistema di ricerca di similarità della struttura chimica ad alte prestazioni.

Rispetto ai metodi tradizionali, Milvus ha una velocità di ricerca maggiore e una copertura più ampia. Elaborando le impronte digitali chimiche, Milvus è in grado di eseguire la ricerca di sottostrutture, la ricerca di similarità e la ricerca esatta nelle librerie di strutture chimiche per scoprire farmaci potenzialmente disponibili.

Panoramica del sistema

Il sistema utilizza RDKit per generare le impronte chimiche e Milvus per eseguire la ricerca di similarità delle strutture chimiche. Per saperne di più sul sistema, consultare il sito https://github.com/milvus-io/bootcamp/tree/master/solutions/molecular_similarity_search.

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

1. Generazione delle impronte digitali chimiche

Le impronte digitali chimiche sono solitamente utilizzate per la ricerca di sottostrutture e per la ricerca di similarità. L'immagine seguente mostra un elenco sequenziale rappresentato da bit. Ogni cifra rappresenta un elemento, una coppia di atomi o un gruppo funzionale. La struttura chimica è C1C(=O)NCO1.

2-identifying-patterns-molecules.png 2-identificare-modelli-molecole.png

Possiamo usare RDKit per generare le impronte digitali di Morgan, che definisce un raggio da un atomo specifico e calcola il numero di strutture chimiche nell'intervallo del raggio per generare un'impronta chimica. Specificare valori diversi per il raggio e i bit per acquisire le impronte chimiche di diverse strutture chimiche. Le strutture chimiche sono rappresentate in formato SMILES.

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

2. Ricerca delle strutture chimiche

Possiamo quindi importare le impronte digitali di Morgan in Milvus per costruire un database di strutture chimiche. Con le diverse impronte chimiche, Milvus può eseguire la ricerca per sottostruttura, la ricerca per similarità e la ricerca esatta.

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)

Verifica se una struttura chimica contiene un'altra struttura chimica.

Cerca strutture chimiche simili. Per impostazione predefinita, viene utilizzata la distanza di Tanimoto come metrica.

Verifica l'esistenza di una struttura chimica specificata. Questo tipo di ricerca richiede una corrispondenza esatta.

Calcolo delle impronte chimiche

La distanza di Tanimoto è spesso utilizzata come metrica per le impronte chimiche. In Milvus, la distanza di Jaccard corrisponde alla distanza di Tanimoto.

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

Sulla base dei parametri precedenti, il calcolo delle impronte chimiche può essere descritto come segue:

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

Possiamo vedere che 1- Jaccard = Tanimoto. Qui utilizziamo Jaccard in Milvus per calcolare l'impronta chimica, che in realtà è coerente con la distanza di Tanimoto.

Dimostrazione del sistema

Per dimostrare meglio il funzionamento del sistema, abbiamo realizzato una demo che utilizza Milvus per cercare più di 90 milioni di impronte chimiche. I dati utilizzati provengono da ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF. L'interfaccia iniziale si presenta come segue:

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

È possibile cercare strutture chimiche specificate nel sistema e restituire strutture chimiche simili:

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

Conclusione

La ricerca per similarità è indispensabile in diversi campi, come le immagini e i video. Per la scoperta di farmaci, la ricerca per similarità può essere applicata ai database delle strutture chimiche per scoprire composti potenzialmente disponibili, che vengono poi convertiti in semi per la sintesi pratica e i test point-of-care. Milvus, come motore di ricerca di similarità open-source per vettori di caratteristiche su scala massiccia, è costruito con un'architettura di calcolo eterogenea per la migliore efficienza dei costi. Le ricerche su vettori di dimensioni miliardarie richiedono solo millisecondi con risorse di calcolo minime. Milvus può quindi contribuire a implementare una ricerca accurata e veloce di strutture chimiche in campi come la biologia e la chimica.

È possibile accedere alla demo visitando il sito http://40.117.75.127:8002/, e non dimenticate di visitare anche il nostro sito GitHub https://github.com/milvus-io/milvus per saperne di più!

Like the article? Spread the word

Continua a Leggere