モジュール hcluster を使用して、距離行列からデンドログラムを計算しています。私の距離行列は、次のように生成された配列の配列です。
import hcluster
import numpy as np
mols = (..a list of molecules)
distMatrix = np.zeros((10, 10))
for i in range(0,10):
for j in range(0,10):
sim = OETanimoto(mols[i],mols[j]) # a function to calculate similarity between molecules
distMatrix[i][j] = 1 - sim
次に、コマンドdistVec = hcluster.squareform(distMatrix)
を使用して行列を圧縮ベクトルに変換し、 で連鎖行列を計算しvecLink = hcluster.linkage(distVec)
ます。
これはすべて正常に機能しますが、凝縮されたベクトルではなく距離行列を使用して連鎖行列を計算するとmatLink = hcluster.linkage(distMatrix)
、別の連鎖行列が得られます (ノード間の距離ははるかに大きく、トポロジはわずかに異なります)。
これは、hcluster が圧縮されたベクトルでのみ機能するためなのか、それとも途中で間違いを犯しているのかはわかりません。
ご協力いただきありがとうございます!