Browse code

remove get.offspring.df & get.offspring.tip

Guangchuang Yu authored on 28/01/2019 09:12:15
Showing 9 changed files

... ...
@@ -61,7 +61,6 @@ export(geom_tippoint)
61 61
 export(geom_tree)
62 62
 export(geom_tree2)
63 63
 export(geom_treescale)
64
-export(get.offspring.tip)
65 64
 export(get.path)
66 65
 export(get_balance_position)
67 66
 export(get_clade_position)
... ...
@@ -123,7 +122,6 @@ export(xlim_tree)
123 122
 exportMethods(gzoom)
124 123
 exportMethods(scale_color)
125 124
 importFrom(ape,di2multi)
126
-importFrom(ape,extract.clade)
127 125
 importFrom(ape,ladderize)
128 126
 importFrom(ape,read.nexus)
129 127
 importFrom(ape,read.tree)
... ...
@@ -218,6 +216,7 @@ importFrom(tidytree,MRCA)
218 216
 importFrom(tidytree,as_tibble)
219 217
 importFrom(tidytree,groupClade)
220 218
 importFrom(tidytree,groupOTU)
219
+importFrom(tidytree,offspring)
221 220
 importFrom(treeio,Nnode)
222 221
 importFrom(treeio,Ntip)
223 222
 importFrom(treeio,as.phylo)
... ...
@@ -1,5 +1,6 @@
1 1
 # ggtree 1.15.6
2 2
 
3
++ remove `get.offspring.df` and `get.offspring.tip` and instead use `tidytree::offspring` (2019-01-28, Mon)
3 4
 + `facet_widths` function to set relative widths of facet panels (2019-01-28, Mon)
4 5
   - the output is `ggplotify::as.ggplot(grid_object)`, so it is not the original `ggtree` object.
5 6
 
... ...
@@ -5,6 +5,7 @@
5 5
 ##' @param tree_view tree view
6 6
 ##' @param node node
7 7
 ##' @return taxa name vector
8
+##' @importFrom tidytree offspring
8 9
 ##' @export
9 10
 ##' @author Guangchuang Yu
10 11
 get_taxa_name <- function(tree_view=NULL, node=NULL) {
... ...
@@ -12,8 +13,9 @@ get_taxa_name <- function(tree_view=NULL, node=NULL) {
12 13
 
13 14
     df <- tree_view$data
14 15
     if (!is.null(node)) {
15
-        sp <- get.offspring.df(df, node)
16
-        df <- df[sp, ]
16
+        ## sp <- get.offspring.df(df, node)
17
+        ## df <- df[sp, ]
18
+        df <- offspring(df, node)
17 19
     }
18 20
 
19 21
     with(df, {
... ...
@@ -81,8 +83,9 @@ collapse.ggtree <- function(x=NULL, node, clade_name = NULL, ...) {
81 83
         return(tree_view)
82 84
     }
83 85
 
84
-    sp <- get.offspring.df(df, node)
85
-    sp.df <- df[sp,]
86
+    ## sp <- get.offspring.df(df, node)
87
+    ## sp.df <- df[sp,]
88
+    sp.df <- offspring(df, node)
86 89
     ## df[node, "isTip"] <- TRUE
87 90
     sp_y <- range(sp.df$y, na.rm=TRUE)
88 91
     ii <- which(df$y > max(sp_y))
... ...
@@ -91,8 +94,8 @@ collapse.ggtree <- function(x=NULL, node, clade_name = NULL, ...) {
91 94
     }
92 95
     df$y[node] <- min(sp_y)
93 96
 
94
-    df[sp, "x"] <- NA
95
-    df[sp, "y"] <- NA
97
+    df[sp.df$node, "x"] <- NA
98
+    df[sp.df$node, "y"] <- NA
96 99
 
97 100
     df <- reassign_y_from_node_to_root(df, node)
98 101
 
... ...
@@ -170,10 +173,15 @@ rotate <- function(tree_view=NULL, node) {
170 173
     tree_view %<>% get_tree_view
171 174
 
172 175
     df <- tree_view$data
173
-    sp <- get.offspring.df(df, node)
176
+    ## sp <- get.offspring.df(df, node)
177
+    ## sp_idx <- with(df, match(sp, node))
178
+    ## tip <- sp[df$isTip[sp_idx]]
179
+    ## sp.df <- df[sp_idx,]
180
+    sp.df <- offspring(df, node)
181
+    sp <- sp.df$node
174 182
     sp_idx <- with(df, match(sp, node))
175 183
     tip <- sp[df$isTip[sp_idx]]
176
-    sp.df <- df[sp_idx,]
184
+
177 185
     ii <- with(sp.df, match(tip, node))
178 186
     jj <- ii[order(sp.df$y[ii])]
179 187
     sp.df[jj,"y"] <- rev(sp.df$y[jj])
... ...
@@ -215,11 +223,16 @@ flip <- function(tree_view=NULL, node1, node2) {
215 223
         stop("node1 and node2 should share a same parent node...")
216 224
     }
217 225
 
218
-    sp1 <- c(node1, get.offspring.df(df, node1))
219
-    sp2 <- c(node2, get.offspring.df(df, node2))
226
+    ## sp1 <- c(node1, get.offspring.df(df, node1))
227
+    ## sp2 <- c(node2, get.offspring.df(df, node2))
228
+
229
+    ## sp1.df <- df[sp1,]
230
+    ## sp2.df <- df[sp2,]
220 231
 
221
-    sp1.df <- df[sp1,]
222
-    sp2.df <- df[sp2,]
232
+    sp1.df <- offspring(df, node1, self_include = TRUE)
233
+    sp2.df <- offspring(df, node2, self_include = TRUE)
234
+    sp1 <- sp1.df$node
235
+    sp2 <- sp2.df$node
223 236
 
224 237
     min_y1 <- min(sp1.df$y, na.rm=TRUE)
225 238
     min_y2 <- min(sp2.df$y, na.rm=TRUE)
... ...
@@ -280,9 +293,11 @@ scaleClade <- function(tree_view=NULL, node, scale=1, vertical_only=TRUE) {
280 293
     }
281 294
 
282 295
     df <- tree_view$data
283
-    sp <- get.offspring.df(df, node)
284
-    sp.df <- df[sp,]
285
-
296
+    ## sp <- get.offspring.df(df, node)
297
+    ## sp.df <- df[sp,]
298
+    sp.df <- offspring(sp, node)
299
+    sp <- sp.df$node
300
+    
286 301
     ## sp_nr <- nrow(sp.df)
287 302
     ## span <- diff(range(sp.df$y))/sp_nr
288 303
 
... ...
@@ -190,8 +190,9 @@ get_balance_position_ <- function(data, node, direction) {
190 190
     }
191 191
 
192 192
     i <- match(node, data$node)
193
-    sp <- tryCatch(get.offspring.df(data, ch[direction]), error=function(e) ch[direction])
194
-    sp.all <- get.offspring.df(data, i)
193
+    sp <- tryCatch(offspring(data, ch[direction])$node,
194
+                   error=function(e) ch[direction])
195
+    sp.all <- offspring(data, i)$node
195 196
     sp.df <- data[match(sp, data$node),]
196 197
     sp.all.df <- data[match(sp.all, data$node),]
197 198
     n.df <- data[i,]
... ...
@@ -236,9 +236,11 @@ get_cladelabel_position_ <- function(data, node, angle = "auto", extend = 0) {
236 236
         extend = rep(extend, 2)
237 237
     }
238 238
 
239
-    sp <- get.offspring.df(data, node)
240
-    sp2 <- c(sp, node)
241
-    sp.df <- data[match(sp2, data$node),]
239
+    ## sp <- get.offspring.df(data, node)
240
+    ## sp2 <- c(sp, node)
241
+    ## sp.df <- data[match(sp2, data$node),]
242
+
243
+    sp.df <- offspring(data, node, self_include = TRUE)
242 244
 
243 245
     y <- sp.df$y
244 246
     y <- y[!is.na(y)]
... ...
@@ -131,7 +131,7 @@ get_clade_position <- function(treeview, node) {
131 131
 }
132 132
 
133 133
 get_clade_position_ <- function(data, node) {
134
-    sp <- tryCatch(get.offspring.df(data, node), error=function(e) NULL)
134
+    sp <- tryCatch(offspring(data, node)$node, error=function(e) NULL)
135 135
 
136 136
     i <- match(node, data$node)
137 137
     if (is.null(sp)) {
... ...
@@ -79,7 +79,8 @@ layoutEqualAngle <- function(model, branch.length ){
79 79
     N <- getNodeNum(tree)
80 80
 
81 81
     ## Get number of tips for each node in tree.
82
-    nb.sp <- sapply(1:N, function(i) length(get.offspring.tip(tree, i)))
82
+  ## nb.sp <- sapply(1:N, function(i) length(get.offspring.tip(tree, i)))
83
+  nb.sp <- sapply(1:N, function(i) length(offspring(tree, i, tiponly = TRUE)))
83 84
     ## Get list of node id's.
84 85
     nodes <- getNodes_by_postorder(tree)
85 86
 
... ...
@@ -742,36 +743,39 @@ getChild.df <- function(df, node) {
742 743
     res[res != node] ## node may root
743 744
 }
744 745
 
745
-get.offspring.df <- function(df, node) {
746
-    sp <- getChild.df(df, node)
747
-    i <- 1
748
-    while(i <= length(sp)) {
749
-        sp <- c(sp, getChild.df(df, sp[i]))
750
-        i <- i + 1
751
-    }
752
-    return(sp)
753
-}
746
+## get.offspring.df <- function(df, node) {
747
+##     ## sp <- getChild.df(df, node)
748
+##     ## i <- 1
749
+##     ## while(i <= length(sp)) {
750
+##     ##     sp <- c(sp, getChild.df(df, sp[i]))
751
+##     ##     i <- i + 1
752
+##     ## }
753
+##     ## return(sp)
754
+##     tidytree::offspring(df, node)$node
755
+## }
754 756
 
755 757
 
756 758
 
757
-##' extract offspring tips
758
-##'
759
-##'
760
-##' @title get.offspring.tip
761
-##' @param tr tree
762
-##' @param node node
763
-##' @return tip label
764
-##' @author ygc
765
-##' @importFrom ape extract.clade
766
-##' @export
767
-get.offspring.tip <- function(tr, node) {
768
-    if ( ! node %in% tr$edge[,1]) {
769
-        ## return itself
770
-        return(tr$tip.label[node])
771
-    }
772
-    clade <- extract.clade(tr, node)
773
-    clade$tip.label
774
-}
759
+## ##' extract offspring tips
760
+## ##'
761
+## ##'
762
+## ##' @title get.offspring.tip
763
+## ##' @param tr tree
764
+## ##' @param node node
765
+## ##' @return tip label
766
+## ##' @author ygc
767
+## ##' @importFrom ape extract.clade
768
+## ##' @export
769
+## get.offspring.tip <- function(tr, node) {
770
+##     ## if ( ! node %in% tr$edge[,1]) {
771
+##     ##     ## return itself
772
+##     ##     return(tr$tip.label[node])
773
+##     ## }
774
+##     ## clade <- extract.clade(tr, node)
775
+##     ## clade$tip.label
776
+##     tid <- offspring(tr, node, tiponly = TRUE)
777
+##     tr$tip.label[tid]
778
+## }
775 779
 
776 780
 
777 781
 
... ...
@@ -4,6 +4,6 @@ getRoot <- tidytree:::rootnode
4 4
 get.tree <- treeio::get.tree
5 5
 drop.tip <- treeio::drop.tip
6 6
 get.fields <- treeio::get.fields
7
-is.tree <- treeio:::is.tree
7
+is.tree <- getFromNamespace('is.tree', 'treeio')
8 8
 
9 9
 set_branch_length <- getFromNamespace("set_branch_length", "treeio")
10 10
deleted file mode 100644
... ...
@@ -1,22 +0,0 @@
1
-% Generated by roxygen2: do not edit by hand
2
-% Please edit documentation in R/tree-utilities.R
3
-\name{get.offspring.tip}
4
-\alias{get.offspring.tip}
5
-\title{get.offspring.tip}
6
-\usage{
7
-get.offspring.tip(tr, node)
8
-}
9
-\arguments{
10
-\item{tr}{tree}
11
-
12
-\item{node}{node}
13
-}
14
-\value{
15
-tip label
16
-}
17
-\description{
18
-extract offspring tips
19
-}
20
-\author{
21
-ygc
22
-}