minimds.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:miniMDS 作者: seqcode 项目源码 文件源码
def infer_clusters(contactMat, clusters, offsets, alpha, classical=False):
    """Infers 3D coordinates for multiple clusters with same contact matrix"""
    assert sum([len(cluster.getPointNums()) for cluster in clusters]) == 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 offset, cluster in zip(offsets, clusters):
        for i in range(len(cluster.getPoints())):   
            cluster.getPoints()[i].pos = coords[i + offset]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号