From ca1586284c0c6a15510daf2030305e46159445b7 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Fri, 16 Nov 2018 18:02:31 +0900 Subject: [PATCH 01/18] siplify: @importFrom in less lines In additions, - calls of `::` are decreased - one-liner long descriptions are separated into lines --- R/cluster.R | 6 ++---- R/find_AB.R | 8 ++------ R/find_AG.R | 13 +++---------- R/find_B.R | 12 +++--------- R/find_XAG.R | 3 +-- R/find_centers.R | 15 ++++----------- R/find_centers_kpp.R | 4 ++-- R/mean.R | 6 ++---- R/plot.R | 9 ++------- R/plot_shiny.R | 28 ++++++++-------------------- R/plotly.R | 10 ++-------- R/qntmap.R | 3 +-- R/quantify.R | 5 +---- R/read_cnd.R | 3 +-- R/read_qnt.R | 8 ++------ R/read_xmap.R | 1 - R/save.R | 4 +--- R/tidy_epma.R | 15 +++------------ R/zzz.R | 6 ++---- 19 files changed, 42 insertions(+), 117 deletions(-) diff --git a/R/cluster.R b/R/cluster.R index 826a88f..f21b8bf 100644 --- a/R/cluster.R +++ b/R/cluster.R @@ -30,11 +30,9 @@ cluster <- function(x, centers, xte = NULL, ...) { #' @param saving `TRUE` or `FALSE` to save result. #' @param group_cluster `TRUE` (default) or `FALSE` to integrate same phase subgrouped using suffix. For example, when there are clusters named as Pl_NaRich and Pl_NaPoor, they are grouped as Pl. #' -#' @importFrom dplyr group_by -#' @importFrom dplyr ungroup +#' @importFrom dplyr group_by ungroup #' @importFrom pipeR pipeline -#' @importFrom tidyr gather -#' @importFrom tidyr spread +#' @importFrom tidyr gather spread #' @importFrom matrixStats rowMaxs #' #' @export diff --git a/R/find_AB.R b/R/find_AB.R index fe7ae61..822c7ce 100644 --- a/R/find_AB.R +++ b/R/find_AB.R @@ -1,12 +1,8 @@ #' Find AB -#' @importFrom dplyr mutate -#' @importFrom dplyr right_join -#' @importFrom dplyr select +#' @importFrom dplyr mutate right_join select #' @importFrom purrr map #' @importFrom stats setNames -#' @importFrom tidyr nest -#' @importFrom tidyr spread -#' @importFrom tidyr unnest +#' @importFrom tidyr nest spread unnest #' @importFrom tibble tibble #' @param A A #' @param B B diff --git a/R/find_AG.R b/R/find_AG.R index 61b52df..0262f02 100644 --- a/R/find_AG.R +++ b/R/find_AG.R @@ -1,17 +1,10 @@ #' find AG #' @param epma epma data #' @param not_quantified a character vector specifying phases who weren't analyzed during point analysis # JAMSTEC -#' @importFrom dplyr group_by -#' @importFrom dplyr mutate -#' @importFrom dplyr summarise -#' @importFrom dplyr ungroup +#' @importFrom dplyr group_by mutate summarise ungroup #' @importFrom pipeR pipeline -#' @importFrom purrr map_dbl -#' @importFrom purrr map -#' @importFrom stats sd -#' @importFrom stats lm -#' @importFrom stats coef -#' @importFrom stats vcov +#' @importFrom purrr map_dbl map +#' @importFrom stats sd lm coef vcov #' @noRd find_AG <- function( epma, diff --git a/R/find_B.R b/R/find_B.R index e1ad4d2..05cdeff 100644 --- a/R/find_B.R +++ b/R/find_B.R @@ -1,17 +1,11 @@ #' find B #' @param epma epma data #' @param fix fix B -#' @importFrom dplyr group_by -#' @importFrom dplyr mutate -#' @importFrom dplyr summarise -#' @importFrom dplyr ungroup +#' @importFrom dplyr group_by mutate summarise ungroup #' @importFrom tidyr nest -#' @importFrom stats lm -#' @importFrom stats na.omit -#' @importFrom stats vcov -#' @importFrom stats coef -#' @importFrom purrr map_dbl +#' @importFrom stats lm na.omit vcov coef #' @importFrom pipeR pipeline +#' @importFrom purrr map_dbl #' @noRd find_B <- function(epma, fix = NULL) {pipeline({ epma[!is.na(epma$stg), ] diff --git a/R/find_XAG.R b/R/find_XAG.R index bedc440..6dd70c7 100644 --- a/R/find_XAG.R +++ b/R/find_XAG.R @@ -3,8 +3,7 @@ #' @param AG AG #' @importFrom dplyr transmute_at #' @importFrom stats setNames -#' @importFrom purrr map -#' @importFrom purrr map_at +#' @importFrom purrr map map_at #' @noRd find_XAG <- function(X, AG) {pipeline({ AG diff --git a/R/find_centers.R b/R/find_centers.R index 1c93dd5..a62221a 100644 --- a/R/find_centers.R +++ b/R/find_centers.R @@ -2,21 +2,14 @@ #' #' @param xmap an `qm_xmap` class object generated by `read_xmap()`` #' @param qnt an `qm_qnt` class object generated by `read_qnt()`` -#' @param fine_phase A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp') +#' @param fine_phase A character vector to specify fine grained phases +#' which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp') #' @param saveas File name to save result. FALSE if not saving. #' #' @importFrom data.table fwrite -#' @importFrom dplyr bind_cols -#' @importFrom dplyr bind_rows -#' @importFrom dplyr filter -#' @importFrom dplyr group_by -#' @importFrom dplyr mutate -#' @importFrom dplyr summarise -#' @importFrom dplyr ungroup +#' @importFrom dplyr bind_cols bind_rows filter group_by mutate summarise ungroup #' @importFrom pipeR pipeline -#' @importFrom stats lsfit -#' @importFrom stats qnbinom -#' @importFrom stats median +#' @importFrom stats lsfit qnbinom median #' @importFrom tidyr spread #' #' @export diff --git a/R/find_centers_kpp.R b/R/find_centers_kpp.R index 8002020..ff26b70 100644 --- a/R/find_centers_kpp.R +++ b/R/find_centers_kpp.R @@ -1,10 +1,10 @@ #' Generate initial centroids for clustering randomly #' -#' @param x An object which can be coerced to `matrix`, typically `matrix` itself or `data.frame`. +#' @param x An object which can be coerced to `matrix`, +#' typically `matrix` itself or `data.frame`. #' @param k A number of clusters. #' @param given Given centers. Not yet implemented. #' -#' @importFrom data.table fwrite find_centers_kpp <- function(x, k, given = NULL) { # check parameters if(!is.null(given) && nrow(x) < k) stop('Number of given centroids must be smaller than k') diff --git a/R/mean.R b/R/mean.R index ae7e2b5..523c373 100644 --- a/R/mean.R +++ b/R/mean.R @@ -46,11 +46,9 @@ NULL #' ## In such a case, mean of A is around 50 fo 'L' and 30 for 'R' #' mean(qm, index = rep(c('L', 'R'), each = 100)) #' -#' @importFrom dplyr group_by -#' @importFrom dplyr summarize +#' @importFrom dplyr group_by summarize #' @importFrom pipeR pipeline -#' @importFrom tidyr gather -#' @importFrom tidyr spread +#' @importFrom tidyr gather spread #' #' @export mean.qntmap <- function(x, index = 'Whole area', ...) { diff --git a/R/plot.R b/R/plot.R index f6f60cc..53fc108 100644 --- a/R/plot.R +++ b/R/plot.R @@ -35,13 +35,8 @@ NULL #' plot(d, 'fill') #' #' @importFrom stats setNames -#' @importFrom ggplot2 aes -#' @importFrom ggplot2 ggplot -#' @importFrom ggplot2 geom_raster -#' @importFrom ggplot2 coord_fixed -#' @importFrom ggplot2 ggtitle -#' @importFrom ggplot2 scale_y_reverse -#' @importFrom ggplot2 scale_fill_viridis_c +#' @importFrom ggplot2 aes ggplot geom_raster coord_fixed ggtitle +#' @importFrom ggplot2 scale_y_reverse scale_fill_viridis_c #' @importFrom plotly ggplotly plot.qm_raster <- function( x, y = setdiff(names(x), c('x', 'y'))[1], legend_fill = y, interactive = TRUE, ..., shiny = FALSE diff --git a/R/plot_shiny.R b/R/plot_shiny.R index d82e702..c7f3cdc 100644 --- a/R/plot_shiny.R +++ b/R/plot_shiny.R @@ -5,13 +5,9 @@ #' @inheritParams plot.qm_raster #' #' @import shiny -#' @importFrom plotly renderPlotly -#' @importFrom plotly plotlyOutput -#' @importFrom plotly event_data +#' @importFrom plotly renderPlotly plotlyOutput event_data #' @importFrom graphics hist -#' @importFrom ggplot2 ggplot -#' @importFrom ggplot2 aes -#' @importFrom ggplot2 aes_string +#' @importFrom ggplot2 ggplot aes aes_string #' @importFrom dplyr mutate_at #' @importFrom scales squish #' @importFrom stringr str_replace @@ -81,7 +77,7 @@ plot_shiny <- function(x, y = setdiff(names(x), c('x', 'y'))[1], interactive = T title = input$fill, height = input$height )) }) - output$plotly <- plotly::renderPlotly(shiny_heatmap()) + output$plotly <- renderPlotly(shiny_heatmap()) output$click <- renderPrint({ d <- event_data("plotly_click") @@ -103,12 +99,9 @@ plot_shiny <- function(x, y = setdiff(names(x), c('x', 'y'))[1], interactive = T } #' Layers for plotting mapping data -#' @importFrom ggplot2 geom_raster -#' @importFrom ggplot2 coord_fixed -#' @importFrom ggplot2 scale_fill_gradientn -#' @importFrom ggplot2 scale_fill_viridis_c -#' @importFrom ggplot2 theme_classic -#' @importFrom ggplot2 theme +#' @importFrom ggplot2 geom_raster coord_fixed +#' @importFrom ggplot2 scale_fill_gradientn scale_fill_viridis_c +#' @importFrom ggplot2 theme theme_classic #' @noRd layers_raster <- list( ggplot2::geom_raster(), @@ -120,10 +113,7 @@ layers_raster <- list( ) #' Layers for plotting mapping histograms -#' @importFrom ggplot2 theme_classic -#' @importFrom ggplot2 theme -#' @importFrom ggplot2 element_blank -#' @importFrom ggplot2 element_rect +#' @importFrom ggplot2 element_blank element_rect theme theme_classic #' @noRd layers_hist <- list( ggplot2::scale_fill_viridis_c(), @@ -138,9 +128,7 @@ layers_hist <- list( #' Draw a histgram for numeric vector based on Scott's choice #' @importFrom graphics hist -#' @importFrom ggplot2 ggplot -#' @importFrom ggplot2 aes -#' @importFrom ggplot2 geom_col +#' @importFrom ggplot2 aes geom_col ggplot #' @noRd gghist <- function(x, .min = NA, .max = NA) { if(!is.finite(.min)) .min <- min(x) diff --git a/R/plotly.R b/R/plotly.R index 130690b..b28f74e 100644 --- a/R/plotly.R +++ b/R/plotly.R @@ -1,6 +1,5 @@ #' heatmap using plotly -#' @importFrom plotly layout -#' @importFrom plotly plot_ly +#' @importFrom plotly layout plot_ly #' @noRd plotly_heatmap <- function(x, y, z, title = '', ...) { layout( @@ -28,12 +27,7 @@ yaxis <- c( autorange = 'reversed' ) -#' @importFrom scales gradient_n_pal -# scales::gradient_n_pal - -#' @importFrom scales viridis_pal -# scales::viridis_pal - +#' @importFrom scales gradient_n_pal viridis_pal #' @noRd viridis <- getExportedValue('scales', 'gradient_n_pal')( getExportedValue('scales', 'viridis_pal')( diff --git a/R/qntmap.R b/R/qntmap.R index a0fa2b6..5d655de 100644 --- a/R/qntmap.R +++ b/R/qntmap.R @@ -1,8 +1,7 @@ #' interactively quantify X-ray maps #' #' @importFrom easycsv choose_dir -#' @importFrom utils select.list -#' @importFrom utils menu +#' @importFrom utils menu select.list #' @export qntmap <- function() { diff --git a/R/quantify.R b/R/quantify.R index 6fb22ee..7c955d7 100644 --- a/R/quantify.R +++ b/R/quantify.R @@ -12,10 +12,7 @@ #' #' @importFrom data.table fwrite #' @importFrom pipeR pipeline -#' @importFrom purrr map -#' @importFrom purrr map_at -#' @importFrom purrr map2 -#' @importFrom purrr walk2 +#' @importFrom purrr map map_at map2 walk2 #' @importFrom stats setNames #' @importFrom stringr str_replace #' diff --git a/R/read_cnd.R b/R/read_cnd.R index e2abd86..aadee2c 100644 --- a/R/read_cnd.R +++ b/R/read_cnd.R @@ -7,8 +7,7 @@ read_cnd <- function(x, pattern = NULL, ...) UseMethod("read_cnd") #' @rdname read_cnd -#' @importFrom stringr str_detect -#' @importFrom stringr str_subset +#' @importFrom stringr str_detect str_subset #' @section .default: #' A default method which returns a result of `readLines(x)` #' with additional class according to the content of the file. diff --git a/R/read_qnt.R b/R/read_qnt.R index ddaba7d..e977fef 100644 --- a/R/read_qnt.R +++ b/R/read_qnt.R @@ -5,13 +5,9 @@ #' @param renew if TRUE and the file specified by RDS exists, that file will be loaded #' @param saving whether or not to save the data as RDS file #' -#' @importFrom dplyr select -#' @importFrom dplyr one_of -#' @importFrom dplyr mutate +#' @importFrom dplyr select one_of mutate #' @importFrom pipeR %>>% -#' @importFrom stringr str_replace_all -#' @importFrom stringr str_replace -#' @importFrom stringr str_detect +#' @importFrom stringr str_replace_all str_replace str_detect #' @importFrom data.table fwrite #' #' @export diff --git a/R/read_xmap.R b/R/read_xmap.R index 9994683..87ed193 100644 --- a/R/read_xmap.R +++ b/R/read_xmap.R @@ -9,7 +9,6 @@ #' @importFrom pipeR pipeline #' @importFrom purrr map_at #' @importFrom stringr str_replace -#' @importFrom data.table fread #' @importFrom stats setNames #' @export #' diff --git a/R/save.R b/R/save.R index 6142d94..e711d64 100644 --- a/R/save.R +++ b/R/save.R @@ -38,9 +38,7 @@ save4qm.data.frame <- function(x, nm, saving, ...) { #' Object is saved as RDS file and png file. #' The latter shows distribution of phases among a mapped area. #' @importFrom png writePNG -#' @importFrom grDevices dev.copy -#' @importFrom grDevices dev.off -#' @importFrom grDevices png +#' @importFrom grDevices dev.copy dev.off png #' @importFrom graphics pie save4qm.qm_cluster <- function(x, nm, saving, ...) { #setting for output diff --git a/R/tidy_epma.R b/R/tidy_epma.R index 2becd98..ca5d923 100644 --- a/R/tidy_epma.R +++ b/R/tidy_epma.R @@ -4,21 +4,12 @@ #' @param xmap object returned by read_xmap #' @param cluster object returned by cluster_xmap #' -#' @importFrom dplyr distinct -#' @importFrom dplyr left_join -#' @importFrom dplyr mutate -#' @importFrom dplyr mutate_at -#' @importFrom dplyr rename -#' @importFrom dplyr transmute +#' @importFrom dplyr distinct left_join mutate mutate_at rename transmute #' @importFrom matrixStats rowMaxs #' @importFrom pipeR %>>% -#' @importFrom purrr map2 -#' @importFrom purrr map_int +#' @importFrom purrr map2 map_int #' @importFrom stats setNames -#' @importFrom stringr str_c -#' @importFrom stringr str_replace_all -#' @importFrom stringr str_replace -#' @importFrom stringr str_detect +#' @importFrom stringr str_c str_replace_all str_replace str_detect #' #' @export #' diff --git a/R/zzz.R b/R/zzz.R index 2ad9c8f..fece157 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -9,10 +9,8 @@ #' #' @importFrom dplyr bind_cols #' @importFrom pipeR pipeline -#' @importFrom purrr map -#' @importFrom purrr map2 -#' @importFrom stats qgamma -#' @importFrom stats setNames +#' @importFrom purrr map map2 +#' @importFrom stats qgamma setNames #' @noRd cipois <- function(x, vars = names(x), offset = 1L, conf.level = 0.95) { low <- (1L - conf.level) / 2L From 86bb0fbfb2087341021bf9f3a9331b7d1312760c Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 18:13:53 +0900 Subject: [PATCH 02/18] Update docs - Make links on contents as much as possible - Roxygen2 comments in one lines - Simplify documents --- R/add_centers.R | 3 +-- R/cluster.R | 30 ++++++++++++++++++++---------- R/find_AB.R | 13 ++++++------- R/find_AG.R | 6 ++++-- R/find_B.R | 2 +- R/find_centers.R | 8 ++++---- R/find_centers_kpp.R | 4 ++-- R/group_cluster.R | 2 +- R/mean.R | 9 +++------ R/plot.R | 8 ++++---- R/plotly.R | 6 ++---- R/print.R | 2 +- R/qntmap.R | 16 +++++++--------- R/quantify.R | 18 ++++++++++-------- R/read_cnd.R | 13 +++++++++---- R/read_qnt_elemw.R | 3 ++- R/save.R | 3 ++- R/segment.R | 4 ++-- R/wrappers.R | 6 +++--- 19 files changed, 84 insertions(+), 72 deletions(-) diff --git a/R/add_centers.R b/R/add_centers.R index 34e4584..cf25a88 100644 --- a/R/add_centers.R +++ b/R/add_centers.R @@ -3,8 +3,7 @@ #' #' Add centroids manually by picking X-ray counts of selected pixels in X-ray maps. #' -#' @seealso [pick()] -#' @seealso [find_centers()] +#' @seealso [pick()], [find_centers()] #' #' @examples #' centers <- data.frame( diff --git a/R/cluster.R b/R/cluster.R index f21b8bf..e23026b 100644 --- a/R/cluster.R +++ b/R/cluster.R @@ -1,11 +1,15 @@ -#' Poisson distribution based custering based on `PoiClaClu:Classify()` +#' Poisson distribution based custering based on [`PoiClaClu:Classify()`] #' -#' @param centers c-by-p matrix returned by `find_centers()` or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically `data.frame` or `matrix`, indicating initial guess centers (or centroids) or clusters. See `find_centers()`. +#' @param centers c-by-p matrix returned by [`find_centers()`] or by manually; +#' c clusters and p features. +#' Used to guess initial centers (or centroids) of clusters. +#' A value returned by , typically [`data.frame`] or [`matrix`], +#' indicating initial guess centers (or centroids) or clusters. +#' See [`find_centers()`]. #' @inheritParams PoiClaClu::Classify #' @inheritDotParams PoiClaClu::Classify -x -y -xte -#' @inherit PoiClaClu::Classify return -#' @inherit PoiClaClu::Classify references -#' @seealso \link[PoiClaClu]{Classify} +#' @inherit PoiClaClu::Classify return references +#' @seealso [PoiClaClu::Classify()], [find_centers()] #' #' @importFrom PoiClaClu Classify #' @export @@ -25,10 +29,15 @@ cluster <- function(x, centers, xte = NULL, ...) { #' Cluster mapping data into mineral species #' #' @inheritParams cluster -#' @param xmap a `qm_xmap` class object returned by `read_xmap` -#' @param elements A character vector indicating which elements to be utilized in cluster analysis. `NULL`, in default, selects as much elements as possible are utilized in cluster analysis. +#' @param xmap a `qm_xmap` class object returned by [`read_xmap()`] +#' @param elements +#' A character vector to chose elements to be utilized in cluster analysis. +#' `NULL` (default) selects as much elements as possible. #' @param saving `TRUE` or `FALSE` to save result. -#' @param group_cluster `TRUE` (default) or `FALSE` to integrate same phase subgrouped using suffix. For example, when there are clusters named as Pl_NaRich and Pl_NaPoor, they are grouped as Pl. +#' @param group_cluster +#' `FALSE` (default) or `TRUE` to integrate same phase subgrouped using suffix. +#' For example, +#' clusters named "Pl_NaRich" and "Pl_NaPoor" are integrated to "Pl" cluster . #' #' @importFrom dplyr group_by ungroup #' @importFrom pipeR pipeline @@ -120,9 +129,10 @@ cluster_xmap <- function( -#' (Deprecated) Use `cluster_xmap()` +#' (DEPRECATED) Use `cluster_xmap()` #' -#' @param centers_initial Equivalent to `centers_initial` parameter of `cluster_xmap` +#' @param centers_initial +#' Equivalent to `centers_initial` parameter of `cluster_xmap` #' @param qltmap Equivalent to `xmap` parameter of `cluster_xmap` #' @param wd Path to the working directory. #' @param integration Equivalent to `group_cluster` parameter of `cluster_xmap` diff --git a/R/find_AB.R b/R/find_AB.R index 822c7ce..0976698 100644 --- a/R/find_AB.R +++ b/R/find_AB.R @@ -56,13 +56,12 @@ find_AB <- function(A, B, stg) {pipeline({ #' fix AB value when composition of certain phases are constant #' @inheritParams find_AB -#' @param AB AB -#' @param fix csv file indicating composition of the phases. NULL returns input AB -#' @param X membership -#' @param fine_th threshold of X -#' @importFrom data.table fread -#' @importFrom purrr map -#' @importFrom purrr map2_dbl +#' @param AB A list of parameters alpha and beta +#' @param fix +#' Csv file indicating composition of the phases. `NULL`` returns input AB. +#' @param X Membership degrees. +#' @param fine_th A threshold of X +#' @importFrom purrr map map2_dbl #' @importFrom matrixStats weightedMedian #' @noRd find_AB_fix <- function(AB, fix = NULL, X, fine_th = .90, xmap) { diff --git a/R/find_AG.R b/R/find_AG.R index 0262f02..0f83533 100644 --- a/R/find_AG.R +++ b/R/find_AG.R @@ -1,6 +1,8 @@ #' find AG -#' @param epma epma data -#' @param not_quantified a character vector specifying phases who weren't analyzed during point analysis # JAMSTEC +#' @param epma A tidy epma data output by [`tidy_epma()`] +#' @param not_quantified +#' A character vector specifying phases who weren't analyzed +#' during point analysis # JAMSTEC #' @importFrom dplyr group_by mutate summarise ungroup #' @importFrom pipeR pipeline #' @importFrom purrr map_dbl map diff --git a/R/find_B.R b/R/find_B.R index 05cdeff..7c476a4 100644 --- a/R/find_B.R +++ b/R/find_B.R @@ -1,5 +1,5 @@ #' find B -#' @param epma epma data +#' @param epma A tidy epma data output by [`tidy_epma()`] #' @param fix fix B #' @importFrom dplyr group_by mutate summarise ungroup #' @importFrom tidyr nest diff --git a/R/find_centers.R b/R/find_centers.R index a62221a..e334c02 100644 --- a/R/find_centers.R +++ b/R/find_centers.R @@ -1,7 +1,7 @@ -#' Initialize centroids for `cluster_xmap()` +#' Initialize centroids for [`cluster_xmap()`] #' -#' @param xmap an `qm_xmap` class object generated by `read_xmap()`` -#' @param qnt an `qm_qnt` class object generated by `read_qnt()`` +#' @param xmap an `qm_xmap` class object generated by [`read_xmap()`] +#' @param qnt an `qm_qnt` class object generated by [`read_qnt()`]` #' @param fine_phase A character vector to specify fine grained phases #' which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp') #' @param saveas File name to save result. FALSE if not saving. @@ -99,7 +99,7 @@ find_centers <- function( } -#' (Deprecated) Use find_centers +#' (DEPRECATED) Use find_centers #' @param wd working directory which contains .qnt directory. Use current directory if NULL #' @param dir_map path to the directory which contains mapping data. #' @param phase_fine fine grained phases which tend to be appear in multi-phase pixels e.g., c('Pl', 'Amp') diff --git a/R/find_centers_kpp.R b/R/find_centers_kpp.R index ff26b70..1793f7e 100644 --- a/R/find_centers_kpp.R +++ b/R/find_centers_kpp.R @@ -1,7 +1,7 @@ #' Generate initial centroids for clustering randomly #' -#' @param x An object which can be coerced to `matrix`, -#' typically `matrix` itself or `data.frame`. +#' @param x An object which can be coerced to [`matrix`], +#' typically [`matrix`] itself or [`data.frame`]. #' @param k A number of clusters. #' @param given Given centers. Not yet implemented. #' diff --git a/R/group_cluster.R b/R/group_cluster.R index 35018a0..4462ba3 100644 --- a/R/group_cluster.R +++ b/R/group_cluster.R @@ -3,7 +3,7 @@ #' When data points are assigned to clusters A_1 and A_2, #' their clusters are renamed to be A by matching regular expressions. #' -#' @param x `qm_cluster` class object returned by `qltmap_cls_pois()`. +#' @param x `qm_cluster` class object returned by [`qltmap_cls_pois()`]. #' @param saving `TRUE` or `FALSE` to save result (default: `TRUE`). #' @param suffix A regular expression of suffix (default: `'_.*'`) #' diff --git a/R/mean.R b/R/mean.R index 523c373..633310e 100644 --- a/R/mean.R +++ b/R/mean.R @@ -2,7 +2,7 @@ #' @name mean #' @title Arithmetric mean for `qntmap` package #' @description S3 methods for the arithmetric mean. -#' See [base::mean()] for general use of `plot`. +#' See [base::mean()] for general use of `mean()`. #' #' @param x A `qntmap` class object returned by [quantify()] or [qntmap()]. #' @param index a vector of length `1`` or length equal to number of pixels in map. @@ -10,13 +10,10 @@ #' @param ... Other arguments passed to [base::mean.default()] #' #' @section mean.qntmap: -#' returns a `data.frame` whose first column lists elements in `qntmap` class object. +#' returns a [`data.frame`] whose first column lists elements in `qntmap` class object. #' Second to last columns lists `mean` values of each elements for each index. #' -#' @seealso [base::mean()] -#' @seealso [segment()] -#' @seealso [quantify()] -#' @seealso [qntmap()] +#' @seealso [base::mean()], [segment()], [quantify()], [qntmap()] NULL #' @rdname mean diff --git a/R/plot.R b/R/plot.R index 53fc108..0d33d7e 100644 --- a/R/plot.R +++ b/R/plot.R @@ -5,7 +5,7 @@ #' @title Plot methods for `qntmap` package #' @description #' S3 methods to plot object with original classes in `qntmap` package. -#' See [graphics::plot()] for general use of `plot`. +#' See [`graphics::plot()`] for general use of `plot`. #' Mapping data (`qm_xmap` and `qm_qntmap` classes) are visualized by heat maps. #' #' @param x @@ -17,12 +17,12 @@ #' A string to specify legend name for fill. #' Default value is taken from `y`. #' @param interactive -#' `TRUE` returns `plotly` object (default), and -#' `FALSE` returns `ggplot` object. +#' `TRUE` produces plots with [`plotly::ggplotly()`], and +#' `FALSE` produces plots with [`ggplot2::ggplot()`]. #' @param ... ignored #' @param shiny See plots using Shiny (default: `FALSE`) #' -#' @seealso [graphics::plot()] +#' @seealso [`graphics::plot()`] #' #' @importFrom graphics plot NULL diff --git a/R/plotly.R b/R/plotly.R index b28f74e..7e17577 100644 --- a/R/plotly.R +++ b/R/plotly.R @@ -1,4 +1,4 @@ -#' heatmap using plotly +#' heatmap using [`plotly::plot_ly()`] #' @importFrom plotly layout plot_ly #' @noRd plotly_heatmap <- function(x, y, z, title = '', ...) { @@ -13,14 +13,12 @@ plotly_heatmap <- function(x, y, z, title = '', ...) { ) } -# xaxis for plotly_heatmap +# x- and y-axes for plotly_heatmap xaxis <- list( rangemode = 'tozero', showgrid = FALSE, zeroline = FALSE ) - -# yaxis for plotly_heatmap yaxis <- c( xaxis, scaleanchor = 'x', diff --git a/R/print.R b/R/print.R index 7684393..abefa33 100644 --- a/R/print.R +++ b/R/print.R @@ -1,6 +1,6 @@ #' `print` method for `qntmap` class object #' -#' @param x `qntmap` class object returned by `quantify()` or `qntmap()`. +#' @param x `qntmap` class object returned by [`quantify()`] or [`qntmap()`]. #' @param summarizing `TRUE` or `FALSE` to summarize x (default: `TRUE`. #' @param ... Discarded. #' diff --git a/R/qntmap.R b/R/qntmap.R index 5d655de..e046c8b 100644 --- a/R/qntmap.R +++ b/R/qntmap.R @@ -1,4 +1,4 @@ -#' interactively quantify X-ray maps +#' Interactively quantify X-ray maps #' #' @importFrom easycsv choose_dir #' @importFrom utils menu select.list @@ -8,7 +8,7 @@ qntmap <- function() { cd <- getwd() on.exit(setwd(cd)) - cat('(1) select any file in the directory which contains .map and .qnt directory\n') + cat('(1) Select a directory containing .map and .qnt directories\n') setwd(wd <- choose_dir()) # easycsv::choose_dir if(!all(file.exists(c('.map', '.qnt')))) while(!all(file.exists(c('.map', '.qnt')))) { @@ -18,16 +18,16 @@ qntmap <- function() { ) setwd(wd <- choose_dir()) # easycsv::choose_dir } - cat('working directory is settled to\n', wd, '\n\n') + cat('Working directory is settled to\n', wd, '\n\n') - cat('(2) select directory which contains *_map.txt files to be clustered or quantified\n') + cat('(2) Select directory containing *_map.txt files to be analyzed\n') dir_map <- select.list(list.dirs('.map', recursive = FALSE)) cat('*_map.txt in a following directory will be clustered or quantified\n', dir_map, '\n\n') if(!length(list.files(dir_map, pattern = '_map\\.txt'))) stop( 'Selected directory does not contain *_map.txt files. ', - 'Did you converted mapping data to ASCII files from Utility menu in JEOL EPMA?' + 'Check if results are ASCII converted by and exported from EPMA.' ) cat( @@ -39,7 +39,7 @@ qntmap <- function() { DT <- as.numeric(readline()) cat('Dead time is ', DT, ' nano seconds\n\n') - cat('Identify phase names of quantified points based on') + cat('Identify phases of quantified points based on') selection <- menu( c( 'comments input during quantification', @@ -51,9 +51,7 @@ qntmap <- function() { if(selection == 2) { cat('Choose an external csv file\n') phase_list <- file.choose() - cat('Chosen') - cat(phase_list) - cat('\n\n') + cat('Chosen', phase_list, '\n\n') } cat('Loading mapping data\n') diff --git a/R/quantify.R b/R/quantify.R index 7c955d7..0ac6960 100644 --- a/R/quantify.R +++ b/R/quantify.R @@ -1,13 +1,15 @@ -#' quantify qualtitative mapping data +#' Quantify X-ray maps #' -#' @param xmap `qm_xmap` class object returned by `read_xmap()`. -#' @param qnt `qm_qnt` class object returned by `read_qnt()`. -#' @param cluster `qm_cluster` class object returned by `cluter_xmap()`. -#' @param maps_x A x-axis size of maps comprising guide net map (default: `NULL`). -#' @param maps_y A y-axis size of maps comprising guide net map (default: `NULL`). +#' @param xmap `qm_xmap` class object returned by [`read_xmap()`]. +#' @param qnt `qm_qnt` class object returned by [`read_qnt()`]. +#' @param cluster `qm_cluster` class object returned by [`cluter_xmap()`]. +#' @param maps_x,maps_y +#' Sizes of maps along x- and y-axes comprising guide net map. +#' (default: `NULL`). #' @inheritParams find_centers #' @param fine_th 0.9 -#' @param fixAB fix AB in case compositions of a mineral is constant (default: `NULL`). +#' @param fixAB +#' fix AB in case compositions of a mineral is constant (default: `NULL`). #' @param fixB fix B (default: `NULL`). #' #' @importFrom data.table fwrite @@ -116,7 +118,7 @@ quantify <- function( }) } -#' (Deprecated) Use quantify. +#' (DEPRECATED) Use quantify. #' @param wd working directory which contains .qnt and .map directories #' @param dir_map ignored #' @param RDS_cluster path to the RDS file created by cluster_xmap diff --git a/R/read_cnd.R b/R/read_cnd.R index aadee2c..cdf88ad 100644 --- a/R/read_cnd.R +++ b/R/read_cnd.R @@ -9,7 +9,7 @@ read_cnd <- function(x, pattern = NULL, ...) UseMethod("read_cnd") #' @rdname read_cnd #' @importFrom stringr str_detect str_subset #' @section .default: -#' A default method which returns a result of `readLines(x)` +#' A default method which returns a result of [`readLines()`] #' with additional class according to the content of the file. #' @export read_cnd.default <- function(x, pattern = NULL, ...) { @@ -76,10 +76,15 @@ read_cnd.0_cnd <- function(x, pattern = NULL, n = NULL, ...) { # warn if any pattern did not match any phrase if(any(mismatch <- detection_n == 0)) { warning( - 'Some of the regular expression patterns matched 0 phrases in "', path, '".\n', - 'Such patterns as follows are assumed to be in lines specified by a parameter n.\n', + 'Some of the regular expression patterns matched 0 phrases in "', + path, '".\n', + 'Such patterns as follows are assumed to be in lines specified', + 'by a parameter n.\n', paste( - paste0('"', pattern[mismatch], '"', ' is considered to be in line ', n[mismatch]), + paste0( + '"', pattern[mismatch], '"', + ' is considered to be in line ', n[mismatch] + ), collapse = '\n' ) ) diff --git a/R/read_qnt_elemw.R b/R/read_qnt_elemw.R index 31d5f57..1c68c59 100644 --- a/R/read_qnt_elemw.R +++ b/R/read_qnt_elemw.R @@ -54,7 +54,8 @@ read_qnt_elemw.0_cnd <- function( names(n) <- names(pattern) guessed <- lapply(n, seq, length(x), each) warning( - 'Following variables are not detected by regular expressions, but by guessing which line contains them.\n', + 'Following variables are not detected by regular expressions, ', + 'but by guessing which line contains them.\n', paste0(names(guessed), ': ', lapply(guessed, paste, collapse = ' '), '\n'), 'Check a following file if values are in correct lines\n', normalizePath(attributes(x)[['path']]), diff --git a/R/save.R b/R/save.R index e711d64..5a2c0aa 100644 --- a/R/save.R +++ b/R/save.R @@ -34,7 +34,8 @@ save4qm.data.frame <- function(x, nm, saving, ...) { #' @rdname save4qm #' @section `save4qm.qm_cluster`: -#' A method for `qm_cluster` class returned by `cluster_xmap()` or `cluster_group()`. +#' A method for `qm_cluster` class returned by +#' [`cluster_xmap()`] or [`cluster_group()`]. #' Object is saved as RDS file and png file. #' The latter shows distribution of phases among a mapped area. #' @importFrom png writePNG diff --git a/R/segment.R b/R/segment.R index 1a6a1b2..b16ce30 100644 --- a/R/segment.R +++ b/R/segment.R @@ -1,7 +1,7 @@ #' Segment mapping area #' #' Make index to segment mapping area. -#' The obtained index is further utilized in [mean.qntmap()]. +#' The obtained index is further utilized in [`mean.qntmap()`]. # © 2018 JAMSTEC #' @@ -10,7 +10,7 @@ #' #' @return A character vector indicating pixel colors in RGBA style for input image. #' -#' @seealso [mean.qntmap()] +#' @seealso [`mean.qntmap()`] #' #' @export segment <- function(x, ...) { diff --git a/R/wrappers.R b/R/wrappers.R index 2d2ef7b..fe1cbf6 100644 --- a/R/wrappers.R +++ b/R/wrappers.R @@ -1,17 +1,17 @@ # wrap functions from other packages # change default values for parameters -#' A wrapper of `data.frame` which avoid coercion of `character` to `factor`. +#' A wrapper of [`data.frame()`] which avoid coercion of `character` to `factor`. #' @noRd data.frame <- getExportedValue('base', 'data.frame') formals(data.frame)$stringsAsFactors <- FALSE -#' A wrapper of `as.data.frame` which avoid coercion of `character` to `factor`. +#' A wrapper of [`as.data.frame()`] which avoid coercion of `character` to `factor`. #' @noRd as.data.frame <- getExportedValue('base', 'as.data.frame') formals(as.data.frame) <- append(formals(as.data.frame), list(stringsAsFacotrs=FALSE), 3) -#' A wrapper of `data.table::fread` which returns `data.frame` instead of `data.table`. +#' A wrapper of [`data.table::fread()`] which returns `data.frame` instead of `data.table`. #' @importFrom data.table fread #' @noRd fread <- getExportedValue('data.table', 'fread') From d55f3ec1158a94a461392e7fc505c870be69e379 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 18:26:42 +0900 Subject: [PATCH 03/18] remove @importFrom not in use --- R/plot_shiny.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/plot_shiny.R b/R/plot_shiny.R index c7f3cdc..fa1fc0e 100644 --- a/R/plot_shiny.R +++ b/R/plot_shiny.R @@ -10,7 +10,6 @@ #' @importFrom ggplot2 ggplot aes aes_string #' @importFrom dplyr mutate_at #' @importFrom scales squish -#' @importFrom stringr str_replace #' #' @noRd plot_shiny <- function(x, y = setdiff(names(x), c('x', 'y'))[1], interactive = TRUE) { From 643428662d73e74fda32ef97e2cda902f6aa50c5 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 18:24:49 +0900 Subject: [PATCH 04/18] Abstract L2 norm calculations --- R/find_AB.R | 2 +- R/find_AG.R | 2 +- R/zzz.R | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/R/find_AB.R b/R/find_AB.R index fe7ae61..2426426 100644 --- a/R/find_AB.R +++ b/R/find_AB.R @@ -27,7 +27,7 @@ find_AB <- function(A, B, stg) {pipeline({ .B, mutate, val = b * .A$a, - se = sqrt((b * .A$a_se) ^ 2 + (.A$a * b_se) ^ 2), + se = L2(b * .A$a_se, .A$a * b_se), b = NULL, b_se = NULL ) diff --git a/R/find_AG.R b/R/find_AG.R index 61b52df..41b2c0d 100644 --- a/R/find_AG.R +++ b/R/find_AG.R @@ -54,7 +54,7 @@ find_AG <- function( a_se = unlist(ifelse(is.na(a), map(fit_na, vcov), map(fit, vcov))), a = ifelse(is.na(a), map_dbl(fit_na, coef), a), ag = a * g, - ag_se = sqrt((a * g_se) ^ 2 + (g * a_se) ^ 2), + ag_se = L2(a * g_se, g * a_se), fit = NULL, fit_na = NULL, g = NULL, g_se = NULL ) })} diff --git a/R/zzz.R b/R/zzz.R index 2ad9c8f..c90bb1c 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -84,12 +84,17 @@ mycolors <- function(palette = c('pcol', 'gray'), n = NULL, dec = FALSE) { #' @noRd square <- function(x) x ^ 2L +#' L2 norm +#' @param x,y numeric +#' @noRd +L2 <- function(x, y) sqrt(square(x) + square(y)) + #' Propagate add #' @param x,y numeric #' @param x2,y2 errors of x and y #' @noRd propagate_add <- function(x, x2, y, y2) { - sqrt(square(x2 - x) + square(y2 - y)) + L2(x2 - x, y2 - y) } From 3334f9bd3a673519dd991c1fde7be19225df459c Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 18:49:06 +0900 Subject: [PATCH 05/18] Use str_replace_all instead of repeating str_replace --- R/read_qnt.R | 8 ++++---- R/read_xmap_cnd.R | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/R/read_qnt.R b/R/read_qnt.R index ddaba7d..934c02e 100644 --- a/R/read_qnt.R +++ b/R/read_qnt.R @@ -92,10 +92,10 @@ read_qnt <- function( beam = qnt$mes$V3, phase = if(is.null(phase_list)) { - comment %>>% - str_replace_all('[:blank:]{2,}', ' ') %>>% - str_replace(' $', '') %>>% - str_replace('^ ', '') + str_replace_all( + comment, + c('[:blank:]{2,}' = ' ', ' $' = '', '^ ' = '') + ) } else { phase_list %>>% fread %>>% diff --git a/R/read_xmap_cnd.R b/R/read_xmap_cnd.R index c98f598..e4c4f4b 100644 --- a/R/read_xmap_cnd.R +++ b/R/read_xmap_cnd.R @@ -45,8 +45,7 @@ read_xmap_cnd <- function(x, patterns = patterns_xmap_cnd) { paste(collapse = '|') (function(x) paste0('^\\$(', x, ')[:blank:]'))() })) - str_replace('^\\$', '') - str_replace_all('[:blank:]+', ' ') + str_replace_all(c('^\\$' = '', '[:blank:]+' = ' ')) strsplit(' ') `[`(map_int(., length) > 1) setNames(pipeline({ # set names based on names(patterns_map_cnd) From 94d923cd3333ff6ecc7ae9ce9330f2a5ee3d1a6b Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 18:49:17 +0900 Subject: [PATCH 06/18] less pipe --- R/read_qnt.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/read_qnt.R b/R/read_qnt.R index 934c02e..7182ad2 100644 --- a/R/read_qnt.R +++ b/R/read_qnt.R @@ -97,11 +97,11 @@ read_qnt <- function( c('[:blank:]{2,}' = ' ', ' $' = '', '^ ' = '') ) } else { - phase_list %>>% - fread %>>% - mutate(use = if(exists('use')) use else TRUE) %>>% - mutate(phase = ifelse(use, phase, NA)) %>>% - (phase) + mutate( + fread(phase_list), + use = `if`(exists('use'), use, TRUE), + phase = ifelse(use, phase, NA) + )[["phase"]] } ) @@ -116,7 +116,7 @@ read_qnt <- function( save4qm( structure( - list(elm = elm, cnd = cnd, cmp = cmp), #, raw = list(cnd = cnd0, qnt = qnt)), + list(elm = elm, cnd = cnd, cmp = cmp), dir_qnt = wd, class = c('qm_qnt', 'list') ), From 49c4bfcb92af3830c252494914e88cadf8c11ea2 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 19:03:58 +0900 Subject: [PATCH 07/18] remove needless files and lines --- R/read_map_beam.R | 50 --------------------------------------------- R/read_map_pos.R | 52 ----------------------------------------------- R/tidy_epma.R | 8 -------- 3 files changed, 110 deletions(-) delete mode 100644 R/read_map_beam.R delete mode 100644 R/read_map_pos.R diff --git a/R/read_map_beam.R b/R/read_map_beam.R deleted file mode 100644 index 351ac29..0000000 --- a/R/read_map_beam.R +++ /dev/null @@ -1,50 +0,0 @@ -#' read mapping beam conditions -#' @param x input -#' @param ... other arguments passed to generics -#' @noRd -read_map_beam <- function(x, ...) { - UseMethod('read_map_beam') -} - -#' a method for read_map_beam -#' @inheritDotParams read_map_beam -#' @noRd -read_map_beam.default <- function(x, ...) { - read_map_beam(read_cnd(x), ...) -} - -#' a method for read_map_beam -#' @inheritDotParams read_map_beam -#' @noRd -read_map_beam.map_cnd <- function(x, ...) {pipeline({ - x[c( - 'CM_CURRENT', 'XM_DATA_PROBE_CURRENT', - 'XM_DWELL_TIME', 'XM_AP_SA_DWELL_TIME' - )] - lapply(`[[`, 1) - unlist(use.names = FALSE) - setNames(c('beam', 'dwell')) -})} - -#' read mapping beam conditions -#' @param x x -#' @param pattern patterns to be matched -#' @param n nth lines -#' @inheritDotParams read_map_beam ... -#' @noRd -read_map_beam.0_cnd <- function( - x, - pattern = c( - dwell = 'Dwell Time \\[msec\\]', - beam_map = 'Probe Current (Avg, Before After )?\\[A\\]' - ), - n = c(39, 17), - ... -) { - pipeline({ - read_cnd(x, pattern, n) - str_replace('[:blank:].*', '') - as.numeric - setNames(names(pattern)) - }) -} diff --git a/R/read_map_pos.R b/R/read_map_pos.R deleted file mode 100644 index d9f277a..0000000 --- a/R/read_map_pos.R +++ /dev/null @@ -1,52 +0,0 @@ -#' read mapping positions -#' @param x input -#' @param ... other arguments passed to methods -#' @noRd -read_map_pos <- function(x, ...) UseMethod('read_map_pos') - -#' a default method for read_map_pos -#' @inheritDotParams read_map_pos -#' @noRd -read_map_pos.default <- function(x, ...) { - read_map_pos(read_cnd(x), ...) -} - -#' a method for read_map_pos -#' @inheritParams read_map_pos -#' @noRd -read_map_pos.map_cnd <- function(x, ...) {pipeline({ - rbind( - x[['XM_AP_SA_STAGE_POS']][2, 1:2], - x[['XM_AP_SA_PIXELS']][1, 1:2], - x[['XM_AP_SA_PIXEL_SIZE']][1, 1:2] - ) - t - as.data.frame - setNames(c('start', 'px', 'step')) -})} - -#' read mapping stage information from 0.cnd -#' @inheritDotParams read_map_pos -#' @inheritDotParams read_cnd.0_cnd pattern n -#' @noRd -read_map_pos.0_cnd <- function( - x, - pattern = c( - 'Measurement Start Position X', - 'Measurement Start Position Y', - 'X(-axis)? Step Number', - 'Y(-axis)? Step Number', - 'X(-axis)? Step Size', - 'Y(-axis)? Step Size' - ), - n = c(27, 28, 30:33), - ... -) { - pipeline({ - read_cnd(x, pattern, n) - str_replace('[:blank:].*', '') - as.numeric - matrix(ncol = 3, nrow = 2, dimnames = list(NULL, c('start', 'px', 'step'))) - as.data.frame - }) -} diff --git a/R/tidy_epma.R b/R/tidy_epma.R index 2becd98..4be98ac 100644 --- a/R/tidy_epma.R +++ b/R/tidy_epma.R @@ -30,14 +30,6 @@ tidy_epma <- function( ) { #load mapping conditions - cnd <- pipeline({ - xmap - attr('dir_map') - paste0('/', c('0', 'map'), '.cnd') - `[`(file.exists(.)) - `[`(1) - read_cnd - }) pos <- attributes(xmap)[c('start', 'pixel', 'step')] beam <- setNames(attributes(xmap)[c('current', 'dwell')], c('beam_map', 'dwell')) inst <- attributes(xmap)[['instrument']] From 7bc170e212230d5846d99776bd597d66a36f61ab Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 19:46:40 +0900 Subject: [PATCH 08/18] less pipe --- R/add_centers.R | 20 +++++++++----------- R/save.R | 19 +++++++------------ 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/R/add_centers.R b/R/add_centers.R index 34e4584..f90d4f3 100644 --- a/R/add_centers.R +++ b/R/add_centers.R @@ -25,20 +25,18 @@ #' @inheritParams pick #' #' @importFrom dplyr bind_rows -#' @importFrom pipeR pipeline #' @export -add_centers <- function( - centers, - xmap -) { - pipeline({ - as.data.frame(centers) +add_centers <- function (centers, xmap) { + save4qm( + structure( bind_rows( + as.data.frame(centers), pick(xmap, x = x, y = y, phase = phase, i = i)[names(centers)] - ) - `class<-`(class(centers)) - save4qm(nm = saveas, saving = is.character(saveas)) - }) + ), + class = class(centers) + ), + nm = saveas, saving = is.character(saveas) + ) } formals(add_centers) <- c( formals(add_centers), diff --git a/R/save.R b/R/save.R index 6142d94..bf45623 100644 --- a/R/save.R +++ b/R/save.R @@ -82,18 +82,13 @@ save4qm.qm_cluster <- function(x, nm, saving, ...) { #' A method for `qntmap` class returned by `qntmap()` or `quantify()` #' #' @importFrom data.table fwrite -#' @importFrom pipeR pipeline #' @importFrom purrr walk2 save4qm.qntmap <- function(x, nm, dir_qntmap, ...) { - cd <- getwd(); on.exit(setwd(cd)) - setwd(dir_qntmap) - saveRDS(x, 'qntmap.RDS') - pipeline({ - unlist(x, recursive = FALSE) - walk2( - paste0(str_replace(names(.), '\\.', '_'), '.csv'), - fwrite - ) - }) + saveRDS(x, file.path(dir_qntmap, 'qntmap.RDS')) + walk2( + unlist(x, recursive = FALSE), + file.path(dir_qntmap, paste0(str_replace(names(.), '\\.', '_'), '.csv')), + fwrite + ) invisible(x) -} \ No newline at end of file +} From b784d55fac05175b3d7e72a10578b718c01c3b95 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 19:47:14 +0900 Subject: [PATCH 09/18] update comments --- R/plot.R | 4 ---- R/zzz.R | 10 +++++----- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/R/plot.R b/R/plot.R index f6f60cc..64a715b 100644 --- a/R/plot.R +++ b/R/plot.R @@ -60,10 +60,6 @@ plot.qm_raster <- function( ggtitle(y) + scale_y_reverse() + scale_fill_viridis_c(name = legend_fill) - # scale_fill_gradientn( - # name = legend_fill, - # colors = c('black','purple','blue','green','red','white') - # ) if(shiny) return(plot_shiny(x, y, interactive)) if(interactive) return(ggplotly(g)) diff --git a/R/zzz.R b/R/zzz.R index c90bb1c..d8a6b55 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -46,15 +46,15 @@ flag0 <- function(...) { 'paste0', lapply( unname(list(...)), - function(x) { + function (x) { formatC( x, width = floor(log10(max(x, na.rm = TRUE))) + 1L, flag = '0' - ) - } - ) - ) + ) # formatC + } # function + ) # lapply + ) # do.call } #' color LUT From 7a2235f503c23dc15cf5b80fbb5fa691b80eb940 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 19:47:36 +0900 Subject: [PATCH 10/18] simplify --- R/find_AB.R | 4 +--- R/find_B.R | 5 +---- R/pick.R | 7 +++---- R/plot_shiny.R | 5 ++--- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/R/find_AB.R b/R/find_AB.R index 2426426..edc4801 100644 --- a/R/find_AB.R +++ b/R/find_AB.R @@ -86,10 +86,8 @@ find_AB_fix <- function(AB, fix = NULL, X, fine_th = .90, xmap) { map(unlist, use.names = FALSE) map2_dbl(w, weightedMedian, na.rm = TRUE) }), - w = NULL, val = wt / i, - wt = NULL, - i = NULL + w = NULL, wt = NULL, i = NULL ) nest(-elm, -phase) mutate(data = setNames(data, phase), phase = NULL) diff --git a/R/find_B.R b/R/find_B.R index e1ad4d2..9c1ae8d 100644 --- a/R/find_B.R +++ b/R/find_B.R @@ -32,10 +32,7 @@ find_B <- function(epma, fix = NULL) {pipeline({ fit = ifelse(is.na(b), fit_na, fit), b_se = ifelse(fix, 0, map_dbl(fit, vcov) / k), b = ifelse(fix, 1, ifelse(is.na(b), map_dbl(fit_na, coef), b)) / k, - fit = NULL, - fit_na = NULL, - k = NULL, - fix = NULL + fit = NULL, fit_na = NULL, k = NULL, fix = NULL ) nest(-stg, .key = '.B') })} diff --git a/R/pick.R b/R/pick.R index 10caf83..fadd475 100644 --- a/R/pick.R +++ b/R/pick.R @@ -29,11 +29,10 @@ pick <- function( i = data.frame(x, y, phase), ... ) { - if( - length(unique(lapply(list(x, y, phase), length))) != 1 - ) { + `if`( + length(unique(lapply(list(x, y, phase), length))) != 1, stop('lengths of x, y, and phase must be same') - } + ) UseMethod('pick') } diff --git a/R/plot_shiny.R b/R/plot_shiny.R index d82e702..589d5e1 100644 --- a/R/plot_shiny.R +++ b/R/plot_shiny.R @@ -19,15 +19,14 @@ #' @noRd plot_shiny <- function(x, y = setdiff(names(x), c('x', 'y'))[1], interactive = TRUE) { - nm <- names(x) - + elm <- setdiff(names(x), c('x', 'y')) U <- shinyUI(fluidPage( sidebarLayout( sidebarPanel( splitLayout( - selectInput('fill', 'Element', setdiff(nm, c('x', 'y')), selected = y, selectize = FALSE), + selectInput('fill', 'Element', elm, selected = y, selectize = FALSE), numericInput('min', 'Min', value = NA), numericInput('max', 'Max', value = NA), actionButton("goButton", "", icon("refresh")) From ccee73e034e47af6483322f8f8849d16ad15ea77 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 20:08:10 +0900 Subject: [PATCH 11/18] simplify --- R/cluster.R | 14 +++++++------- R/save.R | 12 +++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/R/cluster.R b/R/cluster.R index 826a88f..688fedb 100644 --- a/R/cluster.R +++ b/R/cluster.R @@ -13,8 +13,8 @@ cluster <- function(x, centers, xte = NULL, ...) { x_trans <- t(x) y <- pipeline({ centers - apply(1, function(y) colSums((x_trans - y) ^ 2)) - apply(1, which.min) + apply(1L, function(y) colSums((x_trans - y) ^ 2L)) + apply(1L, which.min) }) rm(x_trans) Classify(x, y, `if`(is.null(xte), x, xte), ...) @@ -86,11 +86,11 @@ cluster_xmap <- function( if(nrow(centers) == ncol(result$membership)) { colnames(result$membership) <- centers$phase } else { - if(ncol(result$membership) == 1) { - colnames(result$membership) <- names(result$ytehat[1]) + if(ncol(result$membership) == 1L) { + colnames(result$membership) <- names(result$ytehat[1L]) } else { TF <- !duplicated(result$cluster) - colnames(result$membership)[apply(result$membership[TF, ], 1, which.max)] <- + colnames(result$membership)[apply(result$membership[TF, ], 1L, which.max)] <- result$cluster[TF] rm(TF) } @@ -98,8 +98,8 @@ cluster_xmap <- function( result$membership <- cbind( result$membership, matrix( - 0, - nrow(result$membership), + 0L, + nrow = nrow(result$membership), ncol = length(missings), dimnames = list(NULL, missings) ) diff --git a/R/save.R b/R/save.R index bf45623..93bc60d 100644 --- a/R/save.R +++ b/R/save.R @@ -85,10 +85,12 @@ save4qm.qm_cluster <- function(x, nm, saving, ...) { #' @importFrom purrr walk2 save4qm.qntmap <- function(x, nm, dir_qntmap, ...) { saveRDS(x, file.path(dir_qntmap, 'qntmap.RDS')) - walk2( - unlist(x, recursive = FALSE), - file.path(dir_qntmap, paste0(str_replace(names(.), '\\.', '_'), '.csv')), - fwrite - ) + pipeline({ + unlist(x, recursive = FALSE) + walk2( + file.path(dir_qntmap, paste0(str_replace(names(.), '\\.', '_'), '.csv')), + fwrite + ) + }) invisible(x) } From 942db73533906df2b22c2b594d3aea896288b084 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 17 Nov 2018 20:08:32 +0900 Subject: [PATCH 12/18] update to avoid versioning files created by vignette --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index d41ff31..ea775e3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ .Rprofile qntmap.Rproj *.sync-conflict* + +vignettes/center_add\.csv + +vignettes/centers0\.csv From 79b1cd6c324b178dce67b8a969cdcf47b7a6c4cc Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Mon, 19 Nov 2018 18:20:45 +0900 Subject: [PATCH 13/18] fix missing return in if statement --- R/read_xmap_cnd.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/read_xmap_cnd.R b/R/read_xmap_cnd.R index e4c4f4b..62a99ba 100644 --- a/R/read_xmap_cnd.R +++ b/R/read_xmap_cnd.R @@ -35,7 +35,7 @@ patterns_xmap_cnd <- pipeR::pipeline({ #' @param patterns list of patterns #' @noRd read_xmap_cnd <- function(x, patterns = patterns_xmap_cnd) { - if(is.null(patterns)) readLines(x) + if(is.null(patterns)) return(readLines(x)) pipeline({ x readLines From 13b1ad5f4de33bcd3a502ad244fe7e9eedfab952 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Thu, 29 Nov 2018 18:16:26 +0900 Subject: [PATCH 14/18] Improve plot - Interactive plot is a combination of shiny, ggplot2, and more. No more using plotly. - Color control with histogram - Hover information of pixels - Zooming - Moving - Summarizing data in a table below heatmap - Double click to keep pixel data - Box select to keep mean values of data - Grayscale is supported in addition to viridis. - Clustering result is supported. --- R/plot-shiny.R | 276 +++++++++++++++++++++++++++++++++++++++++++++++++ R/plot.R | 114 ++++++++++---------- R/plot_gg.R | 87 ++++++++++++++++ R/plot_shiny.R | 142 ------------------------- R/plotly.R | 36 ------- 5 files changed, 421 insertions(+), 234 deletions(-) create mode 100644 R/plot-shiny.R create mode 100644 R/plot_gg.R delete mode 100644 R/plot_shiny.R delete mode 100644 R/plotly.R diff --git a/R/plot-shiny.R b/R/plot-shiny.R new file mode 100644 index 0000000..d44fa2a --- /dev/null +++ b/R/plot-shiny.R @@ -0,0 +1,276 @@ +#' Plot mapping data using shiny +#' +#' @inheritParams plot.qm_raster +#' +#' @importFrom DT dataTableOutput +#' @importFrom htmltools br tags +#' @importFrom shinyWidgets radioGroupButtons +#' @importFrom shiny brushOpts checkboxInput fluidPage hoverOpts htmlOutput mainPanel numericInput plotOutput selectInput sidebarLayout sidebarPanel splitLayout splitLayout uiOutput +# #' @import shiny +#' @noRd +ui <- function(elm, selected = elm[[1]], pcol = TRUE) {fluidPage( + sidebarLayout( + sidebarPanel( + splitLayout( + selectInput('fill', 'Element', elm, selected = selected, selectize = FALSE), + numericInput('min', 'Min', value = NA), + numericInput('max', 'Max', value = NA)#, + ), + plotOutput('hist'), br(), + splitLayout( + 'Height of graph [px]', numericInput('height', NULL, value = 600) + ), + checkboxInput('pcol', 'Pseudocolor', value = pcol) + ), + mainPanel( + tags$head(tags$style(' + #tip { + position: absolute; + width: auto; + z-index: 100; + } + ')), + tags$script(' + $(document).ready(function(){ + // id of the plot + $("#heatmap").mousemove(function(e){ + + // ID of uiOutput + $("#tip").show(); + $("#tip").css({ + top: (e.pageY + 5) + "px", + left: (e.pageX + 5 - $("#heatmap").offset().left) + "px" + }); + }); + }); + '), + radioGroupButtons( + inputId = "mouse", + label = "Mouse actions", + choices = c("Zoom", "Move", "Summarize"), + selected = "Zoom", + status = "primary" + ), + htmlOutput("mouseHelp"), + plotOutput( + "heatmap", + hover = hoverOpts(id = "hover"), + dblclick = "click", + brush = brushOpts(id = "brush", fill = NA, resetOnNew = TRUE), + height = 'auto' + ), + uiOutput("tip"), + dataTableOutput("dt") + ) + ) +)} + + + + + + + + + + + +#' @importFrom pipeR pipeline +#' @importFrom DT renderDT +#' @importFrom dplyr everything mutate select summarize_if +#' @importFrom scales squish +#' @importFrom shiny htmlOutput reactive reactiveValues observeEvent +#' @importFrom shiny renderPlot renderPrint renderUI req +#' @noRd +server <- function(data) { + range_x <- range(data$x) + range_y <- range(data$y) + + .env <- new.env() + .env$log <- pipeline({ + data + summarize_if(is.numeric, mean) + mutate(ID = 0, Area = "Whole") + select(Area, x, y, everything()) + }) + .env$id <- 0 + + function(input, output) { + + colors <- reactive(`if`(input$pcol, "viridis", "gray")) + + output$hist <- renderPlot( + gghist( + data[[input$fill]], input[['min']], input[['max']], colors = colors() + ) + ) + + output$mouseHelp <- renderPrint({cat( + c( + Zoom = "Zoom by double click selected area. Pan by double click again.", + Move = "Move by double click within zoomed area.", + Summarize = "Double click or select area to save data." + )[input$mouse] + )}) + + ranges <- reactiveValues(x = NULL, y = NULL) + + observeEvent(input$click, { + if (input$mouse == "Zoom") + if (!is.null(input$brush)) { + ranges$x <- squish(c(input$brush$xmin, input$brush$xmax), range_x) + ranges$y <- squish(c(input$brush$ymin, input$brush$ymax), range_y) + } else { + ranges$x <- ranges$y <- NULL + } + if (input$mouse == "Move") + if(!is.null(ranges$x)) { + ranges$x <- ranges$x + input$click$x - mean(ranges$x) + ranges$y <- ranges$y + input$click$y - mean(ranges$y) + } + }) + + hm <- reactive({ + ggheat( + data[['x']], data[['y']], data[[input$fill]], nm = input$fill, + colors = colors(), range = c(input$min, input$max), coord = NULL + ) + }) + + output$heatmap <- renderPlot( + hm() + coord_fixed(xlim = ranges$x, ylim = ranges$y), + height = reactive(input$height) + ) + + hover <- reactive(pick_hover(data, input$hover)) + + output$tip <- renderUI({ + req(nrow(hover()) == 1) + htmlOutput( + "vals", style = "background-color:#DDDDDDDD; font-family:monospace" + ) + }) + + output$vals <- renderPrint({ + req(nrow(hover()) == 1) + format_hover(hover()) + }) + + dt <- reactive({ + if(is.null(input$brush) & !is.null(input$click) & input$mouse == "Summarize") { + summarize_click(data, input$click$x, input$click$y, .env) + } + if(!is.null(input$brush) & input$mouse == "Summarize") { + summarize_box( + data, + input$brush$xmin, input$brush$xmax, + input$brush$ymin, input$brush$ymax, + .env + ) + } + format_summary(.env$log) + }) + + output$dt <- renderDT(dt()) + + } +} + + + + + + + + + + + + + + + + + + +#' @noRd +pick_hover <- function (data, hover, z) { + if(is.null(hover)) return(data.frame()) + h <- round(unlist(hover[c("x", "y")], use.names = FALSE), 0) + data[data$x == h[1] & data$y == h[2], ] +} + + +#' @importFrom purrr map_if +#' @importFrom knitr kable +#' @noRd +format_hover <- function (h) { + kable( + cbind( + paste0(names(h), ": "), + unlist(map_if(h, is.double, ~ format(round(.x, 2), nsmall = 2)), use.names = FALSE) + ), + format="html", col.names = NULL, align = c("r", "r") + ) +} + +#' @importFrom dplyr bind_rows everything mutate select summarize_if +#' @noRd +summarize_box <- function (data, xmin, xmax, ymin, ymax, .env) { + .env$id <- .env$id + 1 + .env$log <- pipeline({ + data[ + xmin <= data$x & data$x <= xmax & + ymin <= data$y & data$y <= ymax, + ] + summarize_if(is.numeric, mean) + cbind(ID = .env$id) + mutate(Area = "Box") + select(ID, Area, x, y, everything()) + bind_rows(.env$log) + }) + invisible() +} + + +#' @importFrom dplyr bind_rows everything mutate select +#' @noRd +summarize_click <- function (data, x, y, .env) { + .env$id <- .env$id + 1 + .env$log <- pipeline({ + data[data$x == round(x) & data$y == round(y), ] + cbind(ID = .env$id) + mutate(Area = "Click") + select(ID, Area, x, y, everything()) + bind_rows(.env$log) + }) + invisible() +} + +#' @importFrom DT datatable formatRound +#' @noRd +format_summary <- function (summary) { + formatRound( + datatable( + summary, + rownames = FALSE, + options = list( + scrollX = TRUE + ) + ), + setdiff( + names(summary)[unlist(lapply(summary, is.numeric), use.names = FALSE)], + c("ID") + ) + ) +} + +#' @importFrom shiny shinyApp +#' @noRd +plot_shiny <- function (x, y = setdiff(names(x), c('x', 'y'))[1], pcol = TRUE, ...) { + shinyApp( + ui = ui(elm = setdiff(names(x), c("x", "y")), selected = y, pcol = TRUE), + server = server(data = x) + ) +} + diff --git a/R/plot.R b/R/plot.R index dbae751..a9b1e46 100644 --- a/R/plot.R +++ b/R/plot.R @@ -13,53 +13,36 @@ #' [read_xmap()], [quantify()], or [qntmap()]. #' @param y #' A string specifying a component of `x` to determine colors to fill the map. -#' @param legend_fill -#' A string to specify legend name for fill. -#' Default value is taken from `y`. +#' @param colors +#' A color pallete to use. Either "viridis" (default) or "gray". #' @param interactive -#' `TRUE` produces plots with [`plotly::ggplotly()`], and +#' `TRUE` (default) produces plots with shiny WebUI, and #' `FALSE` produces plots with [`ggplot2::ggplot()`]. #' @param ... ignored -#' @param shiny See plots using Shiny (default: `FALSE`) #' #' @seealso [`graphics::plot()`] #' #' @importFrom graphics plot NULL -#' @noRd +#' @rdname plot #' @examples #' # qm_raster class object #' d <- data.frame(x = sample.int(5), y = sample.int(5), fill = runif(5)) #' class(d) <- c('qm_raster', class(d)) -#' plot(d, 'fill') +#' plot(d, 'fill', interactive = FALSE) #' -#' @importFrom stats setNames -#' @importFrom ggplot2 aes ggplot geom_raster coord_fixed ggtitle -#' @importFrom ggplot2 scale_y_reverse scale_fill_viridis_c -#' @importFrom plotly ggplotly +#' @export plot.qm_raster <- function( - x, y = setdiff(names(x), c('x', 'y'))[1], legend_fill = y, interactive = TRUE, ..., shiny = FALSE + x, y = setdiff(names(x), c('x', 'y'))[1], + colors = c("viridis", "gray"), + interactive = TRUE, ... ) { - nm <- names(x) - - if(any(c('x', 'y') %nin% nm)) stop('data.frame must contain column x and y') - - args <- setNames(lapply(nm, as.name), nm) - names(args)[names(args) == y] <- 'fill' - aes_fix <- do.call(aes, args) - - g <- ggplot(data = as.data.frame(x), mapping = aes_fix) + - geom_raster() + - coord_fixed() + - ggtitle(y) + - scale_y_reverse() + - scale_fill_viridis_c(name = legend_fill) - - if(shiny) return(plot_shiny(x, y, interactive)) - if(interactive) return(ggplotly(g)) - - g + if (any(c('x', 'y') %nin% names(x))) + stop ('Column x or y not found') + if (interactive) + return (plot_shiny(x, y, pcol = colors == "viridis", ...)) + ggheat(x = x[["x"]], y = x[["y"]], z = x[[y]], y) } #' @rdname plot @@ -67,42 +50,61 @@ plot.qm_raster <- function( #' # qm_xmap class object #' xm <- list(A = as.data.frame(matrix(runif(25), 5))) #' class(xm) <- c('qm_xmap', 'list') -#' plot(xm) +#' plot(xm, interactive = FALSE) #' #' @importFrom pipeR pipeline +#' @importFrom dplyr bind_cols #' @export -plot.qm_xmap <- function() { - pipeline({ - dim(x[[1]]) - setNames(c('y', 'x')) - lapply(seq) - expand.grid() - list() - c(lapply(x, unlist, use.names = FALSE)) - as.data.frame() - `class<-`(c('qm_raster', class(.))) - plot(y = y, legend_fill = legend_fill, interactive = interactive, ..., shiny = shiny) - }) +plot.qm_xmap <- function(x, y = setdiff(names(x), c('x', 'y'))[1], ...) { + plot.qm_raster( + bind_cols( + expand.grid( + y = seq(1, nrow(x[[1]])), + x = seq(1, ncol(x[[1]])) + )[c("x", "y")], + lapply(x, unlist, use.names = FALSE) + ), + y = y, ... + ) } -formals(plot.qm_xmap) <- formals(plot.qm_raster) - #' @rdname plot #' @examples #' # qntmap class object #' qm <- list(A = list(wt = as.data.frame(matrix(runif(25), 5)))) #' class(qm) <- c( 'qntmap', 'list') -#' plot(qm) +#' plot(qm, interactive = FALSE) #' -#' @importFrom pipeR pipeline #' @export -plot.qntmap <- function() { +plot.qntmap <- function( + x, y = setdiff(names(x), c('x', 'y'))[1], ... +) { + plot.qm_xmap( + lapply(lapply(x, `[[`, 'wt'), round, 2), y = y, ... + ) +} + +# © 2018 YASUMOTO Atsushi +#' @rdname plot +#' @examples +#' # qm_cluster class object +#' cls <- list( +#' ytehat = sample.int(3, 9, replace = TRUE), +#' dims = c(3, 3) +#' ) +#' names(cls$ytehat) <- letters[cls$ytehat] +#' class(cls) <- "qm_cluster" +#' plot(cls, interactive = FALSE) +#' +#' @importFrom pipeR pipeline +#' @export +plot.qm_cluster <- function(x, y = NULL, ...) { pipeline({ - x - lapply(`[[`, 'wt') - lapply(round, 2) - `class<-`(c('qm_xmap', 'list')) - plot(y = y, legend_fill = legend_fill, interactive = interactive, ..., shiny = shiny) + lapply(x$dims, seq) + setNames(c("y", "x")) + expand.grid + mutate(Phase = !!names(x$ytehat)) + select(x, y, Phase) + plot.qm_raster(y = "Phase", ...) }) -} -formals(plot.qntmap) <- formals(plot.qm_raster) +} diff --git a/R/plot_gg.R b/R/plot_gg.R new file mode 100644 index 0000000..58002dd --- /dev/null +++ b/R/plot_gg.R @@ -0,0 +1,87 @@ +#' Draw a histgram for numeric vector based on Scott's choice +#' @importFrom grDevices nclass.FD +#' @importFrom ggplot2 aes coord_cartesian +#' @importFrom ggplot2 element_blank element_rect +#' @importFrom ggplot2 geom_bar geom_histogram ggplot +#' @importFrom ggplot2 theme theme_classic +#' @importFrom ggplot2 scale_fill_manual +#' @noRd +gghist <- function (x, .min = NA_real_, .max = NA_real_, colors) { + if(is.numeric(x)) { + if(!is.finite(.min)) .min <- min(x) + if(!is.finite(.max)) .max <- max(x) + x <- x[.min <= x & x <= .max] + layers <- list( + geom_histogram(aes(x, fill = stat(x)), bins = nclass.FD(x)), + ggfill[[match.arg(colors)]] + ) + } else { + n <- length(unique(x)) + layers <- list( + geom_bar(aes(x, y = stat(count / sum(count)), fill = x), color = "black"), + scale_fill_manual( + values = mycolors(palette = "pcol", n = n) + ) + ) + } + + bg <- element_rect(fill = '#f5f5f5', color = '#f5f5f5') + ggplot(data.frame(x = x)) + + coord_cartesian(expand = FALSE) + + theme_classic() + + theme( + plot.background = bg, + panel.background = bg, + legend.position = 'none', + axis.title = element_blank() + ) + + layers +} + +#' @param x,y,z x-, y-, and z-coordinates +#' @param nm title for legend of fill +#' @param colors A palette to chose when z is continuous. +#' @importFrom ggplot2 aes coord_fixed +#' @importFrom ggplot2 geom_raster ggplot +#' @importFrom ggplot2 guides guide_colorbar guide_legend +#' @importFrom ggplot2 scale_y_reverse scale_fill_manual +#' @importFrom ggplot2 theme theme_classic +#' @importFrom grid unit +#' @importFrom rlang sym +#' @importFrom stats setNames +#' @importFrom scales squish +#' @noRd +ggheat <- function ( + x, y, z, nm = "z", colors, + range = c(NA_real_, NA_real_), + coord = coord_fixed() +) { + if(is.numeric(z)) z <- squish(z, range) + ggplot( + setNames(data.frame(x, y, z), c("x", "y", nm)), + aes(x, y, fill = !!sym(nm)) + ) + + coord + + geom_raster() + + theme_classic() + + scale_y_reverse() + + if (is.numeric(z)) { + list( + ggfill[[match.arg(colors)]], + guides(fill = guide_colorbar(barheight = unit(1, "npc") - unit(4, "line"))) + ) + } else { + scale_fill_manual( + values = mycolors(palette = "pcol", n = length(unique(z))) + ) + } +} + +#' @importFrom ggplot2 scale_fill_viridis_c scale_fill_gradient +#' @noRd +ggfill <- list( + viridis = scale_fill_viridis_c(), + gray = scale_fill_gradient(low = "black", high = "white") + ) + +formals(ggheat)$colors <- formals(gghist)$colors <- names(ggfill) diff --git a/R/plot_shiny.R b/R/plot_shiny.R deleted file mode 100644 index c40490d..0000000 --- a/R/plot_shiny.R +++ /dev/null @@ -1,142 +0,0 @@ -# © 2018 JAMSTEC - -#' Plot mapping data using shiny -#' -#' @inheritParams plot.qm_raster -#' -#' @import shiny -#' @importFrom plotly renderPlotly plotlyOutput event_data -#' @importFrom graphics hist -#' @importFrom ggplot2 ggplot aes aes_string -#' @importFrom dplyr mutate_at -#' @importFrom scales squish -#' -#' @noRd -plot_shiny <- function(x, y = setdiff(names(x), c('x', 'y'))[1], interactive = TRUE) { - - elm <- setdiff(names(x), c('x', 'y')) - - U <- shinyUI(fluidPage( - - sidebarLayout( - sidebarPanel( - splitLayout( - selectInput('fill', 'Element', elm, selected = y, selectize = FALSE), - numericInput('min', 'Min', value = NA), - numericInput('max', 'Max', value = NA), - actionButton("goButton", "", icon("refresh")) - ), - plotOutput('hist'), br(), - splitLayout('Height of graph [px]', numericInput('height', NULL, value = 800)), br(), - checkboxInput('interactive', 'Interactive', value = interactive) - ), # sidebarPanel - - mainPanel( - conditionalPanel( - condition = "input.interactive == true", - plotlyOutput("plotly", height = 'auto') - ), - conditionalPanel( - condition = "input.interactive == true", - verbatimTextOutput("click") - ), - conditionalPanel( - condition = "input.interactive == false", - plotOutput("plot", height = 'auto') - ) - ) # mainPanel - ), # sidebarLayout - - tags$style(type='text/css', "#goButton { width:100%; margin-top: 25px;}") - - )) # fluidPage, shinyUI - - S <- shinyServer(function(input, output) { - - g_raster <- reactive({ - input$goButton - isolate( - ggplot( - mutate_at( - x[c('x', 'y', input$fill)], - input$fill, squish, range = c(input$min, .max = input$max) - ), # mutate_at - aes_string('x', 'y', fill = input$fill) # faster but less info - ) + layers_raster # ggplot - ) # isolate - }) # reactive - - output$plot <- renderPlot(g_raster(), height = reactive(input$height)) - - shiny_heatmap <- reactive({ - input$goButton - isolate(plotly_heatmap( - x[['x']], x[['y']], squish(x[[input$fill]], c(input$min, input$max)), - title = input$fill, height = input$height - )) - }) - output$plotly <- renderPlotly(shiny_heatmap()) - - output$click <- renderPrint({ - d <- event_data("plotly_click") - `if`( - is.null(d), - cat('Click pixel & keep data here'), - unlist(x[x[['x']] == d[['x']] & x[['y']] == d[['y']], ]) - ) - }) # renderPrint - - output$hist <- renderPlot( - gghist(x[[input$fill]], input[['min']], input[['max']]) - ) - - }) - - runApp(appDir = list(server = S, ui = U)) - -} - -#' Layers for plotting mapping data -#' @importFrom ggplot2 geom_raster coord_fixed -#' @importFrom ggplot2 scale_fill_gradientn scale_fill_viridis_c -#' @importFrom ggplot2 theme theme_classic -#' @noRd -layers_raster <- list( - ggplot2::geom_raster(), - ggplot2::coord_fixed(), - ggplot2::theme_classic(), - ggplot2::scale_y_reverse(), - ggplot2::scale_fill_viridis_c(), - NULL -) - -#' Layers for plotting mapping histograms -#' @importFrom ggplot2 element_blank element_rect theme theme_classic -#' @noRd -layers_hist <- list( - ggplot2::scale_fill_viridis_c(), - ggplot2::theme_classic(), - ggplot2::theme( - plot.background = ggplot2::element_rect(fill = '#f5f5f5', color = '#f5f5f5'), - panel.background = ggplot2::element_rect(fill = '#f5f5f5', color = '#f5f5f5'), - legend.position = 'none', - axis.title = ggplot2::element_blank() - ) -) - -#' Draw a histgram for numeric vector based on Scott's choice -#' @importFrom graphics hist -#' @importFrom ggplot2 aes geom_col ggplot -#' @noRd -gghist <- function(x, .min = NA, .max = NA) { - if(!is.finite(.min)) .min <- min(x) - if(!is.finite(.max)) .max <- max(x) - d <- as.data.frame(hist( - x[.min <= x & x <= .max], - breaks = 'Scott', plot = FALSE - )[(c('mids', 'counts'))]) - ggplot(d, aes(mids, counts, fill = mids)) + - geom_col(width = d$mids[2] - d$mids[1]) + - layers_hist -} - diff --git a/R/plotly.R b/R/plotly.R deleted file mode 100644 index 7e17577..0000000 --- a/R/plotly.R +++ /dev/null @@ -1,36 +0,0 @@ -#' heatmap using [`plotly::plot_ly()`] -#' @importFrom plotly layout plot_ly -#' @noRd -plotly_heatmap <- function(x, y, z, title = '', ...) { - layout( - plot_ly( - x = x, y = y, z = z, type = 'heatmap', - colors = viridis, - colorbar = list(title = title, len = 1), - ... - ), - xaxis = xaxis, yaxis = yaxis - ) -} - -# x- and y-axes for plotly_heatmap -xaxis <- list( - rangemode = 'tozero', - showgrid = FALSE, - zeroline = FALSE -) -yaxis <- c( - xaxis, - scaleanchor = 'x', - autorange = 'reversed' -) - -#' @importFrom scales gradient_n_pal viridis_pal -#' @noRd -viridis <- getExportedValue('scales', 'gradient_n_pal')( - getExportedValue('scales', 'viridis_pal')( - alpha = 1, begin = 0, end = 1, direction = 1, option = 'viridis' - )(6), - values = NULL, space = "Lab" - ) - From 117520a2964e4c1059a301278e5eb95436b2e00a Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Thu, 29 Nov 2018 18:17:21 +0900 Subject: [PATCH 15/18] minor fixes --- R/cluster.R | 3 +-- R/group_cluster.R | 2 +- R/quantify.R | 2 +- R/read_xmap_cnd.R | 3 ++- R/save.R | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/cluster.R b/R/cluster.R index 9ab5d2f..0e388d4 100644 --- a/R/cluster.R +++ b/R/cluster.R @@ -1,4 +1,4 @@ -#' Poisson distribution based custering based on [`PoiClaClu:Classify()`] +#' Poisson distribution based custering based on [`PoiClaClu::Classify()`] #' #' @param centers c-by-p matrix returned by [`find_centers()`] or by manually; #' c clusters and p features. @@ -161,7 +161,6 @@ qntmap_cls_pois <- function( if(is.null(elements)) elements <- intersect(names(qltmap), colnames(centers_initial)) - xmap <- cluster_xmap( qltmap, centers_initial, diff --git a/R/group_cluster.R b/R/group_cluster.R index 4462ba3..cec32e1 100644 --- a/R/group_cluster.R +++ b/R/group_cluster.R @@ -3,7 +3,7 @@ #' When data points are assigned to clusters A_1 and A_2, #' their clusters are renamed to be A by matching regular expressions. #' -#' @param x `qm_cluster` class object returned by [`qltmap_cls_pois()`]. +#' @param x `qm_cluster` class object returned by [`cluster_xmap()`]. #' @param saving `TRUE` or `FALSE` to save result (default: `TRUE`). #' @param suffix A regular expression of suffix (default: `'_.*'`) #' diff --git a/R/quantify.R b/R/quantify.R index 0ac6960..6c37156 100644 --- a/R/quantify.R +++ b/R/quantify.R @@ -2,7 +2,7 @@ #' #' @param xmap `qm_xmap` class object returned by [`read_xmap()`]. #' @param qnt `qm_qnt` class object returned by [`read_qnt()`]. -#' @param cluster `qm_cluster` class object returned by [`cluter_xmap()`]. +#' @param cluster `qm_cluster` class object returned by [`cluster_xmap()`]. #' @param maps_x,maps_y #' Sizes of maps along x- and y-axes comprising guide net map. #' (default: `NULL`). diff --git a/R/read_xmap_cnd.R b/R/read_xmap_cnd.R index 62a99ba..59b6896 100644 --- a/R/read_xmap_cnd.R +++ b/R/read_xmap_cnd.R @@ -1,8 +1,9 @@ # read .cnd files of X-ray mapping data #' list of patterns in cnd files +#' @importFrom pipeR pipeline #' @noRd -patterns_xmap_cnd <- pipeR::pipeline({ +patterns_xmap_cnd <- pipeline({ list( jxa8800 = list( elm = 'XM_ELEMENT', diff --git a/R/save.R b/R/save.R index 39c180d..e3c2b24 100644 --- a/R/save.R +++ b/R/save.R @@ -35,7 +35,7 @@ save4qm.data.frame <- function(x, nm, saving, ...) { #' @rdname save4qm #' @section `save4qm.qm_cluster`: #' A method for `qm_cluster` class returned by -#' [`cluster_xmap()`] or [`cluster_group()`]. +#' [`cluster_xmap()`] or [`group_cluster()`]. #' Object is saved as RDS file and png file. #' The latter shows distribution of phases among a mapped area. #' @importFrom png writePNG From 1151871d854c603970d300272f79db921bdd2894 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Thu, 29 Nov 2018 18:35:37 +0900 Subject: [PATCH 16/18] segment only allows PNG To be independent of imager package --- R/segment.R | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/R/segment.R b/R/segment.R index b16ce30..0fce27c 100644 --- a/R/segment.R +++ b/R/segment.R @@ -5,7 +5,7 @@ # © 2018 JAMSTEC #' -#' @param x A path to the image file (PNG, JPEG, and BMP). +#' @param x A path to the PNG image file. #' @param ... ignored #' #' @return A character vector indicating pixel colors in RGBA style for input image. @@ -21,17 +21,11 @@ segment <- function(x, ...) { #' @rdname segment #' #' @examples -#' library(imager) -#' x <- system.file('extdata/parrots.png',package='imager') -#' print(x) # x is a path to the example image file. -#' head(segment(x)) # [1] "#747458" "#757559" "#78785C" "#77765B" "#78785C" "#78785C" -#' \dontrun{ -#' segment(matrix(1:9, 3, 3)) -#' # This gives error as current version only support a path of a image file as input -#' } +#' x <- system.file("img", "Rlogo.png", package="png") +#' head(segment(x)) #' #' @importFrom grDevices rgb -#' @importFrom imager load.image +#' @importFrom png readPNG #' @importFrom pipeR pipeline #' @importFrom purrr pmap #' @importFrom stats setNames @@ -39,9 +33,8 @@ segment <- function(x, ...) { #' @export segment.character <- function(x, ...) { pipeline({ - load.image(x)[,,1,] + readPNG(x) apply(3, list) - lapply(lapply, t) setNames(names(formals(rgb))[seq_along(.)]) pmap(rgb) unlist(use.names = FALSE) From f97384536a3bf3512bfa01663b9540f6b3fd25e3 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Thu, 29 Nov 2018 18:36:29 +0900 Subject: [PATCH 17/18] plot(interactive = FALSE) in vignettes --- vignettes/add_phase.Rmd | 2 +- vignettes/basic.Rmd | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/vignettes/add_phase.Rmd b/vignettes/add_phase.Rmd index 9d4eb34..0c37b5b 100644 --- a/vignettes/add_phase.Rmd +++ b/vignettes/add_phase.Rmd @@ -158,7 +158,7 @@ centers ### Compare the initial centroids with X-ray map plotted with heatmap ```{r} -plot(xmap, 'Si', interactive = TRUE) +plot(xmap, 'Si', interactive = FALSE) ``` In this case, an analysist will notice there is something other than olivine. diff --git a/vignettes/basic.Rmd b/vignettes/basic.Rmd index 78e697d..0fb69c7 100644 --- a/vignettes/basic.Rmd +++ b/vignettes/basic.Rmd @@ -38,7 +38,9 @@ formals(read_xmap)$renew <- This vignette introduce a basic procedure of analysis using `qntmap` package using example data. -See https://doi.org/10.2138/am-2018-6323CCBY for technical details. +See https://atusy.github.io/qntmap/#epma-analysis for preparing EPMA data. + +See https://doi.org/10.2138/am-2018-6323CCBY for implementations. # Preparation @@ -109,14 +111,20 @@ plot(xmap, 'Si', interactive = FALSE) + ## Plot X-ray map data as heatmap -Plots are by default **interactive**. -Specify 'Si' instead of 'Mg' to see Si map. -Specify `interactive = FALSE` if necessary. +Plots are by default **interactive** with webui. +Selection of elements can be done on webui. -```{r} -plot(xmap, 'Mg', interactive = TRUE) +```{.r} +plot(xmap) +# A following example is non-interactive mode run by +# plot(xmap, 'Mg', interactive = FALSE) ``` +```{r, echo = FALSE} +plot(xmap, 'Mg', interactive = FALSE) +``` + + ## Cluster analysis ### Initialize cluster centers From ac0fed6b209c5ec74a4d1b32afabae87b40d8c55 Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Thu, 29 Nov 2018 18:37:28 +0900 Subject: [PATCH 18/18] doc --- .Rbuildignore | 1 + .gitignore | 2 + DESCRIPTION | 21 +- NAMESPACE | 61 +- NEWS.md | 19 + README.Rmd | 156 +- README.md | 212 +- docs/LICENSE-text.html | 2 +- docs/articles/add_phase.html | 16 +- .../figure-html/unnamed-chunk-10-1.png | Bin 66284 -> 61734 bytes .../figure-html/unnamed-chunk-12-1.png | Bin 0 -> 62555 bytes docs/articles/basic.html | 20 +- .../figure-html/unnamed-chunk-15-1.png | Bin 62917 -> 61870 bytes .../figure-html/unnamed-chunk-7-1.png | Bin 73237 -> 68117 bytes .../figure-html/unnamed-chunk-8-1.png | Bin 0 -> 66813 bytes docs/articles/index.html | 2 +- docs/authors.html | 2 +- docs/index.html | 261 ++- docs/news/index.html | 48 +- docs/reference/add_centers.html | 14 +- docs/reference/cluster.html | 21 +- docs/reference/cluster_xmap.html | 18 +- docs/reference/find_centers.html | 15 +- docs/reference/find_centers_kpp.html | 5 +- docs/reference/group_cluster.html | 4 +- docs/reference/index.html | 16 +- docs/reference/mean.html | 11 +- docs/reference/pick.html | 2 +- docs/reference/plot-1.png | Bin 0 -> 15843 bytes docs/reference/plot-2.png | Bin 0 -> 18670 bytes docs/reference/plot-3.png | Bin 0 -> 17040 bytes docs/reference/plot-4.png | Bin 0 -> 12799 bytes docs/reference/plot.html | 48 +- docs/reference/print.qntmap.html | 2 +- docs/reference/qltmap_cls_centers.html | 12 +- docs/reference/qltmap_load.html | 2 +- docs/reference/qntmap.html | 12 +- docs/reference/qntmap_cls_pois.html | 15 +- docs/reference/qntmap_quantify.html | 23 +- docs/reference/quantify.html | 26 +- docs/reference/read_cnd.html | 4 +- docs/reference/read_qnt.html | 2 +- docs/reference/read_xmap.html | 2 +- docs/reference/save4qm.html | 5 +- docs/reference/segment.html | 20 +- docs/reference/summary_methods.html | 2 +- docs/reference/tidy_epma.html | 2 +- man/add_centers.Rd | 13 +- man/cluster.Rd | 13 +- man/cluster_xmap.Rd | 16 +- man/find_centers.Rd | 11 +- man/find_centers_kpp.Rd | 3 +- man/group_cluster.Rd | 2 +- man/mean.Rd | 12 +- man/plot.Rd | 40 +- man/print.qntmap.Rd | 2 +- man/qltmap_cls_centers.Rd | 4 +- man/qntmap.Rd | 4 +- man/qntmap_cls_pois.Rd | 7 +- man/qntmap_quantify.Rd | 17 +- man/quantify.Rd | 18 +- man/read_cnd.Rd | 2 +- man/save4qm.Rd | 3 +- man/segment.Rd | 12 +- qntmap.Rproj | 2 +- vignettes/add_phase.R | 2 +- vignettes/add_phase.html | 1813 +--------------- vignettes/basic.R | 4 +- vignettes/basic.html | 1856 +---------------- 69 files changed, 816 insertions(+), 4146 deletions(-) create mode 100644 docs/articles/add_phase_files/figure-html/unnamed-chunk-12-1.png create mode 100644 docs/articles/basic_files/figure-html/unnamed-chunk-8-1.png create mode 100644 docs/reference/plot-1.png create mode 100644 docs/reference/plot-2.png create mode 100644 docs/reference/plot-3.png create mode 100644 docs/reference/plot-4.png diff --git a/.Rbuildignore b/.Rbuildignore index 97f64bf..381d272 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,3 +1,4 @@ +^README\.Rmd$ ^docs$ ^_pkgdown\.yml$ ^.*\.Rproj$ diff --git a/.gitignore b/.gitignore index ea775e3..d92749c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ qntmap.Rproj vignettes/center_add\.csv vignettes/centers0\.csv + +vignettes/\.build\.timestamp diff --git a/DESCRIPTION b/DESCRIPTION index 8122ee1..3aef397 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: qntmap Type: Package -Title: Enhance quantitative analysis of EPMA data -Version: 0.2.2 +Title: Enhance quantitative analysis of EPMA map +Version: 0.3.0 Authors@R: c( person(given = 'YASUMOTO Atsushi', role = c('aut', 'cph', 'cre'), email = 'atusy.7+qntmap@gmail.com'), person(given = 'YOSHIDA Kenta', role = c('ctb')), @@ -17,16 +17,17 @@ Description: A main function of this packages is License: MIT + file LICENSE Encoding: UTF-8 LazyData: true -RoxygenNote: 6.1.0 +RoxygenNote: 6.1.1 Depends: R(>= 3.1.2) Imports: curl, data.table, dplyr, - ggplot2, + DT, easycsv, - imager, + ggplot2, + htmltools, + knitr, matrixStats, - plotly, pipeR, PoiClaClu, png, @@ -35,6 +36,7 @@ Imports: curl, scales, stringr, shiny, + shinyWidgets, tibble, tidyr, utils @@ -56,15 +58,13 @@ Collate: 'find_centers_kpp.R' 'group_cluster.R' 'mean.R' + 'plot-shiny.R' 'plot.R' - 'plot_shiny.R' - 'plotly.R' + 'plot_gg.R' 'print.R' 'qntmap.R' 'quantify.R' 'read_cnd.R' - 'read_map_beam.R' - 'read_map_pos.R' 'read_qnt.R' 'read_qnt_elemw.R' 'read_xmap.R' @@ -78,6 +78,7 @@ Collate: Roxygen: list(markdown = TRUE) Suggests: knitr, + pkgdown, rmarkdown, testthat VignetteBuilder: knitr diff --git a/NAMESPACE b/NAMESPACE index 8d26cf8..941c324 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,8 @@ S3method(mean,qntmap) S3method(pick,qm_xmap) +S3method(plot,qm_cluster) +S3method(plot,qm_raster) S3method(plot,qm_xmap) S3method(plot,qntmap) S3method(print,qntmap) @@ -30,7 +32,10 @@ export(read_xmap) export(save4qm) export(segment) export(tidy_epma) -import(shiny) +importFrom(DT,dataTableOutput) +importFrom(DT,datatable) +importFrom(DT,formatRound) +importFrom(DT,renderDT) importFrom(PoiClaClu,Classify) importFrom(data.table,fread) importFrom(data.table,fwrite) @@ -38,6 +43,7 @@ importFrom(dplyr,arrange) importFrom(dplyr,bind_cols) importFrom(dplyr,bind_rows) importFrom(dplyr,distinct) +importFrom(dplyr,everything) importFrom(dplyr,filter) importFrom(dplyr,group_by) importFrom(dplyr,left_join) @@ -49,20 +55,25 @@ importFrom(dplyr,right_join) importFrom(dplyr,select) importFrom(dplyr,summarise) importFrom(dplyr,summarize) +importFrom(dplyr,summarize_if) importFrom(dplyr,transmute) importFrom(dplyr,transmute_at) importFrom(dplyr,ungroup) importFrom(easycsv,choose_dir) importFrom(ggplot2,aes) -importFrom(ggplot2,aes_string) +importFrom(ggplot2,coord_cartesian) importFrom(ggplot2,coord_fixed) importFrom(ggplot2,element_blank) importFrom(ggplot2,element_rect) -importFrom(ggplot2,geom_col) +importFrom(ggplot2,geom_bar) +importFrom(ggplot2,geom_histogram) importFrom(ggplot2,geom_raster) importFrom(ggplot2,ggplot) -importFrom(ggplot2,ggtitle) -importFrom(ggplot2,scale_fill_gradientn) +importFrom(ggplot2,guide_colorbar) +importFrom(ggplot2,guide_legend) +importFrom(ggplot2,guides) +importFrom(ggplot2,scale_fill_gradient) +importFrom(ggplot2,scale_fill_manual) importFrom(ggplot2,scale_fill_viridis_c) importFrom(ggplot2,scale_y_reverse) importFrom(ggplot2,theme) @@ -70,34 +81,54 @@ importFrom(ggplot2,theme_classic) importFrom(grDevices,col2rgb) importFrom(grDevices,dev.copy) importFrom(grDevices,dev.off) +importFrom(grDevices,nclass.FD) importFrom(grDevices,png) importFrom(grDevices,rgb) -importFrom(graphics,hist) importFrom(graphics,pie) importFrom(graphics,plot) -importFrom(imager,load.image) +importFrom(grid,unit) +importFrom(htmltools,br) +importFrom(htmltools,tags) +importFrom(knitr,kable) importFrom(matrixStats,rowMaxs) importFrom(matrixStats,weightedMedian) importFrom(pipeR,"%>>%") importFrom(pipeR,pipeline) -importFrom(plotly,event_data) -importFrom(plotly,ggplotly) -importFrom(plotly,layout) -importFrom(plotly,plot_ly) -importFrom(plotly,plotlyOutput) -importFrom(plotly,renderPlotly) +importFrom(png,readPNG) importFrom(png,writePNG) importFrom(purrr,map) importFrom(purrr,map2) importFrom(purrr,map2_dbl) importFrom(purrr,map_at) importFrom(purrr,map_dbl) +importFrom(purrr,map_if) importFrom(purrr,map_int) importFrom(purrr,pmap) importFrom(purrr,walk2) -importFrom(scales,gradient_n_pal) +importFrom(rlang,sym) importFrom(scales,squish) -importFrom(scales,viridis_pal) +importFrom(shiny,brushOpts) +importFrom(shiny,checkboxInput) +importFrom(shiny,fluidPage) +importFrom(shiny,hoverOpts) +importFrom(shiny,htmlOutput) +importFrom(shiny,mainPanel) +importFrom(shiny,numericInput) +importFrom(shiny,observeEvent) +importFrom(shiny,plotOutput) +importFrom(shiny,reactive) +importFrom(shiny,reactiveValues) +importFrom(shiny,renderPlot) +importFrom(shiny,renderPrint) +importFrom(shiny,renderUI) +importFrom(shiny,req) +importFrom(shiny,selectInput) +importFrom(shiny,shinyApp) +importFrom(shiny,sidebarLayout) +importFrom(shiny,sidebarPanel) +importFrom(shiny,splitLayout) +importFrom(shiny,uiOutput) +importFrom(shinyWidgets,radioGroupButtons) importFrom(stats,coef) importFrom(stats,lm) importFrom(stats,lsfit) diff --git a/NEWS.md b/NEWS.md index ee2f622..9de7b15 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,22 @@ +# qntmap 0.3.0 + +## Major changes + +- `plot()` + - Interactive plot is a combination of shiny, ggplot2, and more. No more using plotly. + - Color control with histogram + - Hover information of pixels + - Zooming + - Moving + - Summarizing data in a table below heatmap + - Double click to keep pixel data + - Box select to keep mean values of data + - Grayscale is supported in addition to viridis. + - Clustering result is supported. +- `segment()` + - Only allows PNG format as an input. + No more JPG nor BMP allowed. + # qntmap 0.2.2 ## Major changes diff --git a/README.Rmd b/README.Rmd index 893330b..b5d8037 100644 --- a/README.Rmd +++ b/README.Rmd @@ -1,46 +1,41 @@ --- -title: "QntMap" -output: - md_document: - variant: markdown_github +title: Enhance quantitative analysis of EPMA maps with QntMap +output: github_document --- ```{r setup, include=FALSE} -knitr::opts_chunk$set(echo = TRUE) +knitr::opts_chunk$set(echo = TRUE, eval = FALSE) +library(knitr) ``` # Overview -This package provides functions to convert element characteristic X-ray intensity maps into element mass concentration maps. -Current version supports data from JEOL-style electron probe microanalyer (EPMA). -For conversion, you need to run spot analysis before mapping analysis. -See "How to" section for usage and [Yasumoto et al. (2018)](https://doi.org/10.2138/am-2018-6323CCBY) for implementations. +This package generates mass concentration maps and phase distribution maps based on X-ray mapping data and spot analysis data from EPMA. -# Installation +See "[How to]" for a usage and [Yasumoto et al. (2018)](https://doi.org/10.2138/am-2018-6323CCBY) for implementations. -Install devtools package if you haven't. +Current version supports data from JEOL-style EPMA. -```{r devtools, eval = FALSE} -install.packages("devtools") -``` +# Installation -Then, run following code. +Copy & paste a following command to R. -```{r qntmap, eval = FALSE} -devtools::install_github("atusy/qntmap") +```{r install} +source("https://install-github.me/atusy/qntmap") ``` # How to -1. Export data from EPMA analysis. -1. Run QntMap +1. [EPMA analysis] (spot before map) +1. [Export data] from EPMA to PC +1. [Run QntMap on R] for data processing. -Read below for details. +Details below. ## EPMA analysis -QntMap handles matrix effect by preparing internal standards based on spot analysis. - +Conversion is performed by utilizing spot analysis data as internal standards. +Thus, [spot analysis][Spot analysis] must be done prior to [mapping][Mapping]. ### Spot analysis @@ -51,31 +46,21 @@ QntMap handles matrix effect by preparing internal standards based on spot analy - **20 spots per phase** in the area to be mapped (the more is better). - It is better but not necessary to quantify grains larger than mapping probe diameter. - Make sure at least **20 spots per element** are analyzing grains larger than mapping probe diameter. -- Commenting analysis - - Give same comments on the same phase with the similar compositions. Do not number them. - - e.g., quartz, plagioclase, ... - - Otherwise, comment them with different name. This is important treatment for phase identification and handling matrix effect. - - e.g., garnet-core, garnet-rim - - If you give comments containing underscore such as "garnet_core" and "garnet_rim", then they are treated as if different phases in phase identification, but are treated as if their matrix effect are approximately same. - - Alternatively, give comments manually by external file. - -Spot quantitative analytical conditions in your lab. - -### Mapping analysis +- Identify phases in comment + - Give same comments on the same phase with the similar compositions. + - e.g., quartz, plagioclase, garnet-core, garnet-rim, ... + - An alternative is to use external file later. + +### Mapping - Analytical conditions - - Acceralating voltage should be same as one applied in spot analysis. - - Probe diameter should be larger than spot analysis. The larger saves more time, but decreases spatial resolutions. + - Acceralating voltage must be same as that in spot analysis. + - Probe diameter should be larger than that in spot analysis. - Probe current is recommended to be 100 nA following Lanari et al. (2014). - Dwell time is recommended to be 0.1 - 0.3 sec following Lanari et al. (2014). - - Note that increasing probe current accepts decreasing dwell time, but probe current must not be too high to saturate X-ray detectors. If you prefer high probe current in some reason, consider changing dispersive crystals from those chosen in spot analysis. - - e.g., chose PET instead of TAP for Si - ### Example of analytical conditions -Yasumoto et al. (submitted) - | | Spot | Map | Comment | |:--------------------|------:|--------:|:--------------------------------| |Acceralating Voltate | 15 kV | 15 kV | Must be same in spot and map | @@ -85,25 +70,94 @@ Yasumoto et al. (submitted) |Background dwell | 5 sec| NA | No need to analyze in map | -## Data processing with QntMap package on R +## Export data {#Export} + +1. **ASCII conert** mapping data into matrix format, + and save the result in the directory + where raw data is stored (e.g., `.map/1`). +1. Export whole directory of analysis containing + `.map` directory and `.qnt` directory + +### File structure + +A minimal example. +See links for descrptions. +`*` is a wild card. + +- .map/\*/ + - \*_map.txt + - \*.cnd +- .qnt/ + - [.cnd/elemw.cnd](#elemwcnd) + - [bgm.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [bgp.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [elem.qnt](#elemqnt-elintqnt) + - [elint.qnt](#elemqnt-elintqnt) + - [mes.qnt](#mesqnt) + - [net.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [peak.qnt](#peakqnt) + - [stg.qnt](#stgqnt) + - [wt.qnt](#wtqnt) + +#### elemw.cnd + +includes dwell time for peak and background, +relative positions of backgrounds. + +In some case, this file is incomplete or missing, and needs to be prepared manually (e.g., https://gist.github.com/atusy/f1577b67b8874c9e915941c0725d0e22). -### Quantification +#### bgm.qnt, bgp.qnt, pkint.qnt, net.qnt -By running following code, you'll see that phase identification result in 'clustering' directory and mass concentration data as csv files in 'qntmap' directory both under the directory contaning mapping data. +include +background (minus and plus), peak, and net intensities of each analysis. +In some environemts, `pkint.qnt` is missing, but is complemented within QntMap. -#### Interactive mode +#### elem.qnt and elint.qnt + +include name of elements +data correction ("elem.qnt"; oxide or metal in ZAF), +counting intensities ("elint.qnt"). + +#### mes.qnt + +includes probe current of each analysis. + +#### peak.qnt + +includes positions of peak intensities of each element of each analysis. + +#### stg.qnt + +includes coordinates and comments of each analysis. + +#### wt.qnt + +includes mass concentrations of each analysis. + +## Run QntMap on R + +For data processing + +### Interactive mode Follow instructions shown by running the following code. -```{r eval = FALSE} +```{r interactive} library(qntmap) qntmap() ``` +As a result, phase identification result is saved in "`clustering`" directory and mass concentration data as csv files in "`qntmap`" directory both under the directory contaning mapping data. + +Note that interactive mode has limited functions. +Use [manual mode][Manual mode] for full functionality. + +### Manual mode -#### Manual mode for experts (example) +A work-flow with example dataset is available at +https://atusy.github.io/qntmap/articles/basic.html . -```{r eval = FALSE} +```{r manual} library(qntmap) # Required parameters @@ -140,21 +194,21 @@ qnt <- read_qnt(wd = dir_qnt, phase_list = phase_list, renew = TRUE) # Determine initial cluster centers centers <- find_centers(xmap = xmap, qnt = qnt, fine_phase = fine_phase) ## Check 'centers0.csv' under the `wd` and modify on demand. -## if modified, assign content of the modified csv file by running +## If modified, assign content of the modified csv file by running ## centers <- data.table::fread('path to the modified csv file') # Phase identification -# assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' +# Assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' # (e.g., garnet_a and garnet_b are integrated to garnet if TRUE) cls <- cluster_xmap(xmap = xmap, centers = centers, group_cluster = FALSE) -# quantify X-ray maps +# Quantify X-ray maps qmap <- quantify( xmap = xmap, qnt = qnt, cluster = cls, fine_phase = fine_phase ) ## Resulting files are saved in `qntmap` directory` under `dir_map`. -# summarize result +# Summarize result summary(qmap) ## This shows minimum, lower quantile, median, mean, upper quantile, and maximum values of variables. ``` diff --git a/README.md b/README.md index 446d913..d568b6a 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,144 @@ -Overview -======== +Enhance quantitative analysis of EPMA maps with QntMap +================ -This package provides functions to convert element characteristic X-ray -intensity maps into element mass concentration maps. -Current version supports data from JEOL-style electron probe -microanalyer (EPMA). -For conversion, you need to run spot analysis before mapping analysis. -See “How to” section for usage and Yasumoto et al. (submitted) for -implementations. +# Overview -Installation -============ +This package generates mass concentration maps and phase distribution +maps based on X-ray mapping data and spot analysis data from EPMA. -Install devtools package if you haven’t. +See “[How to](#how-to)” for a usage and [Yasumoto et al. +(2018)](https://doi.org/10.2138/am-2018-6323CCBY) for implementations. -``` r -install.packages("devtools") -``` +Current version supports data from JEOL-style EPMA. + +# Installation -Then, run following code. +Copy & paste a following command to R. ``` r -devtools::install_github("atusy/qntmap") +source("https://install-github.me/atusy/qntmap") ``` -How to -====== +# How to -1. Export data from EPMA analysis. -2. Run QntMap +1. [EPMA analysis](#epma-analysis) (spot before map) +2. [Export data](#Export) from EPMA to PC +3. [Run QntMap on R](#run-qntmap-on-r) for data processing. -Read below for details. +Details below. -EPMA analysis -------------- +## EPMA analysis -QntMap handles matrix effect by preparing internal standards based on -spot analysis. +Conversion is performed by utilizing spot analysis data as internal +standards. Thus, [spot analysis](#spot-analysis) must be done prior to +[mapping](#mapping). ### Spot analysis -- Analytical conditions - - Same as those conventionally applied in your lab. - - Use wavelength-dispersive X-ray spectrometer -- Spots to be analyzed - - **20 spots per phase** in the area to be mapped (the more is + - Analytical conditions + - Same as those conventionally applied in your lab. + - Use wavelength-dispersive X-ray spectrometer + - Spots to be analyzed + - **20 spots per phase** in the area to be mapped (the more is better). - - It is better but not necessary to quantify grains larger than + - It is better but not necessary to quantify grains larger than mapping probe diameter. - - Make sure at least **20 spots per element** are analyzing grains + - Make sure at least **20 spots per element** are analyzing grains larger than mapping probe diameter. -- Commenting analysis - - Give same comments on the same phase with the similar - compositions. Do not number them. - - e.g., quartz, plagioclase, … - - Otherwise, comment them with different name. This is important - treatment for phase identification and handling matrix effect. - - e.g., garnet-core, garnet-rim - - If you give comments containing underscore such as - “garnet\_core” and “garnet\_rim”, then they are treated as if - different phases in phase identification, but are treated as if - their matrix effect are approximately same. - - Alternatively, give comments manually by external file. - -Spot quantitative analytical conditions in your lab. - -### Mapping analysis - -- Analytical conditions - - Acceralating voltage should be same as one applied in spot - analysis. - - Probe diameter should be larger than spot analysis. The larger - saves more time, but decreases spatial resolutions. - - Probe current is recommended to be 100 nA following Lanari et + - Identify phases in comment + - Give same comments on the same phase with the similar + compositions. + - e.g., quartz, plagioclase, garnet-core, garnet-rim, … + - An alternative is to use external file later. + +### Mapping + + - Analytical conditions + - Acceralating voltage must be same as that in spot analysis. + - Probe diameter should be larger than that in spot analysis. + - Probe current is recommended to be 100 nA following Lanari et al. (2014). - - Dwell time is recommended to be 0.1 - 0.3 sec following Lanari - et al. (2014). - - Note that increasing probe current accepts decreasing dwell - time, but probe current must not be too high to saturate X-ray - detectors. If you prefer high probe current in some reason, - consider changing dispersive crystals from those chosen in spot - analysis. - - e.g., chose PET instead of TAP for Si + - Dwell time is recommended to be 0.1 - 0.3 sec following Lanari + et al. +(2014). ### Example of analytical conditions -Yasumoto et al. (submitted) +| | Spot | Map | Comment | +| :------------------- | -----: | -------: | :------------------------------- | +| Acceralating Voltate | 15 kV | 15 kV | Must be same in spot and map | +| Probe diameter | 3 μm | 20 μm | Must be smaller in spot than map | +| Probe current | 10 nA | 100 nA | | +| Peak dwell | 10 sec | 120 msec | | +| Background dwell | 5 sec | NA | No need to analyze in map | + +## Export data + +1. **ASCII conert** mapping data into matrix format, and save the + result in the directory where raw data is stored (e.g., `.map/1`). +2. Export whole directory of analysis containing `.map` directory and + `.qnt` directory + +### File structure + +A minimal example. See links for descrptions. `*` is a wild card. + + - .map/\*/ + - \*\_map.txt + - \*.cnd + - .qnt/ + - [.cnd/elemw.cnd](#elemwcnd) + - [bgm.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [bgp.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [elem.qnt](#elemqnt-elintqnt) + - [elint.qnt](#elemqnt-elintqnt) + - [mes.qnt](#mesqnt) + - [net.qnt](#bgmqnt-bgpqnt-pkintqnt-netqnt) + - [peak.qnt](#peakqnt) + - [stg.qnt](#stgqnt) + - [wt.qnt](#wtqnt) + +#### elemw.cnd + +includes dwell time for peak and background, relative positions of +backgrounds. + +In some case, this file is incomplete or missing, and needs to be +prepared manually (e.g., +). + +#### bgm.qnt, bgp.qnt, pkint.qnt, net.qnt -| | Spot| Map| Comment | -|:---------------------|-------:|---------:|:---------------------------------| -| Acceralating Voltate | 15 kV| 15 kV| Must be same in spot and map | -| Probe diameter | 3 μm| 20 μm| Must be smaller in spot than map | -| Probe current | 10 nA| 100 nA| | -| Peak dwell | 10 sec| 120 msec| | -| Background dwell | 5 sec| NA| No need to analyze in map | +include background (minus and plus), peak, and net intensities of each +analysis. In some environemts, `pkint.qnt` is missing, but is +complemented within QntMap. -Data processing with QntMap package on R ----------------------------------------- +#### elem.qnt and elint.qnt -### Quantification +include name of elements data correction (“elem.qnt”; oxide or metal in +ZAF), counting intensities (“elint.qnt”). -By running following code, you’ll see that phase identification result -in ‘clustering’ directory and mass concentration data as csv files in -‘qntmap’ directory both under the directory contaning mapping data. +#### mes.qnt -#### Interactive mode +includes probe current of each analysis. + +#### peak.qnt + +includes positions of peak intensities of each element of each analysis. + +#### stg.qnt + +includes coordinates and comments of each analysis. + +#### wt.qnt + +includes mass concentrations of each analysis. + +## Run QntMap on R + +For data processing + +### Interactive mode Follow instructions shown by running the following code. @@ -113,7 +147,17 @@ library(qntmap) qntmap() ``` -#### Manual mode for experts (example) +As a result, phase identification result is saved in “`clustering`” +directory and mass concentration data as csv files in “`qntmap`” +directory both under the directory contaning mapping data. + +Note that interactive mode has limited functions. Use [manual +mode](#manual-mode) for full functionality. + +### Manual mode + +A work-flow with example dataset is available at + . ``` r library(qntmap) @@ -152,21 +196,21 @@ qnt <- read_qnt(wd = dir_qnt, phase_list = phase_list, renew = TRUE) # Determine initial cluster centers centers <- find_centers(xmap = xmap, qnt = qnt, fine_phase = fine_phase) ## Check 'centers0.csv' under the `wd` and modify on demand. -## if modified, assign content of the modified csv file by running +## If modified, assign content of the modified csv file by running ## centers <- data.table::fread('path to the modified csv file') # Phase identification -# assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' +# Assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' # (e.g., garnet_a and garnet_b are integrated to garnet if TRUE) cls <- cluster_xmap(xmap = xmap, centers = centers, group_cluster = FALSE) -# quantify X-ray maps +# Quantify X-ray maps qmap <- quantify( xmap = xmap, qnt = qnt, cluster = cls, fine_phase = fine_phase ) ## Resulting files are saved in `qntmap` directory` under `dir_map`. -# summarize result +# Summarize result summary(qmap) ## This shows minimum, lower quantile, median, mean, upper quantile, and maximum values of variables. ``` diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index f18e4c2..20869d2 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -61,7 +61,7 @@ qntmap - 0.2.2 + 0.3.0 diff --git a/docs/articles/add_phase.html b/docs/articles/add_phase.html index 7004172..c30ca86 100644 --- a/docs/articles/add_phase.html +++ b/docs/articles/add_phase.html @@ -31,7 +31,7 @@ qntmap - 0.2.2 + 0.3.0 @@ -81,15 +81,13 @@ - - -
+
@@ -81,15 +81,13 @@ - - -
+

@@ -159,10 +158,11 @@

Plot X-ray map data as heatmap

-

Plots are by default interactive. Specify ‘Si’ instead of ‘Mg’ to see Si map. Specify interactive = FALSE if necessary.

-
plot(xmap, 'Mg', interactive = TRUE)
-
- +

Plots are by default interactive with webui. Selection of elements can be done on webui.

+ +

diff --git a/docs/articles/basic_files/figure-html/unnamed-chunk-15-1.png b/docs/articles/basic_files/figure-html/unnamed-chunk-15-1.png index 138d1cbc902ccb24cd7897287cfff92cbe1d35d7..6e43745cdd890cc4f0c34a3b4b68bd7e8c387528 100644 GIT binary patch literal 61870 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 literal 73237 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 diff --git a/docs/articles/basic_files/figure-html/unnamed-chunk-8-1.png b/docs/articles/basic_files/figure-html/unnamed-chunk-8-1.png new file mode 100644 index 0000000000000000000000000000000000000000..268fa800eb578004e10584f67de25fbf40422224 GIT binary patch literal 66813 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
yikiOvV!YbEj`^zv&(dD`bYYd% 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 C88t5e literal 0 HcmV?d00001 diff --git a/docs/articles/index.html b/docs/articles/index.html index d80bc3a..85a977a 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -61,7 +61,7 @@
qntmap - 0.2.2 + 0.3.0

diff --git a/docs/authors.html b/docs/authors.html index 71ef1af..c7e7bd1 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -61,7 +61,7 @@ qntmap - 0.2.2 + 0.3.0

diff --git a/docs/index.html b/docs/index.html index be3cbe6..5509c0c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,12 +5,12 @@ -Enhance quantitative analysis of EPMA data • qntmap +Enhance quantitative analysis of EPMA map • qntmap - + @@ -33,7 +33,7 @@ qntmap - 0.2.2 + 0.3.0
@@ -92,31 +92,32 @@
-

This package provides functions to convert element characteristic X-ray intensity maps into element mass concentration maps.
-Current version supports data from JEOL-style electron probe microanalyer (EPMA).
-For conversion, you need to run spot analysis before mapping analysis.
-See “How to” section for usage and Yasumoto et al. (2018) for implementations.

+

This package generates mass concentration maps and phase distribution maps based on X-ray mapping data and spot analysis data from EPMA.

+

See “How to” for a usage and Yasumoto et al. (2018) for implementations.

+

Current version supports data from JEOL-style EPMA.

Installation

-

Install devtools package if you haven’t.

- -

Then, run following code.

-
devtools::install_github("atusy/qntmap")
+

Copy & paste a following command to R.

+

How to

    -
  1. Export data from EPMA analysis.
  2. -
  3. Run QntMap
  4. +
  5. +EPMA analysis (spot before map)
  6. +
  7. +Export data from EPMA to PC
  8. +
  9. +Run QntMap on R for data processing.
-

Read below for details.

+

Details below.

EPMA analysis

-

QntMap handles matrix effect by preparing internal standards based on spot analysis.

+

Conversion is performed by utilizing spot analysis data as internal standards. Thus, spot analysis must be done prior to mapping.

Spot analysis

@@ -135,40 +136,28 @@

  • Make sure at least 20 spots per element are analyzing grains larger than mapping probe diameter.
  • -
  • Commenting analysis +
  • Identify phases in comment
      -
    • Give same comments on the same phase with the similar compositions. Do not number them. -
        -
      • e.g., quartz, plagioclase, …
      • -
      -
    • -
    • Otherwise, comment them with different name. This is important treatment for phase identification and handling matrix effect. +
    • Give same comments on the same phase with the similar compositions.
        -
      • e.g., garnet-core, garnet-rim
      • +
      • e.g., quartz, plagioclase, garnet-core, garnet-rim, …
    • -
    • If you give comments containing underscore such as “garnet_core” and “garnet_rim”, then they are treated as if different phases in phase identification, but are treated as if their matrix effect are approximately same.
    • -
    • Alternatively, give comments manually by external file.
    • +
    • An alternative is to use external file later.
  • -

    Spot quantitative analytical conditions in your lab.

    -
    +

    -Mapping analysis

    +Mapping
    • Analytical conditions
        -
      • Acceralating voltage should be same as one applied in spot analysis.
      • -
      • Probe diameter should be larger than spot analysis. The larger saves more time, but decreases spatial resolutions.
      • +
      • Acceralating voltage must be same as that in spot analysis.
      • +
      • Probe diameter should be larger than that in spot analysis.
      • Probe current is recommended to be 100 nA following Lanari et al. (2014).
      • Dwell time is recommended to be 0.1 - 0.3 sec following Lanari et al. (2014).
      • -
      • Note that increasing probe current accepts decreasing dwell time, but probe current must not be too high to saturate X-ray detectors. If you prefer high probe current in some reason, consider changing dispersive crystals from those chosen in spot analysis. -
          -
        • e.g., chose PET instead of TAP for Si
        • -
        -
    @@ -176,7 +165,6 @@

    Example of analytical conditions

    -

    Yasumoto et al. (submitted)

    @@ -219,77 +207,148 @@

    -
    +

    -Data processing with QntMap package on R

    -
    +Export data +
      +
    1. +ASCII conert mapping data into matrix format, and save the result in the directory where raw data is stored (e.g., .map/1).
    2. +
    3. Export whole directory of analysis containing .map directory and .qnt directory
    4. +
    +

    -Quantification

    -

    By running following code, you’ll see that phase identification result in ‘clustering’ directory and mass concentration data as csv files in ‘qntmap’ directory both under the directory contaning mapping data.

    -
    +File structure +

    A minimal example. See links for descrptions. * is a wild card.

    + +

    -Interactive mode

    -

    Follow instructions shown by running the following code.

    - +elemw.cnd +

    includes dwell time for peak and background, relative positions of backgrounds.

    +

    In some case, this file is incomplete or missing, and needs to be prepared manually (e.g., https://gist.github.com/atusy/f1577b67b8874c9e915941c0725d0e22).

    +
    +
    +

    +bgm.qnt, bgp.qnt, pkint.qnt, net.qnt

    +

    include background (minus and plus), peak, and net intensities of each analysis. In some environemts, pkint.qnt is missing, but is complemented within QntMap.

    +
    +
    +

    +elem.qnt and elint.qnt

    +

    include name of elements data correction (“elem.qnt”; oxide or metal in ZAF), counting intensities (“elint.qnt”).

    +
    +
    +

    +mes.qnt

    +

    includes probe current of each analysis.

    +
    +
    +

    +peak.qnt

    +

    includes positions of peak intensities of each element of each analysis.

    -
    +

    -Manual mode for experts (example)

    -
    library(qntmap)
    -
    -# Required parameters
    -wd <- '.' # path to the working directory
    -dir_map <- '.map/1' # relative/absolute path to the directory containing ascii converted X-ray map files (1_map.txt, 2_map.txt, and so on)"
    -dir_qnt <- '.qnt' # relative/absolute path to the directory containing .qnt files (pkint.qnt, net.qnt, and so on)"
    -
    -
    -# Optional parameters
    -
    -## A character vector to specify phases tend to be smaller than mapping probe diameter
    -fine_phase <- NULL 
    -
    -## A csv file indicating name of the phase of n-th quantitative point analysis.
    -## The file path is absolute or relative to `dir_qnt`.
    -## If NULL, names are assumed to be specified in comments during EPMA analysis.
    -phase_list <- NULL 
    -
    -# Run analysis
    -
    -# Set working directory
    -setwd(wd)
    -
    -# Load mapping data
    -# Change value of DT (dead time in nanoseconds) depending on EPMA.
    -# 1100 ns is a value applied by JEOL JXA-8105.
    -xmap <- read_xmap(wd = dir_map, DT = 1100)
    -
    -# Compile quantitative data
    -qnt <- read_qnt(wd = dir_qnt, phase_list = phase_list, renew = TRUE)
    -## Check 'phase_list0.csv' under 'dir_qnt' to see if name of phases are provided properly.
    -## If not, modify the csv file and specify the path of modified one to `phase_list` in "Optional parameters" section and rerun the above code.
    -
    -# Determine initial cluster centers
    -centers <- find_centers(xmap = xmap, qnt = qnt, fine_phase = fine_phase)
    -## Check 'centers0.csv' under the `wd` and modify on demand.
    -## if modified, assign content of the modified csv file by running
    -## centers <- data.table::fread('path to the modified csv file')
    -
    -# Phase identification
    -# assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' 
    -# (e.g., garnet_a and garnet_b are integrated to garnet if TRUE)
    -cls <- cluster_xmap(xmap = xmap, centers = centers, group_cluster = FALSE)
    -
    -# quantify X-ray maps
    -qmap <- quantify(
    -  xmap = xmap, qnt = qnt, cluster = cls, fine_phase = fine_phase
    -)
    -## Resulting files are saved in `qntmap` directory` under `dir_map`.
    -
    -# summarize result
    -summary(qmap)
    -## This shows minimum, lower quantile, median, mean, upper quantile, and maximum values of variables.
    +stg.qnt +

    includes coordinates and comments of each analysis.

    +
    +

    +wt.qnt

    +

    includes mass concentrations of each analysis.

    +
    +
    +
    +
    +

    +Run QntMap on R

    +

    For data processing

    +
    +

    +Interactive mode

    +

    Follow instructions shown by running the following code.

    + +

    As a result, phase identification result is saved in “clustering” directory and mass concentration data as csv files in “qntmap” directory both under the directory contaning mapping data.

    +

    Note that interactive mode has limited functions. Use manual mode for full functionality.

    +
    +
    +

    +Manual mode

    +

    A work-flow with example dataset is available at https://atusy.github.io/qntmap/articles/basic.html .

    +
    library(qntmap)
    +
    +# Required parameters
    +wd <- '.' # path to the working directory
    +dir_map <- '.map/1' # relative/absolute path to the directory containing ascii converted X-ray map files (1_map.txt, 2_map.txt, and so on)"
    +dir_qnt <- '.qnt' # relative/absolute path to the directory containing .qnt files (pkint.qnt, net.qnt, and so on)"
    +
    +
    +# Optional parameters
    +
    +## A character vector to specify phases tend to be smaller than mapping probe diameter
    +fine_phase <- NULL 
    +
    +## A csv file indicating name of the phase of n-th quantitative point analysis.
    +## The file path is absolute or relative to `dir_qnt`.
    +## If NULL, names are assumed to be specified in comments during EPMA analysis.
    +phase_list <- NULL 
    +
    +# Run analysis
    +
    +# Set working directory
    +setwd(wd)
    +
    +# Load mapping data
    +# Change value of DT (dead time in nanoseconds) depending on EPMA.
    +# 1100 ns is a value applied by JEOL JXA-8105.
    +xmap <- read_xmap(wd = dir_map, DT = 1100)
    +
    +# Compile quantitative data
    +qnt <- read_qnt(wd = dir_qnt, phase_list = phase_list, renew = TRUE)
    +## Check 'phase_list0.csv' under 'dir_qnt' to see if name of phases are provided properly.
    +## If not, modify the csv file and specify the path of modified one to `phase_list` in "Optional parameters" section and rerun the above code.
    +
    +# Determine initial cluster centers
    +centers <- find_centers(xmap = xmap, qnt = qnt, fine_phase = fine_phase)
    +## Check 'centers0.csv' under the `wd` and modify on demand.
    +## If modified, assign content of the modified csv file by running
    +## centers <- data.table::fread('path to the modified csv file')
    +
    +# Phase identification
    +# Assign group_cluster = TRUE if you want to integrate same phases subgrouped by suffix after '_' 
    +# (e.g., garnet_a and garnet_b are integrated to garnet if TRUE)
    +cls <- cluster_xmap(xmap = xmap, centers = centers, group_cluster = FALSE)
    +
    +# Quantify X-ray maps
    +qmap <- quantify(
    +  xmap = xmap, qnt = qnt, cluster = cls, fine_phase = fine_phase
    +)
    +## Resulting files are saved in `qntmap` directory` under `dir_map`.
    +
    +# Summarize result
    +summary(qmap)
    +## This shows minimum, lower quantile, median, mean, upper quantile, and maximum values of variables.
    diff --git a/docs/news/index.html b/docs/news/index.html index 60bc36a..7bf6bf6 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -61,7 +61,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -119,12 +119,49 @@

    Changelog

    Source: NEWS.md
    -
    +

    -qntmap 0.2.2

    +qntmap 0.3.0

    Major changes

    +
      +
    • +plot() +
        +
      • Interactive plot is a combination of shiny, ggplot2, and more. No more using plotly. +
          +
        • Color control with histogram
        • +
        • Hover information of pixels
        • +
        • Zooming
        • +
        • Moving
        • +
        • Summarizing data in a table below heatmap +
            +
          • Double click to keep pixel data
          • +
          • Box select to keep mean values of data
          • +
          +
        • +
        +
      • +
      • Grayscale is supported in addition to viridis.
      • +
      • Clustering result is supported.
      • +
      +
    • +
    • +segment() +
        +
      • Only allows PNG format as an input. No more JPG nor BMP allowed.
      • +
      +
    • +
    +
    +
    +
    +

    +qntmap 0.2.2

    +
    +

    +Major changes

    New features

    @@ -216,9 +253,9 @@

  • The above change cause read_qnt to save its result (qnt.RDS) and semi-product (phase_list0.csv) in the directory containing .qnt files unlike qnt_load saved them under the working directory.
  • -
    +

    -Major changes

    +Major changes
    • Monster functions are separated into smaller functions.
        @@ -315,6 +352,7 @@

        Contents

        @@ -138,11 +138,16 @@

        Arg centers -

        c-by-p matrix returned by find_centers() or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically data.frame or matrix, indicating initial guess centers (or centroids) or clusters. See find_centers().

        +

        c-by-p matrix returned by find_centers() or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically data.frame or matrix, +indicating initial guess centers (or centroids) or clusters. +See find_centers().

        xmap -

        an qm_xmap class object generated by `read_xmap()``

        +

        an qm_xmap class object generated by read_xmap()

        x @@ -177,8 +182,7 @@

        Arg

        See also

        - +

        Examples

        diff --git a/docs/reference/cluster.html b/docs/reference/cluster.html index bae596d..2c78311 100644 --- a/docs/reference/cluster.html +++ b/docs/reference/cluster.html @@ -6,7 +6,7 @@ -Poisson distribution based custering based on <code>PoiClaClu:Classify()</code> — cluster • qntmap +Poisson distribution based custering based on <code><a href='http://www.rdocumentation.org/packages/PoiClaClu/topics/Classify'>PoiClaClu::Classify()</a></code> — cluster • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -118,14 +118,14 @@
    -

    Poisson distribution based custering based on PoiClaClu:Classify()

    +

    Poisson distribution based custering based on PoiClaClu::Classify()

    @@ -141,7 +141,12 @@

    Arg centers -

    c-by-p matrix returned by find_centers() or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically data.frame or matrix, indicating initial guess centers (or centroids) or clusters. See find_centers().

    +

    c-by-p matrix returned by find_centers() or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically data.frame or matrix, +indicating initial guess centers (or centroids) or clusters. +See find_centers().

    xte @@ -221,7 +226,7 @@

    R

    See also

    - +
    diff --git a/docs/reference/cluster_xmap.html b/docs/reference/cluster_xmap.html index 19f5f26..357f604 100644 --- a/docs/reference/cluster_xmap.html +++ b/docs/reference/cluster_xmap.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -137,15 +137,21 @@

    Arg xmap -

    a qm_xmap class object returned by read_xmap

    +

    a qm_xmap class object returned by read_xmap()

    centers -

    c-by-p matrix returned by find_centers() or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically data.frame or matrix, indicating initial guess centers (or centroids) or clusters. See find_centers().

    +

    c-by-p matrix returned by find_centers() or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically data.frame or matrix, +indicating initial guess centers (or centroids) or clusters. +See find_centers().

    elements -

    A character vector indicating which elements to be utilized in cluster analysis. NULL, in default, selects as much elements as possible are utilized in cluster analysis.

    +

    A character vector to chose elements to be utilized in cluster analysis. +NULL (default) selects as much elements as possible.

    saving @@ -153,7 +159,9 @@

    Arg group_cluster -

    TRUE (default) or FALSE to integrate same phase subgrouped using suffix. For example, when there are clusters named as Pl_NaRich and Pl_NaPoor, they are grouped as Pl.

    +

    FALSE (default) or TRUE to integrate same phase subgrouped using suffix. +For example, +clusters named "Pl_NaRich" and "Pl_NaPoor" are integrated to "Pl" cluster .

    diff --git a/docs/reference/find_centers.html b/docs/reference/find_centers.html index 28302e6..0001685 100644 --- a/docs/reference/find_centers.html +++ b/docs/reference/find_centers.html @@ -6,7 +6,7 @@ -Initialize centroids for <code>cluster_xmap()</code> — find_centers • qntmap +Initialize centroids for <code><a href='cluster_xmap.html'>cluster_xmap()</a></code> — find_centers • qntmap @@ -32,7 +32,7 @@ - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -118,7 +118,7 @@
    @@ -136,15 +136,16 @@

    Arg xmap -

    an qm_xmap class object generated by `read_xmap()``

    +

    an qm_xmap class object generated by read_xmap()

    qnt -

    an qm_qnt class object generated by `read_qnt()``

    +

    an qm_qnt class object generated by read_qnt()`

    fine_phase -

    A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    +

    A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    saveas diff --git a/docs/reference/find_centers_kpp.html b/docs/reference/find_centers_kpp.html index 8b7bcbe..22df15f 100644 --- a/docs/reference/find_centers_kpp.html +++ b/docs/reference/find_centers_kpp.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -136,7 +136,8 @@

    Arg x -

    An object which can be coerced to matrix, typically matrix itself or data.frame.

    +

    An object which can be coerced to matrix, +typically matrix itself or data.frame.

    k diff --git a/docs/reference/group_cluster.html b/docs/reference/group_cluster.html index 4ecb233..45119aa 100644 --- a/docs/reference/group_cluster.html +++ b/docs/reference/group_cluster.html @@ -65,7 +65,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -138,7 +138,7 @@

    Arg x -

    qm_cluster class object returned by qltmap_cls_pois().

    +

    qm_cluster class object returned by cluster_xmap().

    saving diff --git a/docs/reference/index.html b/docs/reference/index.html index 54e1110..73fbcdb 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -61,7 +61,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -144,7 +144,7 @@

    cluster()

    -

    Poisson distribution based custering based on PoiClaClu:Classify()

    +

    Poisson distribution based custering based on PoiClaClu::Classify()

    @@ -184,7 +184,7 @@

    plot(<qm_xmap>) plot(<qntmap>)

    +

    plot(<qm_raster>) plot(<qm_xmap>) plot(<qntmap>) plot(<qm_cluster>)

    Plot methods for qntmap package

    @@ -198,7 +198,7 @@

    qltmap_cls_centers()

    -

    (Deprecated) Use find_centers

    +

    (DEPRECATED) Use find_centers

    @@ -210,25 +210,25 @@

    qntmap()

    -

    interactively quantify X-ray maps

    +

    Interactively quantify X-ray maps

    qntmap_cls_pois()

    -

    (Deprecated) Use cluster_xmap()

    +

    (DEPRECATED) Use cluster_xmap()

    qntmap_quantify()

    -

    (Deprecated) Use quantify.

    +

    (DEPRECATED) Use quantify.

    quantify()

    -

    quantify qualtitative mapping data

    +

    Quantify X-ray maps

    diff --git a/docs/reference/mean.html b/docs/reference/mean.html index e2e7730..bc27445 100644 --- a/docs/reference/mean.html +++ b/docs/reference/mean.html @@ -35,7 +35,7 @@ +See base::mean() for general use of mean()." /> @@ -65,7 +65,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -127,7 +127,7 @@

    Arithmetric mean for qntmap package

    S3 methods for the arithmetric mean. -See base::mean() for general use of plot.

    +See base::mean() for general use of mean().

    @@ -160,10 +160,7 @@

    See also

    - +

    Examples

    diff --git a/docs/reference/pick.html b/docs/reference/pick.html index 559616f..6c57757 100644 --- a/docs/reference/pick.html +++ b/docs/reference/pick.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/docs/reference/plot-1.png b/docs/reference/plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a940869d918e34ceb791d0f6ffea33756ee84885 GIT binary patch literal 15843 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 F`Y)HN@3Q~^ literal 0 HcmV?d00001 diff --git a/docs/reference/plot.html b/docs/reference/plot.html index 6f9548d..4e4aefd 100644 --- a/docs/reference/plot.html +++ b/docs/reference/plot.html @@ -66,7 +66,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -133,13 +133,18 @@

    Plot methods for qntmap package

    -
    # S3 method for qm_xmap
    +    
    # S3 method for qm_raster
     plot(x, y = setdiff(names(x), c("x", "y"))[1],
    -  legend_fill = y, interactive = TRUE, ..., shiny = FALSE)
    +  colors = c("viridis", "gray"), interactive = TRUE, ...)
    +
    +# S3 method for qm_xmap
    +plot(x, y = setdiff(names(x), c("x", "y"))[1], ...)
     
     # S3 method for qntmap
    -plot(x, y = setdiff(names(x), c("x", "y"))[1],
    -  legend_fill = y, interactive = TRUE, ..., shiny = FALSE)
    +plot(x, y = setdiff(names(x), c("x", "y"))[1], ...) + +# S3 method for qm_cluster +plot(x, y = NULL, ...)

    Arguments

    @@ -154,23 +159,18 @@

    Arg

    - - + + - + - - - -

    A string specifying a component of x to determine colors to fill the map.

    legend_fill

    A string to specify legend name for fill. -Default value is taken from y.

    colors

    A color pallete to use. Either "viridis" (default) or "gray".

    interactive

    TRUE returns plotly object (default), and -FALSE returns ggplot object.

    TRUE (default) produces plots with shiny WebUI, and +FALSE produces plots with ggplot2::ggplot().

    ...

    ignored

    shiny

    See plots using Shiny (default: FALSE)

    See also

    @@ -179,15 +179,27 @@

    See a

    Examples

    -
    # qm_xmap class object +
    # qm_raster class object +d <- data.frame(x = sample.int(5), y = sample.int(5), fill = runif(5)) +class(d) <- c('qm_raster', class(d)) +plot(d, 'fill', interactive = FALSE)
    +# qm_xmap class object xm <- list(A = as.data.frame(matrix(runif(25), 5))) class(xm) <- c('qm_xmap', 'list') -plot(xm) - +plot(xm, interactive = FALSE)
    # qntmap class object qm <- list(A = list(wt = as.data.frame(matrix(runif(25), 5)))) class(qm) <- c( 'qntmap', 'list') -plot(qm)
    +plot(qm, interactive = FALSE)
    +# qm_cluster class object +cls <- list( + ytehat = sample.int(3, 9, replace = TRUE), + dims = c(3, 3) +) +names(cls$ytehat) <- letters[cls$ytehat] +class(cls) <- "qm_cluster" +plot(cls, interactive = FALSE)
    +
    diff --git a/docs/reference/qltmap_cls_centers.html b/docs/reference/qltmap_cls_centers.html index 762214a..315def3 100644 --- a/docs/reference/qltmap_cls_centers.html +++ b/docs/reference/qltmap_cls_centers.html @@ -6,7 +6,7 @@ -(Deprecated) Use find_centers — qltmap_cls_centers • qntmap +(DEPRECATED) Use find_centers — qltmap_cls_centers • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -118,14 +118,14 @@
    -

    (Deprecated) Use find_centers

    +

    (DEPRECATED) Use find_centers

    diff --git a/docs/reference/qltmap_load.html b/docs/reference/qltmap_load.html index 7552b6f..f5f54fa 100644 --- a/docs/reference/qltmap_load.html +++ b/docs/reference/qltmap_load.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/docs/reference/qntmap.html b/docs/reference/qntmap.html index e3b075a..8049c1a 100644 --- a/docs/reference/qntmap.html +++ b/docs/reference/qntmap.html @@ -6,7 +6,7 @@ -interactively quantify X-ray maps — qntmap • qntmap +Interactively quantify X-ray maps — qntmap • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -118,14 +118,14 @@
    -

    interactively quantify X-ray maps

    +

    Interactively quantify X-ray maps

    diff --git a/docs/reference/qntmap_cls_pois.html b/docs/reference/qntmap_cls_pois.html index e865080..a1704f9 100644 --- a/docs/reference/qntmap_cls_pois.html +++ b/docs/reference/qntmap_cls_pois.html @@ -6,7 +6,7 @@ -(Deprecated) Use <code>cluster_xmap()</code> — qntmap_cls_pois • qntmap +(DEPRECATED) Use <code>cluster_xmap()</code> — qntmap_cls_pois • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -118,14 +118,14 @@
    -

    (Deprecated) Use cluster_xmap()

    +

    (DEPRECATED) Use cluster_xmap()

    @@ -145,7 +145,8 @@

    Arg elements -

    A character vector indicating which elements to be utilized in cluster analysis. NULL, in default, selects as much elements as possible are utilized in cluster analysis.

    +

    A character vector to chose elements to be utilized in cluster analysis. +NULL (default) selects as much elements as possible.

    wd diff --git a/docs/reference/qntmap_quantify.html b/docs/reference/qntmap_quantify.html index 44490fb..073e072 100644 --- a/docs/reference/qntmap_quantify.html +++ b/docs/reference/qntmap_quantify.html @@ -6,7 +6,7 @@ -(Deprecated) Use quantify. — qntmap_quantify • qntmap +(DEPRECATED) Use quantify. — qntmap_quantify • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -118,14 +118,14 @@
    -

    (Deprecated) Use quantify.

    +

    (DEPRECATED) Use quantify.

    @@ -151,15 +151,18 @@

    Arg maps_x -

    A x-axis size of maps comprising guide net map (default: NULL).

    +

    Sizes of maps along x- and y-axes comprising guide net map. +(default: NULL).

    maps_y -

    A y-axis size of maps comprising guide net map (default: NULL).

    +

    Sizes of maps along x- and y-axes comprising guide net map. +(default: NULL).

    fine_phase -

    A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    +

    A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    fine_th @@ -175,7 +178,7 @@

    Arg cluster -

    qm_cluster class object returned by cluter_xmap().

    +

    qm_cluster class object returned by cluster_xmap().

    diff --git a/docs/reference/quantify.html b/docs/reference/quantify.html index 6e55a34..7d6645d 100644 --- a/docs/reference/quantify.html +++ b/docs/reference/quantify.html @@ -6,7 +6,7 @@ -quantify qualtitative mapping data — quantify • qntmap +Quantify X-ray maps — quantify • qntmap @@ -32,9 +32,9 @@ - + - + @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -118,14 +118,14 @@
    -

    quantify qualtitative mapping data

    +

    Quantify X-ray maps

    @@ -145,19 +145,17 @@

    Arg cluster -

    qm_cluster class object returned by cluter_xmap().

    +

    qm_cluster class object returned by cluster_xmap().

    - maps_x -

    A x-axis size of maps comprising guide net map (default: NULL).

    - - - maps_y -

    A y-axis size of maps comprising guide net map (default: NULL).

    + maps_x, maps_y +

    Sizes of maps along x- and y-axes comprising guide net map. +(default: NULL).

    fine_phase -

    A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    +

    A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')

    fine_th diff --git a/docs/reference/read_cnd.html b/docs/reference/read_cnd.html index d32ed3f..3d5f725 100644 --- a/docs/reference/read_cnd.html +++ b/docs/reference/read_cnd.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0

    @@ -165,7 +165,7 @@

    Arg

    .default

    -

    A default method which returns a result of readLines(x) +

    A default method which returns a result of readLines() with additional class according to the content of the file.

    read_cnd.map_cnd

    diff --git a/docs/reference/read_qnt.html b/docs/reference/read_qnt.html index 5eaed4d..cda7aca 100644 --- a/docs/reference/read_qnt.html +++ b/docs/reference/read_qnt.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/docs/reference/read_xmap.html b/docs/reference/read_xmap.html index ae9fb92..f3247b8 100644 --- a/docs/reference/read_xmap.html +++ b/docs/reference/read_xmap.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/docs/reference/save4qm.html b/docs/reference/save4qm.html index 35168cb..babaef2 100644 --- a/docs/reference/save4qm.html +++ b/docs/reference/save4qm.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -188,7 +188,8 @@

    save4qm.qm_cluster

    -

    A method for qm_cluster class returned by cluster_xmap() or cluster_group(). +

    A method for qm_cluster class returned by +cluster_xmap() or group_cluster(). Object is saved as RDS file and png file. The latter shows distribution of phases among a mapped area.

    diff --git a/docs/reference/segment.html b/docs/reference/segment.html index 4779775..238426d 100644 --- a/docs/reference/segment.html +++ b/docs/reference/segment.html @@ -65,7 +65,7 @@ qntmap - 0.2.2 + 0.3.0
    @@ -141,7 +141,7 @@

    Arg x -

    A path to the image file (PNG, JPEG, and BMP).

    +

    A path to the PNG image file.

    ... @@ -159,20 +159,8 @@

    See a

    Examples

    -
    library(imager)
    #> Loading required package: magrittr
    #> -#> Attaching package: ‘magrittr’
    #> The following objects are masked from ‘package:testthat’: -#> -#> equals, is_less_than, not
    #> -#> Attaching package: ‘imager’
    #> The following object is masked from ‘package:magrittr’: -#> -#> add
    #> The following objects are masked from ‘package:stats’: -#> -#> convolve, spectrum
    #> The following object is masked from ‘package:graphics’: -#> -#> frame
    #> The following object is masked from ‘package:base’: -#> -#> save.image
    x <- system.file('extdata/parrots.png',package='imager') -print(x) # x is a path to the example image file.
    #> [1] "/home/atusy/R/x86_64-pc-linux-gnu-library/3.5/imager/extdata/parrots.png"
    head(segment(x)) # [1] "#747458" "#757559" "#78785C" "#77765B" "#78785C" "#78785C"
    #> [1] "#747458" "#7A775C" "#7E7B5E" "#838163" "#878565" "#8D886B"
    # NOT RUN { +
    x <- system.file("img", "Rlogo.png", package="png") +head(segment(x)) # [1] "#747458" "#757559" "#78785C" "#77765B" "#78785C" "#78785C"
    #> [1] "#00000000" "#00000000" "#00000000" "#00000000" "#00000000" "#00000000"
    # NOT RUN { segment(matrix(1:9, 3, 3)) # This gives error as current version only support a path of a image file as input # }
    diff --git a/docs/reference/summary_methods.html b/docs/reference/summary_methods.html index 6a680d1..69a0747 100644 --- a/docs/reference/summary_methods.html +++ b/docs/reference/summary_methods.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/docs/reference/tidy_epma.html b/docs/reference/tidy_epma.html index 1a52955..e6d32c3 100644 --- a/docs/reference/tidy_epma.html +++ b/docs/reference/tidy_epma.html @@ -64,7 +64,7 @@ qntmap - 0.2.2 + 0.3.0
    diff --git a/man/add_centers.Rd b/man/add_centers.Rd index 5c6583b..306a855 100644 --- a/man/add_centers.Rd +++ b/man/add_centers.Rd @@ -9,9 +9,14 @@ add_centers(centers, xmap, x = NULL, y = NULL, phase = if phase), ..., saveas = "center_add.csv") } \arguments{ -\item{centers}{c-by-p matrix returned by \code{find_centers()} or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically \code{data.frame} or \code{matrix}, indicating initial guess centers (or centroids) or clusters. See \code{find_centers()}.} +\item{centers}{c-by-p matrix returned by \code{\link[=find_centers]{find_centers()}} or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically \code{\link{data.frame}} or \code{\link{matrix}}, +indicating initial guess centers (or centroids) or clusters. +See \code{\link[=find_centers]{find_centers()}}.} -\item{xmap}{an \code{qm_xmap} class object generated by `read_xmap()``} +\item{xmap}{an \code{qm_xmap} class object generated by \code{\link[=read_xmap]{read_xmap()}}} \item{x}{ A n-by-p training data matrix; n observations and p features. Used to train the @@ -50,7 +55,5 @@ add_centers(centers, xmap, x = 1, y = 2, saveas = FALSE) } \seealso{ -\code{\link[=pick]{pick()}} - -\code{\link[=find_centers]{find_centers()}} +\code{\link[=pick]{pick()}}, \code{\link[=find_centers]{find_centers()}} } diff --git a/man/cluster.Rd b/man/cluster.Rd index ce2b478..5af989a 100644 --- a/man/cluster.Rd +++ b/man/cluster.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/cluster.R \name{cluster} \alias{cluster} -\title{Poisson distribution based custering based on \code{PoiClaClu:Classify()}} +\title{Poisson distribution based custering based on \code{\link[PoiClaClu:Classify]{PoiClaClu::Classify()}}} \usage{ cluster(x, centers, xte = NULL, ...) } @@ -12,7 +12,12 @@ A n-by-p training data matrix; n observations and p features. Used to train the classifier. } -\item{centers}{c-by-p matrix returned by \code{find_centers()} or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically \code{data.frame} or \code{matrix}, indicating initial guess centers (or centroids) or clusters. See \code{find_centers()}.} +\item{centers}{c-by-p matrix returned by \code{\link[=find_centers]{find_centers()}} or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically \code{\link{data.frame}} or \code{\link{matrix}}, +indicating initial guess centers (or centroids) or clusters. +See \code{\link[=find_centers]{find_centers()}}.} \item{xte}{ A m-by-p data matrix: m test observations and p features. The classifier @@ -94,12 +99,12 @@ xte belongs to class k.} \item{alpha}{Power transformation used (if transform=TRUE).} } \description{ -Poisson distribution based custering based on \code{PoiClaClu:Classify()} +Poisson distribution based custering based on \code{\link[PoiClaClu:Classify]{PoiClaClu::Classify()}} } \references{ D Witten (2011) Classification and clustering of sequencing data using a Poisson model. To appear in Annals of Applied Statistics. } \seealso{ -\link[PoiClaClu]{Classify} +\code{\link[PoiClaClu:Classify]{PoiClaClu::Classify()}}, \code{\link[=find_centers]{find_centers()}} } diff --git a/man/cluster_xmap.Rd b/man/cluster_xmap.Rd index bc533bc..d796c19 100644 --- a/man/cluster_xmap.Rd +++ b/man/cluster_xmap.Rd @@ -8,15 +8,23 @@ cluster_xmap(xmap, centers, elements = intersect(names(xmap), colnames(centers)), saving = TRUE, group_cluster = FALSE) } \arguments{ -\item{xmap}{a \code{qm_xmap} class object returned by \code{read_xmap}} +\item{xmap}{a \code{qm_xmap} class object returned by \code{\link[=read_xmap]{read_xmap()}}} -\item{centers}{c-by-p matrix returned by \code{find_centers()} or by manually; c clusters and p features. Used to guess initial centers (or centroids) of clusters. A value returned by , typically \code{data.frame} or \code{matrix}, indicating initial guess centers (or centroids) or clusters. See \code{find_centers()}.} +\item{centers}{c-by-p matrix returned by \code{\link[=find_centers]{find_centers()}} or by manually; +c clusters and p features. +Used to guess initial centers (or centroids) of clusters. +A value returned by , typically \code{\link{data.frame}} or \code{\link{matrix}}, +indicating initial guess centers (or centroids) or clusters. +See \code{\link[=find_centers]{find_centers()}}.} -\item{elements}{A character vector indicating which elements to be utilized in cluster analysis. \code{NULL}, in default, selects as much elements as possible are utilized in cluster analysis.} +\item{elements}{A character vector to chose elements to be utilized in cluster analysis. +\code{NULL} (default) selects as much elements as possible.} \item{saving}{\code{TRUE} or \code{FALSE} to save result.} -\item{group_cluster}{\code{TRUE} (default) or \code{FALSE} to integrate same phase subgrouped using suffix. For example, when there are clusters named as Pl_NaRich and Pl_NaPoor, they are grouped as Pl.} +\item{group_cluster}{\code{FALSE} (default) or \code{TRUE} to integrate same phase subgrouped using suffix. +For example, +clusters named "Pl_NaRich" and "Pl_NaPoor" are integrated to "Pl" cluster .} } \description{ Cluster mapping data into mineral species diff --git a/man/find_centers.Rd b/man/find_centers.Rd index 60262fd..49fa102 100644 --- a/man/find_centers.Rd +++ b/man/find_centers.Rd @@ -2,19 +2,20 @@ % Please edit documentation in R/find_centers.R \name{find_centers} \alias{find_centers} -\title{Initialize centroids for \code{cluster_xmap()}} +\title{Initialize centroids for \code{\link[=cluster_xmap]{cluster_xmap()}}} \usage{ find_centers(xmap, qnt, fine_phase = NULL, saveas = "centers0.csv") } \arguments{ -\item{xmap}{an \code{qm_xmap} class object generated by `read_xmap()``} +\item{xmap}{an \code{qm_xmap} class object generated by \code{\link[=read_xmap]{read_xmap()}}} -\item{qnt}{an \code{qm_qnt} class object generated by `read_qnt()``} +\item{qnt}{an \code{qm_qnt} class object generated by \code{\link[=read_qnt]{read_qnt()}}`} -\item{fine_phase}{A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} +\item{fine_phase}{A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} \item{saveas}{File name to save result. FALSE if not saving.} } \description{ -Initialize centroids for \code{cluster_xmap()} +Initialize centroids for \code{\link[=cluster_xmap]{cluster_xmap()}} } diff --git a/man/find_centers_kpp.Rd b/man/find_centers_kpp.Rd index 833b430..aaea268 100644 --- a/man/find_centers_kpp.Rd +++ b/man/find_centers_kpp.Rd @@ -7,7 +7,8 @@ find_centers_kpp(x, k, given = NULL) } \arguments{ -\item{x}{An object which can be coerced to \code{matrix}, typically \code{matrix} itself or \code{data.frame}.} +\item{x}{An object which can be coerced to \code{\link{matrix}}, +typically \code{\link{matrix}} itself or \code{\link{data.frame}}.} \item{k}{A number of clusters.} diff --git a/man/group_cluster.Rd b/man/group_cluster.Rd index 2ef7588..dbe496d 100644 --- a/man/group_cluster.Rd +++ b/man/group_cluster.Rd @@ -7,7 +7,7 @@ group_cluster(x, saving = TRUE, suffix = "_.*") } \arguments{ -\item{x}{\code{qm_cluster} class object returned by \code{qltmap_cls_pois()}.} +\item{x}{\code{qm_cluster} class object returned by \code{\link[=cluster_xmap]{cluster_xmap()}}.} \item{saving}{\code{TRUE} or \code{FALSE} to save result (default: \code{TRUE}).} diff --git a/man/mean.Rd b/man/mean.Rd index be7c6c1..1d0dfa3 100644 --- a/man/mean.Rd +++ b/man/mean.Rd @@ -17,11 +17,11 @@ An index can be created using mask image through \code{\link[=segment]{segment() } \description{ S3 methods for the arithmetric mean. -See \code{\link[base:mean]{base::mean()}} for general use of \code{plot}. +See \code{\link[base:mean]{base::mean()}} for general use of \code{mean()}. } \section{mean.qntmap}{ -returns a \code{data.frame} whose first column lists elements in \code{qntmap} class object. +returns a \code{\link{data.frame}} whose first column lists elements in \code{qntmap} class object. Second to last columns lists \code{mean} values of each elements for each index. } @@ -52,11 +52,5 @@ mean(qm, index = rep(c('L', 'R'), each = 100)) } \seealso{ -\code{\link[base:mean]{base::mean()}} - -\code{\link[=segment]{segment()}} - -\code{\link[=quantify]{quantify()}} - -\code{\link[=qntmap]{qntmap()}} +\code{\link[base:mean]{base::mean()}}, \code{\link[=segment]{segment()}}, \code{\link[=quantify]{quantify()}}, \code{\link[=qntmap]{qntmap()}} } diff --git a/man/plot.Rd b/man/plot.Rd index 5715970..42888ba 100644 --- a/man/plot.Rd +++ b/man/plot.Rd @@ -2,15 +2,20 @@ % Please edit documentation in R/plot.R \name{plot} \alias{plot} +\alias{plot.qm_raster} \alias{plot.qm_xmap} \alias{plot.qntmap} +\alias{plot.qm_cluster} \title{Plot methods for \code{qntmap} package} \usage{ -\method{plot}{qm_xmap}(x, y = setdiff(names(x), c("x", "y"))[1], - legend_fill = y, interactive = TRUE, ..., shiny = FALSE) +\method{plot}{qm_raster}(x, y = setdiff(names(x), c("x", "y"))[1], + colors = c("viridis", "gray"), interactive = TRUE, ...) -\method{plot}{qntmap}(x, y = setdiff(names(x), c("x", "y"))[1], - legend_fill = y, interactive = TRUE, ..., shiny = FALSE) +\method{plot}{qm_xmap}(x, y = setdiff(names(x), c("x", "y"))[1], ...) + +\method{plot}{qntmap}(x, y = setdiff(names(x), c("x", "y"))[1], ...) + +\method{plot}{qm_cluster}(x, y = NULL, ...) } \arguments{ \item{x}{\code{qm_xmap} or \code{qntmap} class objects returned by @@ -18,15 +23,12 @@ \item{y}{A string specifying a component of \code{x} to determine colors to fill the map.} -\item{legend_fill}{A string to specify legend name for fill. -Default value is taken from \code{y}.} +\item{colors}{A color pallete to use. Either "viridis" (default) or "gray".} -\item{interactive}{\code{TRUE} returns \code{plotly} object (default), and -\code{FALSE} returns \code{ggplot} object.} +\item{interactive}{\code{TRUE} (default) produces plots with shiny WebUI, and +\code{FALSE} produces plots with \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}}.} \item{...}{ignored} - -\item{shiny}{See plots using Shiny (default: \code{FALSE})} } \description{ S3 methods to plot object with original classes in \code{qntmap} package. @@ -34,15 +36,29 @@ See \code{\link[graphics:plot]{graphics::plot()}} for general use of \code{plot} Mapping data (\code{qm_xmap} and \code{qm_qntmap} classes) are visualized by heat maps. } \examples{ +# qm_raster class object +d <- data.frame(x = sample.int(5), y = sample.int(5), fill = runif(5)) +class(d) <- c('qm_raster', class(d)) +plot(d, 'fill', interactive = FALSE) + # qm_xmap class object xm <- list(A = as.data.frame(matrix(runif(25), 5))) class(xm) <- c('qm_xmap', 'list') -plot(xm) +plot(xm, interactive = FALSE) # qntmap class object qm <- list(A = list(wt = as.data.frame(matrix(runif(25), 5)))) class(qm) <- c( 'qntmap', 'list') -plot(qm) +plot(qm, interactive = FALSE) + +# qm_cluster class object +cls <- list( + ytehat = sample.int(3, 9, replace = TRUE), + dims = c(3, 3) +) +names(cls$ytehat) <- letters[cls$ytehat] +class(cls) <- "qm_cluster" +plot(cls, interactive = FALSE) } \seealso{ diff --git a/man/print.qntmap.Rd b/man/print.qntmap.Rd index 3570e38..85e011a 100644 --- a/man/print.qntmap.Rd +++ b/man/print.qntmap.Rd @@ -7,7 +7,7 @@ \method{print}{qntmap}(x, summarizing = TRUE, ...) } \arguments{ -\item{x}{\code{qntmap} class object returned by \code{quantify()} or \code{qntmap()}.} +\item{x}{\code{qntmap} class object returned by \code{\link[=quantify]{quantify()}} or \code{\link[=qntmap]{qntmap()}}.} \item{summarizing}{\code{TRUE} or \code{FALSE} to summarize x (default: \code{TRUE}.} diff --git a/man/qltmap_cls_centers.Rd b/man/qltmap_cls_centers.Rd index 0c1e991..4eed6eb 100644 --- a/man/qltmap_cls_centers.Rd +++ b/man/qltmap_cls_centers.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/find_centers.R \name{qltmap_cls_centers} \alias{qltmap_cls_centers} -\title{(Deprecated) Use find_centers} +\title{(DEPRECATED) Use find_centers} \usage{ qltmap_cls_centers(wd = NULL, dir_map, phase_fine = NULL, qnt = read_qnt(paste0(wd, "/.qnt")), qltmap = read_xmap(dir_map), @@ -22,5 +22,5 @@ qltmap_cls_centers(wd = NULL, dir_map, phase_fine = NULL, \item{saving}{file name to save. FALSE if not saving.} } \description{ -(Deprecated) Use find_centers +(DEPRECATED) Use find_centers } diff --git a/man/qntmap.Rd b/man/qntmap.Rd index 8f36aa7..558a352 100644 --- a/man/qntmap.Rd +++ b/man/qntmap.Rd @@ -2,10 +2,10 @@ % Please edit documentation in R/qntmap.R \name{qntmap} \alias{qntmap} -\title{interactively quantify X-ray maps} +\title{Interactively quantify X-ray maps} \usage{ qntmap() } \description{ -interactively quantify X-ray maps +Interactively quantify X-ray maps } diff --git a/man/qntmap_cls_pois.Rd b/man/qntmap_cls_pois.Rd index 846333e..f3990b3 100644 --- a/man/qntmap_cls_pois.Rd +++ b/man/qntmap_cls_pois.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/cluster.R \name{qntmap_cls_pois} \alias{qntmap_cls_pois} -\title{(Deprecated) Use \code{cluster_xmap()}} +\title{(DEPRECATED) Use \code{cluster_xmap()}} \usage{ qntmap_cls_pois(centers_initial, qltmap = NULL, elements = NULL, wd = ".", saving = TRUE, integration = TRUE) @@ -12,7 +12,8 @@ qntmap_cls_pois(centers_initial, qltmap = NULL, elements = NULL, \item{qltmap}{Equivalent to \code{xmap} parameter of \code{cluster_xmap}} -\item{elements}{A character vector indicating which elements to be utilized in cluster analysis. \code{NULL}, in default, selects as much elements as possible are utilized in cluster analysis.} +\item{elements}{A character vector to chose elements to be utilized in cluster analysis. +\code{NULL} (default) selects as much elements as possible.} \item{wd}{Path to the working directory.} @@ -21,5 +22,5 @@ qntmap_cls_pois(centers_initial, qltmap = NULL, elements = NULL, \item{integration}{Equivalent to \code{group_cluster} parameter of \code{cluster_xmap}} } \description{ -(Deprecated) Use \code{cluster_xmap()} +(DEPRECATED) Use \code{cluster_xmap()} } diff --git a/man/qntmap_quantify.Rd b/man/qntmap_quantify.Rd index e75c2bf..19c2dc0 100644 --- a/man/qntmap_quantify.Rd +++ b/man/qntmap_quantify.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/quantify.R \name{qntmap_quantify} \alias{qntmap_quantify} -\title{(Deprecated) Use quantify.} +\title{(DEPRECATED) Use quantify.} \usage{ qntmap_quantify(wd = ".", dir_map, RDS_cluster, maps_x = NULL, maps_y = NULL, fine_phase = NULL, fine_th = 0.9, @@ -16,20 +16,23 @@ qntmap_quantify(wd = ".", dir_map, RDS_cluster, maps_x = NULL, \item{RDS_cluster}{path to the RDS file created by cluster_xmap} -\item{maps_x}{A x-axis size of maps comprising guide net map (default: \code{NULL}).} +\item{maps_x}{Sizes of maps along x- and y-axes comprising guide net map. +(default: \code{NULL}).} -\item{maps_y}{A y-axis size of maps comprising guide net map (default: \code{NULL}).} +\item{maps_y}{Sizes of maps along x- and y-axes comprising guide net map. +(default: \code{NULL}).} -\item{fine_phase}{A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} +\item{fine_phase}{A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} \item{fine_th}{0.9} -\item{qnt}{\code{qm_qnt} class object returned by \code{read_qnt()}.} +\item{qnt}{\code{qm_qnt} class object returned by \code{\link[=read_qnt]{read_qnt()}}.} \item{qltmap}{qm_xmap class object (xmap param of quantify)} -\item{cluster}{\code{qm_cluster} class object returned by \code{cluter_xmap()}.} +\item{cluster}{\code{qm_cluster} class object returned by \code{\link[=cluster_xmap]{cluster_xmap()}}.} } \description{ -(Deprecated) Use quantify. +(DEPRECATED) Use quantify. } diff --git a/man/quantify.Rd b/man/quantify.Rd index 3d9d7cb..27cbdf8 100644 --- a/man/quantify.Rd +++ b/man/quantify.Rd @@ -2,23 +2,23 @@ % Please edit documentation in R/quantify.R \name{quantify} \alias{quantify} -\title{quantify qualtitative mapping data} +\title{Quantify X-ray maps} \usage{ quantify(xmap, qnt, cluster, maps_x = NULL, maps_y = NULL, fine_phase = NULL, fine_th = 0.9, fixAB = NULL, fixB = NULL) } \arguments{ -\item{xmap}{\code{qm_xmap} class object returned by \code{read_xmap()}.} +\item{xmap}{\code{qm_xmap} class object returned by \code{\link[=read_xmap]{read_xmap()}}.} -\item{qnt}{\code{qm_qnt} class object returned by \code{read_qnt()}.} +\item{qnt}{\code{qm_qnt} class object returned by \code{\link[=read_qnt]{read_qnt()}}.} -\item{cluster}{\code{qm_cluster} class object returned by \code{cluter_xmap()}.} +\item{cluster}{\code{qm_cluster} class object returned by \code{\link[=cluster_xmap]{cluster_xmap()}}.} -\item{maps_x}{A x-axis size of maps comprising guide net map (default: \code{NULL}).} +\item{maps_x, maps_y}{Sizes of maps along x- and y-axes comprising guide net map. +(default: \code{NULL}).} -\item{maps_y}{A y-axis size of maps comprising guide net map (default: \code{NULL}).} - -\item{fine_phase}{A character vector to specify fine grained phases which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} +\item{fine_phase}{A character vector to specify fine grained phases +which tend to comprise multi-phase pixels e.g., c('Pl', 'Amp')} \item{fine_th}{0.9} @@ -27,5 +27,5 @@ quantify(xmap, qnt, cluster, maps_x = NULL, maps_y = NULL, \item{fixB}{fix B (default: \code{NULL}).} } \description{ -quantify qualtitative mapping data +Quantify X-ray maps } diff --git a/man/read_cnd.Rd b/man/read_cnd.Rd index f69420c..f805c93 100644 --- a/man/read_cnd.Rd +++ b/man/read_cnd.Rd @@ -30,7 +30,7 @@ read .cnd files } \section{.default}{ -A default method which returns a result of \code{readLines(x)} +A default method which returns a result of \code{\link[=readLines]{readLines()}} with additional class according to the content of the file. } diff --git a/man/save4qm.Rd b/man/save4qm.Rd index 883f625..831f0dd 100644 --- a/man/save4qm.Rd +++ b/man/save4qm.Rd @@ -50,7 +50,8 @@ together with invisible return of \code{x}. \section{\code{save4qm.qm_cluster}}{ -A method for \code{qm_cluster} class returned by \code{cluster_xmap()} or \code{cluster_group()}. +A method for \code{qm_cluster} class returned by +\code{\link[=cluster_xmap]{cluster_xmap()}} or \code{\link[=group_cluster]{group_cluster()}}. Object is saved as RDS file and png file. The latter shows distribution of phases among a mapped area. } diff --git a/man/segment.Rd b/man/segment.Rd index b1d519e..e7dd6af 100644 --- a/man/segment.Rd +++ b/man/segment.Rd @@ -10,7 +10,7 @@ segment(x, ...) \method{segment}{character}(x, ...) } \arguments{ -\item{x}{A path to the image file (PNG, JPEG, and BMP).} +\item{x}{A path to the PNG image file.} \item{...}{ignored} } @@ -22,14 +22,8 @@ Make index to segment mapping area. The obtained index is further utilized in \code{\link[=mean.qntmap]{mean.qntmap()}}. } \examples{ -library(imager) -x <- system.file('extdata/parrots.png',package='imager') -print(x) # x is a path to the example image file. -head(segment(x)) # [1] "#747458" "#757559" "#78785C" "#77765B" "#78785C" "#78785C" -\dontrun{ -segment(matrix(1:9, 3, 3)) -# This gives error as current version only support a path of a image file as input -} +x <- system.file("img", "Rlogo.png", package="png") +head(segment(x)) } \seealso{ diff --git a/qntmap.Rproj b/qntmap.Rproj index 8e79743..1a347ab 100644 --- a/qntmap.Rproj +++ b/qntmap.Rproj @@ -2,7 +2,7 @@ Version: 1.0 RestoreWorkspace: No SaveWorkspace: No -AlwaysSaveHistory: Default +AlwaysSaveHistory: No EnableCodeIndexing: Yes UseSpacesForTab: Yes diff --git a/vignettes/add_phase.R b/vignettes/add_phase.R index 45f9de0..fa8d12d 100644 --- a/vignettes/add_phase.R +++ b/vignettes/add_phase.R @@ -65,7 +65,7 @@ centers <- find_centers(xmap, qnt) centers ## ------------------------------------------------------------------------ -plot(xmap, 'Si', interactive = TRUE) +plot(xmap, 'Si', interactive = FALSE) ## ------------------------------------------------------------------------ centers <- add_centers(centers = centers, xmap = xmap, x = 18, y = 28, p = 'Qtz') diff --git a/vignettes/add_phase.html b/vignettes/add_phase.html index 96e91b7..243ff92 100644 --- a/vignettes/add_phase.html +++ b/vignettes/add_phase.html @@ -12,1810 +12,10 @@ - + Add phases after EPMA analysis - - - - - - - - @@ -2080,7 +280,7 @@

    Add phases after EPMA analysis

    YASUMOTO Atsushi

    -

    2018-11-01

    +

    2018-11-29

    @@ -2156,7 +356,7 @@

    Modify data

    #> #> Ol #> 20
    -

    +

    @@ -2174,9 +374,8 @@

    Initialize cluster centers

    Compare the initial centroids with X-ray map plotted with heatmap

    - -
    - + +

    In this case, an analysist will notice there is something other than olivine. Let’s mouse over the interactive map and one will see one of the coordinates of quartz (e.g., x = 18, y = 28). Keep it in your note.

    diff --git a/vignettes/basic.R b/vignettes/basic.R index cb62439..77c9413 100644 --- a/vignettes/basic.R +++ b/vignettes/basic.R @@ -54,8 +54,8 @@ plot(xmap, 'Si', interactive = FALSE) + data = epma, inherit.aes = FALSE ) -## ------------------------------------------------------------------------ -plot(xmap, 'Mg', interactive = TRUE) +## ---- echo = FALSE------------------------------------------------------- +plot(xmap, 'Mg', interactive = FALSE) ## ------------------------------------------------------------------------ centers <- find_centers(xmap, qnt) diff --git a/vignettes/basic.html b/vignettes/basic.html index c4a9dd7..eb39ae8 100644 --- a/vignettes/basic.html +++ b/vignettes/basic.html @@ -12,1810 +12,10 @@ - + Basic usage - - - - - - - - @@ -2080,7 +280,7 @@

    Basic usage

    Atsushi YASUMOTO

    -

    2018-11-01

    +

    2018-11-29

    @@ -2088,7 +288,8 @@

    2018-11-01

    Intro

    This vignette introduce a basic procedure of analysis using qntmap package using example data.

    -

    See https://doi.org/10.2138/am-2018-6323CCBY for technical details.

    +

    See https://atusy.github.io/qntmap/#epma-analysis for preparing EPMA data.

    +

    See https://doi.org/10.2138/am-2018-6323CCBY for implementations.

    Preparation

    @@ -2112,36 +313,12 @@

    Copy example data

    #> [1] TRUE

    TRUE indicates files are successfully copied. Check if really files are copied by dir().

    +#> [1] ".map/1/0.cnd" ".map/1/1.cnd" ".map/1/1_map.txt" +#> [4] ".map/1/2.cnd" ".map/1/2_map.txt" ".qnt/.cnd/elemw.cnd" +#> [7] ".qnt/bgm.qnt" ".qnt/bgp.qnt" ".qnt/elem.qnt" +#> [10] ".qnt/elint.qnt" ".qnt/mes.qnt" ".qnt/net.qnt" +#> [13] ".qnt/pkint.qnt" ".qnt/stg.qnt" ".qnt/wt.qnt" +#> [16] "README.md"
    @@ -2156,14 +333,15 @@

    Load data

    This is an artifact example data which contains olivine and quartz within the mapping area. The phases are quantified 20 points each.

    -

    +

    Plot X-ray map data as heatmap

    -

    Plots are by default interactive. Specify ‘Si’ instead of ‘Mg’ to see Si map. Specify interactive = FALSE if necessary.

    - -
    - +

    Plots are by default interactive with webui. Selection of elements can be done on webui.

    + +

    Cluster analysis

    @@ -2217,7 +395,7 @@

    Quantify

    Plot quantified map

    Just like X-ray map.

    -

    +

    Summarize quantified map