def infer_cluster(contactMat, cluster, alpha, classical=False):
"""Infers 3D coordinates for one cluster"""
assert len(cluster.getPointNums()) == len(contactMat)
at.makeSymmetric(contactMat)
rowsums = np.array([sum(row) for row in contactMat])
assert len(np.where(rowsums == 0)[0]) == 0
distMat = at.contactToDist(contactMat, alpha)
at.makeSymmetric(distMat)
if classical: #classical MDS
coords = st.cmds(distMat)
else:
mds = manifold.MDS(n_components=3, metric=True, random_state=np.random.RandomState(), verbose=0, dissimilarity="precomputed", n_jobs=-1)
coords = mds.fit_transform(distMat)
for i in range(len(cluster.getPoints())):
cluster.getPoints()[i].pos = coords[i]
评论列表
文章目录