chemistry - 使用 RDKit 寻找手性

标签 chemistry rdkit

在论文“Graph Networks as a Universal Machine Learning Framework for Molecules and Crystals”中,作者引入手性作为原子特征输入来分析 QM9 数据集。我试图重新创建这个原子功能,如下所示

Chirality: (categorical) R, S, or not a Chiral center (one-hot encoded).

我使用的代码是:

from chainer_chemistry import datasets
from chainer_chemistry.dataset.preprocessors.ggnn_preprocessor import GGNNPreprocessor
from rdkit import Chem
import numpy as np


dataset, dataset_smiles = datasets.get_qm9(GGNNPreprocessor(), return_smiles=True)

for i in range(len(dataset_smiles)):
    mol = Chem.MolFromSmiles(dataset_smiles[i])
    Chem.AssignAtomChiralTagsFromStructure(mol)
    chiral_cc = Chem.FindMolChiralCenters(mol)

    if not len(chiral_cc) == 0:
        print(chiral_cc)

输出显示该数据集没有手性中心。当我使用 includeUnassigned=True 时,代码给出了一个元组列表,但我得到的是“?”,而不是“R/S”。我想知道我的实现是否有错误。如果这是预期的,那么对上述论文中如何分配手性有什么想法吗?

最佳答案

您看到“?”的原因而不是 R/S 是因为 FindMolChiralCenters 输出“?”对于未指定的立体中心。

也就是说,如果 SMILES 没有分配 S 配置的 [C@] 或 R 配置的 [C@@] 等配置,则视为未分配。

我运行了你的代码,数据集中的所有 SMILES 都没有任何指定的立体中心。

例如,我在这里列出了一些 SMILES 及其配置:

CC1C(C=O)N2CC12C
[(1, '?'), (2, '?'), (5, '?'), (7, '?')]
CC1N(C=O)C2CC12C
[(1, '?'), (5, '?'), (7, '?')]
CC1N(C=O)C2CC12O
[(1, '?'), (5, '?'), (7, '?')]
CN1C(C=O)C2CC21C
[(2, '?'), (5, '?'), (7, '?')]
O=CC1C(O)C2(O)CC12
[(2, '?'), (3, '?'), (5, '?'), (8, '?')]
CC1C(=O)C=CC1C=O
[(1, '?'), (6, '?')]
O=CC1C=CC(=O)C1O
[(2, '?'), (7, '?')]
C#CC1C=CC(=O)C1C
[(2, '?'), (7, '?')]

正如您在微笑中看到的那样,它们都没有 [C@] 或 [C@@]。这就是为什么你会看到“?”在配置中。

还可以找到有关 FindMolChiralCenters 的有用 rdkit 文档 here

关于chemistry - 使用 RDKit 寻找手性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898815/

相关文章:

r - 从 R 中的化学式中提取数字

importerror - 这些天如何在google colab中导入rdkit?

c# - 尝试使用来自 bp-kelley/rdkit-csharp 的 build.bat 为 RDKit 构建 C# 包装器

python - 值错误 : BitVects must be same length (rdkit)

python - 图表中的微笑

python - 如何使用 Python 中的 rdkit 确定任何分子的石蜡基 CH3、CH2 和 CH 基团的数量?

algorithm - 计算正碳脂肪族烷烃的异构体

python - 化学平衡求解器

python - 使用 MDAnalysis 获取径向分布函数