在R中使用带有phylo对象(无根树)的割树

在R中使用带有phylo对象(无根树)的割树,r,phylogeny,hclust,R,Phylogeny,Hclust,我想使用cutree()函数将系统发育树聚类到指定数量的分支中。但是,phylo对象(无根系统发育树)不是非度量对象,因此在使用as.hclust.phylo()时返回错误。其目标是在保持最大多样性的同时对树的顶端进行子采样,因此希望按指定数量的分支进行聚类(然后从每个分支中随机采样一个)。这将针对具有不同数量所需样本的多棵树进行。任何将无根树强制转换为hclust对象的帮助,或关于系统地将树(phylo对象)折叠为预定义数量的分支的不同方法的建议,都将不胜感激 library("ape") l

我想使用cutree()函数将系统发育树聚类到指定数量的分支中。但是,phylo对象(无根系统发育树)不是非度量对象,因此在使用as.hclust.phylo()时返回错误。其目标是在保持最大多样性的同时对树的顶端进行子采样,因此希望按指定数量的分支进行聚类(然后从每个分支中随机采样一个)。这将针对具有不同数量所需样本的多棵树进行。任何将无根树强制转换为hclust对象的帮助,或关于系统地将树(phylo对象)折叠为预定义数量的分支的不同方法的建议,都将不胜感激

library("ape")
library("ade4")



tree <- rtree(n = 32)

tree.hclust <- as.hclust.phylo(tree)
library(“ape”)
图书馆(“ade4”)

tree我不知道它是否是您想要的,但首先您必须使用
chronos()
, 以下是一个可以帮助您解决问题的答案:

我认为,在距离“根”指定距离处折叠所有节点是生成群集的最佳方式。但是,我还没有找到这样做的函数。在使用链接获取答案时,您应该包括文档的相关部分。我只是这里的新手。你不必因此投反对票。
dm <- cophenetic.phylo(tree)


single <- hclust(as.dist(dm), method="single")
cutSingle <- as.data.frame(cutree(single, k=10))
color <- cutSingle[match(tree$tip.label, rownames(cutSingle)), 'cutree(single, k = 10)']

plot.phylo(tree, tip.color=color)