R:APE/Thylobase:无法将超级,二进制树转换为hclust对象(警告消息)

StackOverflow https://stackoverflow.com/questions/4430778

  •  09-10-2019
  •  | 
  •  

我使用APE函数在R中导入了Clustalw2树,并且 read.tree APE软件包的功能。我使用计时函数估算分子年龄,从而导致超二元树。我想从中创建一个R构建在树状图对象中。

树木绘制好,是一个真正的phylo对象。但是,我在尝试转换时遇到问题:

最小工作示例:

require(ape)
test.tree <- read.tree(file = "testree.phylip", text = NULL, tree.names = NULL, skip = 0,
    comment.char = "#", keep.multi = FALSE)

test.tree.nu <- chronopl(test.tree, 0, age.min = 1, age.max = NULL,
node = "root", S = 1, tol = 1e-8,
CV = FALSE, eval.max = 500, iter.max = 500)

is.ultrametric(test.tree.nu)
is.binary.tree(test.tree.nu)
treeclust <- as.hclust.phylo(test.tree.nu)

生成的树“看起来”很好,我测试以确保树不是超级和二进制的,并希望将其转换为Hclust对象,以最终使其成为其树状图。

> is.binary.tree(test.tree.nu)
[1] TRUE
> is.ultrametric(test.tree.nu)
[1] TRUE

在尝试将Hclust对象从树中取出后,我得到了一个错误:

> tree.phylo <- as.hclust.phylo(test.tree.nu)
Error in if (tmp <= n) -tmp else nm[tmp] : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In nm[inode] <- 1:N :
  number of items to replace is not a multiple of replacement length

我意识到这是一个非常详细的问题,也许与某些包裹特别相关的此类问题更好地问到其他地方,但我希望有人能够帮助我。

所有的帮助都非常感谢

问候,

文件下载

Phylip文件可以在此处下载http://www.box.net/shared/rnbdk973ja

有帮助吗?

解决方案

我可以在Linux上使用R 2.12.1 beta(2010-12-07 R53808)下的APE版本2.6-2重现此版本,但是您的代码在APE的2.5-3版本中起作用。

这表明一个错误已进入包装中,您应该将问题告知开发人员以寻求专家建议。维护者伊曼纽尔·帕拉迪斯(Emmanuel Paradis)的电子邮件地址正在 猿的克兰包装

其他提示

看来问题是Chronopl返回一棵树,该树是未根除的,或者具有多重根的根(取决于其解释方式)。另外AS.hclust.phylo有/无用的错误消息。

这个:

modded.tree <- drop.tip(test.tree.nu,c(
'An16g06590','An02g12505','An11g00390','An14g01130'))

从根部降下的三个进化枝之一中去除所有尖端,从而

is.ultrametric(modded.tree)
is.binary.tree(modded.tree)
is.rooted(modded.tree)

所有人都回来了,你可以做

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

. 。尽管我认为您确实想要一个代表多构成树的Hclust对象,尽管Hclust对象可以处理这些对象,但由于某种原因,AS.hclust.phylo(来自软件包的'ape')不起作用。如果您知道一种将newick文件导入hclust对象的方法,那可能是一种前进的道路-Ade有Will.Tree()生成Newick文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top