处理某些分子和反应时,似乎在应用反应后可能无法找到微笑中的手性中心。
在对分子施加一些反应后,我得到的是这个微笑: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)。我尝试使用Chem.AddHs(mol)
添加Hs,然后再次尝试Chem.FindMolChiralCenters()
但没有得到任何手性中心。
我想知道是否有办法识别这个手性中心,即使它们没有添加 H 并按照某种规则设置正确的手性标签。
在我的初始摩尔(Chem.MolFromSmiles('C/C1=C\C[C@H]([C+](C)C)CC/C(C)=C/CC1'))
上应用两个 1,2 氢化物移位,我得到了前面提到的微笑。因此,鉴于我有一些初始手性标签,我想知道是否有办法在反应后恢复失去的手性。
用于 1,2 氢化物换档的智能:[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中的手性中心的地方
任何想法或我应该将其报告为错误吗?
这不是一个错误。我认为您没有指定要在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'