如何修复 "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; 命令后的所有内容。