2010-12-13 4 views
4

J'ai importé une arborescence ClustalW2 dans R en utilisant la fonction ape et la fonction read.tree du paquet ape. J'estime les âges moléculaires en utilisant la fonction chronoplasique, résultant en un arbre binaire ultramétrique. A partir de laquelle je veux créer un R construire dans l'objet dendrogram.R: ape/phylobase: impossible de convertir l'arbre binaire ultramétrique en objet hclust (message d'avertissement)

L'arbre trace 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:

minimale Exemple de travail:

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 « semble » bien, je test pour vérifier que l'arbre n'est pas ultramétrique et binaire, et que vous voulez convertir en un objet hclust, pour en faire éventuellement un objet dendrogramme.

> 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 cela est une question très détaillée, et peut-être des questions qui sont spécifiquement liées à certaines les paquets sont mieux demandés ailleurs, mais j'espère que quelqu'un est capable de m'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

+0

Un exemple de travail minimal inclurait le fichier de test que vous utilisez dans votre code. Comme vous ne pouvez pas l'inclure, veuillez nous dire si celle-ci est contenue dans la trousse et, le cas échéant, où. Si j'utilise les arbres d'exemple dans ape, cela fonctionne (étant donné que je change ma dernière ligne de code en 'treeclust <- as.hclust.phylo (test.tree.nu)' –

+0

Je viens de rajouter un lien de fichier. la question est mieux posée à Biostar, et je l'ai copiée là, je garderai cette version ici au cas où les gens essaient déjà de m'aider :) – Timtico

+1

super Q maintenant que le fichier est disponible. Un point, à l'avenir, donne simplement le nom de fichier, par ex. '" testree.phylip "' pas le chemin de Windows plus le nom de fichier. –

Répondre

2

Je peux reproduire ce avec la version 2.6-2 de singe sous R 2.12.1 beta (2010-12-07 r53808) sur Linux, mais votre code fonctionne dans la version 2.5-3 de ape. Ceci suggère qu'un bogue s'est glissé dans le paquet et vous devriez informer les développeurs du problème pour demander des conseils d'experts. L'adresse e-mail du mainteneur, Emmanuel Paradis, est sur le CRAN package for ape

+0

Merci, je me suis ajouté à la mailing list de singe ET envoyé à Emmanuel Paradis un mail à ce sujet. Je vais essayer de revenir à la version 2.5-3 – Timtico

+0

J'ai créé mon erreur dans la dernière version 2.6-2. BTW – Timtico

1

ressemble au problème est que chronopl renvoie un arbre qui est soit non raclé, ou a une racine multifurcating (selon comment il est interprété). Aussi as.hclust.phylo a/avait des messages d'erreur inutiles.

Ce:

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, ainsi

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

retourner vrai, 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 multifurcation, et bien que les objets hclust puissent les gérer, as.hclust.phylo (du paquet 'ape') ne fonctionne pas sur les multifurcations pour une raison quelconque. Si vous connaissez un moyen d'importer des fichiers newick dans des objets hclust, cela pourrait être un moyen d'avancer - ade a write.tree() pour générer des fichiers newick.

Questions connexes