rdkit 繪製分子【可視化分子】

rdkit 內置了Draw模塊,用於繪圖,把一些經常用到的方法直接放在Draw下面。

一、引入所需庫

#! /usr/bin/python
# coding: utf-8
# rdkit 繪製分子【可視化分子】


from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
# from rdkit.Chem.Draw import IPythonConsole #Needed to show molecules
from rdkit.Chem.Draw.MolDrawing import MolDrawing, DrawingOptions #Only needed if modifying defaults

二、分子對象轉化爲圖片

2.1 分子對象轉圖片文件函數解析

Draw.MolToFile(
    mol,  # mol對象
    'filename.png',  # 圖片存儲地址
    size=(300, 300), 
    kekulize=True, 
    wedgeBonds=True, 
    imageType=None, 
    fitImage=False, 
    options=None, 
    **kwargs
)

2.2 分子對象轉圖片函數解析

MolToImage(
    mol, 
    size=(300, 300), 
    kekulize=True, 
    wedgeBonds=True, 
    fitImage=False, 
    options=None, 
    canvas=None, 
    **kwargs
)

2.3 分子對象轉圖片

opts = DrawingOptions()
m = Chem.MolFromSmiles('OC1C2C1CC2')
opts.includeAtomNumbers=True
opts.bondLineWidth=2.8
draw = Draw.MolToImage(m, options=opts)
draw.save('/Users/zeoy/st/drug_development/st_rdcit/img/mol10.jpg')

在這裏插入圖片描述

2.4 多個分子按照grid顯示

smis=[
    'COC1=C(C=CC(=C1)NS(=O)(=O)C)C2=CN=CN3C2=CC=C3',
    'C1=CC2=C(C(=C1)C3=CN=CN4C3=CC=C4)ON=C2C5=CC=C(C=C5)F',
    'COC(=O)C1=CC2=CC=CN2C=N1',
    'C1=C2C=C(N=CN2C(=C1)Cl)C(=O)O',
]
mols = []
for smi in smis:
    mol = Chem.MolFromSmiles(smi)
    mols.append(mol)

img = Draw.MolsToGridImage(
    mols,
    molsPerRow=4,
    subImgSize=(200,200),
    legends=['' for x in mols]
)

img.save('/Users/zeoy/st/drug_development/st_rdcit/img/mol11.jpg')

在這裏插入圖片描述

2.5 多個分子基於公共骨架按照grid顯示

template = Chem.MolFromSmiles('c1nccc2n1ccc2')
AllChem.Compute2DCoords(template)
mols = []
for smi in smis:
    mol = Chem.MolFromSmiles(smi)
    # 生成一個分子的描述,其中一部分 分子被約束爲具有與參考相同的座標。
    AllChem.GenerateDepictionMatching2DStructure(mol, template)
    mols.append(mol)

# 基於分子文件輸出分子結構
img = Draw.MolsToGridImage(
    mols,   # mol對象
    molsPerRow=4,
    subImgSize=(200,200),
    legends=['' for x in mols]
)
img.save('/Users/zeoy/st/drug_development/st_rdcit/img/mol12.jpg')

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章