]> git.donarmstrong.com Git - ape.git/blobdiff - R/as.phylo.R
final warp for ape 3.0-2
[ape.git] / R / as.phylo.R
index e8d0f667a325b8df396f2f552d38ecbfa78e1f74..5d541bce67f3de75f947ba59caa0ea256921e4eb 100644 (file)
@@ -1,8 +1,8 @@
-## as.phylo.R (2010-12-15)
+## 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.
@@ -29,7 +29,8 @@ new2old.phylo <- function(phy)
 
 as.phylo <- function (x, ...)
 {
-    if (class(x) == "phylo") return(x)
+    if (length(class(x)) == 1 && class(x) == "phylo")
+        return(x)
     UseMethod("as.phylo")
 }
 
@@ -110,3 +111,24 @@ as.hclust.phylo <- function(x, ...)
     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, ...)
+}