如何修复 "badly conformed" 系统发育树以便在 R 中绘制它?
How do I fix a "badly conformed" phylogenetic tree in order to plot it in R?
我正在尝试使用 ape 包在 R 中绘制一棵推断的桉树系统发育树。
该树来自我从 CSIRO 网站 (https://data.csiro.au/collection/csiro:33546v2).
下载的关系文件 (Eucalypt_Bayes_dated_character_mapped.nex)
我收到以下错误:
> plot(euc.tr)
Error in plot.phylo(euc.tr) : tree badly conformed; cannot plot. Check the edge matrix.
我试着查看 euc.tr$edge 看是否能发现任何错误,但我很难理解矩阵中的数字应该如何对应于树,我不确定是什么意思通过“严重符合”,即使在搜索 Google 和 ape 手册之后也是如此。
当我在 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
出现问题是因为边缘矩阵包含不正确的值:tail(euc.tr$edge)
包含一个条目 62283
,但所有值都应引用尖端或内部节点,因此应 < nTip + nNode , 即 674+568 = 1242.
因此看起来您在 ape 函数 read.nexus()
中遇到了一个错误,可能是由于该函数难以解析 Mesquite 的关系文件格式:具体来说,翻译 table使用 n###
而不仅仅是数字 (###
) 来指定提示的翻译方式。我建议在 ape 包中 filing this as a bug。
与此同时,我设法通过编辑 nexus 文件来绘制树:
第 1377 行,将 after TREE tree_1 =
中的所有内容替换为单引号 between 中的内容在文件第 1497 行的 setTree
命令中标记 '
。
删除第 1379 行 END;
命令后的所有内容。
我正在尝试使用 ape 包在 R 中绘制一棵推断的桉树系统发育树。 该树来自我从 CSIRO 网站 (https://data.csiro.au/collection/csiro:33546v2).
下载的关系文件 (Eucalypt_Bayes_dated_character_mapped.nex)我收到以下错误:
> plot(euc.tr)
Error in plot.phylo(euc.tr) : tree badly conformed; cannot plot. Check the edge matrix.
我试着查看 euc.tr$edge 看是否能发现任何错误,但我很难理解矩阵中的数字应该如何对应于树,我不确定是什么意思通过“严重符合”,即使在搜索 Google 和 ape 手册之后也是如此。
当我在 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
出现问题是因为边缘矩阵包含不正确的值:tail(euc.tr$edge)
包含一个条目 62283
,但所有值都应引用尖端或内部节点,因此应 < nTip + nNode , 即 674+568 = 1242.
因此看起来您在 ape 函数 read.nexus()
中遇到了一个错误,可能是由于该函数难以解析 Mesquite 的关系文件格式:具体来说,翻译 table使用 n###
而不仅仅是数字 (###
) 来指定提示的翻译方式。我建议在 ape 包中 filing this as a bug。
与此同时,我设法通过编辑 nexus 文件来绘制树:
第 1377 行,将 after
TREE tree_1 =
中的所有内容替换为单引号 between 中的内容在文件第 1497 行的setTree
命令中标记'
。删除第 1379 行
END;
命令后的所有内容。