如果所有分支都具有相同的值,则从 phytree 中删除叶子

Remove leafs from phytree if all the branches have same value

我正在使用 MATLAB 生成 'phytrees',我需要对其进行简化。

我的想法是删除所有节点都具有相同值的子树,只保留这个值+一个代表删除了多少节点的数字。

例如,这是其中一棵树:

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

有办法吗?

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

具体来说,您会看到折叠分支 按钮, and the Rename branch button ,它们将共同为您提供您想要的内容。第一个“删除子树”(实际上是隐藏它们),第二个让您将分支名称更改为“value + 数字”。

您也可以通过简单地右键单击相关早午餐来完成所有这些操作:

这是一个示例,数据来自 docs:

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

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

此外,请注意,每次将鼠标悬停在一个分支上(即使已折叠),您都会获得该分支中的叶子列表及其数量: