Как получить правильный порядок меток подсказок в APE после вызова функции ladderize

Я пытаюсь упорядочить строки фрейма данных на основе меток подсказок, найденных в филогенетическом дереве. Я собирался сделать это, используя функцию match, аналогичную ответу от этот вопрос, однако я застрял, потому что свойство tip.label объекта ape phylo не изменится, если вы измените порядок узлов с помощью функции ladderize.

library(ape)
tree <- read.tree(text = "(((A,B),(C,D)),E);")
tree2 <- ladderize(tree, right = FALSE)
tree$tip.label
#> [1] "A" "B" "C" "D" "E"
tree2$tip.label
#> [1] "A" "B" "C" "D" "E"

Обратите внимание, что порядок tip.label не изменился, хотя визуальное представление дерева изменилось. В этом простом примере визуальный порядок дерева после функции ladderize равен E A B C D (чтение по дереву снизу вверх после построения графика). Как я могу получить копию вектора tip.label, где порядок отражает новый порядок узлов в дереве?


person cts    schedule 18.12.2015    source источник


Ответы (2)


Кажется, главное - посмотреть на свойство edge. Наконечники всегда являются первыми узлами, которым присваивается идентификатор, который будет просто соответствовать положению в векторе tip.label.

library(ape)
tree <- read.tree(text = "(((A,B),(C,D)),E);")
tree2 <- ladderize(tree, right = FALSE)
tree$tip.label
#> [1] "A" "B" "C" "D" "E"
tree2$tip.label
#> [1] "A" "B" "C" "D" "E"
plot(tree2)
nodelabels()
tiplabels()

Первый шаг - отфильтровать внутренние узлы из второго столбца краевой матрицы:

is_tip <- tree2$edge[,2] <= length(tree2$tip.label)
#> [1]  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE

ordered_tips <- tree2$edge[is_tip, 2]
#> [1] 5 1 2 3 4

Затем вы можете использовать этот вектор для извлечения подсказок в правильном порядке:

tree2$tip.label[ordered_tips]
#> [1] "E" "A" "B" "C" "D"
person cts    schedule 18.12.2015

для другого пакета (ggtree), но та же проблема, которую я цитирую, Чтобы получить порядок подсказки графика ggtree, сделайте что-то вроде этого: data(bird.orders) p <- ggtree::ggtree(bird.orders) p[["data"]] # извлеките столбцы 'label' и 'y'

поступает с этого веб-сайта, и пакет ... хотя сколько пакетов R нужно, чтобы заменить лампочку? https://rdrr.io/github/joelnitta/jntools/man/get_tips_in_ape_plot_order.html

person andemexoax    schedule 17.12.2020