一起学 RDKit Cookbook(2)

这部分内容来自于RDKIT的简单教程:https://www.rdkit.org/docs/Cookbook.html RDKIT算是化学生物的神器了,以前每一次都是即时查接口,现在按照这个简易教程走一遍,增加感觉。 最好的办法就是全程过一遍。

当然啦,在这些过程中,也有我自己对RDKit的一些理解吧。如果有不对的地方,请多多指正!

 

三、标记分子手型

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole

IPythonConsole.drawOptions.addAtomIndices = True #显示原子编号
IPythonConsole.drawOptions.addStereoAnnotation = True #显示手型位置

  默认情况下,rdkit会自动寻找手性中心并进行标记,例如:

m1 = Chem.MolFromSmiles('C1CC1[C@H](F)C1CCC1')
m2 = Chem.MolFromSmiles('F[C@H]1CC[C@H](O)CC1')
Draw.MolsToGridImage((m1, m2), subImgSize=(250,250))

如上图中m1分子的3号位。此外, 2020.09版本的rdkit可以使用rdCIPLabeler模块进行更精确地CIP标记。

from rdkit.Chem import rdCIPLabeler
rdCIPLabeler.AssignCIPLabels(m1)
rdCIPLabeler.AssignCIPLabels(m2)
Draw.MolsToGridImage((m1, m2), subImgSize=(250, 250))

此时,右侧m2分子的4号位也被标记为手型。

 

四、分子的子结构高亮

m = Chem.MolFromSmiles('c1cc(C(=O)O)c(OC(=O)C)cc1')
m

首先,要用smart形成子结构对象

substrature = Chem.MolFromSmarts('C(=O)O')
substrature

寻找并标记子结构:

print(m.GetSubstructMatches(substrature))
m

m.GetSubstructMatches返回子结构所覆盖的原子编号。

当然也可以手动选择部分源自进行标记:

#选择要标记的原子编号
m.__sssAtoms = [0, 1, 2, 3, 4, 5]
m

五、标记分子功能基团的缩写

需要rdAbbreviations模块

from rdkit import Chem
from rdkit.Chem import rdAbbreviations

m = Chem.MolFromSmiles('COc1ccc(C(=O)[O-])cc1')
m

获取需要找的基团的缩写,这里使用默认的rdAbbreviations.GetDefaultAbbreviations(), 然后使用rdAbbreviations.CondenseMolAbbreviations(m, abbrevs)对m中相应基团进行替换。

abbrevs = rdAbbreviations.GetDefaultAbbreviations()
nm = rdAbbreviations.CondenseMolAbbreviations(m, abbrevs)
nm

默认情况下,如果一个基团覆盖超过40%的分子,则不会被替换,但是可以通过maxCoverage参数进行调整:

m = Chem.MolFromSmiles('c1c[nH]cc1C(F)(F)F')
nm1 = rdAbbreviations.CondenseMolAbbreviations(m,abbrevs)
nm2 = rdAbbreviations.CondenseMolAbbreviations(m,abbrevs,maxCoverage=0.8)
Draw.MolsToGridImage((m,nm1,nm2),legends=('','default','maxCoverage=0.8'))

查看默认的基团:

for abb in abbrevs:
    print(abb.label) 

 

六、黑白显示地分子

通过IPythonConsole来设置:

Draw.MolsToGridImage((m1,m2), subImgSize=(250, 250))

通过IPythonConsole来设置使用黑白画板:

IPythonConsole.drawOptions.useBWAtomPalette()
Draw.MolsToGridImage((m1,m2), subImgSize=(250, 250))

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值