化合物多样性评估
一种方法是使用合适的指纹技术将化合物矢量化并评估他们之间的距离。这种方法经常被使用,但是对于人类很难直观地理解化合物之间的距离。
基于Murcko骨架,分子大致聚集在化合物骨架中,并且每个簇中的顶部化合物都作为候选化合物。此方法非常符合人类的直觉,因此可以预期人将通过查看候选化合物列表来自动缩小化合物的范围。
Murcko骨架
Murcko骨架通过从化合物中去除多余的侧链并仅表达连接它们的“环结构”和“连接子”,可以执行更简单的化合物表达。
Murcko骨架生成
基于Murcko骨架聚类化合物库
导入库
代码语言:javascript复制import numpy as np
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Scaffolds import MurckoScaffold
from rdkit.Chem.Draw import IPythonConsole
载入数据
代码语言:javascript复制sdfloader = Chem.SDMolSupplier("Enamine_Premium_processed.sdf") ### load from multisdfile
mol_list = [ mol for mol in [sdfloader[i] for i in range(len(sdfloader))] if mol is not None]
smi_scaffolds = [ MurckoScaffold.MurckoScaffoldSmiles(mol=mol, includeChirality=False) for mol in mol_list]
mol_scaffolds = [Chem.MolFromSmiles(smi_scaffold) for smi_scaffold in smi_scaffolds]
可视化原始化合物
代码语言:javascript复制Draw.MolsToGridImage(mol_list[:9], molsPerRow=3, subImgSize=(300,300))
可视化骨架化合物
代码语言:javascript复制Draw.MolsToGridImage(mol_scaffolds[:9], molsPerRow=3, subImgSize=(300,300))
基于Murcko骨架聚类
代码语言:javascript复制scaffolds = {}
clusters_list =[]
idx = 1
for mol in mol_list:
scaffold_smi = MurckoScaffold.MurckoScaffoldSmiles(mol=mol, includeChirality=False)
if scaffold_smi not in scaffolds.keys():
scaffolds[scaffold_smi] = idx
idx =1
cluster_id = scaffolds[scaffold_smi]
clusters_list.append(cluster_id)
代码语言:javascript复制print("Num of dataset:",len(mol_list))
Num of dataset: 128816
代码语言:javascript复制print("Num of Murcko scaffolds in dataset:",len(scaffolds.keys()))
Num of Murcko scaffolds in dataset: 70843
聚类11个簇,查看其化合物
代码语言:javascript复制clusters_list = np.array(clusters_list)
idx_c15 = np.where(clusters_list==11)[0]
mol_list_c15 = [ mol_list[i] for i in idx_c15]
Draw.MolsToGridImage(mol_list_c15, molsPerRow=3, subImgSize=(300,300))
参考资料
1. https://docs.chemaxon.com/display/docs/Bemis-Murcko clustering
2.http://www.rdkit.org/docs/source/rdkit.Chem.Scaffolds.MurckoScaffold.html?highlight=murcko#module-rdkit.Chem.Scaffolds.MurckoScaffold
文 / 编辑:王建民
DrugAI
本文为DrugAI原创编译整理,如需转载,请在公众号后台留言。