+ CHANGES IN APE VERSION 2.4-1
+
+
+BUG FIXES
+
+ o bind.tree() failed when 'y' had no root edge.
+
+ o read.nexus() shuffled tip labels when the trees have no branch
+ lengths and there is a TRANSLATE block.
+
+ o plot.multiPhylo() crashed R when plotting a list of trees with
+ "compressed tip labels".
+
+ o write.nexus() did not translate the taxa names when asked for.
+
+
+
CHANGES IN APE VERSION 2.4
OTHER CHANGES
- o There is now a general help page displayed with '?ape'
+ o There is now a general help page displayed with '?ape'.
Package: ape
-Version: 2.4
-Date: 2009-10-03
+Version: 2.4-1
+Date: 2009-10-27
Title: Analyses of Phylogenetics and Evolution
Author: Emmanuel Paradis, Ben Bolker, Julien Claude, Hoa Sien Cuong, Richard Desper, Benoit Durand, Julien Dutheil, Olivier Gascuel, Gangolf Jobb, Christoph Heibl, Daniel Lawson, Vincent Lefort, Pierre Legendre, Jim Lemon, Yvonnick Noel, Johan Nylander, Rainer Opgen-Rhein, Korbinian Strimmer, Damien de Vienne
Maintainer: Emmanuel Paradis <Emmanuel.Paradis@ird.fr>
-## bind.tree.R (2007-12-21)
+## bind.tree.R (2009-10-08)
## Bind Trees
-## Copyright 2003-2007 Emmanuel Paradis
+## Copyright 2003-2009 Emmanuel Paradis
## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.
stop("argument 'position' is larger than the specified edge.")
x$edge.length[i] <- x$edge.length[i] - position
}
- if (yHasNoRootEdge ) y$root.edge <- position
- else y$root.edge <- y$root.edge + position
+ y$root.edge <- if (yHasNoRootEdge) position else y$root.edge + position
}
+ if (is.null(y$root.edge) && where > nb.tip) y$root.edge <- 0
+
X <- write.tree(x)
Y <- write.tree(y)
Y <- substr(Y, 1, nchar(Y) - 1)
-## plot.phylo.R (2009-09-30)
+## plot.phylo.R (2009-10-27)
## Plot Phylogenies
par(ask = TRUE)
on.exit(par(ask = FALSE))
}
- for (i in x) plot(i, ...)
+ for (i in 1:length(x)) plot(x[[i]], ...)
}
-## read.nexus.R (2009-04-01)
+## read.nexus.R (2009-10-27)
## Read Tree File in Nexus Format
}
} else {
if (!is.null(tree.names)) names(trees) <- tree.names
- if (translation) attr(trees, "TipLabel") <- TRANS[, 2]
+ if (translation) {
+ if (length(colon) == Ntree) # .treeBuildWithTokens() was used
+ attr(trees, "TipLabel") <- TRANS[, 2]
+ else { # reassign the tip labels then compress
+ for (i in 1:Ntree)
+ trees[[i]]$tip.label <-
+ TRANS[, 2][as.numeric(trees[[i]]$tip.label)]
+ trees <- .compressTipLabel(trees)
+ }
+ }
class(trees) <- "multiPhylo"
}
if (length(grep("[\\/]", file)) == 1)
-## write.nexus.R (2009-07-27)
+## write.nexus.R (2009-10-27)
## Write Tree File in Nexus Format
token <- as.character(1:N)
names(token) <- obj[[1]]$tip.label
obj[[1]]$tip.label <- token
- if (ntree > 1)
- for (i in 2:ntree)
- obj[[i]]$tip.label <- token[obj[[i]]$tip.label]
+ if (ntree > 1) {
+ for (i in 2:ntree)
+ obj[[i]]$tip.label <- token[obj[[i]]$tip.label]
+ class(obj) <- NULL
+ }
} else {
for (i in 1:ntree)
obj[[i]]$tip.label <- checkLabel(obj[[i]]$tip.label)