📜  rdkit mol 到网格公共核心对齐 (1)

📅  最后修改于: 2023-12-03 14:46:55.788000             🧑  作者: Mango

从 RDKit 分子生成网格公共核心对齐

简介

RDKit 是一款功能强大的分子设计工具包,支持多种操作,其中一个重要的应用就是分子对齐。而其中最为常用的对齐算法就是网格公共核心对齐(Grid Common Substructure, GCS)。网格公共核心对齐是指在分子中找到公共的结构,然后将分子都对齐到该结构上以便进行进一步的研究。

代码示例

以下是一个使用 RDKit 测试分子间合并的简单示例,该示例将药物分子按二苯基甲酰肼基(DAH)基团对齐,并输出对齐的分子结构。

from rdkit import Chem
from rdkit.Chem import AllChem

# 创建一个分子列表
mols = [Chem.MolFromSmiles('COC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1'),
        Chem.MolFromSmiles('CC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1'),
        Chem.MolFromSmiles('CC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1')]

# 获取每个分子的 DAH 基团
ref = Chem.MolFromSmiles('C1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1')

# 获取基团的公共子结构
params = AllChem.AlignMolParams()
params.atomIds = list(ref.GetSubstructMatch(ref))
params.coordMap = {}
params.refMol = ref

# 对所有分子进行对齐
for mol in mols:
    AllChem.AlignMol(mol, ref, atomIds=params.atomIds, 
                     coordMap=params.coordMap)

# 输出对齐后的分子结构
for mol in mols:
    Chem.Draw.MolToFile(mol, 'out_' + Chem.MolToSmiles(mol) + '.png')
解释

该示例中,我们首先创建了一个包含三个药物分子的列表,这些分子的 SMILES 表示形式如下:

COC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1
CC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1
CC1=CC=C(C=C1)C(=O)NNC1=CC=CC=C1C1=CC=CC=C1

接下来,我们获取了每个分子中的 DAH 基团,然后用 refMol 参数将其对齐。最后,我们将对齐后的分子结构绘制为 PNG 图像。

注意,我们使用的素材仅用于演示目的。在生产环境中,您应该使用真实的分子数据集。

总结

在本文中,我们介绍了 RDKit 分子设计工具包的网格公共核心对齐算法。通过遵循示例代码,您可以开发自己的分子对齐应用程序。