[PYTHON] Erstellen Sie mit RDKit einen Befehl zum Suchen nach ähnlichen Verbindungen aus der Zieldatenbank und überprüfen Sie die Verarbeitungszeit

Einführung

Ich habe mich gefragt, wie lange es dauern würde, bis die Abfrageverbindung mit RDKit nach ähnlichen Verbindungen aus der Zieldatenbank (nur SDF) sucht, also habe ich einen Befehl geschrieben.

Quelle

Bei der Berechnung der Ähnlichkeit wird häufig ein Fingerabdruck erstellt und der Tanimoto-Koeffizient zur Bestimmung der Ähnlichkeitsbewertung verwendet. Fingerabdrücke sind Teile chemischer Struktur und es gibt verschiedene Methoden. Hier habe ich versucht, die wichtigsten MACCS-Schlüssel mit einer kleinen Anzahl von Bits zu verwenden.

import argparse
from rdkit import Chem
from rdkit.Chem import Descriptors, AllChem
from rdkit import rdBase, Chem, DataStructs


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-query", type=str, required=True)
    parser.add_argument("-target_db", type=str, required=True)
    args = parser.parse_args()

    #Abfrage lesen
    mol_block = ""
    with open(args.query) as f:
        for line in f:
            mol_block += line

    query_mol = Chem.MolFromMolBlock(mol_block)

    #SDF wird geladen
    target_sdf_sup = Chem.SDMolSupplier(args.target_db)

    #FingerPrint-Berechnung(query)
    query_fp = AllChem.GetMACCSKeysFingerprint(query_mol)

    #FingerPrint-Berechnung(target)
    target_fps = [AllChem.GetMACCSKeysFingerprint(mol) for mol in target_sdf_sup]

    for i, target_fp in enumerate(target_fps):
        result = DataStructs.TanimotoSimilarity(query_fp, target_fp)
        print(i, result)


if __name__ == "__main__":
    main()

Wie benutzt man

So was. Vielen Dank, dass Sie argparse.

usage: StructureSimilaritySearch.py [-h] -query QUERY -target_db TARGET_DB

optional arguments:
  -h, --help            show this help message and exit
  -query QUERY(mol)
  -target_db TARGET_DB(sdf)

Verarbeitungszeit

Suchen Sie wie gewohnt nach 1024 Zugdaten der Löslichkeit von RDkit. Abfrage ist angemessen. Dann wird es in ca. 1 Sekunde zurückgegeben. Wenn es 10.000 Einheiten sind, scheint es so, wie es ist, vernünftig zu sein.

Referenz

Recommended Posts

Erstellen Sie mit RDKit einen Befehl zum Suchen nach ähnlichen Verbindungen aus der Zieldatenbank und überprüfen Sie die Verarbeitungszeit
Ich habe zum ersten Mal versucht, mit DynamoDB und Step Functions eine serverlose Stapelverarbeitung zu erstellen
Verwenden Sie den Befehl [shell], um eine beliebige Datei zu komprimieren, um eine Datei zu erstellen und die Originaldatei zu löschen.
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
Ich möchte vorerst eine Docker-Datei erstellen.
Erstellen Sie mit Google Text To Speak eine Audiodatei mit der Text-to-Speech-Funktion und überprüfen Sie den Text 3 Minuten lang als Leitfaden für das Sprechen.
Erstellen Sie ein Modell zum Speichern von Informationen aus der Google Books-API für eine intuitive Handhabung und Prüfung
Verarbeiten Sie die aus einem bestimmten Kassensystem entnommenen Daten, um eine Übersichtstabelle nach Produkt und Zeit zu erstellen
Suchen Sie mit tweepy nach Twitter-Keywords und schreiben Sie die Ergebnisse in Excel
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Erstellen Sie einen Befehl, um das Arbeitsprotokoll abzurufen
Verwendung des Befehls grep zum rekursiven Durchsuchen von Verzeichnissen und Dateien bis zu einer bestimmten Tiefe
Versuchen Sie, mit matplotlib aus den Daten von "Schedule-kun" eine Kampfaufzeichnungstabelle zu erstellen.
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
"Stoppen Sie das Festschreiben japanischer Dateien für Git auf Mac> <" Vorerst habe ich ein Skript geschrieben, um nach inkompatiblen japanischen Dateien unter Mac und Linux zu suchen.
Erstellen Sie ein Skript für Ihre Pepper-Fertigkeit in einer Tabelle und laden Sie SayText direkt aus dem Skript
Geben Sie dem Befehl history ein Datum und eine Uhrzeit ein und sammeln Sie Verlaufsdateien aller Benutzer mit einem Skript
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 8 Verarbeitungszeitmessung und Profiler
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
[Python] Erstellen Sie eine Datums- und Zeitliste für einen bestimmten Zeitraum
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Ich möchte Informationen von fstab am ssh-Verbindungsziel abrufen und den Befehl ausführen
Versuchen Sie, mit DCGAN + ein Death Metal-ähnliches Jackenbild zu erzeugen, und kratzen Sie die Metalldatenbank-Site dafür ab
Ich habe eine Funktion erstellt, um zu überprüfen, ob der Webhook vorerst in Lambda empfangen wird
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
RDKit definiert das Reaktionsmuster mit SMARTS und erzeugt einen Reaktanten
Erstellen Sie mit der AWS-API einen Alias für Route53 zu CloudFront
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
[Los] Erstellen Sie einen CLI-Befehl, um die Erweiterung des Bildes zu ändern
So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
[EC2] So installieren und laden Sie chromedriver über die Befehlszeile herunter
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
Erstellen Sie benutzerdefinierte Django-Befehle und führen Sie sie über die Befehlszeile aus
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Erstellen Sie eine CP932-CSV-Datei für Excel mit Chalice und geben Sie sie zurück
[Python] Erstellen einer Wörterbuchtypliste, Hinzufügen / Ändern / Löschen von Elementen und Extrahieren mit einer for-Anweisung
Ich möchte nur den Befehl SMTP MAIL FROM und den Befehl RCPT TO verwenden, ohne E-Mails mit Pythons smtplib zu senden
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).