基于分子指纹挑选差异较大的分子
药物虚拟筛选中关键步骤挑选分子,比如筛选获得前1000个分子, 由于成本、时间等因素你想挑选100个分子进行活性测试, 如果你直接挑选前100个分子进行测试,命中率可能会降低。 一般流程是对1000个分子进行聚类,然后每一类里面挑选一个分子(或者中心分子), 这样可以提高分子骨架的多样性,从而提供虚拟筛选的成功率。
原文链接:https://blog.csdn.net/qq_36801966/article/details/107013965
ms = [x for x in Chem.SDMolSupplier(
'/Users/zeoy/st/drug_development/st_rdcit/2d.sdf')]
while ms.count(None):
ms.remove(None)
fps = [AllChem.GetMorganFingerprint(x, 3) for x in ms]
def distij(i, j, fps=fps):
return 1 - DataStructs.DiceSimilarity(fps[i], fps[j])
picker = MaxMinPicker()
pickIndices = picker.LazyPick(distij, nfps, 10, seed=23)
picks = [ms[x] for x in pickIndices]
print(picks)
网友评论