How can I convert a tree (which is the output of my Java program) to a dendrogram in R?
Currently, I am converting the tree into the Newick format, using the suggestion given here. And then I use the ape
package in R to read the Newick-formatted tree:
library("ape")
cPhylo <- read.tree(file = "gc.tree")
Finally I use as.hclust
in R to convert the tree开发者_运维知识库 into a dendrogram:
dendrogram <- as.hclust(gcPhylo)
However, the dendrogram requires the branch lengths. Although I insert the branch lengths, I am getting an error saying that the tree is not ultrametric:
Error in as.hclust.phylo(gcPhylo) : the tree is not ultrametric
I guess I am doing something wrong while inserting the branch lengths.
Is there any other way that I can follow? Or how can I insert the branch lengths while converting the tree into the Newick format? Equal branch lengths would be fine.
This is an old question, but it has inadequate answers so far. Since I had the same problem, and my googlefoo was having problems finding the answer, here you go:
library("ape")
cPhylo <- read.tree(file = "gc.tree")
dendrogram <- chronos(cPhylo)
This is an old question, but all of the previous answers require the tree to be made ultrametric before being converted to a dendrogram object.
You can use the DECIPHER package to read a dendrogram object from a Newick formatted file:
dend <- ReadDendrogram(path_to_newick_file)
I think the problem is in fact that your "gc.tree" isn't ultrametric. Make sure that the distance from the root to each tip is the same. The following code works:
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)
but make the tree non-ultrametric (note D's branch length):
tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:15);')
and as.hclust.phylo will raise an error.
精彩评论