R:APE/Thylobase:无法将超级,二进制树转换为hclust对象(警告消息)
-
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文件。