给定 R 中的 multiPhylo 对象,计算重复拓扑数量的最简单方法是什么。例如,如果我从 4 尖端拓扑的所有 15 种可能分辨率中随机采样:
library(ape)
library(phytools)
m <- do.call(c, lapply(1:1000, function(x) multi2di(starTree(c('a','b','c','d')))))
我将从 15 种可能的拓扑中获得 1000 棵树。用每种拓扑将树的数量制表的最简单方法是什么(即计数总和为 1000)。
对于小树(< ~20 叶),您可以使用“ TreeTools ”包将每个树拓扑转换为唯一的整数:
library('TreeTools')
library('phytools')
m <- do.call(c, lapply(1:1000, function(x) multi2di(starTree(c('a','b','c','d')))))
# Tabulate unique topologies
table(vapply64(m, as.TreeNumber, 1))
您可以使用绘制每个编号的拓扑
topologyToPlot <- 2
plot(as.phylo(topologyToPlot, nTip = 4))
对于较大的树,您可以通过以下方式确保具有等效拓扑的树在 R 中相同表示:
(如有必要)确保使用m <- RenumberTips(m, m[[1]])
.
使用 重新排序树的内部边和节点编号m <- Preorder(m)
。
然后可以使用user12728748建议的边矩阵来比较树。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句