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

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

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

关键是,如果我在该碳3中添加H,使其变为[CH],则它将被识别为手性中心,但类型未指定(R或S)。我尝试使用Chem.AddHs(mol)添加Hs,然后再次尝试,但没有得到任何手性中心。

我想知道是否有一种方法可以识别此手性中心,即使未将它们添加为H并按照某种规则设置适当的手性标签也是如此。

在将两个1,2-氢化物转移至我的初始摩尔(Chem.FindMolChiralCenters()之后,我得到了前面提到的笑容。因此,鉴于我有一些初始手性标记,我想知道是否有办法在反应后恢复失去的手性。

用于1,2氢化物转换的smarts:Chem.MolFromSmiles('C/C1=C\\C[C@H]([C+](C)C)CC/C(C)=C/CC1'))

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的手性中心

任何想法还是我应该将其报告为错误?

最佳答案

这不是错误。我认为您没有在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'

07-24 09:52