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.
Veuillez vous référer aux références.
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.
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()
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.
Recommended Posts