R: ape / phylobase: incapable de convertir ultramétrique, arbre binaire pour objet hclust (message d'avertissement)
-
09-10-2019 - |
Question
Je l'ai importé un arbre ClustalW2 dans R en utilisant la fonction de singe et la fonction read.tree
du paquet de singe. J'évalue les âges moléculaire en utilisant la fonction de chronopl, ce qui entraîne un arbre binaire ultramétrique,. D'où je veux créer une version R dans l'objet dendrogramme.
Les parcelles d'arbres bien, et est un véritable objet phylo. Cependant, je suis en cours d'exécution dans des problèmes en essayant de le convertir:
Exemple de travail minimal:
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)
L'arbre résultant bien des « regards », Je test pour vérifier que l'arbre n'est pas ultramétrique et binaire, et que vous souhaitez le convertir en un objet hclust, pour faire éventuellement un objet dendrogramme de celui-ci.
> is.binary.tree(test.tree.nu)
[1] TRUE
> is.ultrametric(test.tree.nu)
[1] TRUE
Après avoir essayé de faire un objet hclust de l'arbre, je reçois une erreur:
> 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
Je sais que c'est une question très détaillée, et peut-être des questions qui sont spécifiquement liés à certains paquets sont mieux ailleurs demandé, mais j'espère que quelqu'un est capable de me aider.
Toute aide est très appréciée,
Cordialement,
Télécharger le fichier
Le fichier Phylip peut être téléchargé ici http://www.box.net/shared/rnbdk973ja
La solution
Je peux reproduire ce avec la version 2.6-2 de singe en R 2.12.1 beta (2010-12-07 r53808) sur Linux, mais votre code fonctionne dans la version 2.5-3 du singe.
Cela suggère un bug a glissé dans le paquet et vous devez en informer les développeurs du problème de demander des conseils d'experts. L'adresse e-mail du responsable, Emmanuel Paradis, est sur le package pour singe CRAN
Autres conseils
semble que le problème est que chronopl retourne un arbre qui est soit non racinées, ou a une racine multifurcating (selon la façon dont il est interprété). Aussi a as.hclust.phylo / avait des messages d'erreur inutiles.
modded.tree <- drop.tip(test.tree.nu,c(
'An16g06590','An02g12505','An11g00390','An14g01130'))
supprime tous les conseils de l'un des trois clades descendant de la racine, donc
is.ultrametric(modded.tree)
is.binary.tree(modded.tree)
is.rooted(modded.tree)
tout retour TRUE, et vous pouvez faire
treeclust <- as.hclust.phylo(modded.tree)
. Bien que je pense que vous voulez vraiment un objet hclust représentant l'arbre multifurcating, et bien que les objets hclust peuvent gérer ceux-ci, as.hclust.phylo (du paquet « singe ») ne fonctionne pas sur multifurcations pour une raison quelconque. Si vous connaissez un moyen de fichiers Newick d'importation en objets hclust, qui pourrait être une voie à suivre -. Ade a write.tree () pour générer des fichiers Newick