[PYTHON] RDKit définit le modèle de réaction avec SMARTS et produit un réactif

introduction

Avec RDKit, je voudrais définir un modèle de réaction avec SMARTS et générer un produit à partir du réactif basé sur ce modèle.

environnement

Méthode

Veuillez vous référer aux références.

Réaction que j'ai essayé cette fois

Cette fois, je voudrais essayer la réaction d'hydroxylation des atomes de carbone. Le modèle SMARTS est le suivant.

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

Les composés suivants ont été essayés comme produit de réaction.

query.png

La source

La source est la suivante. J'ai essayé de sortir tous les produits produits par la réaction à une image.

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

#Sortie d'image
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:
        pass


def main():
    reactant_1 = Chem.MolFromSmiles('COc2ccc1cccc(CCNC(C)=O)c1c2')
    reaction_pattern = '[C:1]>>[C: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()

Vérification

Quatre produits ont été obtenus. L'une était une erreur due à la charge lors de la désinfection. Vérifions le résultat avec une image.

Produit 1

metablite_0.png

Produit 2

metablite_1.png

Produit 3

metablite_2.png

Produit 4

metablite_4.png

Produit 5 (erreur de charge causée par le processus de désinfection)

error_metabolite.png

Considération

Les références

Recommended Posts

RDKit définit le modèle de réaction avec SMARTS et produit un réactif
Fabriquez un thermomètre BLE et obtenez la température avec Pythonista3
Générez des formes physiquement robustes avec GAN et imprimez avec une imprimante 3D
Résolvez le problème du sac à dos Python avec la méthode de branche et liée
Générer une distribution normale avec SciPy
Générer une URL pré-signée avec golang
[Python] Générer un mot de passe avec Slackbot
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
Générez une liste contenant le nombre de jours du mois en cours.
C> lien> Définir une chaîne et accéder à l'index> * dstPtr ++ = "0123456789ABCDEF" [nibble];
L'histoire de la création d'une caméra sonore avec Touch Designer et ReSpeaker
Créez DNN-CRF avec Chainer et reconnaissez la progression des accords de la musique
Créez une commande pour rechercher des composés similaires dans la base de données cible avec RDKit et vérifiez le temps de traitement