5

如何将树(这是我的 Java 程序的输出)转换为 R 中的树状图?

目前,我正在使用此处给出的建议将树转换为 Newick 格式。然后我使用apeR 中的包来读取 Newick 格式的树:

library("ape")
cPhylo <- read.tree(file = "gc.tree")

最后,我as.hclust在 R 中使用将树转换为树状图:

dendrogram <- as.hclust(gcPhylo)

但是,树状图需要分支长度。尽管我插入了分支长度,但我收到一条错误消息,指出树不是超度量的:

as.hclust.phylo(gcPhylo) 中的错误:树不是超度量的

我想我在插入分支长度时做错了。

我还有其他方法可以遵循吗?或者如何在将树转换为 Newick 格式时插入分支长度?相等的分支长度会很好。

4

3 回答 3

7

这是一个古老的问题,但到目前为止还没有足够的答案。由于我遇到了同样的问题,而且我的 googlefoo 在找到答案时遇到了问题,所以你去:

library("ape")
cPhylo <- read.tree(file = "gc.tree")
dendrogram <- chronos(cPhylo)
于 2014-12-08T19:50:31.223 回答
6

这是一个老问题,但所有先前的答案都要求在转换为树状图对象之前将树进行超度量。

您可以使用DECIPHER包从 Newick 格式的文件中读取树状图对象:

dend <- ReadDendrogram(path_to_newick_file)
于 2016-05-20T19:41:10.433 回答
2

我认为问题实际上在于您的“gc.tree”不是超度量。确保从根部到每个尖端的距离相同。以下代码有效:

library('ape')
tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:13.6);')
is.ultrametric(tree)
is.binary.tree(tree)
is.rooted(tree)
hc <- as.hclust.phylo(tree)

但使树非超测量(注意 D 的分支长度):

tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:15);')

并且 as.hclust.phylo 会引发错误。

于 2011-11-20T21:45:57.163 回答