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

포함된 Excel 파일로 이미지 내보내기


각 분자 구조를 붙인 판다스 데이터 프레임을 제작하여 excel 파일로 출력합니다.
(예: RDkit의 분자 설명자를 사용하는 데이터 프레임)
# 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)
                              )

추기


2018년에는 1분자의'MolToImage'그리기와 Excel 파일로 출력한'SaveXlsxFromFrame'이 문제없이 실행됐지만, 지금은 다음 오류로 실행되지 않고 있다.
'Image' object has no attribute 'tostring'
해결책을 아는 사람이 있다면 제게 메시지를 남겨주시면 좋겠네요.

참조 HP

  • RDKit의 PandasTools로 데이터 분석 가속화(화학의 새로운 형식)
  • RDKit를 처리하는 분자 Mol 객체(화학의 새로운 형태)
  • RDKit 문서 비공식 일본어 버전 사이트
  • rdkit.Chem.PandasTools module
  • 좋은 웹페이지 즐겨찾기