【问题标题】:Save dendrogram to newick format将树状图保存为 newick 格式
【发布时间】:2015-03-29 02:52:01
【问题描述】:

如何将 scipy 生成的树状图保存到 Newick format

【问题讨论】:

    标签: python scipy dendrogram


    【解决方案1】:

    您需要链接矩阵 Z,它是 scipy dendrogram 函数的输入,并将其转换为 Newick 格式。此外,您需要一个包含叶子名称的列表“leaf_names”。这是一个可以完成这项工作的函数:

    def get_newick(node, parent_dist, leaf_names, newick='') -> str:
        """
        Convert sciply.cluster.hierarchy.to_tree()-output to Newick format.
    
        :param node: output of sciply.cluster.hierarchy.to_tree()
        :param parent_dist: output of sciply.cluster.hierarchy.to_tree().dist
        :param leaf_names: list of leaf names
        :param newick: leave empty, this variable is used in recursion.
        :returns: tree in Newick format
        """
        if node.is_leaf():
            return "%s:%.2f%s" % (leaf_names[node.id], parent_dist - node.dist, newick)
        else:
            if len(newick) > 0:
                newick = "):%.2f%s" % (parent_dist - node.dist, newick)
            else:
                newick = ");"
            newick = get_newick(node.get_left(), node.dist, leaf_names, newick=newick)
            newick = get_newick(node.get_right(), node.dist, leaf_names, newick=",%s" % (newick))
            newick = "(%s" % (newick)
            return newick
    
    tree = hierarchy.to_tree(Z, False)
    get_newick(tree, tree.dist, leaf_names)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      相关资源
      最近更新 更多