材料:
Ipython qtconsole
python35
化学反应:
羧>酸基团与氮的反应(随意定义仅供参考)
步骤:
(1)导入python的rdkit模块
(2)根据SMARTS定义一个化学反应
(3)输入化学分子进行反应
代码:
import rdkit
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
from rdkit.Chem.AllChem import ReactionFromSmarts
rxn = AllChem.ReactionFromSmarts('[C:1](=[O:2])-[OD1].[N:3]>>[C:1](=[O:2])[N:3]')
#定义一个反应,采用SMARTS格式
#解释这个SMARTS,第一个反应物限制:[C:1](=[O:2])-[OD1],羧基,侧链为(=[O:2]),O双键与C相连,第二个反应物限制:[N:3],基团带N原子
Draw.ReactionToImage(rxn)
#画出反应式
反应
pr = rxn.RunReactants((Chem.MolFromSmiles('CC(=O)O'),Chem.MolFromSmiles('NC')))
#两个反应物按照定义好的rxn进行反应
type(pr)
#pr按照元组格式进行存储
len(pr)
#查看产物个数,只有一个产物生成
Chem.MolToSmiles(pr[0][0])
#产物转化为SMILES格式,CNC(C)=O
Draw.MolToImage(pr[0][0])
#显示产物
不正确产物
#明显看到N原子的价键不正确
Chem.SanitizeMol(pr[0][0])
#标准化其价建
Draw.MolToImage(pr[0][0])
#再次查看,完全规范
规范产物
网友评论