Pythonスクリプト:小分子データセットのクラスタリング



クラスター分子
クラスタリングは、大規模な化合物データの集合を単一のグループ類似化合物に細分化するための価値のある化学情報学技術である.その1つの利点は、非常に大きな小分子データセットを処理する際に特に有用であることである.通常、高フラックスフィルタリング結果、仮想フィルタリング、またはドッキング研究の分析に使用されます.
 
RDKitベースのPythonスクリプトはクラスタリング分子に使用されます
#!/usr/bin/python3
# coding: utf-8
#http://www.rdkit.org/docs/Cookbook.html  - - -Clustering molecules
#AspirinCode.20180725

def ClusterFps(fps,cutoff=0.2):
    from rdkit import DataStructs
    from rdkit.ML.Cluster import Butina

    # first generate the distance matrix:
    dists = []
    nfps = len(fps)
    for i in range(1,nfps):
        sims = DataStructs.BulkTanimotoSimilarity(fps[i],fps[:i])
        dists.extend([1-x for x in sims])

    # now cluster the data:
    cs = Butina.ClusterData(dists,nfps,cutoff,isDistData=True)
    return cs

from rdkit import Chem
from rdkit.Chem import AllChem

#generate fingerpr