Я пытаюсь построить дерево предполагаемой филогении эвкалипта в R, используя пакет ape. Дерево взято из файла нексуса (Eucalypt_Bayes_dated_character_mapped.nex), который я скачал с веб-сайта CSIRO (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, чтобы увидеть, могу ли я найти какие-либо ошибки, но изо всех сил пытаюсь понять, как числа в матрице должны соответствовать дереву, и я не уверен, что подразумевается под «плохо согласованным», даже после поиска в Google и руководстве по обезьянам.
Когда я открываю файл нексуса в Mesquite вместо R, я не вижу ничего необычного в дереве.
Резюме объекта филогенетического дерева в 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.
Таким образом, похоже, что вы столкнулись с ошибкой в функции обезьяны read.nexus()
, возможно, вызванной тем, что функция пытается проанализировать форматирование Mesquite файла nexus: в частности, таблица перевода использует n###
вместо просто чисел (###
), чтобы указать, как подсказки переведены. Я бы предложил регистрируя это как ошибку в пакете ape.
Тем временем мне удалось построить дерево, отредактировав файл нексуса:
В строке 1377 замените все послеTREE tree_1 =
содержимым из между одинарных кавычек '
в команде setTree
в строке 1497 файла.
Удалите все после команды END;
в строке 1379.
Благодарю вас! Мне также удалось построить дерево, используя изменения, которые вы внесли в файл nexus.