]> git.donarmstrong.com Git - ape.git/commitdiff
fix bug in prop.clades
authorparadis <paradis@6e262413-ae40-0410-9e79-b911bd7a66b7>
Sat, 9 Feb 2013 12:43:50 +0000 (12:43 +0000)
committerparadis <paradis@6e262413-ae40-0410-9e79-b911bd7a66b7>
Sat, 9 Feb 2013 12:43:50 +0000 (12:43 +0000)
git-svn-id: https://svn.mpl.ird.fr/ape/dev/ape@207 6e262413-ae40-0410-9e79-b911bd7a66b7

NEWS
R/dist.topo.R
man/boot.phylo.Rd

diff --git a/NEWS b/NEWS
index 5f1d7589aafb9c97738201ad10ea1874273099a7..59c6fede8764018d71cbc24b60051792ce803041 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,10 @@ BUG FIXES
 
     o read.dna(, "fasta") may add '\r' in labels: this is fixed.
 
+    o prop.clades() returned wrong numbers when the tip labels of
+      'phy' are not in the same order than the list of trees (thanks
+      to Rupert Collins for the report).
+
 
 
                CHANGES IN APE VERSION 3.0-7
index 230f009e30d633935907327d2010f0846d2c9abd..fa7edf80d71b49d0c0422740fde374ea280c7a4e 100644 (file)
@@ -1,9 +1,9 @@
-## dist.topo.R (2012-12-12)
+## dist.topo.R (2013-02-09)
 
 ##      Topological Distances, Tree Bipartitions,
 ##   Consensus Trees, and Bootstrapping Phylogenies
 
-## Copyright 2005-2012 Emmanuel Paradis
+## Copyright 2005-2013 Emmanuel Paradis
 
 ## This file is part of the R-package `ape'.
 ## See the file ../COPYING for licensing issues.
@@ -87,6 +87,7 @@ dist.topo <- function(x, y, method = "PH85")
         y$tip.label <- NULL
         y
     }
+    x <- unclass(x) # another killer improvement by Tucson's hackathon (1/2/2013)
     x <- lapply(x, relabel)
     attr(x, "TipLabel") <- ref
     class(x) <- "multiPhylo"
@@ -165,6 +166,14 @@ prop.clades <- function(phy, ..., part = NULL, rooted = FALSE)
         part <- prop.part(obj, check.labels = TRUE)
     }
 
+    ## until ape 3.0-7 it was assumed implicitly that the labels in phy
+    ## are in the same order than in 'part' (bug report by Rupert Collins)
+    if (!identical(phy$tip.label, attr(part, "labels"))) {
+        i <- match(phy$tip.label, attr(part, "labels"))
+        j <- match(seq_len(Ntip(phy)), phy$edge[, 2])
+        phy$edge[j, 2] <- i
+        phy$tip.label <- attr(part, "labels")
+    }
     bp <- prop.part(phy)
     if (!rooted) {
         bp <- postprocess.prop.part(bp)
index 8ac86689fa9582f4f8a06769f15b0af2fbcbc9ff..2e166656c4e858f6ccca93f7f57a49a854828eaf 100644 (file)
@@ -133,11 +133,11 @@ tr <- f(woodmouse)
 for (i in 1:5)
   print(boot.phylo(tr, woodmouse, f, quiet = TRUE))
 ### How many partitions in 100 random trees of 10 labels?...
-TR <- replicate(100, rtree(10), FALSE)
+TR <- rmtree(100, 10)
 pp10 <- prop.part(TR)
 length(pp10)
 ### ... and in 100 random trees of 20 labels?
-TR <- replicate(100, rtree(20), FALSE)
+TR <- rmtree(100, 20)
 pp20 <- prop.part(TR)
 length(pp20)
 plot(pp10, pch = "x", col = 2)