R: ape / phylobase: невозможно преобразовать ультраметрическое двоичное дерево в объект hclust (предупреждение) - PullRequest
4 голосов
/ 13 декабря 2010

Я импортировал дерево ClustalW2 в R, используя функцию ape и функцию read.tree пакета ape. Я оцениваю молекулярный возраст, используя функцию хронопл, в результате получается ультраметрическое бинарное дерево Из которого я хочу создать R build в объекте дендрограммы.

Дерево хорошо выглядит и является настоящим филологическим объектом. Однако, я сталкиваюсь с проблемами при попытке преобразовать его:

Пример минимальной работы:

require(ape)
test.tree <- read.tree(file = "testree.phylip", text = NULL, tree.names = NULL, skip = 0,
    comment.char = "#", keep.multi = FALSE)

test.tree.nu <- chronopl(test.tree, 0, age.min = 1, age.max = NULL,
node = "root", S = 1, tol = 1e-8,
CV = FALSE, eval.max = 500, iter.max = 500)

is.ultrametric(test.tree.nu)
is.binary.tree(test.tree.nu)
treeclust <- as.hclust.phylo(test.tree.nu)

Полученное дерево "выглядит" нормально, Я проверяю, чтобы убедиться, что дерево не является ультраметрическим и двоичным, и хочу преобразовать его в объект hclust, чтобы в конечном итоге сделать его объектом дендрограммы.

> is.binary.tree(test.tree.nu)
[1] TRUE
> is.ultrametric(test.tree.nu)
[1] TRUE

После попытки сделать объект hclust из дерева я получаю ошибку:

> tree.phylo <- as.hclust.phylo(test.tree.nu)
Error in if (tmp <= n) -tmp else nm[tmp] : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In nm[inode] <- 1:N :
  number of items to replace is not a multiple of replacement length

Я понимаю, что это очень подробный вопрос, и, возможно, такие вопросы, которые конкретно относятся к определенным пакетам, лучше задать где-нибудь еще, но я надеюсь, что кто-то сможет мне помочь.

Вся помощь очень ценится,

С уважением,

Загрузка файла

Файл Phylip можно скачать здесь http://www.box.net/shared/rnbdk973ja

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

похоже, проблема в том, что chronopl возвращает дерево, которое либо не имеет корня, либо имеет мультифуркирующий корень (в зависимости от того, как оно интерпретируется).Кроме того, as.hclust.phylo имеет / имеет бесполезные сообщения об ошибках.

This:

modded.tree <- drop.tip(test.tree.nu,c(
'An16g06590','An02g12505','An11g00390','An14g01130'))

удаляет все подсказки из одной из трех клад, нисходящих от корня, таким образом

is.ultrametric(modded.tree)
is.binary.tree(modded.tree)
is.rooted(modded.tree)

все возвращают TRUE, и вы можете сделать

treeclust <- as.hclust.phylo(modded.tree)

.Хотя я думаю, что вам действительно нужен объект hclust, представляющий мультифуркационное дерево, и хотя объекты hclust могут с этим справиться, as.hclust.phylo (из пакета 'ape') по какой-то причине не работает с мультифуркациями.Если вы знаете способ импорта файлов newick в объекты hclust, это может быть путь вперед - у ade есть write.tree () для генерации файлов newick.

2 голосов
/ 13 декабря 2010

Я могу воспроизвести это с версией ape версии 2.6-2 в бета-версии R 2.12.1 (2010-12-07 r53808) в Linux, но ваш код работает в версии ape 2.5-3.

Это может указывать на то, что в пакет закралась ошибка, и вы должны сообщить разработчикам о проблеме, чтобы спросить совета специалиста. Адрес электронной почты сопровождающего, Эммануэля Парадиса, указан в пакете CRAN для обезьяны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...