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