SMILES表示法规则
- 原子由各自原子符号表示,相邻原子表示彼此相连,简单的H连接可以省略
- 单键,双键,三键和芳香键分别以符号”-” ”=” ”#” ”:”表示(通常单键和芳香键可省略)
- 带有分支的原子写在左侧,用“()”指定,分支上的元素写在右侧
- 裂解环结构以形成链结构,并且裂解位点用数字表示。
- 断开的化合物被写成由”.”分隔的单独结构,顺序是任意的。
Canonical SMILES 表示法
PUBCHEM :FC(F)(F)c1cc(C[C@H](N)C(=O)O)ccc1
Chemdraw:O=C(O)[C@@H](N)CC1=CC=CC(C(F)(F)F)=C1
这可能因为在转为SMILES 格式并没有统一规定哪个原子是起点。这也导致了不同的数据库的分子结构SMILES 表示不一,对于直接应用化学结构SMILES格式的研究的人来说,会造成很大的麻烦。因此产生了一个与该化合物名称相对应的SMILES 表示法—— ”Canonical SMILES”。
通常将通用的SMILES 格式转为 Canonical SMILES 格式称为“规范化”。然而,规范的SMILES常常是根据商业化的CANGEN算法生成的,还需要搭配使用Daylight的软件,使用起来比较受限制。
使用RDKit将SMILES 转为 Canonical SMILES
测试代码如下:
from rdkit import Chem
smi_PUBCHEM = 'FC(F)(F)c1cc(C[C@H](N)C(=O)O)ccc1'
mol = Chem.MolFromSmiles(smi_PUBCHEM)
canonical_smi_PUBCHEM = Chem.MolToSmiles(mol)
canonical_smi_PUBCHEM
'N[C@@H](Cc1cccc(C(F)(F)F)c1)C(=O)O' #运行结果
smi_Chemdraw = 'O=C(O)[C@@H](N)CC1=CC=CC(C(F)(F)F)=C1'
mol = Chem.MolFromSmiles(smi_Chemdraw)
canonical_smi_Chemdraw = Chem.MolToSmiles(mol)
canonical_smi_Chemdraw
'N[C@@H](Cc1cccc(C(F)(F)F)c1)C(=O)O' #运行结果
RDKit 的安装
- 安装
首先在电脑上构建python 环境,建议安装anaconda 软件。
conda install -c rdkit rdkit
注:如果首次安装出现安装失败,不用着急找教程,多安装几次就会成功。
- 验证是否成功
继续在anaconda prompt 中输入命令,如果能看到rdkit 具体版本即可证明安装成功。
Python
import rdkit
rdkit.__version__
基础教程及详细信息请参考以下链接:
RDKit 中文教程
http://rdkit.chenzhaoqiang.com/basicManual.html