-## as.phylo.R (2010-12-14)
+## as.phylo.R (2011-03-25)
## Conversion Among Tree Objects
-## Copyright 2005-2010 Emmanuel Paradis
+## Copyright 2005-2011 Emmanuel Paradis
## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.
as.phylo <- function (x, ...)
{
- if (class(x) == "phylo") return(x)
+ if (length(class(x)) == 1 && class(x) == "phylo")
+ return(x)
UseMethod("as.phylo")
}
if (!is.binary.tree(x)) stop("the tree is not binary")
if (!is.rooted(x)) stop("the tree is not rooted")
n <- length(x$tip.label)
+ x$node.label <- NULL # by Jinlong Zhang (2010-12-15)
bt <- sort(branching.times(x))
inode <- as.numeric(names(bt))
N <- n - 1L
class(obj) <- "hclust"
obj
}
+
+as.network.phylo <- function(x, directed = is.rooted(x), ...)
+{
+ if (is.null(x$node.label)) x <- makeNodeLabel(x)
+ res <- network(x$edge, directed = directed, ...)
+ network.vertex.names(res) <- c(x$tip.label, x$node.label)
+ res
+}
+
+as.igraph <- function(x, ...) UseMethod("as.igraph")
+
+as.igraph.phylo <- function(x, directed = is.rooted(x), use.labels = TRUE, ...)
+{
+ ## local copy because x will be changed before evaluating is.rooted(x):
+ directed <- directed
+ if (use.labels) {
+ if (is.null(x$node.label)) x <- makeNodeLabel(x)
+ x$edge <- matrix(c(x$tip.label, x$node.label)[x$edge], ncol = 2)
+ } else x$edge <- x$edge - 1L
+ graph.edgelist(x$edge, directed = directed, ...)
+}