当一个化合物合成出来之后,化学工作者常常关心的是分子中某一部分(如功能团)的有关信息,因而,亚结构(substructure)检索,从某种角度上讲,对于化学工作者来说是最为重要的手段。
RDKit提供各种功能,如不同的化学I/O格式,包括SMILES/SMARTS,结构数据格式(SDF),Thor数据树(TDT),Sybyl线符号(SLN),Corina mol2和蛋白质数据库(PDB)。子结构搜索; 标准SMILES; 手性支持;化学转化;化学反应;分子序列化;相似性/多样性选择;二维药效团;分层子图/片段分析; Bemis和Murcko骨架;逆合成组合分析程序(RECAP); 多分子最大共同亚结构;功能图;基于形状的相似性;基于RMSD的分子分子比对;基于形状的对齐;使用Open3-DALIGN算法的无监督分子-分子比对;与PyMOL进行3D可视化集成;功能组过滤;分子描述符库;相似图;机器学习等。
代码示例:
代码语言:javascript复制#导入依赖包
#!/usr/bin/python3
from rdkit.Chem import AllChem as ch
from rdkit.Chem import Draw as d
代码语言:javascript复制#载入分子库
suppl = ch.SDMolSupplier('drugbank.sdf')
mols = [x for x in suppl if x is not None]
print (len(mols)) #获取分子数目
代码语言:javascript复制#载入substructure结构
pattern = ch.MolFromSmarts('[CX3](=O)[OX2H1]')
代码语言:javascript复制#亚结构匹配
matching_molecules = [m for m in mols if m.HasSubstructMatch(pattern)]
print (len(matching_molecules)) #统计匹配分子数目
代码语言:javascript复制#输出匹配的前十个分子
result = [m for m in matching_molecules[:10]]
map(ch.Compute2DCoords, result)
img = d.MolsToGridImage(result, kekulize=False, subImgSize=(400,400),
legends=[mol.GetProp("GENERIC_NAME") for mol in result])
img