rdkit SMARTS支持和扩展

文章目录 一、引入所需库二、SMARTS 不支持的特性三、SMARTS 支持的扩展3.1 杂化方式查询3.2 配位键3.3 邻居杂原子查询3.4 范围查询3.

文章目录

  • 一、引入所需库
  • 二、SMARTS 不支持的特性
  • 三、SMARTS 支持的扩展
    • 3.1 杂化方式查询
    • 3.2 配位键
    • 3.3 邻居杂原子查询
    • 3.4 范围查询
    • 3.5 SMARTS语法参考
  • 四、子结构匹配
    • 4.1 具有SMARTS查询的功能组

rdkit 支持Daylight定义的SMARTS的绝大部分标准特性以及一些有用的拓展

一、引入所需库

#! /usr/bin/python
# coding: utf-8import os
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw

二、SMARTS 不支持的特性

1.非四面体手性轴手性
2. @ ? 操作符号
3.显式原子质量 ( 支持同位素定义查询 )
4.片段组的查询©.©

三、SMARTS 支持的扩展

3.1 杂化方式查询

杂化方式在SMARTS 中通过^符号进行定义。 如:

1.^0 匹配S 杂化的原子
2.^1 匹配SP 杂化的原子
3.^2 匹配SP2 杂化的原子
4.^3 匹配SP3 杂化的原子
5.^4 匹配SP3D 杂化的原子
6.^5 匹配SP3D2 杂化的原子

aspirin = Chem.MolFromSmiles('CC(=O)OC1=CC=CC=C1C(=O)O')
Draw.MolToImageFile(aspirin,'/Users/zeoy/st/drug_development/st_rdcit/img/mol52.jpg',legend='aspirin'
)

阿司匹林
阿司匹林

# sp2杂化的原子
sp2_atoms = aspirin.GetSubstructMatches(Chem.MolFromSmarts('[^2]'))
# sp3杂化的原子
sp3_atoms = aspirin.GetSubstructMatches(Chem.MolFromSmarts('[^3]'))
print('sp2 atoms'