rdkit SMARTS支持和扩展

本文介绍了RDKit库中SMARTS不支持的特性,如非四面体手性轴手性,以及SMARTS的扩展功能,包括杂化方式查询、配位键表示、邻居杂原子查询和范围查询。在杂化方式查询中,^符号用于定义原子的杂化状态,例如^0匹配SP3杂化的原子。配位键通过->和< -符号表示。SMARTS还支持查询特定碳原子与杂原子的连接情况。范围查询则允许指定原子的度范围。这些功能增强了SMARTS在子结构匹配中的能力。
摘要由CSDN通过智能技术生成


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杂化,所以羟基氧才具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值