Ошибка санации при применении реакции к молекуле с клиновой связью.Я получаю эту ошибку при применении реакции удаления протона к молекуле, но не вижу никакой ошибки в информации MolBlock.
Это связано с проблемой реакции, в которой я пытаюсь применить простую реакцию (удаление протона).) к молекуле с ее изомерными улыбками.
Я создаю функцию для применения реакции, используя SMARTS и SMILES, но я получаю следующую ошибку, которую не могу исправить.
Я использую следующуюкод для загрузки моих входных данных.
smile = rdkit.Chem.rdmolfiles.MolToSmiles(mol,isomericSmiles=True)
, что приводит к:
C/C1=C\\C[C@@H]([C+](C)C)CC/C(C)=C/CC1
Я создаю следующий словарь, чтобы использовать мои УЛЫБКИ и СМАРТЫ:
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)
, которое фактически исправляет явную ошибку валентности.Но теперь я пытаюсь выяснить, как получить все эти три стереоизомера.
Любой намек, почему это происходит? Потому что, если я проверяю блок mol со всей информацией о валентности, это, похоже, нормально.