gpt4 book ai didi

python - 如何在 Python 中使用 rdkit 确定任何分子的链烷烃 CH3、CH2 和 CH 基团的数量?

转载 作者:行者123 更新时间:2023-12-04 10:10:02 26 4
gpt4 key购买 nike

我正在尝试使用 rdkit 确定任何分子中链烷烃基团的数量用 Python 打包。最初我开始确定石蜡 CH3 基团,我必须将其扩展到石蜡 CH2 和石蜡 CH 基团。

MWE ,我试图通过匹配的子结构来确定这一点,但它不能按预期工作。我试着搜索 Fragments也有此功能,但不可用。

如何使用 rdkit 确定任何分子的链烷烃 CH3、CH2 和 CH 基团的数量在 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(),将返回所有子结构匹配,而不是仅返回 bool 值:

    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

    关于python - 如何在 Python 中使用 rdkit 确定任何分子的链烷烃 CH3、CH2 和 CH 基团的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61375347/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com