RDKit | 操作与实践

RDKit|化学反应操作与处理

2020-05-22  本文已影响0人  最会设计的科研狗

化学反应

Rdkit中提供了基于SMARTS的化学反应操作,可以通过SMARTS或rxn反应文件构建反应模式,再对指定的反应物进行匹配,将匹配上的结构按反应模式进行合成。

1.SMARTS创建反应

>>> from rdkit import Chem
>>> from rdkit.Chem import AllChem as Chem
>>> rxn = Chem.ReactionFromSmarts('[C:1](=[O:2])-[OD1].[N!H0:3]>>[C:1](=[O:2])[N:3]')
>>> reactants = (Chem.MolFromSmiles('CC(=O)O'), Chem.MolFromSmiles('NC'))
>>> products = rxn.RunReactants(reactants)
>>> print(len(products))
1
>>> Chem.Draw.ReactionToImage(rxn)
1
>>> print(len(products[0]))
1
>>> Chem.Draw.MolToImage(products[0][0])
2
>>> double = Chem.MolFromSmiles('C(COC(=O)O)C(=O)O')
>>> reacts = (double, Chem.MolFromSmiles('NC'))
>>> ps = rxn.RunReactants(reacts)
>>> print(len(ps))
2
>>> Chem.Draw.MolsToGridImage([x[0] for x in ps])
3

2.rxn文件创建反应

>>> import os
>>> from rdkit.Chem import RDConfig
>>> rxn_file = os.path.join(RDConfig.RDDocsDir, 'Book\data\AmideBond.rxn')
>>> rxn = Chem.ReactionFromRxnFile(rxn_file)
>>> print(rxn.GetNumReactantTemplates())
>>> print(rxn.GetNumProductTemplates())
2
1

3.产物后处理

>>> rxn = Chem.ReactionFromSmarts('[C:1]=[C:2].[C:3]=[*:4][*:5]=[C:6]>>[C:1]1[C:2][C:3][*:4]=[*:5][C:6]1')
>>> ps = rxn.RunReactants((Chem.MolFromSmiles('OC=C'), Chem.MolFromSmiles('C=CC(N)=C')))
>>> len(ps)
4
>>> Chem.Draw.MolsToGridImage([x[0] for x in ps], molsPerRow=4)
4
>>> uniqps = {}
>>> for p in ps:
>>>     smi = Chem.MolToSmiles(p[0])
>>>     uniqps[smi] = p[0]
>>> sorted(uniqps.keys())
['NC1=CCC(O)CC1', 'NC1=CCCC(O)C1']
>>> rxn = Chem.ReactionFromSmarts('[C:1]=[C:2][C:3]=[C:4].[C:5]=[C:6]>>[C:1]1=[C:2][C:3]=[C:4][C:5]=[C:6]1')
>>> ps = rxn.RunReactants((Chem.MolFromSmiles('C=CC=C'), Chem.MolFromSmiles('C=C')))
>>> Chem.MolToSmiles(ps[0][0])
'C1=CC=CC=C1'
5
>>> Chem.SanitizeMol(ps[0][0])
>>> Chem.MolToSmiles(ps[0][0])
'c1ccccc1'

本文参考自rdkit官方文档
代码及源文件在这里

上一篇下一篇

猜你喜欢

热点阅读