我试图用包装猿在R中绘制一棵推测的桉树系统发育树。这棵树来自我从CSIRO的网站(https://data.csiro.au/collection/csiro:33546v2)下载的一个nexus文件(https://data.csiro.au/collection/csiro:33546v2)。
我得到以下错误:
> plot(euc.tr)
Error in plot.phylo(euc.tr) : tree badly conformed; cannot plot. Check the edge matrix.我试着查看euc.tr$edge,看看是否能找到任何错误,但我很难理解矩阵中的数字应该如何与树相对应,而且我也不确定什么是“不一致”,即使在搜索了谷歌和猿手册之后。
当我打开Mesquite而不是R中的nexus文件时,我看不到关于树的任何异常。
R中的系统发育树对象概述:
> summary(euc.tr)
Phylogenetic tree: euc.tr
Number of tips: 674
Number of nodes: 568
Branch lengths:
mean: 2.436121
variance: 23.99677
distribution summary:
Min. 1st Qu. Median 3rd Qu. Max.
0.000728 0.118585 0.477268 2.297975 50.513412
No root edge.
First ten tip labels: Angophora_bakeri
Angophora_costata
Angophora_exul
Angophora_floribunda
Angophora_hispida
Angophora_inopina
Angophora_melanoxylon
Angophora_robur
Angophora_subvelutina
Angophora_woodsiana
No node labels.边矩阵的头(其中有1241行):
> head(euc.tr$edge)
[,1] [,2]
[1,] 675 676
[2,] 676 677
[3,] 677 678
[4,] 678 6240
[5,] 678 679
[6,] 679 680发布于 2022-04-25 10:58:39
问题的出现是因为边缘矩阵包含不正确的值:tail(euc.tr$edge)包含一个条目62283,但是所有的值都应该引用一个提示或内部节点,所以应该是< nTip + nNode,即674+568 = 1242。
因此,您似乎在ape函数read.nexus()中遇到了一个bug,这可能是因为函数难以解析Mesquite对nexus文件的格式:具体来说,翻译表使用n###而不是###来指定如何翻译提示。我建议把把它归档为一个错误放在猿猴的包裹里。
同时,通过编辑nexus文件,我设法使树得以绘制:
TREE tree_1 =之后的所有内容替换为之间的内容,即文件第1497行setTree命令中的单引号'。END;命令后的所有内容。https://stackoverflow.com/questions/71975658
复制相似问题