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

2024-05-21 00:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python中的rdkit包来确定任何分子中石蜡基的数量。首先,我开始确定石蜡CH3基团,我必须扩展到石蜡CH2和石蜡CH基团

MWE中,我试图通过一个匹配的子结构来确定这一点,该子结构无法按预期工作。我也尝试过为此搜索Fragments函数,但它不可用

在Python中,如何确定具有rdkit的任何分子的石蜡基CH3、CH2和CH基团的数量

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

Tags: from数量ch分子ccsmilesrdkit子结构
1条回答
网友
1楼 · 发布于 2024-05-21 00:23:43

对于子结构查询,应该使用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

相关问题 更多 >