gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:15:48 24 4
gpt4 key购买 nike

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

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



tree <- rtree(n = 32)

tree.hclust <- as.hclust.phylo(tree)

返回:
“as.hclust.phylo(tree) 中的错误:树不是超度量的”

如果我制作所有节点之间的分支长度的距离矩阵,我就可以使用 hclust 生成集群,然后将 cutree 转换为所需数量的集群:
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)

然而,结果并不理想,因为非常基础的分支聚集在一起。基于树结构的聚类,或者尖端到根的距离将是更可取的。

任何建议表示赞赏!

最佳答案

我不知道这是否是你想要的,但首先你必须使用 chronos()
这是一个可以帮助您的答案:
How to convert a tree to a dendrogram in R?

关于r - 在 R 中使用带有 phylo 对象(无根树)的切割树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com