RDkit を用いた分子構造の描画

前準備

モジュールのインストール

conda install -c conda-forge rdkit
conda install xlsxwriter

分子構造の描画

モジュールのインポート

import pandas as pd
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import Descriptors
from rdkit.ML.Descriptors import MoleculeDescriptors
from rdkit.Chem import PandasTools

MOLオブジェクトの準備

# 適当な化学構造のsmilesリストを準備する
smiles_list = ['Oc(cccc1)c1O', 'OC(C(C1)C1(Br)Br)=O', 'Cc(cc1)ccc1O',
'Oc(cc1)ccc1Cl', 'OC(c1cocc1)=O', 'CC(C)c1nnn[nH]1',
'CN(C=C1)C=CC1=N', 'CCc1cccnn1', 'C[C@H]([C@H]1NC)[C@@H]1NC',
'CCCc1ncc[nH]1']

# 化合物のラベルを作成
label_list = ['sample_{}'.format(i) for i in range(len(smiles_list))]

# molオブジェクトのリストを作成
mols_list = [Chem.MolFromSmiles(smile) for smile in smiles_list]

分子ひとつの画像(png)を作成・保存する

# とりあえず描画したい時
Draw.MolToImage(mols[0])

# pngファイルとして出力
Draw.MolToFile(mols_list[0],'test.png',size=(300, 300))

 

分子セットからグリッドレイアウトの画像を作成する

img = Draw.MolsToGridImage(mols_list,
molsPerRow=5, #一列に配置する分子の数
subImgSize=(200,200),
legends=label_list #化合物の下に表示するラベル
)

#ファイルに保存する
img.save('test_grid.png')


 

画像が埋め込まれたエクセルファイルとして出力する

各分子の構造が貼り付けられた pandas dataframe を作成して、エクセルファイルとして出力する。
(例として、RDkitの分子記述子の DataFrameを使用する)

```python
# RDkit記述子の作成
descriptor_names = [descriptor_name[0] for descriptor_name in Descriptors._descList[:5]] descriptor_calculation = MoleculeDescriptors.MolecularDescriptorCalculator(descriptor_names)
RDkit = [descriptor_calculation.CalcDescriptors(mol_temp) for mol_temp in mols_list] df = pd.DataFrame(RDkit, columns = descriptor_names,index=label_list)
df['smiles'] = smiles_list

# DataFrameへのImageの追加とエクセルファイルでの出力
PandasTools.AddMoleculeColumnToFrame(df, molCol='IMAGE', smilesCol='smiles')
PandasTools.SaveXlsxFromFrame(df, 'data_frame.xlsx',
molCol='IMAGE',
size=(150,150)
)
```

参考HP

関連書籍