其他分享
首页 > 其他分享> > 一起学 RDKit Cookbook(2)

一起学 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))

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