对具有楔形键的分子进行反应时出现消毒错误。我在对分子应用质子去除反应时遇到此错误,但在 MolBlock 信息中没有看到任何错误。
这是针对一个反应问题,在该问题中,我试图对一个具有异构 SMILES 的分子应用一个简单的反应(质子去除)。
我创建了一个函数来使用 SMARTS 和 SMILES 应用反应,但我收到以下我无法修复的错误。
我正在使用以下代码来加载我的输入。
smile = rdkit.Chem.rdmolfiles.MolToSmiles(mol,isomericSmiles=True)
这导致:
C/C1=C\\C[C@@H]([C+](C)C)CC/C(C)=C/CC1
我创建以下字典来使用我的 SMILES 和 SMARTS:
reaction_smarts = {}
# proton removal reaction
reaction_smarts["proton_removal"] = "[Ch:1]-[C+1:2]>>[C:1]=[C+0:2].[H+]"
reactions = {name: AllChem.ReactionFromSmarts(reaction_smarts[name]) for name in reaction_smarts}
# function to run reactions
def run_reaction(molecule, reaction):
products = []
for product in reaction.RunReactant(molecule, 0):
Chem.SanitizeMol(product[0])
products.append(product[0])
return products
# apply reaction
products = run_reaction(cation_to_rdkit_mol["mol_name"], reactions["proton_removal"])
在这一步,我收到了这个错误,但我无法修复它。
RDKit ERROR: [10:43:23] Explicit valence for atom # 0 C, 5, is greater than permitted
预期的结果应该是具有双键的分子及其立体异构体:
第一款产品:CC(C)=C1C/C=C(\\C)CC/C=C(\\C)CC1
第二个产品:C=C(C)[C@@H]1C/C=C(\\C)CC/C=C(\\C)CC1
第三个产品:C=C(C)[C@H]1C/C=C(\\C)CC/C=C(\\C)CC1
我Chem.EnumerateStereoisomers.EnumerateStereoisomers()
用来获得所有立体异构体,但我只是获得第一个和第二个产品。我还添加了您的初始提案product[0].GetAtomWithIdx(0).SetNumExplicitHs(0)
,该提案实际上修复了 Explicit valence 错误。但现在我正试图弄清楚如何获得所有这三种立体异构体。
任何提示为什么会发生这种情况?,因为如果我检查 mol 块以及有关化合价的所有信息,它似乎没问题。