diff --git a/DESCRIPTION b/DESCRIPTION index f3c117a..0df2504 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: itol.toolkit Title: Helper Functions for 'Interactive Tree Of Life' -Version: 1.0.5 +Version: 1.1.0 Authors@R: person( given = "Tong", @@ -32,7 +32,9 @@ Imports: miniUI, shiny, rstudioapi, - colourpicker + colourpicker, + ggsci, + RColorBrewer Suggests: knitr, rmarkdown, diff --git a/NAMESPACE b/NAMESPACE index ff876f1..bdc7b65 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -62,7 +62,9 @@ exportClasses(itol.theme) exportClasses(itol.unit) exportMethods("+") exportMethods(show) +import(RColorBrewer) import(dplyr) +import(ggsci) import(miniUI) import(rstudioapi) import(shiny) diff --git a/R/object.R b/R/object.R index afc2081..38a6bad 100644 --- a/R/object.R +++ b/R/object.R @@ -50,7 +50,10 @@ itol.hub <- setClass( #' create_hub(tree = TREE) #' create_hub <- function(tree,field_tree=NULL,seq=NULL,abundance=NULL,taxonomy=NULL,node_data=NULL,tip_data=NULL) { - tree <- list(main = read.tree(tree), field = list()) + if (is.character(tree)) { + tree <- read.tree(tree) + } + tree <- list(main = tree, field = list()) if (any(duplicated(tree$main$node.label)) || is.null(tree$main$node.label)) { tree$main <- ape::makeNodeLabel(phy = tree$main, method = "number", prefix = "I") } diff --git a/R/user.R b/R/user.R index 95a2e12..0b8614c 100644 --- a/R/user.R +++ b/R/user.R @@ -344,7 +344,7 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci", "wesanderson")){ + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels @@ -627,8 +627,8 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci")){ - color_levels = get_color(length(unique(data[[colname_data]]))) + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels }else { @@ -668,6 +668,9 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li profile$name <- key unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } + } + if (type == "DATASET_RANGE"){ + } if(type == "LABELS"){ if(!is.data.frame(data)){ @@ -768,8 +771,8 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci")){ - color_levels = get_color(length(unique(data[[colname_data]]))) + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels }else { @@ -842,7 +845,7 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci", "wesanderson")){ + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels @@ -883,7 +886,15 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li data_left[["tip"]] <- df_merge(data_left[["tip"]], data) field_length <- length(field_names) field$labels <- field_names - field$colors <- get_color(field_length) + if(is.null(color)){ + message("Using default color pattern: table2itol") + color = "table2itol" + } + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + field$colors <- get_color(field_length,set = color) + }else{ + field$colors <- get_color(field_length) + } field$shapes <- rep(2,field_length) unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } @@ -1052,8 +1063,8 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci")){ - color_levels = get_color(length(unique(data[[colname_data]]))) + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels }else { @@ -1111,7 +1122,15 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li data_left[["node"]] <- df_merge(data_left[["node"]], data) data_left[["tip"]] <- df_merge(data_left[["tip"]], data) field$labels <- field_names - field$colors <- get_color(length(field_names)) + if(is.null(color)){ + message("Using default color pattern: table2itol") + color = "table2itol" + } + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + field$colors <- get_color(field_length,set = color) + }else{ + field$colors <- get_color(field_length) + } profile$name <- key sep = "\t" unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) @@ -1214,8 +1233,8 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci")){ - color_levels = get_color(length(unique(data[[colname_data]]))) + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels }else { @@ -1291,6 +1310,36 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li specific_themes$basic_plot$dataset_scale <- c(min,mean,max) unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } + if(type == "DATASET_MULTIBAR"){ + if(!is.data.frame(data)){ + stop("The input data class should be a data frame") + } + if(names(data)[1] != "id"){ + message(paste0("Using the first column as id: ",names(data)[1])) + names(data)[1] <- "id" + } + if(length(names(data)) < 2){ + stop("The input data should has at least 2 columns") + } + field_names <- names(data)[-1] + names(data) <- c("id",paste0(key,"$",field_names)) + data <- convert_range_to_node(data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], data) + field_length <- length(field_names) + field$labels <- field_names + if(is.null(color)){ + message("Using default color pattern: table2itol") + color = "table2itol" + } + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + field$colors <- get_color(field_length,set = color) + }else{ + field$colors <- get_color(field_length) + } + profile$name <- key + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) + } if(type=="DATASET_BOXPLOT"){ if(!is.data.frame(data)){ stop("The input data class should be a data frame") @@ -1327,6 +1376,104 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li specific_themes$basic_plot$dataset_scale <- c(min,mean,max) unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } + if(type == "DATASET_LINECHART"){ + if(!is.data.frame(data)){ + stop("The input data class should be a data frame") + } + if(names(data)[1] != "id"){ + message(paste0("Using the 1st column as id: ",names(data)[1])) + names(data)[1] <- "id" + } + if(names(data)[2] != "X"){ + message(paste0("Using the 2nd column as X: ",names(data)[2])) + names(data)[2] <- "X" + } + if(names(data)[3] != "Y"){ + message(paste0("Using the 3rd column as Y: ",names(data)[3])) + names(data)[3] <- "Y" + } + if(length(names(data)) != 3){ + stop("The input data should has 3 columns: id, x, y") + } + names(data) <- c("id",paste0(key,c("$X", "$Y"))) + data <- convert_range_to_node(data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], data) + profile$name <- key + specific_themes$linechart$basic$x <- "" + specific_themes$linechart$basic$y <- "" + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) + } + if(type == "DATASET_PIECHART"){ + if(!is.data.frame(data)){ + stop("The input data class should be a data frame") + } + if(names(data)[1] != "id"){ + message(paste0("Using the 1st column as id: ",names(data)[1])) + names(data)[1] <- "id" + } + if(is.null(position)){ + message(paste0("Using the 2nd column as position: ",names(data)[2])) + names(data)[2] <- "POSITION" + }else{ + data <- data.frame(data[,1],POSITION=position,data[,2:ncol(data)]) + } + if(is.null(size_factor)){ + message(paste0("Using the 3rd column as radius: ",names(data)[3])) + names(data)[3] <- "RADIUS" + }else { + data <- data.frame(data[,1:2],RADIUS=size_factor,data[,3:ncol(data)]) + } + field_names <- names(data)[-c(1:3)] + names(data) <- c("id",paste0(key,"$",c("POSITION", "RADIUS",field_names))) + data <- convert_range_to_node(data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], data) + field_length <- length(field_names) + field$labels <- field_names + if(is.null(color)){ + message("Using default color pattern: table2itol") + color = "table2itol" + } + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + field$colors <- get_color(field_length,set = color) + }else{ + field$colors <- get_color(field_length) + } + profile$name <- key + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) + } + if(type == "DATASET_ALIGNMENT"){ + if(!is.data.frame(data)){ + if(file.exists(data)){ + fasta_file <- Biostrings::readBStringSet(data) + NODE_ID <- names(fasta_file) + SEQUENCE <- paste(fasta_file) + df_data <- data.frame(NODE_ID, SEQUENCE) + df_data$NODE_ID <- as.character(df_data$NODE_ID) + names(df_data) <- c("id",paste0(key,c("$SEQUENCE"))) + } + stop("The input data class should be a data frame or a alignment file") + }else { + if(length(names(data)) > 2){ + message("The input data should be 2 column: id, seq") + } + df_data <- data[,1:2] + df_data[,1] <- as.character(df_data[,1]) + names(df_data) <- c("id",paste0(key,c("$SEQUENCE"))) + } + df_data <- convert_range_to_node(df_data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], df_data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], df_data) + profile$name <- key + specific_themes$alignment$reference$ids <- 0 + specific_themes$alignment$reference$use <- 0 + specific_themes$alignment$reference$box_border_width <- 0 + specific_themes$alignment$reference$box_border_color <- "" + specific_themes$alignment$reference$box_fill_color <- "" + specific_themes$alignment$highlight$type <- "" + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) + } if(type=="DATASET_CONNECTION"){ if(!is.data.frame(data)){ stop("The input data class should be a data frame") @@ -1394,8 +1541,8 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li color = "table2itol" } if(length(color) == 1){ - if(color %in% c("table2itol","RColorBrewer", "ggsci")){ - color_levels = get_color(length(unique(data[[colname_data]]))) + if(stringr::str_remove(color,"_.*$") %in% get_color(set="ls")){ + color_levels = get_color(length(unique(data[[colname_data]])),set = color) color = as.factor(data[[colname_data]]) levels(color) <- color_levels }else { @@ -1423,8 +1570,137 @@ create_unit <- function(data,key,type,style="default",subtype=NULL,color=NULL,li sep = "\t" unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } - if(type =="DATASET_IMAGE"){ - + if(type =="DATASET_IMAGE"){#ID,position,size_factor,rotation,horizontal_shift,vertical_shift,image_url + horizontal_shift = NULL + vertical_shift = NULL + if(!is.data.frame(data)){ + stop("The input data class should be a data frame") + } + if(names(data)[1] != "id"){ + message(paste0("Using the first column as id: ",names(data)[1])) + names(data)[1] <- "id" + } + if(length(names(data)) > 7 ){ + stop("The input data should has 2-7 columns: id, position(optional), size factor(optional), rotation(optional), horizontal shift(optional), vertical shift(optional), image url") + } + colname_position = "" + if(is.null(position)){ + potential_positions <- names(data)[-1] + for (potential_position in potential_positions) { + if(stringr::str_remove_all(paste0(data[[potential_position]],collapse = ""),"[\\d\\.-]") == "" && stringr::str_count(paste0(data[[potential_position]],collapse = ""),"\\.") <= 1){ + potential_values <- as.numeric(data[[potential_position]]) + if(all((potential_values >= -1) & (potential_values <= 1))){ + message(paste0("Using following column as position parameter: ", potential_position)) + position = data[[potential_position]] + colname_position = potential_position + break + } + } + } + } + colname_image_size = "" + if(is.null(size_factor)){ + potential_image_sizes <- names(data)[!names(data)%in%c("id", colname_position)] + for (potential_image_size in potential_image_sizes) { + if(stringr::str_remove_all(paste0(data[[potential_image_size]],collapse = ""),"[\\d\\.-]") == "" && stringr::str_count(paste0(data[[potential_image_size]],collapse = ""),"\\.") <= 1){ + message(paste0("Using following column as image size parameter: ", potential_image_size)) + size_factor = data[[potential_image_size]] + colname_image_size = potential_image_size + break + } + } + } + colname_rotation = "" + if(is.null(rotation)){ + potential_rotations <- names(data)[!names(data)%in%c("id", colname_position, colname_image_size)] + for (potential_rotation in potential_rotations) { + if(stringr::str_remove_all(paste0(data[[potential_rotation]],collapse = ""),"[\\d\\.-]") == "" && stringr::str_count(paste0(data[[potential_rotation]],collapse = ""),"\\.") <= 1){ + message(paste0("Using following column as rotation parameter: ", potential_rotation)) + rotation = data[[potential_rotation]] + colname_rotation = potential_rotation + break + } + } + } + colname_horizontal_shift = "" + if(is.null(horizontal_shift)){ + potential_horizontal_shifts <- names(data)[!names(data)%in%c("id", colname_position, colname_image_size, colname_rotation)] + for (potential_horizontal_shift in potential_horizontal_shifts) { + if(stringr::str_remove_all(paste0(data[[potential_horizontal_shift]],collapse = ""),"[\\d\\.-]") == "" && stringr::str_count(paste0(data[[potential_horizontal_shift]],collapse = ""),"\\.") <= 1){ + message(paste0("Using following column as horizontal_shift parameter: ", potential_horizontal_shift)) + horizontal_shift = data[[potential_horizontal_shift]] + colname_horizontal_shift = potential_horizontal_shift + break + } + } + } + colname_vertical_shift = "" + if(is.null(vertical_shift)){ + potential_vertical_shifts <- names(data)[!names(data)%in%c("id", colname_position, colname_image_size, colname_rotation, colname_horizontal_shift)] + for (potential_vertical_shift in potential_vertical_shifts) { + if(stringr::str_remove_all(paste0(data[[potential_vertical_shift]],collapse = ""),"[\\d\\.-]") == "" && stringr::str_count(paste0(data[[potential_vertical_shift]],collapse = ""),"\\.") <= 1){ + message(paste0("Using following column as vertical_shift parameter: ", potential_vertical_shift)) + vertical_shift = data[[potential_vertical_shift]] + colname_vertical_shift = potential_vertical_shift + break + } + } + } + colname_image_url <- names(data)[!names(data)%in%c("id", colname_position, colname_image_size, colname_rotation, colname_horizontal_shift, colname_vertical_shift)] + if(is.null(position)){ + message("The position parameter is empty. Using 0 as position.") + position = 0 + } + if (is.null(size_factor)) { + message("The image size parameter is empty. Using 1 as image size.") + size_factor = 1 + } + if(is.null(rotation)){ + message("The rotation parameter is empty. Using 0 as rotation.") + rotation = 0 + } + if (is.null(horizontal_shift)) { + message("The horizontal_shift parameter is empty. Using 0.") + horizontal_shift = "0" + } + if (is.null(vertical_shift)) { + message("The vertical_shift parameter is empty. Using 0.") + vertical_shift = "0" + } + df_data <- data.frame(id = data[["id"]], position = position, size_factor = size_factor, rotation = rotation, horizontal_shift = horizontal_shift, vertical_shift = vertical_shift, image_url = data[[colname_image_url]]) + names(df_data) <- c("id",paste0(key,"$",c("POSITION", "SIZE_FACTOR", "ROTATION", "HORIZONTAL_SHIFT", "VERTICAL_SHIFT", "IMAGE_URL"))) + df_data <- convert_range_to_node(df_data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], df_data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], df_data) + profile$name <- key + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) + } + if(type=="POPUP_INFO"){#NODE_ID,POPUP_TITLE,POPUP_CONTENT + if(!is.data.frame(data)){ + stop("The input data class should be a data frame") + } + if(names(data)[1] != "id"){ + message(paste0("Using the 1st column as id: ",names(data)[1])) + names(data)[1] <- "id" + } + if(length(names(data)) != 3 ){ + stop("The input data should has 3 columns: id, title, content") + } + if(names(data)[2] != "title"){ + message(paste0("Using the 2nd column as title: ",names(data)[2])) + names(data)[2] <- "title" + } + if(names(data)[3] != "content"){ + message(paste0("Using the 3rd column as content: ",names(data)[3])) + names(data)[3] <- "content" + } + df_data <- data.frame(id = data[["id"]], title = data[["title"]], content = data[["content"]]) + names(df_data) <- c("id",paste0(key,"$",c("POPUP_TITLE", "POPUP_CONTENT"))) + df_data <- convert_range_to_node(df_data, tree) + data_left[["node"]] <- df_merge(data_left[["node"]], df_data) + data_left[["tip"]] <- df_merge(data_left[["tip"]], df_data) + profile$name <- key + unit <- new("itol.unit", type = type, sep = sep, profile = profile, field = field, common_themes = common_themes, specific_themes = specific_themes, data = data_left) } return(unit) } diff --git a/R/utils.R b/R/utils.R index 5944d9e..eaf9fa2 100644 --- a/R/utils.R +++ b/R/utils.R @@ -71,10 +71,13 @@ correct_get_color <- function(str) { #' @return a vector of colors #' @importFrom wesanderson wes_palettes #' @importFrom stats runif +#' @import ggsci +#' @import RColorBrewer #' @export -get_color <- function(n,set="table2itol") { +get_color <- function(n=0,set="table2itol") { # Colour vectors collected by Jan P. Meier-Kolthoff. # + COLOURS <- list( # Dark2; colour-blind-safe JMK01 = "#1b9e77", @@ -328,6 +331,10 @@ get_color <- function(n,set="table2itol") { "#ceb8d4", "#635b2d", "#c79783", "#733426", "#476682", "#98762e" ) ) + if(set == "table2itol"){ + return(COLOURS[[n]]) + } + set_names <- c("table2itol") if(set == "wesanderson"){ COLOURS <- list() colors_vector <- unique(unlist(wesanderson::wes_palettes)) @@ -344,11 +351,56 @@ get_color <- function(n,set="table2itol") { "#35274A", "#550307"))] for (i in 1:length(colors_vector)) { - indexs <- round(runif(n,1,length(colors_vector))) + indexs <- sample(1:length(colors_vector),n,replace=F) COLOURS[[i]] <- colors_vector[indexs] } + return(COLOURS[[n]]) + } + set_names <- c(set_names,"wesanderson") + set_main <- stringr::str_remove(set, "_.*$") + ggsci_db<-utils::getFromNamespace("ggsci_db", "ggsci") + if(set_main %in% names(ggsci_db)){ + if(grepl("_",set)){ + set_type <- unlist(strsplit(set,"_")) + colors <- ggsci_db[[set_type[1]]][[set_type[2]]] + }else{ + colors <- ggsci_db[[set]][[1]] + } + if(n > length(colors)){ + warning("The pattern length is shorter than n. Appending default colors to + make the pattern length same with n.") + colors <- c(colors,COLOURS[[n-length(colors)]]) + } + if(n < length(colors)){ + warning("The pattern length is longer than n. The length is cutting as + same as n.") + colors <- colors[1:n] + } + return(colors) + } + set_names <- c(set_names,names(ggsci_db)) + if(set %in% rownames(RColorBrewer::brewer.pal.info)){ + n_max <- RColorBrewer::brewer.pal.info[set,]$maxcolors + if(n > n_max){ + warning("The pattern length is shorter than n. Appending default colors to + make the pattern length same with n.") + colors <- RColorBrewer::brewer.pal(n=n_max,name = set) + colors <- c(colors,COLOURS[[n-n_max]]) + } + if(n < n_max){ + warning("The pattern length is longer than n. The length is cutting as + same as n.") + colors <- RColorBrewer::brewer.pal(n=n,name = set) + } + if(n == n_max){ + colors <- RColorBrewer::brewer.pal(n=n,name = set) + } + return(colors) + } + set_names <- c(set_names,rownames(RColorBrewer::brewer.pal.info)) + if(set == "ls"){ + return(set_names) } - return(COLOURS[[n]]) } #' Paste rows diff --git a/docs/404.html b/docs/404.html index 25d4f4a..bad40d4 100644 --- a/docs/404.html +++ b/docs/404.html @@ -32,7 +32,7 @@
diff --git a/docs/CODE_OF_CONDUCT.html b/docs/CODE_OF_CONDUCT.html index 5afa91f..1df5564 100644 --- a/docs/CODE_OF_CONDUCT.html +++ b/docs/CODE_OF_CONDUCT.html @@ -17,7 +17,7 @@ diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index aa00016..d13ab44 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -17,7 +17,7 @@ diff --git a/docs/LICENSE.html b/docs/LICENSE.html index 3617178..37b331a 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -17,7 +17,7 @@ diff --git a/docs/articles/Get_Start.html b/docs/articles/Get_Start.html index b8557a9..b58f3e0 100644 --- a/docs/articles/Get_Start.html +++ b/docs/articles/Get_Start.html @@ -33,7 +33,7 @@ diff --git a/docs/articles/index.html b/docs/articles/index.html index 35529e7..cee6fce 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -17,7 +17,7 @@ diff --git a/docs/authors.html b/docs/authors.html index b404e9e..0959e37 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,7 +17,7 @@ @@ -64,13 +64,13 @@Zhou T (2023). itol.toolkit: Helper Functions for 'Interactive Tree Of Life'. -R package version 1.0.5. +R package version 1.1.0.
@Manual{, title = {itol.toolkit: Helper Functions for 'Interactive Tree Of Life'}, author = {Tong Zhou}, year = {2023}, - note = {R package version 1.0.5}, + note = {R package version 1.1.0}, }diff --git a/docs/index.html b/docs/index.html index 7ff5aff..17c1adf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -36,7 +36,7 @@ diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 95b01a1..5b90b15 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -3,5 +3,5 @@ pkgdown: 2.0.7 pkgdown_sha: ~ articles: Get_Start: Get_Start.html -last_built: 2023-02-05T05:28Z +last_built: 2023-02-12T12:15Z diff --git a/docs/reference/complex_html_text.html b/docs/reference/complex_html_text.html index a60d0d2..0776e28 100644 --- a/docs/reference/complex_html_text.html +++ b/docs/reference/complex_html_text.html @@ -18,7 +18,7 @@ diff --git a/docs/reference/convert_01.html b/docs/reference/convert_01.html index b5c1865..007fb7b 100644 --- a/docs/reference/convert_01.html +++ b/docs/reference/convert_01.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/convert_01_to_connect.html b/docs/reference/convert_01_to_connect.html index 89c6aef..cf85810 100644 --- a/docs/reference/convert_01_to_connect.html +++ b/docs/reference/convert_01_to_connect.html @@ -18,7 +18,7 @@ diff --git a/docs/reference/convert_range_to_node.html b/docs/reference/convert_range_to_node.html index 6d6e68a..4785a45 100644 --- a/docs/reference/convert_range_to_node.html +++ b/docs/reference/convert_range_to_node.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/correct_get_color.html b/docs/reference/correct_get_color.html index a418708..53511a6 100644 --- a/docs/reference/correct_get_color.html +++ b/docs/reference/correct_get_color.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/count_to_tree.html b/docs/reference/count_to_tree.html index e4a2f40..d7224ad 100644 --- a/docs/reference/count_to_tree.html +++ b/docs/reference/count_to_tree.html @@ -21,7 +21,7 @@ diff --git a/docs/reference/create_hub.html b/docs/reference/create_hub.html index 9e2d50c..80f46a4 100644 --- a/docs/reference/create_hub.html +++ b/docs/reference/create_hub.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/create_theme.html b/docs/reference/create_theme.html index 68bf441..e20dd52 100644 --- a/docs/reference/create_theme.html +++ b/docs/reference/create_theme.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/create_unit.html b/docs/reference/create_unit.html index b707402..5076cdd 100644 --- a/docs/reference/create_unit.html +++ b/docs/reference/create_unit.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/df_merge.html b/docs/reference/df_merge.html index fd5619a..a533717 100644 --- a/docs/reference/df_merge.html +++ b/docs/reference/df_merge.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/fa_read.html b/docs/reference/fa_read.html index 3c9cd44..734eb0f 100644 --- a/docs/reference/fa_read.html +++ b/docs/reference/fa_read.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/fa_write.html b/docs/reference/fa_write.html index 487bdfd..c818e9d 100644 --- a/docs/reference/fa_write.html +++ b/docs/reference/fa_write.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/file_get_dir.html b/docs/reference/file_get_dir.html index c003686..c72c030 100644 --- a/docs/reference/file_get_dir.html +++ b/docs/reference/file_get_dir.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/file_get_name.html b/docs/reference/file_get_name.html index 9ac79be..5bb77d3 100644 --- a/docs/reference/file_get_name.html +++ b/docs/reference/file_get_name.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/file_to_unit.html b/docs/reference/file_to_unit.html index 0c92dba..991da11 100644 --- a/docs/reference/file_to_unit.html +++ b/docs/reference/file_to_unit.html @@ -17,7 +17,7 @@ diff --git a/docs/reference/get_color.html b/docs/reference/get_color.html index 5145464..fadc5d0 100644 --- a/docs/reference/get_color.html +++ b/docs/reference/get_color.html @@ -17,7 +17,7 @@ @@ -54,7 +54,7 @@
get_color(n, set = "table2itol")
get_color(n = 0, set = "table2itol")