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')