1

使用一些分子和反应,似乎在应用反应后可能找不到微笑中的手性中心。

在对分子进行一些反应后,我得到的是这个微笑: C[C](C)[C]1[CH+]/C=C(\\C)CC/C=C(\\C)CC1

这实际上似乎在碳 3 中有一个手性中心[C]。如果我使用Chem.FindMolChiralCenters(n,force=True,includeUnassigned=True)我会得到一个空列表,这意味着没有手性中心。

问题是,如果我将 H 添加到该碳 3 中,它就会[CH]被识别为手性中心,但具有未分配的类型(R 或 S)。我尝试使用添加 HsChem.AddHs(mol)然后再试一次,Chem.FindMolChiralCenters()但没有得到任何手性中心。

我想知道是否有一种方法可以识别这个手性中心,即使它们没有添加 H 并按照某种规则设置正确的手性标签。

在对我的初始 mol 应用两个 1,2 氢化物转移后(Chem.MolFromSmiles('C/C1=C\\C[C@H]([C+](C)C)CC/C(C)=C/CC1'))我得到了前面提到的微笑。所以鉴于我有一些初始手性标签,我想知道是否有办法在反应后恢复失去的手性。

用于 1,2 氢化物变换的 smarts:[Ch:1]-[C+1:2]>>[C+1:1]-[Ch+0:2]

mol = Chem.MolFromSmiles('C/C1=C\\C[C@H]([C+](C)C)CC/C(C)=C/CC1')
rxn  = AllChem.ReactionFromSmarts('[Ch:1]-[C+1:2]>>[C+1:1]-[Ch+0:2]')
products = list()
for product in rxn.RunReactant(mol, 0):
    Chem.SanitizeMol(product[0])
    products.append(product[0])
print(Chem.MolToSmiles(products[0]))

在将这种反应两次应用于所创造的产品后,我最终得到了这个微笑。

Output:
'C[C](C)[C]1[CH+]/C=C(\\C)CC/C=C(\\C)CC1'

这实际上是它应该是碳 3 的手性中心的位置

有什么想法还是我应该将其报告为错误?

4

1 回答 1

0

这不是错误。我认为您没有指定要在MolToSmiles函数中使用规范的微笑。所以当我尝试:

mol = Chem.MolFromSmiles('C/C1=C\\C[C@H]([C+](C)C)CC/C(C)=C/CC1')
rxn  = AllChem.ReactionFromSmarts('[Ch:1]-[C+1:2]>>[C+1:1]-[Ch+0:2]')
products = list()
for product in rxn.RunReactant(mol, 0):
    Chem.SanitizeMol(product[0])
    products.append(product[0])
print(Chem.MolToSmiles(products[0]))
Chem.MolToSmiles(ps[0][0])

我得到了和你完全一样的结果:

'C[C](C)[CH+]1CC=C(C)CCC=C(C)CC1'
'CC1=CC[CH](CCC(C)=CCC1)=C(C)C'

但是当你使用这个时:

Chem.MolToSmiles(ps[0][0], True)

你可以得到这个结果:

'CC(C)=[C@H]1C/C=C(\\C)CC/C=C(\\C)CC1'
于 2019-06-18T23:00:30.540 回答