从Rdkit到pandas。
Rdkit里面有一个Chem.PandasTools提供了许多便利的扩展工具。
先导入本文需要用到的一些library:
from rdkit import rdBase, Chem, DataStructs
from rdkit.Chem import AllChem, Draw, Descriptors, PandasTools
import pandas as pd
import xlsxwriter
数据集
这次我们使用的数据集「Platinum dataset」是德国汉堡大学通过高精度XRC得到的化合物分子构造。相关论文:
「High-Quality Dataset of Protein-Bound Ligand Conformations and Its Application to Benchmarking Conformer Ensemble Generators」
(J. Chem. Inf. Model. 57, 3, 529-539.)
「Benchmarking Commercial Conformer Ensemble Generators」
(J. Chem. Inf. Model. 57, 11, 2719-2728.) →请左转sci-hub
下载地址如下
Software & Datasetswww.zbh.uni-hamburg.de提取码:p5ux
下载到任意地址创建文件夹之后使用pandas导出sdf文档即可查看全部信息:
df = PandasTools.LoadSDF('C:/Users/.../platinum_dataset_2017_01.sdf')
df.head()
输出结果如下:
检索部分分子结构
以部分结构苯环为例,在pubchem一块钱买中巴:化合物数据库的使用方法入门[Python]里我们可以很轻易地找到苯环的smiles表达式:c1ccccc1
之后我们可以检索数据集中所有分子式中所存在的苯环并进行定位:
苯环 = Chem.MolFromSmiles('c1ccccc1')
df[df.ROMol >= 苯环].head()
输出结果如下:
当分子式中含有多个苯环的时候,只会标记其中的一个。当然我们也可以用这个方法去检索一些更特殊的部分分子构造。
提取并添加bemis・Murcko框架
Bemis・Murckohttps://pubs.acs.org/doi/10.1021/jm9602928定义的分子框架指是和链式构造(linker)相接的环状构造。
可以使用Bemis・Murcko的框架来提取分子框架(moleculer framwork)以及分子框架的smiles。
PandasTools.AddMoleculeColumnToFrame(df, molCol='Murcko_Mol', smilesCol='Murcko_SMILES')
df.head(10)
输出结果如下:
最后
我们可以将pandas编辑完的datafram保存到excel
PandasTools.SaveXlsxFromFrame(df, 'C:/Users/.../sample.xls', molCol='Murcko_Mol', size=(150,150))
此外,如果要保存信息到原来的sdf文件里,还可以使用WriteSDF(dataframe,output_file,idName=None,properties=None)