RDKit | 操作与实践

RDKit|分子子结构的删除、替换与切割

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

分子子结构操作

RDKit包含了一些修改分子的函数,这些函数可以方便地对分子进行子结构删除/替换等操作。更复杂的操作可以看Chemical Reactions中相关的功能。

1.删除子结构

>>> from rdkit import Chem
>>> from rdkit.Chem import AllChem, Draw
>>> m = Chem.MolFromSmiles('OC(=O)C(N)Cc1ccccc1')
>>> m = Chem.MolFromSmiles('c1ccccc1CC(N)C(=O)O')
>>> patt = Chem.MolFromSmarts('Cc1ccccc1')
>>> matches = m.GetSubstructMatches(patt)
>>> matches
((6, 5, 4, 3, 2, 1, 0),)
>>> Draw.MolToImage(m, (250,250), highlightAtoms=matches[0])
苯丙氨酸
>>> rm = Chem.DeleteSubstructs(m, patt)
>>> Draw.MolToImage(rm, (250,250))
甘氨酸

2.替换子结构

现在把苯甲基变成羟甲基,也就是丝氨酸

>>> repl = Chem.MolFromSmiles('CO')
>>> rms = AllChem.ReplaceSubstructs(m, patt, repl)
>>> rms[0]
丝氨酸
>>> repl = Chem.MolFromSmiles('CCCC')
>>> rms = AllChem.ReplaceSubstructs(m, patt, repl, replacementConnectionPoint=1)
>>> rms[0]
异亮氨酸
>>> m = Chem.MolFromSmiles('CC(=O)O')
>>> patt = Chem.MolFromSmarts('[$(OC=O)]')
>>> repl = Chem.MolFromSmiles('OCC')
>>> rms = Chem.ReplaceSubstructs(m, patt, repl)
>>> rms[0]
error

计算凯库勒式、检查化合价、芳香性、共轭及杂化

>>> Chem.SanitizeMol(rms[0])

3.切掉侧链

保留氨基酸的母核:NH2-C-COOH

>>> m = Chem.MolFromSmiles('c1ccccc1CC(N)C(=O)O')
>>> core = Chem.MolFromSmiles('NCC(=O)O')
>>> m1 = Chem.ReplaceSidechains(m, core)
>>> m1

4.切掉母核

保留R基,去除母核

>>> r = AllChem.ReplaceCore(m, core)
>>> side_mols = Chem.GetMolFrags(r, asMols=True)

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

上一篇下一篇

猜你喜欢

热点阅读