RDKIT | 基于分子指纹的分子相似性

RDKIT | 基于分子指纹的分子相似性

文章转载至 https://www.freesion.com/article/6881686454/

分子相似性:

相似性原理(similar property principle)指出,总体相似的分子应具有相似的生物活性。

化合物的指纹对于使用计算机考虑化合物的相似性是必需的。已经提出了各种评估方法,但是最常用的评估方法称为“ Tanimoto系数 ”。使用以下等式从两个分子A和B的位阵列指纹计算Tanimoto系数:

加载数据

suppl = Chem.SDMolSupplier('sdf_20191011152835.sdf')
mols = [x for x in suppl if x is not None]
len(mols)

MACCS KEYS

由MDL开发的化学结构数据库衍生的指纹,以化学信息学闻名。共检查了166个子结构,由于1位用于保存RDKit中的信息,因此指纹总共为167位。如果具有子结构,则存储1,否则存储0。

maccs_fps = [AllChem.GetMACCSKeysFingerprint(mol) for mol in mols]
maccs = DataStructs.BulkTanimotoSimilarity(maccs_fps[0], maccs_fps[1:])

拓扑(TOPOLOGICAL)指纹

哈希指纹中类似于著名的Daylight指纹。也称为RDKit指纹。
通过存储与一定数量的键相对应的原子和键类型,不需要预先准备部分结构,因此可以更灵活地表达分子结构。

rdkit_fps = [Chem.Fingerprints.FingerprintMols.FingerprintMol(mol) for mol in mols]
rdkit = DataStructs.BulkTanimotoSimilarity(rdkit_fps[0], rdkit_fps[1:])

MORGAN指纹

这是一种称为“ 圆形子结构 ”的指纹,用于计算距原子一定距离的子结构。用半径值设置距离。它类似于所谓的ECFP(扩展连接指纹,Extended Connectivity Fingerprint))指纹,但应注意,搜索距离的定义不同。
常用的ECFP4 与设置半径= 2(默认值)大致相同。如果要使用指纹FCFP(功能连接指纹),请设置useFeatures = True。

“当比较ECFP / FCFP指纹和RDKit生成的Morgan指纹时,请记住ECFP4中的4对应于所考虑的原子环境的直径,而Morgan指纹采用的是radius参数。因此,上面的示例中,radius = 2,大致相当于ECFP4和FCFP4。”

morgan_fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) for mol in mols]
morgan = DataStructs.BulkTanimotoSimilarity(morgan_fps[0], morgan_fps[1:])

AVALON原子对和二面角

可以从RDKit使用的Avalon化学信息学TookKit也具有指纹。

avalon_fps = [pyAvalonTools.GetAvalonFP(mol) for mol in mols]
avalon = DataStructs.BulkTanimotoSimilarity(avalon_fps[0], avalon_fps[1:])

指纹的比较

RDKit,MACCS,Morgan和Avalon指纹的相关性

df = pd.DataFrame({'RDKit': rdkit,
                  'Avalon': avalon,
                  'MACCS': maccs,
                  'Morgan': morgan})
df.corr().round(2)

RDKIT | 基于分子指纹的分子相似性_第1张图片

可视化

Draw.MolsToGridImage([mols[8], mols[18]], subImgSize=(300,400), legends=['mols[8]', 'mols[18]'])

RDKIT | 基于分子指纹的分子相似性_第2张图片

weight = SimilarityMaps.GetAtomicWeightsForFingerprint(mols[8], mols[18], SimilarityMaps.GetMorganFingerprint)
fig = SimilarityMaps.GetSimilarityMapFromWeights(mols[18], weight, size=(400,400))

RDKIT | 基于分子指纹的分子相似性_第3张图片

你可能感兴趣的:(DrugAi,人工智能,机器学习,算法)