[PYTHON] Versuchen Sie, nur den Kohlenstoff am Ende der Kette mit SMARTS zu reagieren

Einführung

In Definieren Sie das Reaktionsmuster mit SMARTS mit RDKit und generieren Sie einen Reaktanten wird die Reaktion mit SMARTS mit RDKit am Beispiel der Hydroxylierungsreaktion von Kohlenstoffatomen durchgeführt. sah. Es ist jedoch nicht realistisch, alle Kohlenstoffatome hydroxylieren zu wollen. Deshalb habe ich diesmal versucht, detailliertere Bedingungen mit SAMRTS festzulegen. Insbesondere habe ich die Methylgruppe am Ende der Kette angegeben und versucht, nur diese zu hydroxylieren.

Methode

Letztes Mal habe ich die folgenden SMARTS geschrieben.

[C:1]>>[C:1][OH]

Dies reagiert jedoch mit jedem Kohlenstoffatom. Dieses Mal möchte ich nur die Methylgruppe am Ende der Kette oxidieren. Die terminale Methylgruppe sollte 3 Wasserstoffatome haben. Versuchen Sie daher, die Regeln wie folgt zu ändern.

'[CH3:1]>>[CH2:1]-[OH]'

Lass es uns versuchen. Dieses Mal werden wir die gleiche Verbindung wie beim letzten Mal testen. Letztes Mal wurden vier Reaktanten hergestellt, diesmal sollten jedoch nur zwei terminale Methylgruppen hergestellt werden.

reactant.png

Als ich es versuchte, wurden zwei Reaktanten hergestellt. Mal sehen.

Der erste. Die terminale Methylgruppe reagiert. metablite_0.png

Der Zweite. Die andere terminale Methylgruppe reagiert. Wie erwartet.

metablite_1.png

SMARTS, das nur zwei Kohlenstoffatome reagiert, in denen zwei Wasserstoffatome in der Mitte der Kette gebunden sind, ist übrigens wie folgt.

'[CH2:1]>>[CH1:1]-[OH]'

Quelle

Schließlich werde ich die gesamte Quelle einschließlich der Bilderzeugung veröffentlichen.

from rdkit.Chem import AllChem
from rdkit.Chem.Draw import rdMolDraw2D
from io import BytesIO
from cairosvg import svg2png
from IPython.display import SVG
from rdkit import Chem

#Referenz(rdkit-smarts)https://magattaca.hatenablog.com/entry/2019/02/10/194853
#Referenz(smarts) https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5515729/table/Tab1/?report=objectonly
# https://sourceforge.net/p/rdkit/mailman/message/36294482/

def generate_image(mol, size, path, name):
    image_data = BytesIO()
    view = rdMolDraw2D.MolDraw2DSVG(size[0], size[1])
    tm = rdMolDraw2D.PrepareMolForDrawing(mol)
    view.DrawMolecule(tm)
    view.FinishDrawing()
    svg = view.GetDrawingText()
    SVG(svg.replace('svg:', ''))
    print(path + "/" + name)
    try:
        svg2png(bytestring=svg, write_to=path + "/" + name + ".png ")
    except:
        print("errro")
        pass


def main():
    reactant_1 = Chem.MolFromSmiles('COc2ccc1cccc(CCNC(C)=O)c1c2')
    generate_image(reactant_1, (300, 300), "./tmp", "reactant")

    #reaction_pattern = '[CH3:1]>>[CH2:1]-[OH]'
    reaction_pattern = '[CH3:1]>>[CH2:1]-[OH]'
    rxn = AllChem.ReactionFromSmarts(reaction_pattern)
    x = rxn.RunReactants([reactant_1])
    for i, mol in enumerate(x):
        print(mol[0])
        try:
            Chem.SanitizeMol(mol[0])
            generate_image(mol[0], (300, 300), "./tmp", "metablite_{0}".format(i))
        except:
            print("Error")
            print(Chem.MolToMolBlock(mol[0]))

if __name__ == "__main__":
    main()

abschließend

――Streng genommen müssen Sie möglicherweise die Gebühr berücksichtigen und so weiter. Ich bin mir nicht sicher, weil es chemisch ein Shiroto ist. ―― Als zukünftige Aufgabe möchte ich, wenn die Reaktionsstelle bekannt ist, nur diese Stelle reagieren. Auch wenn es möglicherweise nicht mit SMARTS zusammenhängt, möchte ich die Anfälligkeit für Reaktionen bewerten.

Recommended Posts

Versuchen Sie, nur den Kohlenstoff am Ende der Kette mit SMARTS zu reagieren
python> print> Wird es erst am Ende des Prozesses umgeleitet?> Mit -u ausführen
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt
Versuchen Sie, das N Queen-Problem mit SA von PyQUBO zu lösen
Python-Grundkurs (Ende 15)
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Versuchen Sie, den Hintergrund und das sich bewegende Objekt des Videos mit OpenCV zu trennen
Automatisierung der Erstellung von Arbeitszeittabellen am Monatsende mit Selen
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
Versuchen Sie, nur den Kern von Ubuntu zu installieren
Ich habe Sie dazu gebracht, das Ende der IP-Adresse mit L Chika auszudrücken
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
Geben Sie die Start- und Endpositionen der Dateien an, die in qiitap enthalten sein sollen
Senden Sie Google Mail am Ende des Vorgangs [Python]
[Überprüfung] Versuchen Sie, die Punktgruppe an der Optimierungsfunktion von Pytorch Part 1 auszurichten
Entfernen Sie eine bestimmte Zeichenfolge am Ende von Python
Versuchen Sie, die Bewegung des Sonnensystems zu simulieren
Erste Schritte mit Visual Studio Online ~ Das Ende der Ära der Umgebungskonstruktion ~
Da es Weihnachten ist, werde ich versuchen, die Genealogie Jesu Christi mit Cabocha zu zeichnen
Ganz rechts Koordinaten des Etiketts mit tkinter erstellt
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Versuchen Sie, die Probleme des "Matrix-Programmierers" zu lösen (Kapitel 1).
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Versuchen Sie, die Anzahl der Likes auf Twitter zu schätzen
[Neo4J] ④ Versuchen Sie, die Diagrammstruktur mit Cypher zu handhaben
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
[Einführung in das SIR-Modell] Prognostizieren Sie die Endzeit jedes Landes mit der COVID-19-Datenanpassung ♬
Erstellen Sie ein zweidimensionales Array, indem Sie am Ende eines leeren Arrays mit numpy eine Zeile hinzufügen
Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten
Versuchen Sie, die Nährstoffe von Cornflakes zu visualisieren, die M-1-Champion Milkboy mit Python sagte
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Versuchen Sie, mit dem Uprobe zu spielen, der Systemtap direkt unterstützt
Holen Sie sich UNIXTIME zu Beginn des heutigen Tages mit einem Befehl
Ich möchte die Effizienz mit Python auch im experimentellen System verbessern. (5) Ich möchte am Ende des Experiments eine Benachrichtigung mit der Slack-API senden
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Dekorateur, der am Ende der Methode "FIN-Methodenname" anzeigt
Versuchen Sie, die Genauigkeit der Twitter-ähnlichen Zahlenschätzung zu verbessern
Versuchen Sie, die Probleme / Probleme des "Matrix-Programmierers" zu lösen (Kapitel 0-Funktion)
Die Geschichte der Anzeige von Bildern mit OpenCV oder PIL (nur)
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Versuchen Sie, die Position des Senders aus dem Funkwellenausbreitungsmodell mit Python [Wi-Fi, Beacon] zu berechnen.
Versuchen Sie, den Boden durch Rekursion herauszufordern
Die Geschichte, dass man mit Pycharm kein Pygame spielen kann
Speichern Sie das Ergebnis des Crawls mit Scrapy im Google Data Store
[Anmerkung] Versuchen wir, den Stromverbrauch vorherzusagen! (Teil 1)
Machen Sie sich mit der Pipeline von spaCy vertraut (wollen Sie es sein)
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy