我正在使用MATLAB生成'phytrees',我需要简化它们。
我想的方法是删除所有节点具有相同值的子树,并仅保留此值+表示删除了多少节点的数字。
例如,这是其中一棵树:
我希望替换具有相同值的子树,如下所示:
有办法吗?
答案 0 :(得分:0)
我没有找到一种程序化的方法,但是从你附上的图片中我看到你使用plot
来查看你的数字。相反,如果您使用phytreeviewer
(只需键入view(your_phylotree)
),您将获得一个不同的图形窗口,以及其他相关工具。
具体来说,您会看到折叠分支按钮,以及重命名分支按钮,它们将让您完全相同你想要什么。第一个“删除子树”(实际上隐藏它们),第二个允许您将分支名称更改为“ value + a number ”。
只需右键单击相关的早午餐,即可完成所有这些操作:
以下是来自docs的数据的示例:
% bulding some tree:
seqs = fastaread('pf00002.fa');
distances = seqpdist(seqs,'method','jukes-cantor','indels','pair');
phylotree = seqneighjoin(distances,'equivar',seqs);
view(phylotree)
在这棵树上进行了一些折叠和重命名,并将其打印成图形(右键单击最顶部的分支,或者想要包含在图中的根),我得到了:
另外,请注意,每次将鼠标悬停在树枝上时(即使折叠),您都会获得该分支中的Leafs列表及其计数: