如何使用 rdkit 在 Python 中确定任何分子的链烷烃 CH3、CH2 和 CH 基团的数量?
How can I determine the number of paraffinic CH3, CH2 and CH groups for any molecule with rdkit in 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-五甲基庚烷):
代码应该给我以下输出:
- 没有。 CH3 组数:7
- 没有。 CH2 组数:2
- 没有。 CH 组数:1
您应该使用 SMARTS 进行子结构查询。此外,如果查询匹配 HasSubstructMatch()
:
,GetSubstructMatches()
将 return 所有子结构匹配,而不仅仅是 return 布尔值
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 中的 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-五甲基庚烷):
代码应该给我以下输出:
- 没有。 CH3 组数:7
- 没有。 CH2 组数:2
- 没有。 CH 组数:1
您应该使用 SMARTS 进行子结构查询。此外,如果查询匹配 HasSubstructMatch()
:
GetSubstructMatches()
将 return 所有子结构匹配,而不仅仅是 return 布尔值
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