ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一起学 RDKit Cookbook(2)

2021-05-12 21:29:16  阅读:493  来源: 互联网

标签:Draw rdkit rdAbbreviations RDKit Chem m1 一起 250 Cookbook


这部分内容来自于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))

标签:Draw,rdkit,rdAbbreviations,RDKit,Chem,m1,一起,250,Cookbook
来源: https://blog.csdn.net/wufeil7/article/details/116721438

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有