如果所有分支具有相同的值,则从植树中移除叶子

时间:2017-07-24 08:52:52

标签: matlab plot tree data-visualization matlab-figure

我正在使用MATLAB生成'phytrees',我需要简化它们。

我想的方法是删除所有节点具有相同值的子树,并仅保留此值+表示删除了多少节点的数字。

例如,这是其中一棵树:

ma

我希望替换具有相同值的子树,如下所示:

ma_zoom

有办法吗?

1 个答案:

答案 0 :(得分:0)

我没有找到一种程序化的方法,但是从你附上的图片中我看到你使用plot来查看你的数字。相反,如果您使用phytreeviewer(只需键入view(your_phylotree)),您将获得一个不同的图形窗口,以及其他相关工具。

具体来说,您会看到折叠分支按钮Collapse,以及重命名分支按钮enter image description here,它们将让您完全相同你想要什么。第一个“删除子树”(实际上隐藏它们),第二个允许您将分支名称更改为“ value + a number ”。

只需右键单击相关的早午餐,即可完成所有这些操作:

right-click

以下是来自docs的数据的示例:

% bulding some tree:
seqs = fastaread('pf00002.fa');
distances = seqpdist(seqs,'method','jukes-cantor','indels','pair');
phylotree = seqneighjoin(distances,'equivar',seqs);
view(phylotree)

在这棵树上进行了一些折叠和重命名,并将其打印成图形(右键单击最顶部的分支,或者想要包含在图中的根),我得到了:

example tree

另外,请注意,每次将鼠标悬停在树枝上时(即使折叠),您都会获得该分支中的Leafs列表及其计数:

tooltip