前準備
モジュールのインストール
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
- RDKitのPandasToolsでデータ分析を加速する(化学の新しいカタチ)
- RDKitの分子Molオブジェクトを扱う(化学の新しいカタチ)
- RDKitドキュメンテーション非公式日本語版サイト
- rdkit.Chem.PandasTools module
関連書籍
リンク
リンク
リンク