Как преобразовать дерево в дендрограмму в R? - PullRequest
4 голосов
/ 16 сентября 2011

Как я могу преобразовать дерево (которое является выводом моей Java-программы) в дендрограмму в R?

В настоящее время я конвертирую дерево в формат Newick, используя предложение, данное здесь .А затем я использую пакет ape в R для чтения дерева в формате Newick:

library("ape")
cPhylo <- read.tree(file = "gc.tree")

Наконец, я использую as.hclust в R для преобразования дерева в дендрограмму:

dendrogram <- as.hclust(gcPhylo)

Однако для дендрограммы требуются длины ветвей.Несмотря на то, что я вставляю длины веток, я получаю сообщение об ошибке, в котором говорится, что дерево не является ультраметрическим:

Ошибка в as.hclust.phylo (gcPhylo): дерево не является ультраметрическим

Полагаю, я делаю что-то не так, вставляя длины веток.

Есть ли другой способ, которым я могу следовать?Или как я могу вставить длины веток при преобразовании дерева в формат Newick?Равной длины веток было бы хорошо.

Ответы [ 3 ]

5 голосов
/ 20 мая 2016

Это старый вопрос, но все предыдущие ответы требуют, чтобы дерево было ультраметрическим перед преобразованием в объект дендрограммы.

Вы можете использовать пакет DECIPHER , чтобы прочитатьобъект дендрограммы из файла формата Newick:

dend <- ReadDendrogram(path_to_newick_file)
4 голосов
/ 08 декабря 2014

Это старый вопрос, но он пока не дает адекватных ответов.Так как у меня была та же проблема, и у моего googlefoo были проблемы с поиском ответа, вот вам:

library("ape")
cPhylo <- read.tree(file = "gc.tree")
dendrogram <- chronos(cPhylo)
2 голосов
/ 21 ноября 2011

Я думаю, что проблема в том, что ваше "gc.tree" не ультраметрическое.Убедитесь, что расстояние от корня до каждого наконечника одинаково.Следующий код работает:

library('ape')
tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:13.6);')
is.ultrametric(tree)
is.binary.tree(tree)
is.rooted(tree)
hc <- as.hclust.phylo(tree)

, но делает дерево не ультраметрическим (обратите внимание на длину ветви D):

tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:15);')

и as.hclust.phylo вызовет ошибку.

...