Как исправить «плохо согласованное» филогенетическое дерево, чтобы построить его в R?

Я пытаюсь построить дерево предполагаемой филогении эвкалипта в 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
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
2
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема возникает из-за того, что матрица ребер содержит неверные значения: 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.

cflax 27.04.2022 04:18

Другие вопросы по теме