我如何在Python中用rdkit确定任何分子的石蜡CH3、CH2和CH基数?

我正试图在Python中使用 rdkit 包。最初我开始确定石蜡CH3基团,我必须扩展到石蜡CH2和石蜡CH基团。

MWE我试图通过匹配的子结构来确定,但这并不能如愿。我试着搜索 Fragments 函数,但它不可用。

我如何确定任何分子的石蜡CH3、CH2和CH基团数,并将其与下面的函数联系起来。rdkit 在Python中?

MWE

from rdkit import Chem
from rdkit.Chem import Descriptors, Draw, Fragments

smiles_n_decane = 'CCCCCCCCCC'
smiles_branched = 'CCC(C)(C)C(C)CC(C)(C)C'
smiles_carboxylic_acid = 'C1=CC=C2C(=C1)C(C3=CC=CC=C3O2)C(=O)O' # Xanthene-9-carboxylic acid

m =  Chem.MolFromSmiles(smiles_branched)

print m.HasSubstructMatch(Chem.MolFromSmiles('[CH3]'))
print Fragments.fr_Al_COO(m)

问题示例

对于下面给出的分子(2,2,4,5,5-五甲基庚烷)。

enter image description here

代码应该给我以下输出。

  • CH3基团数:7
  • CH2基团数:2
  • CH基团数:1

解决方案:

你应该使用 SMARTS 用于子结构查询。另外: GetSubstructMatches() 将返回所有匹配的子结构,而不是只返回一个布尔值,如果查询匹配,如 HasSubstructMatch():

ch3 = Chem.MolFromSmarts('[CH3]')
ch2 = Chem.MolFromSmarts('[CH2]')
ch1 = Chem.MolFromSmarts('[CH]')

print("no. of CH3 groups:", len(m.GetSubstructMatches(ch3)))
print("no. of CH2 groups:", len(m.GetSubstructMatches(ch2)))
print("no. of CH groups:", len(m.GetSubstructMatches(ch1)))

[Out]:
no. of CH3 groups: 7
no. of CH2 groups: 2
no. of CH groups: 1

给TA打赏
共{{data.count}}人
人已打赏
未分类

读取和遍历JSON文件。

2022-9-27 19:59:24

未分类

将rmarkdown中的一个表或图在另一个图或表的标题中作交叉引用。

2022-9-27 20:10:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索