文章目录
rdkit 支持Daylight定义的SMARTS的绝大部分标准特性以及一些有用的拓展
一、引入所需库
#! /usr/bin/python
# coding: utf-8
import 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', sp2_atoms)
# sp2 atoms ((1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,), (10,), (11,), (12,))
print('sp3 atoms', sp3_atoms) # sp3 atoms ((0,),)
对于分子阿司匹林,只有0号原子是sp3杂化,其他原子都是sp2杂化
注:苯酚中的氧都是sp2杂化,所以羟基氧才具