🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI

Einleitung

  • Scenarios
February 06, 2020
Shiyu Chen

Einleitung

Die Entdeckung von Arzneimitteln ist ein wichtiger Bestandteil der Forschung und Entwicklung neuer Medikamente, denn sie ist die Quelle medizinischer Innovationen. Die Entdeckung von Arzneimitteln erfolgt durch die Auswahl und Bestätigung von Zielen. Wenn Fragmente oder Leitverbindungen entdeckt werden, werden in der Regel ähnliche Verbindungen in internen oder kommerziellen Substanzbibliotheken gesucht, um die Struktur-Aktivitäts-Beziehung (SAR) und die Verfügbarkeit von Verbindungen zu ermitteln und so das Potenzial der Leitverbindungen zu bewerten, die zu Kandidatenverbindungen optimiert werden können.

Um verfügbare Verbindungen im Fragmentraum von milliardenschweren Substanzbibliotheken zu entdecken, wird normalerweise ein chemischer Fingerabdruck für die Substruktursuche und die Ähnlichkeitssuche abgerufen. Die herkömmliche Lösung ist jedoch zeitaufwändig und fehleranfällig, wenn es um hochdimensionale chemische Fingerabdrücke in Milliardenhöhe geht. Außerdem können dabei einige potenzielle Verbindungen verloren gehen. In diesem Artikel wird die Verwendung von Milvus, einer Ähnlichkeitssuchmaschine für hochdimensionale Vektoren, mit RDKit erörtert, um ein System für eine leistungsstarke chemische Strukturähnlichkeitssuche aufzubauen.

Im Vergleich zu herkömmlichen Methoden bietet Milvus eine schnellere Suchgeschwindigkeit und eine breitere Abdeckung. Durch die Verarbeitung chemischer Fingerabdrücke kann Milvus eine Substruktursuche, Ähnlichkeitssuche und exakte Suche in chemischen Strukturbibliotheken durchführen, um potenziell verfügbare Arzneimittel zu entdecken.

Überblick über das System

Das System verwendet RDKit, um chemische Fingerabdrücke zu erzeugen, und Milvus, um eine Ähnlichkeitssuche nach chemischen Strukturen durchzuführen. Unter https://github.com/milvus-io/bootcamp/tree/master/solutions/molecular_similarity_search erfahren Sie mehr über das System.

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

1. Generierung chemischer Fingerabdrücke

Chemische Fingerabdrücke werden normalerweise für die Substruktursuche und die Ähnlichkeitssuche verwendet. Das folgende Bild zeigt eine sequentielle Liste, die durch Bits dargestellt wird. Jede Ziffer steht für ein Element, ein Atompaar oder eine funktionelle Gruppe. Die chemische Struktur ist C1C(=O)NCO1.

2-identifying-patterns-molecules.png 2-identifizierende-Muster-Moleküle.png

Wir können RDKit verwenden, um Morgan-Fingerabdrücke zu erzeugen. Dabei wird ein Radius von einem bestimmten Atom definiert und die Anzahl der chemischen Strukturen im Bereich des Radius berechnet, um einen chemischen Fingerabdruck zu erzeugen. Geben Sie verschiedene Werte für den Radius und die Bits an, um die chemischen Fingerabdrücke verschiedener chemischer Strukturen zu erhalten. Die chemischen Strukturen werden im SMILES-Format dargestellt.

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

2. Suche nach chemischen Strukturen

Die Morgan-Fingerabdrücke können dann in Milvus importiert werden, um eine Datenbank mit chemischen Strukturen aufzubauen. Mit verschiedenen chemischen Fingerabdrücken kann Milvus eine Substruktursuche, eine Ähnlichkeitssuche und eine exakte Suche durchführen.

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)

Prüft, ob eine chemische Struktur eine andere chemische Struktur enthält.

Sucht nach ähnlichen chemischen Strukturen. Standardmäßig wird die Tanimoto-Distanz als Metrik verwendet.

Prüft, ob eine bestimmte chemische Struktur existiert. Diese Art der Suche erfordert eine exakte Übereinstimmung.

Berechnung von chemischen Fingerabdrücken

Die Tanimoto-Distanz wird häufig als Metrik für chemische Fingerabdrücke verwendet. In Milvus entspricht die Jaccard-Distanz der Tanimoto-Distanz.

3-computing-chem-fingerprings-table-1.png 3-berechnung-chemischer-fingerabdrücke-tabelle-1.png

Auf der Grundlage der oben genannten Parameter kann die Berechnung chemischer Fingerabdrücke wie folgt beschrieben werden:

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

Wir können sehen, dass 1- Jaccard = Tanimoto. Hier verwenden wir Jaccard in Milvus, um den chemischen Fingerabdruck zu berechnen, was eigentlich mit dem Tanimoto-Abstand übereinstimmt.

System-Demo

Um besser zu demonstrieren, wie das System funktioniert, haben wir eine Demo erstellt, die Milvus verwendet, um mehr als 90 Millionen chemische Fingerabdrücke zu suchen. Die verwendeten Daten stammen von ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF. Die ursprüngliche Schnittstelle sieht wie folgt aus:

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

Wir können bestimmte chemische Strukturen im System suchen und erhalten ähnliche chemische Strukturen zurück:

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

Schlussfolgerung

Die Ähnlichkeitssuche ist in vielen Bereichen unverzichtbar, z. B. bei Bildern und Videos. Bei der Entdeckung von Arzneimitteln kann die Ähnlichkeitssuche auf Datenbanken mit chemischen Strukturen angewendet werden, um potenziell verfügbare Verbindungen zu entdecken, die dann in Seeds für die praktische Synthese und Point-of-Care-Tests umgewandelt werden. Milvus ist eine Open-Source-Suchmaschine für die Ähnlichkeitssuche in großen Merkmalsvektoren, die auf einer heterogenen Rechnerarchitektur basiert, um eine optimale Kosteneffizienz zu gewährleisten. Die Suche in Milliarden von Vektoren dauert nur wenige Millisekunden und erfordert nur ein Minimum an Rechenressourcen. So kann Milvus helfen, eine genaue und schnelle Suche nach chemischen Strukturen in Bereichen wie Biologie und Chemie zu implementieren.

Sie können auf die Demo zugreifen, indem Sie http://40.117.75.127:8002/ besuchen, und vergessen Sie nicht, auch unserem GitHub https://github.com/milvus-io/milvus einen Besuch abzustatten, um mehr zu erfahren!

Like the article? Spread the word

Weiterlesen