From c90b04a1aa087aaf9d166cee6bf25718b4d972ad Mon Sep 17 00:00:00 2001 From: RayStick <50215726+RayStick@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:33:39 +0000 Subject: [PATCH 1/3] simplify the wa domain_list and look_up are used --- .Rbuildignore | 1 - R/globals.R | 3 +- R/inputs_collect.R | 54 +++++++--- R/map_compare.R | 55 ++++------ R/metadata_map.R | 24 ++--- R/plotting.R | 25 ----- R/user_interactions.R | 28 ++--- data/domain_list.rda | Bin 246 -> 269 bytes data/look_up.rda | Bin 458 -> 430 bytes inst/inputs/domain_list_demo.csv | 17 +-- inst/inputs/look_up.csv | 56 +++++----- man/ref_plot.Rd | 24 ----- man/user_categorisation_loop.Rd | 4 +- tests/testthat/test-data_load.R | 101 +++++++++++++----- tests/testthat/test-map_compare.R | 37 ++----- tests/testthat/test-ref_plot.R | 22 ---- .../testthat/test-user_categorisation_loop.R | 29 ++--- 17 files changed, 220 insertions(+), 260 deletions(-) delete mode 100644 man/ref_plot.Rd delete mode 100644 tests/testthat/test-ref_plot.R diff --git a/.Rbuildignore b/.Rbuildignore index 319c104..ba31826 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -22,6 +22,5 @@ ^man/data_load\.Rd$ ^man/output_copy\.Rd$ ^man/empty_plot\.Rd$ -^man/ref_plot\.Rd$ ^man/user_categorisation\.Rd$ ^man/user_categorisation_loop\.Rd$ diff --git a/R/globals.R b/R/globals.R index 1fa4096..2c962ab 100644 --- a/R/globals.R +++ b/R/globals.R @@ -6,4 +6,5 @@ utils::globalVariables(c("Column.description", "no_count", "note", "total_variables", - "variable")) + "variable", + "Variable")) diff --git a/R/inputs_collect.R b/R/inputs_collect.R index 16290df..92e9047 100644 --- a/R/inputs_collect.R +++ b/R/inputs_collect.R @@ -14,6 +14,7 @@ #' @importFrom cli cli_alert_info #' @importFrom utils read.csv #' @importFrom tools file_path_sans_ext +#' @importFrom dplyr left_join #' @keywords internal #' @dev generate help files for unexported objects, for developers @@ -44,11 +45,11 @@ data_load <- function(metadata_file, domain_file, look_up_file, quiet = FALSE) { # Verify the metadata file name pattern and that it is a .csv file if (!grepl("^[0-9]+_.*_Metadata\\.csv$", metadata_base) || tools::file_ext(metadata_file) != "csv") { - stop(paste("Metadata file name must be a .csv file in the format", + stop(paste("metadata_file name must be a .csv file in the format", "ID_Name_Metadata.csv where ID is an integer")) } else { if (!file.exists(metadata_file)) { - stop("Metadata filename is the correct format but it does not exist!") + stop("metadata_file is the correct filename but it does not exist!") } } @@ -57,26 +58,35 @@ data_load <- function(metadata_file, domain_file, look_up_file, quiet = FALSE) { column_names <- colnames(metadata) expected_column_names <- c("Section", "Column.name", "Data.type", "Column.description", "Sensitive") - if (!all(column_names == expected_column_names)) { - stop("Metadata file does not have expected column names") + if (!identical(sort(column_names), sort(expected_column_names))) { + stop("metadata_file does not have expected column names") } metadata_base_0suffix <- sub("_Metadata.csv$", "", metadata_base) metadata_desc <- gsub(" ", "", metadata_base_0suffix) - # Check if the domain_file is a csv and has one column + # Check if the domain_file is a csv and has two columns if (file.exists(domain_file) && tools::file_ext(domain_file) == "csv") { - domains <- read.csv(domain_file, header = FALSE) - if (ncol(domains) == 1) { + domains <- read.csv(domain_file) + column_names <- colnames(domains) + expected_column_names <- c("Domain_Code", "Domain_Name") + if (identical(sort(column_names), sort(expected_column_names))) { domain_list_desc <- file_path_sans_ext(basename(domain_file)) } else { - stop("The domain_file should only have one column.") + stop("domain_file does not have the expected column names") } } else { - stop("This domain_file does not exist or is not in csv format.") + stop("domain_file does not exist or is not in csv format.") } } + # Check the domain_file 'Code' column is correct + code_expected <- as.integer(seq(1, nrow(domains), 1)) + if (!identical(code_expected, domains$Domain_Code)) { + stop(paste("'Code' column in domain_file is not as expected.\n", + "Expected 1:", nrow(domains))) + } + # Collect look up table if (is.null(look_up_file)) { if (!quiet) { @@ -86,15 +96,25 @@ data_load <- function(metadata_file, domain_file, look_up_file, quiet = FALSE) { } else { if (!quiet) { cli_alert_info("Using look up file inputted by user") - if (file.exists(look_up_file) && tools::file_ext(look_up_file) == "csv") { - lookup <- read.csv(look_up_file) - expected_column_names <- c("variable", "domain_label", "domain_code") - if (!all(colnames(lookup) == expected_column_names)) { - stop("Look_up file does not have expected column names") - } - } else { - stop("This look_up_file does not exist or is not in csv format.") + } + # Check look_up file given by user + if (file.exists(look_up_file) && tools::file_ext(look_up_file) == "csv") { + lookup <- read.csv(look_up_file) + expected_column_names <- c("Variable", "Domain_Name") + if (!all(colnames(lookup) == expected_column_names)) { + stop("look_up file does not have expected column names") + } + # Add Domain_Code column into lookup table + lookup <- lookup %>% left_join(domains, by = "Domain_Name") + # Check for look_up rows not covered by domain_list + no_match <- lookup[!lookup$Domain_Name %in% domains$Domain_Name, ] + if (nrow(no_match) != 0) { + warning(paste("There are domain names in the look_up_file that are not", + "included in the domain_file. If this is not expected,", + "check for mistakes.")) } + } else { + stop("look_up_file does not exist or is not in csv format.") } } diff --git a/R/map_compare.R b/R/map_compare.R index a3cb2f4..67dfab7 100644 --- a/R/map_compare.R +++ b/R/map_compare.R @@ -81,46 +81,28 @@ map_compare <- function(session_dir, stop("Cannot locate all four input files.") } - # Read csv files + ## Check if domain_file exists + if (!file.exists(domain_file)) { + stop("Cannot locate domain_file.") + } + + ## Check if metadata_file exists + if (!file.exists(metadata_file)) { + stop("Cannot locate metadata_file.") + } + + # Read files csv_1a <- read.csv(csv_1a_path) csv_2a <- read.csv(csv_2a_path) csv_1b <- read.csv(csv_1b_path) csv_2b <- read.csv(csv_2b_path) - # Verify the metadata file name pattern and that it is a .csv file - metadata_base <- basename(metadata_file) - if (!grepl("^[0-9]+_.*_Metadata\\.csv$", metadata_base) || - tools::file_ext(metadata_file) != "csv") { - stop(paste("Metadata file name must be a .csv file in the format", - "ID_Name_Metadata.csv where ID is an integer")) - } else { - if (!file.exists(metadata_file)) { - stop("Metadata filename is the correct format but it does not exist!") - } - } - - # Check if metadata column names match what is expected metadata <- read.csv(metadata_file) - column_names <- colnames(metadata) - expected_column_names <- c("Section", "Column.name", "Data.type", - "Column.description", "Sensitive") - if (!all(column_names == expected_column_names)) { - stop("Metadata file does not have expected column names") - } - + metadata_base <- basename(metadata_file) metadata_base_0suffix <- sub("_Metadata.csv$", "", metadata_base) metadata_desc <- gsub(" ", "", metadata_base_0suffix) - # Check if the domain_file is a csv and has one column - if (file.exists(domain_file) && tools::file_ext(domain_file) == "csv") { - domains <- read.csv(domain_file, header = FALSE) - if (ncol(domains) == 1) { - } else { - stop("The domain_file should only have one column.") - } - } else { - stop("This domain_file does not exist or is not in csv format.") - } + domains <- read.csv(domain_file) # CHECK IF A VALID COMPARISON BETWEEN SESSIONS IS POSSIBLE ---- @@ -152,7 +134,7 @@ map_compare <- function(session_dir, input_1 = nrow(csv_1b), input_2 = nrow(csv_2b), severity = "danger", - severity_text = "Different number of variavles!" + severity_text = "Different number of variables!" ) ## Check if sessions can be compared (warnings for user to check): @@ -166,8 +148,10 @@ map_compare <- function(session_dir, # DISPLAY TO USER ---- - ## Use 'ref_plot.R' to plot domains for the user's ref (save df for later use) - df_plots <- ref_plot(domains) + ## Extract domains and plot for user's reference + domain_table <- tableGrob(domains, rows = NULL) + grid.arrange(domain_table, nrow = 1, ncol = 1) + n_codes <- nrow(domains) # EXTRACT TABLE INFO FROM METADATA ---- table_name <- csv_1a$table[1] @@ -182,8 +166,7 @@ map_compare <- function(session_dir, # FIND MISMATCHES AND ASK FOR CONSENSUS DECISION ---- for (variable in seq_len(nrow(ses_join))) { - consensus <- consensus_on_mismatch(ses_join, table_df, variable, - max(df_plots$code$code)) + consensus <- consensus_on_mismatch(ses_join, table_df, variable, n_codes) ses_join$domain_code_join[variable] <- consensus$domain_code_join ses_join$note_join[variable] <- consensus$note_join } # end of loop for variable diff --git a/R/metadata_map.R b/R/metadata_map.R index bd5f56b..2686020 100755 --- a/R/metadata_map.R +++ b/R/metadata_map.R @@ -56,6 +56,8 @@ select.list <- NULL #' @importFrom utils packageVersion write.csv browseURL menu select.list #' @importFrom ggplot2 ggsave #' @importFrom htmlwidgets saveWidget +#' @importFrom gridExtra tableGrob grid.arrange +#' @importFrom graphics plot.new metadata_map <- function( metadata_file = NULL, @@ -153,16 +155,10 @@ metadata_map <- function( log_output_df <- get("log_output_df") output_df <- get("output_df") - ## Use 'ref_plot.R' to plot domains for the user's ref (save df for later use) - df_plots <- ref_plot(data$domains) - - ## Check if look_up_file and domain_file are compatible - mismatch <- setdiff(data$lookup$domain_code, df_plots$code$code) - if (length(mismatch) > 0) { - print(mismatch) - stop(paste("The look_up_file and domain_file are not compatible. These", - "look up codes are not listed in the domain codes:\n")) - } + ## Extract domains and plot for user's reference + domain_table <- tableGrob(data$domains, rows = NULL) + grid.arrange(domain_table, nrow = 1, ncol = 1) + n_codes <- nrow(data$domains) ## CHOOSE TABLE TO PROCESS @@ -207,7 +203,7 @@ metadata_map <- function( df_prev_exist, df_prev, lookup = data$lookup, - df_plots, + n_codes, output_df ) @@ -239,7 +235,7 @@ metadata_map <- function( table_df$Column.name[v_auto], table_df$Column.description[v_auto], table_df$Data.type[v_auto], - max(df_plots$code$code) + n_codes ) ##### input user responses into output output_df$domain_code[v_auto] <- decision_output$decision @@ -277,7 +273,7 @@ metadata_map <- function( table_df$Column.name[v_not_auto], table_df$Column.description[v_not_auto], table_df$Data.type[v_not_auto], - max(df_plots$code$code) + n_codes ) ##### input user responses into output output_df$domain_code[v_not_auto] <- decision_output$decision @@ -320,7 +316,7 @@ metadata_map <- function( ### Create and save a summary plot end_plot_save <- end_plot(df = output_df, table_name, - ref_table = df_plots$domain_table) + ref_table = domain_table) ggsave( plot = end_plot_save, filename = png_path, diff --git a/R/plotting.R b/R/plotting.R index 27cbc21..7026654 100644 --- a/R/plotting.R +++ b/R/plotting.R @@ -32,31 +32,6 @@ empty_plot <- function(dataframe, bar_title) { barplot_html } -#' Internal: ref_plot -#' -#' This function is called within the metadata_map function. \cr \cr -#' It plots a reference table to guide the user in their categorisation of -#' domains. \cr \cr -#' This reference table is based on the user inputted domains and the default -#' domains provided by this package. \cr \cr -#' @param domains The output of load_data -#' @return A reference table that appears in the Plots tab. A list of 2 -#' containing the derivatives for this plot, used later in metadata_map' -#' @importFrom gridExtra tableGrob grid.arrange -#' @importFrom graphics plot.new -#' @keywords internal -#' @dev generate help files for unexported objects, for developers - -ref_plot <- function(domains) { - colnames(domains)[1] <- "Domain Name" - plot.new() - code <- data.frame(code = seq_len(nrow(domains))) - domain_table <- tableGrob(cbind(code, domains), rows = NULL) - grid.arrange(domain_table, nrow = 1, ncol = 1) - - return(list(code = code, domain_table = domain_table)) -} - #' Internal: end_plot #' #' This function is called within the metadata_map function. \cr \cr diff --git a/R/user_interactions.R b/R/user_interactions.R index 133a9f7..084cd7d 100644 --- a/R/user_interactions.R +++ b/R/user_interactions.R @@ -48,9 +48,9 @@ user_categorisation <- function(var, desc, type, suppressWarnings(decision_int_min <- min(decision_int, na.rm = TRUE)) if (decision_int_na == TRUE || decision_int_max > domain_code_max || decision_int_min < 0) { - cli_alert_warning("Formatting is invalid or integer out of range. - Provide one integer or a comma seperated list of - integers.") + cli_alert_warning(paste("Formatting is invalid or integer out of", + "range. Provide one integer or a comma", + "seperated list of integers.")) validated <- FALSE } else { validated <- TRUE @@ -93,19 +93,19 @@ user_categorisation <- function(var, desc, type, #' @param df_prev_exist Boolean to indicate if previous dataframes exists #' @param df_prev Previous dataframes to copy from (or NULL) #' @param lookup The lookup table to enable auto categorisations -#' @param df_plots Output from ref_plot, to indicate mac domain code allowed +#' @param n_codes Number of domain codes permissible #' @param output_df Empty output dataframe, to fill #' @param quiet Default is FALSE. Change to TRUE to quiet the cli_alert_info #' and cli_alert_success messages. #' @return An output dataframe containing info about the table, variables #' and categorisations -#' @importFrom dplyr %>% add_row +#' @importFrom dplyr %>% add_row filter #' @importFrom cli cli_alert_info #' @keywords internal #' @dev generate help files for unexported objects, for developers user_categorisation_loop <- function(start_v, end_v, table_df, df_prev_exist, - df_prev, lookup, df_plots, output_df, + df_prev, lookup, n_codes, output_df, quiet = FALSE) { for (data_v in start_v:end_v) { if (!quiet) { @@ -117,9 +117,7 @@ user_categorisation_loop <- function(start_v, end_v, table_df, df_prev_exist, as.character(data_v), "of", as.character(nrow(table_df)) ) - data_v_index <- which(lookup$var == - table_df$Column.name[data_v]) # improve: ignore case - lookup_subset <- lookup[data_v_index, ] + ##### search if variable matches any variable from previous table if (df_prev_exist == TRUE) { data_v_index <- which(df_prev$var == @@ -128,13 +126,15 @@ user_categorisation_loop <- function(start_v, end_v, table_df, df_prev_exist, } else { df_prev_subset <- data.frame() } - ##### decide how to process the variable out of 3 options - if (nrow(lookup_subset) == 1) { - ###### 1 - auto categorisation + ##### decide how to process the variable out of 3 options: + + ###### 1 - auto categorisation via the lookup table + lookup_variable <- filter(lookup, Variable == this_variable) + if (nrow(lookup_variable) != 0) { output_df <- output_df %>% add_row( variable = this_variable, variable_n = this_variable_n, - domain_code = as.character(lookup_subset$domain_code), + domain_code = as.character(lookup_variable$Domain_Code), note = "AUTO CATEGORISED" ) } else if (df_prev_exist == TRUE && @@ -152,7 +152,7 @@ user_categorisation_loop <- function(start_v, end_v, table_df, df_prev_exist, table_df$Column.name[data_v], table_df$Column.description[data_v], table_df$Data.type[data_v], - max(df_plots$code$code) + n_codes ) output_df <- output_df %>% add_row( variable = this_variable, diff --git a/data/domain_list.rda b/data/domain_list.rda index f150bb019d75c907b213722346ce239a5d72e75d..1c6943446043d5a32c06e3f1b9d81ef6bc06a534 100644 GIT binary patch literal 269 zcmV+o0rLJrT4*^jL0KkKStI>qZU6w5|G@wMcmO~FkN_^{-axNso`66A070+-*(hkH zqZ3UrG7ScR$jw6|Wf?LI00006fB*mh1d=9{ev>Kcew2D4ka~a`V2w1%`lF5N)}rUv zU9`ligB5hy7yI1B9RMuMS!XJFXE-46ad=f%6IUWrs<0kTOS$T4*^jL0KkKS=QcqBLDz>f585KcmO~FumCRS-$1Wto`66A070+-xgn~a zgHh@piRvDp(X{{`P{{Iw)bxV@0004?00001B2_&nqe+b;G(!Z)z>GsC8k&1DCgzy2 zRtk(^G?38I4IqXH+wB0Z`>%JGxQ?@v zj?mQijz#o=m z8V#w002v?`@H!|$ywt4=ZGt{pWV}&IQU7VvNRjr|uX-HFl1#`DJ86J&cd8bvf)9Ki z(l&JAG}194I(G%NIhov$CSb6FNq{B|v;-I+Akq*>>}e&u#g8X$jac>RUUM@>>$tJDGDbEb7?^iz=(TC6Q4s0?wP@KmX{uyt^sJ`b~DsbvW!({ zH04AI&Xw6kunpN(08keCs24I73W%xp6A^YoF)>kZL@ntBhS^+U3%Dg(c&+A1$V4On z;#6rYF#v1gk^m0tUrYsvE%ZSlykf3%s98aS8FS@obKV6J8zqS>K#@%;gx^g`veaQY zXu=7c+2u%8ipWV^kqE=j)*}gF0>$4Svrio^8R(yO+mD5yO#3OKkCdngD>+x3+Nyq^ Y+K`cvyXXE54qx$iBvXY63^a)mAOi@t`2YX_ literal 458 zcmV;*0X60ssI3umPE^ zm1s#JO-(kLH4Ou5GyrG@L&|B89!*bBVnS)EZ$&*%QKL;74F;M3(0ZBx01-+Fsp&l@ zsi&d<0iZNA01XWWOY();s;L_1&Ia`pvfC0QB!wx2Pm&lW+m&gcllv}O(F~9-Z%ZYT z6awr5o;LyF!5E{nR6*~9<)+zG25)I=5);M1& diff --git a/inst/inputs/domain_list_demo.csv b/inst/inputs/domain_list_demo.csv index 77ddb39..93a6246 100644 --- a/inst/inputs/domain_list_demo.csv +++ b/inst/inputs/domain_list_demo.csv @@ -1,8 +1,9 @@ -"NO MATCH / UNSURE" -"METADATA" -"ID" -"DEMOGRAPHICS" -"Socioeconomic info" -"Location info" -"Education info" -"Health info" +Domain_Code,Domain_Name +1,NO MATCH / UNSURE +2,METADATA +3,ID +4,DEMOGRAPHICS +5,Socioeconomic info +6,Location info +7,Education info +8,Health info diff --git a/inst/inputs/look_up.csv b/inst/inputs/look_up.csv index b5fc359..ef3a488 100644 --- a/inst/inputs/look_up.csv +++ b/inst/inputs/look_up.csv @@ -1,28 +1,28 @@ -variable,domain_label,domain_code -NA,No Match / Unsure,1 -AVAIL_FROM_DT,Metadata,2 -ALF_E,ID,3 -MOTHER_ALF_E,ID,3 -CHILD_ALF_E,ID,3 -RALF,ID,3 -ALF_STS_CD,ID,3 -MOTHER_ALF_STS_CD,ID,3 -CHILD_ALF_STS_CD,ID,3 -ALF_MTCH_PCT,ID,3 -MOTHER_ALF_MTCH_PCT,ID,3 -CHILD_ALF_MTCH_PCT,ID,3 -SERVICE_USER_LOCAL_ID_E,ID,3 -MAT_SERVICE_USER_LOCAL_ID_E,ID,3 -CLIENT_ID_E,ID,3 -AGE,Demographics,4 -MAT_AGE,Demographics,4 -MAT_AGE_AT_ASS,Demographics,4 -CONTACT_AGE,Demographics,4 -WOB,Demographics,4 -MAT_WOB,Demographics,4 -SEX,Demographics,4 -SERVICE_USER_SEX_CD,Demographics,4 -NENONATE_SEX_CD,Demographics,4 -GENDER,Demographics,4 -GNDR,Demographics,4 -GNDR_CD,Demographics,4 +Variable,Domain_Name +NA,NO MATCH / UNSURE +AVAIL_FROM_DT,METADATA +ALF_E,ID +MOTHER_ALF_E,ID +CHILD_ALF_E,ID +RALF,ID +ALF_STS_CD,ID +MOTHER_ALF_STS_CD,ID +CHILD_ALF_STS_CD,ID +ALF_MTCH_PCT,ID +MOTHER_ALF_MTCH_PCT,ID +CHILD_ALF_MTCH_PCT,ID +SERVICE_USER_LOCAL_ID_E,ID +MAT_SERVICE_USER_LOCAL_ID_E,ID +CLIENT_ID_E,ID +AGE,DEMOGRAPHICS +MAT_AGE,DEMOGRAPHICS +MAT_AGE_AT_ASS,DEMOGRAPHICS +CONTACT_AGE,DEMOGRAPHICS +WOB,DEMOGRAPHICS +MAT_WOB,DEMOGRAPHICS +SEX,DEMOGRAPHICS +SERVICE_USER_SEX_CD,DEMOGRAPHICS +NENONATE_SEX_CD,DEMOGRAPHICS +GENDER,DEMOGRAPHICS +GNDR,DEMOGRAPHICS +GNDR_CD,DEMOGRAPHICS diff --git a/man/ref_plot.Rd b/man/ref_plot.Rd deleted file mode 100644 index 1011327..0000000 --- a/man/ref_plot.Rd +++ /dev/null @@ -1,24 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/plotting.R -\name{ref_plot} -\alias{ref_plot} -\title{Internal: ref_plot} -\usage{ -ref_plot(domains) -} -\arguments{ -\item{domains}{The output of load_data} -} -\value{ -A reference table that appears in the Plots tab. A list of 2 -containing the derivatives for this plot, used later in metadata_map' -} -\description{ -This function is called within the metadata_map function. \cr \cr -It plots a reference table to guide the user in their categorisation of -domains. \cr \cr -This reference table is based on the user inputted domains and the default -domains provided by this package. \cr \cr -} -\keyword{internal} -\keyword{internal} diff --git a/man/user_categorisation_loop.Rd b/man/user_categorisation_loop.Rd index 8e90045..f98c28e 100644 --- a/man/user_categorisation_loop.Rd +++ b/man/user_categorisation_loop.Rd @@ -11,7 +11,7 @@ user_categorisation_loop( df_prev_exist, df_prev, lookup, - df_plots, + n_codes, output_df, quiet = FALSE ) @@ -29,7 +29,7 @@ user_categorisation_loop( \item{lookup}{The lookup table to enable auto categorisations} -\item{df_plots}{Output from ref_plot, to indicate mac domain code allowed} +\item{n_codes}{Number of domain codes permissible} \item{output_df}{Empty output dataframe, to fill} diff --git a/tests/testthat/test-data_load.R b/tests/testthat/test-data_load.R index b4e261e..bfb9ab6 100644 --- a/tests/testthat/test-data_load.R +++ b/tests/testthat/test-data_load.R @@ -1,37 +1,28 @@ # Define file paths to demo data relative to the package directory -demo_csv_file <- system.file("inputs/360_NCCHD_Metadata.csv", - package = "mapmetadata") +demo_metadata_file <- system.file("inputs/360_NCCHD_Metadata.csv", + package = "mapmetadata") look_up_file <- system.file("inputs/look_up.csv", package = "mapmetadata") demo_domain_file <- system.file("inputs/domain_list_demo.csv", package = "mapmetadata") # Define package demo data -metadata <- get("metadata") -look_up <- get("look_up") -domains <- get("domain_list") - -# Print file paths for debugging -cat("demo_csv_file:", demo_csv_file, "\n") -cat("look_up_file:", look_up_file, "\n") -cat("demo_domain_file:", demo_domain_file, "\n") - -# Check if files exist for debugging -cat("demo_csv_file exists:", file.exists(demo_csv_file), "\n") -cat("look_up_file exists:", file.exists(look_up_file), "\n") -cat("demo_domain_file exists:", file.exists(demo_domain_file), "\n") +data("metadata") +data("look_up") +data("domain_list") test_that("data_load runs in demo mode when both csv_file and domain_file are NULL", { + result <- data_load(NULL, NULL, NULL) expect_true(result$demo_mode) expect_equal(result$metadata, metadata) - expect_equal(result$domains, domains) + expect_equal(result$domains, domain_list) expect_equal(result$domain_list_desc, "DemoList") }) test_that("data_load reads user-specified files correctly", { - result <- data_load(demo_csv_file, demo_domain_file, NULL) + result <- data_load(demo_metadata_file, demo_domain_file, NULL) expect_false(result$demo_mode) expect_true(is.list(result$metadata)) expect_true(is.data.frame(result$domains)) @@ -40,12 +31,12 @@ test_that("data_load reads user-specified files correctly", { }) test_that("data_load uses default look-up table when look_up_file is NULL", { - result <- data_load(demo_csv_file, demo_domain_file, NULL) + result <- data_load(demo_metadata_file, demo_domain_file, NULL) expect_equal(result$lookup, look_up) }) test_that("data_load reads user-specified look-up table correctly", { - result <- data_load(demo_csv_file, demo_domain_file, look_up_file) + result <- data_load(demo_metadata_file, demo_domain_file, look_up_file) expect_true(is.data.frame(result$lookup)) expect_equal(nrow(result$lookup), nrow(utils::read.csv(look_up_file))) }) @@ -58,23 +49,81 @@ test_that("data_load errors when quiet is not boolean", { test_that("data_load errors when metadata_file is incorrect format", { expect_error(data_load(metadata_file = "Metadata_360NCCHD.csv", demo_domain_file), - paste("Metadata file name must be a .csv file in the format", + paste("metadata_file name must be a .csv file in the format", "ID_Name_Metadata.csv where ID is an integer")) }) test_that("data_load errors when metadata_file does not exist", { expect_error(data_load(metadata_file = "360_NCCHD_Metadata.csv", demo_domain_file), - "Metadata filename is the correct format but it does not exist!") + "metadata_file is the correct filename but it does not exist!") +}) + +test_that("data_load errors when metadata_file has incorrect column names", { + metadata_temp <- metadata + colnames(metadata_temp) <- c("a", "b", "c", "d", "e") + temp_dir <- withr::local_tempdir() + metadata_temp_file <- paste0(temp_dir, "/1_temp_Metadata.csv") + write.csv(metadata_temp, file = metadata_temp_file, row.names = FALSE) + expect_error(data_load(metadata_temp_file, demo_domain_file), + "metadata_file does not have expected column names") }) test_that("data_load errors when domain_file does not exist", { - expect_error(data_load(demo_csv_file, domain_file = "not valid"), - "This domain_file does not exist or is not in csv format.") + expect_error(data_load(demo_metadata_file, domain_file = "not valid"), + "domain_file does not exist or is not in csv format.") }) -test_that("data_load errors when metadata_file does not exist", { - expect_error(data_load(demo_csv_file, demo_domain_file, +test_that("data_load errors when domain_file has incorrect column names", { + domains_temp <- domain_list + colnames(domains_temp) <- c("a", "b") + temp_dir <- withr::local_tempdir() + domain_file_temp <- paste0(temp_dir, "/domain_file_temp.csv") + write.csv(domains_temp, file = domain_file_temp, row.names = FALSE) + expect_error(data_load(demo_metadata_file, domain_file_temp), + "domain_file does not have the expected column names") +}) + +test_that("data_load errors when domain_file 'Code' column not as expected", { + domains_temp2 <- domain_list + domains_temp2$Domain_Code[nrow(domain_list)] <- + domains_temp2$Domain_Code[nrow(domains_temp2)] + 1 + temp_dir <- withr::local_tempdir() + domain_file_temp2 <- paste0(temp_dir, "/domain_file_temp2.csv") + write.csv(domains_temp2, file = domain_file_temp2, row.names = FALSE) + expect_error(data_load(demo_metadata_file, domain_file_temp2), + paste("'Code' column in domain_file is not as expected.\n", + "Expected 1:", nrow(domain_list))) +}) + +test_that("data_load errors when look_up_file does not exist", { + expect_error(data_load(demo_metadata_file, demo_domain_file, look_up_file = "not valid"), - "This look_up_file does not exist or is not in csv format.") + "look_up_file does not exist or is not in csv format.") +}) + +test_that("data_load errors when look_up_file has incorrect column names", { + look_up_temp <- look_up + colnames(look_up_temp) <- c("a", "b") + temp_dir <- withr::local_tempdir() + look_up_file_temp <- paste0(temp_dir, "/look_up_temp.csv") + write.csv(look_up_temp, file = look_up_file_temp, row.names = FALSE) + expect_error(data_load(demo_metadata_file, demo_domain_file, + look_up_file_temp), + "look_up file does not have expected column names") +}) + +test_that("data_load gives warning when look_up and domain_file mistmatch", { + look_up_temp2 <- look_up + look_up_row <- data.frame(Variable = "test", Domain_Name = "test") + look_up_temp2 <- rbind(look_up_temp2, look_up_row) + temp_dir <- withr::local_tempdir() + look_up_file_temp2 <- paste0(temp_dir, "/look_up_temp2.csv") + write.csv(look_up_temp2, file = look_up_file_temp2, row.names = FALSE) + + expect_warning( + data_load(demo_metadata_file, demo_domain_file, look_up_file_temp2), + paste("There are domain names in the look_up_file that are not included", + "in the domain_file. If this is not expected, check for mistakes.") + ) }) diff --git a/tests/testthat/test-map_compare.R b/tests/testthat/test-map_compare.R index 36b6f18..bb7eead 100644 --- a/tests/testthat/test-map_compare.R +++ b/tests/testthat/test-map_compare.R @@ -112,7 +112,7 @@ test_that("map_compare errors when demo_session1_base is not valid", { "Cannot locate all four input files.") }) -test_that("map_compare errors when metadata_file is incorrect format", { +test_that("map_compare errors when domain_file is not valid", { # Setup temp_dir <- withr::local_tempdir() @@ -128,14 +128,13 @@ test_that("map_compare errors when metadata_file is incorrect format", { expect_error(map_compare(session_dir = demo_session_dir, session1_base = demo_session1_base, session2_base = demo_session2_base, - metadata_file = "Metadata_360NCCHD.csv", - domain_file = demo_domain_file, + metadata_file = demo_metadata_file, + domain_file = "not_valid", output_dir = temp_dir), - paste("Metadata file name must be a .csv file in the format", - "ID_Name_Metadata.csv where ID is an integer")) + "Cannot locate domain_file.") }) -test_that("map_compare errors when metadata_file does not exist", { +test_that("map_compare errors when metadata_file is not valid", { # Setup temp_dir <- withr::local_tempdir() @@ -151,30 +150,8 @@ test_that("map_compare errors when metadata_file does not exist", { expect_error(map_compare(session_dir = demo_session_dir, session1_base = demo_session1_base, session2_base = demo_session2_base, - metadata_file = "360_NCCHD_Metadata.csv", + metadata_file = "not_valid", domain_file = demo_domain_file, output_dir = temp_dir), - "Metadata filename is the correct format but it does not exist!") -}) - -test_that("map_compare errors when domain_file does not exist", { - - # Setup - temp_dir <- withr::local_tempdir() - - demo_session_dir <- system.file("outputs", package = "mapmetadata") - demo_session1_base <- "360_NCCHD_CHILD_2025-02-14-18-14-01" - demo_session2_base <- "360_NCCHD_CHILD_2025-02-14-18-17-47" - demo_metadata_file <- system.file("inputs", "360_NCCHD_Metadata.csv", - package = "mapmetadata") - demo_domain_file <- system.file("inputs", "domain_list_demo.csv", - package = "mapmetadata") - - expect_error(map_compare(session_dir = demo_session_dir, - session1_base = demo_session1_base, - session2_base = demo_session2_base, - metadata_file = demo_metadata_file, - domain_file = "domain_list_demo.csv", - output_dir = temp_dir), - "This domain_file does not exist or is not in csv format.") + "Cannot locate metadata_file.") }) diff --git a/tests/testthat/test-ref_plot.R b/tests/testthat/test-ref_plot.R deleted file mode 100644 index 86743fa..0000000 --- a/tests/testthat/test-ref_plot.R +++ /dev/null @@ -1,22 +0,0 @@ -# Unit test for ref_plot function -test_that("ref_plot function works correctly", { - # Mock input dataframe - domains <- data.frame(Domains = c("Domain1", "Domain2", "Domain3", "Domain4")) - - # Call the function - result <- ref_plot(domains) - - # Check the structure of the result - expect_true(is.list(result)) - expect_true("code" %in% names(result)) - expect_true("domain_table" %in% names(result)) - - # Check the content of the code dataframe - expect_equal(nrow(result$code), 4) - expect_equal(result$code$code, 1:4) - - # Check the content of the Domain_table - expect_true(inherits(result$domain_table, "gtable")) - expect_equal(nrow(result$domain_table), 5) - expect_equal(result$domain_table$layout$name[1], "colhead-fg") -}) diff --git a/tests/testthat/test-user_categorisation_loop.R b/tests/testthat/test-user_categorisation_loop.R index f661cf8..cfa7932 100644 --- a/tests/testthat/test-user_categorisation_loop.R +++ b/tests/testthat/test-user_categorisation_loop.R @@ -1,18 +1,19 @@ output_df <- get("output_df") -code <- data.frame(code = 0:2) -df_plots <- list(code = code, "") test_that("user_categorisation_loop handles auto categorisation", { # Mock data table_df <- data.frame(Column.name = c("Variable1", "Variable2"), Column.description = c("Desc1", "Desc2"), Data.type = c("Type1", "Type2")) - lookup <- data.frame(variable = c("Variable1", "Variable2"), - domain_code = c(1, 2)) + lookup_joined <- data.frame(Variable = c("Variable1", "Variable2"), + Domain_Name = c("METADATA", "ID"), + Domain_Code = c(2, 3)) + + n_codes <- 2 # Call the function result <- user_categorisation_loop(1, 2, table_df, FALSE, data.frame(), - lookup, df_plots, output_df) + lookup_joined, n_codes, output_df) # Check the result expect_equal(nrow(result), 2) @@ -28,12 +29,14 @@ test_that("user_categorisation_loop handles copying from previous table", { df_prev <- data.frame(variable = c("Variable1", "Variable2"), domain_code = c(1, 2), table = c("PrevTable1", "PrevTable2")) - lookup <- data.frame(variable = c("Variable3", "Variable4"), - domain_code = c(3, 4)) + + lookup_joined <- data.frame(Variable = c("Variable3", "Variable4"), + Domain_Name = c("METADATA", "ID"), + Domain_Code = c(2, 3)) # Call the function - result <- user_categorisation_loop(1, 2, table_df, TRUE, df_prev, lookup, - df_plots, output_df) + result <- user_categorisation_loop(1, 2, table_df, TRUE, df_prev, + lookup_joined, df_plots, output_df) # Check the result expect_equal(nrow(result), 2) @@ -46,8 +49,10 @@ test_that("user_categorisation_loop handles user categorisation", { table_df <- data.frame(Column.name = c("Variable1", "Variable2"), Column.description = c("Desc1", "Desc2"), Data.type = c("Type1", "Type2")) - lookup <- data.frame(variable = c("Variable3", "Variable4"), - domain_code = c(3, 4)) + + lookup_joined <- data.frame(Variable = c("Variable3", "Variable4"), + Domain_Name = c("METADATA", "ID"), + Domain_Code = c(2, 3)) # Mock the user_categorisation function local_mocked_bindings(user_categorisation = function(var = NULL, @@ -59,7 +64,7 @@ test_that("user_categorisation_loop handles user categorisation", { # Call the function result <- user_categorisation_loop(1, 2, table_df, FALSE, data.frame(), - lookup, df_plots, output_df) + lookup_joined, df_plots, output_df) # Check the result expect_equal(nrow(result), 2) From c4593102f70c3f773b404dcad8b1c9f99659ba3b Mon Sep 17 00:00:00 2001 From: RayStick <50215726+RayStick@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:36:28 +0000 Subject: [PATCH 2/3] metadata --- codemeta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codemeta.json b/codemeta.json index 0cfb748..237cb71 100644 --- a/codemeta.json +++ b/codemeta.json @@ -226,7 +226,7 @@ }, "SystemRequirements": null }, - "fileSize": "2426.174KB", + "fileSize": "2425.471KB", "citation": [ { "@type": "SoftwareSourceCode", From 638653993aa5026af88ed0fd872c4df7856f3c27 Mon Sep 17 00:00:00 2001 From: RayStick <50215726+RayStick@users.noreply.github.com> Date: Mon, 17 Feb 2025 16:27:05 +0000 Subject: [PATCH 3/3] update docs --- R/data-package_data.R | 14 ++-- R/metadata_map.R | 10 +-- inst/outputs/plots_tab_demo_domains.png | Bin 68260 -> 92364 bytes man/domain_list.Rd | 6 +- man/look_up.Rd | 5 +- man/metadata.Rd | 3 +- man/metadata_map.Rd | 10 +-- vignettes/mapmetadata.Rmd | 89 +++++++++++++----------- 8 files changed, 74 insertions(+), 63 deletions(-) diff --git a/R/data-package_data.R b/R/data-package_data.R index 3db5318..64986cf 100644 --- a/R/data-package_data.R +++ b/R/data-package_data.R @@ -54,8 +54,8 @@ #' metadata_map \cr \cr #' This data was created with these two steps: #' \enumerate{ -#' \item \code{domain_list <- -#' read.csv('inst/inputs/domain_list_demo.csv',header=FALSE)} +#' \item \code{domain_list <- read.csv(system.file('inputs', +#' 'domain_list_demo.csv', package = 'mapmetadata'))} #' \item \code{usethis::use_data(domain_list)} #' } #' @docType data @@ -64,7 +64,7 @@ #' #' @keywords internal #' -#' @format A data frame with 8 rows and 1 column +#' @format A data frame with 8 rows and 2 columns #' #' @source The csv was manually created "domain_list" @@ -78,7 +78,8 @@ #' \item Navigate to the dataset of interest, select 'Download data' and #' download the Structural Metadata file #' \item Shorten name of downloaded file e.g. 360_NCCHD_Metadata.csv -#' \item \code{metadata <- read.csv("inst/inputs/360_NCCHD_Metadata.csv")} +#' \item \code{metadata <- read.csv(system.file('inputs', +#' '360_NCCHD_Metadata.csv', package = 'mapmetadata'))} #' \item \code{usethis::use_data(metadata)} #' } #' @@ -101,7 +102,8 @@ #' domain code rather than asking the user to categorise.\cr\cr #' This data was created with these two steps: #' \enumerate{ -#' \item \code{look_up <- read.csv('inst/inputs/look_up.csv')} +#' \item \code{look_up <- read.csv(system.file('inputs', +#' 'look_up.csv',package = 'mapmetadata'))} #' \item \code{usethis::use_data(look_up)} #' } #' @docType data @@ -110,7 +112,7 @@ #' #' @keywords internal #' -#' @format A data frame with a variable number of rows and 3 columns +#' @format A data frame with a variable number of rows and 2 columns #' #' @source The csv was manually created "look_up" diff --git a/R/metadata_map.R b/R/metadata_map.R index 2686020..4aebe7b 100755 --- a/R/metadata_map.R +++ b/R/metadata_map.R @@ -15,12 +15,12 @@ select.list <- NULL #' variables, and categorisations for the same variable can be copied from one #' table to another. \cr \cr #' Example inputs are provided within the package data, for the user to run this -#' function in a demo mode. +#' function in a demo mode. Refer to the package website for more guidance. #' @param metadata_file This should be a csv download from HDRUK gateway #' (in the form of ID_Dataset_Metadata.csv). Run '?mapmetadata::metadata' to #' see how the metadata_file for the demo was created. -#' @param domain_file This should be a csv file created by the user, with each -#' domain on a separate line, no header. Run '?mapmetadata::domain_list' to +#' @param domain_file This should be a csv file created by the user, with two +#' columns (Domain_Code and Domain_Name). Run '?mapmetadata::domain_list' to #' see how the domain_file for the demo was created. #' @param look_up_file The lookup file makes auto-categorisations intended for #' variables that appear regularly in health datasets. It only works for 1:1 @@ -41,8 +41,8 @@ select.list <- NULL #' 'L-OUTPUT_' which gives each categorisation its own row. Default is TRUE. #' @param quiet Default is FALSE. Change to TRUE to quiet the cli_alert_info #' and cli_alert_success messages. -#' @return The function will return two csv files: 'OUTPUT_' which contains the -#' mappings and 'LOG_' which contains details about the dataset and session. +#' @return A html plot summarising the dataset. Various csv and png outputs to +#' summarise the user's mapping session for a specific table in the dataset. #' @examples #' # Demo run requires no function inputs but requires user interaction. #' # See package documentation to guide user inputs. diff --git a/inst/outputs/plots_tab_demo_domains.png b/inst/outputs/plots_tab_demo_domains.png index f077833c5868bcc6bfd58b6e50bb17f679f7092e..84b04fdb907abe4231630e7b024fa4863dd6445c 100644 GIT binary patch literal 92364 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 z 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 literal 68260 zcmdqH1y@{6(=N;mgWKQ^g9mrF!QC|k*Fb{15AG5ilHd*r5|SW60|ZGRSRgnA5AM#l zlly+3_gUXLzu?STo8DA+*Y2*a?yjn<;FaG1ARYoIEcU;ZK)+I1N@w5SA~tUSo4-~ zBde@S;gL7YInsTf38|z9pYo6slJv;uU?S!B+9zBgr9O=<$m&~R@K>fme}dHlrt6`P zT+r2zMM`s>${deT}0IfJ?QOf^ZvC&&45 z7}fQ3AT; zU?>sG#AG1aE;5LWNG!Gv%v+h1FPsDRBo?FhP1Xhr9htd+r5v@ff}q5(C|=vH(n%k=8fPl5H6pDz zTBl&lSO7&s?n$xP_mC|&0kqf2=22WSMum9AFUP32#J56D(XYj$6UTatEno3+s1rq} zJdS4V%CK_c(a2HDq4^5iKqg5r=*zRDZU~uq`kX+B^hx+al5=nV7atq6`VtW;O=^cQ z&pwounPzoUkPFK`&py?@kPGwzgF9xrZ*DdCkk^k+3eO^1I#N2JGbuEgmf;aWBKk-q z44j>+F(WSmf66e=h)vKRt13@e%+8ybBX6q4!6F3Z#;3(!8XO$l9u^(s%pe?i^MXBF zoXuC^t;IgSO0KP@b(*yb!MLI>=eESQ)HZdlx)5_vBELoF^hlvr%Va8 zeD+S04&9E&_aAPbp@fIO0Lxj$$tKI@_P9sA#QYo&QLs@cr+?y}X zSq3Z9FC!?EQ#HyofAlLODYHGZW$0??CX<^DPg|P^88f}7sJ4Wv(6ks^w?UtfEg?^y zvz(^LM@LCN!(gLYzLLYJN?){u-aw&>qNY(_PhYr-MsLsHj!!L+#D>JxaHTf-@kfVX z{R#aO?O#>IRf5%LmBBg{Re?1uHLg0YI-#{;KX|5%D;v~pQu>*atTd|26PT6WDWBwQ zAafcIo3hKZ8$Ij%f%8VkncCUH`Ng^BUc&5Wv1&0IF%_{nuaO<>ZC$SgFO=3fuhH#} z(yH%dO++T5Zz6<>E6O%2SjK9`e~(j62#?`Sk50HwhCYW26jCyhJ?DQaOvXDY_{z1p zr+)D;48J?pCF5z+=gNt#l7=|<(xZT1B)>?RotQb&snP?|mC9}Pd?&mnoF>}rjrm(2 zH~w^a_hh5KrQN^SzwAl_Yo@1L*0N!)I8ey`!^HEI-JPEo94cAZ!yLl_!y)VjHSijV z8j_l6PwdU!uRr-JJV$(=1^y=bjr;@8Im7wZ`S|(l^TpY`IgjV;&IhwE_JVc|=ibk@ z=RV`j7WN&TmkNx(3%WTw-#cHTqN47_#le+Jj!t$@ZlgLFt2(s|z_^Pi>>r$Pd_Un> zF*<@fk~{L{)q_Wamx_<*+Oc*1pv2-Q4c_Vs=RJ8fCna3fmM=cnK6_Uc z6NWZj(*H~JbK;9$k*|Jxj(e=<&yQ~hyzJlF=3mJAUj-2Rd;7Bo#snJqNgs_}tlUiA zBwo(mY+UDGe7;1vbUtePGH&l~>|Ki=s`QX~PYo(Xd`HA1D#A9xR=Yl29R@vIJ=v5t zv221j7c!wk8p1!IO5zG(XyQq|hqm$fS*`at&?Y5iCOwt$dWOx#Okd7y@AcxMcrO9fX3qx8I*{}w zhk3{44nYzVtJ(;Mf$@-efCMffDY@^XeRlC!vu`v>4t)plv@1NK;v#j;H1p2$bouOc z85a`Wf<*!=C`*~0nbH|s`Nmly9F~}D5ZAQZv~%WQbzIfA8Z=sQ>W=Dt75!!TL~K~; zQPhrNj>8kJ3M9qg7Xk~S!GYJYB5>1mkR8X!({H8p5o0)URckCNp;=E1?S53);SVQs z8<}vKhA_-YwDH{dCu@yxw``eey4+y46F)OLt+TDIH9>h3Z!y&|Yw3Nz(=FKX4EHV5 zTMhG@C;8syj*B3Ts|o49GqU6fP7-7xE&WCEn+_HSgtY zHGFPnYIyrTQqN=0;bp;aD9ut%eZ#Z#&*hRY8(v1e4E)&aDr#J> zVQ$gYqV>+{=X_(kc&s?1cF)+HP@_`S$qU_ z^5XM~Hg-2&Wc89bKJ$8Zq4JQv=gj4-QBkWomH$KB%wKW+Yx%q0cUKNyM%Q0aN^*-y z2Ze=N6$U%rd`{3IJ@Db!-D)Lr+a9tj7$y}bf4%v(*<3Vu>S|~3+37RRY3jGaOZA;& zr!VhZHOz3$z6n#iepvKqo%$hJceCq!F-N-Zx6l%l?R^n28lJzuc(~XR*l6o4*#m7WYA%VaP4*NU&{KV z7ix49vVU_vwmil{t1F!t%yC_MzrE~my*a}D!XiI~^Cter zc>_I&;B=TQj7WzcNRT`PkTRYiK}j{fO{9Z0?$B}=4-5R9Hu8zkkSL)1yd=C5mxL$ zP#3~cz;unbGgh(J&_H4X-qDdDAPOWD;0**kQXtCzyeonpAtC>zgOQM89FZXZw$TL2 zKfhGq`P1j05;-jz2@Uv<0C@Zg!T-}53@b$b&pQ`Tha{sXr=kLsdNv+*b}pVzUA>|z za3cW%hMV$ZPb4G~rauozMVIjq;Qzx>-`LAoLtV_q)tSr6*45gM%g@>E4<956KQZ9d z+0M%f=I8v}#Z$~rlKyWCG2s0VnVTN=w~5y?NqS=qZJ3;^haF6ai-(JcUJ4TigGqSU z+KcJREB@OZ_)n7lsh5|V7&o`CuP>J`KbNbA12?azs3$)SPb+{4^8Y(by7)kG z2?;invXHRSQbyHuW{ud>=(g^EM7fLwp{J*RUeymYN=YH*=47V-uzZj$J6^7#wz9H9 zL`kT&Jzh~VGh^J@6v1xyj}XymAaIGpmH3Mo>TW)ein4NHW#uEW!1G$_Gf(mmI7}^z zL%&oRKR!9W9Gjf~dy!ns?RU(#Y5%MNEC<>Z$Y9f-NJK(nul8<%9_D+nSoZ5n^4vHQ zSMLS7?QnjQYBtv!XsTq}#bpP+DZ@X@4%epBuJ&T>LE|7yEu{F+Kt`g_u0PnHYZU>h?^*G-}u>Ov^iVEOab&FbGa-$C4g})g7tJ5%VI$#or zFE=9#;zZuksuMj_qMq8Vv0iy1p#?mkqY?D^&d`E-ost?T360|Rcp2ftM1|S`o2bRd zSj3pfa{g$lR779er)&u}vH1P@j*=>*wnY1Hc?N_IUIYbDt?4?mY15$`m7$k?-sT$2 zQdSTSdSF!amL2N%6Qj~&<7H}s1|1iRf%=W|DjKgkwQ>-C4iKUH4=+0Iub*W{Rj8yZ z?lR{JIhzc<6z0xk)r)qTs#dTY&MIqi9B=(Pit&n}-sLXfdcVz8FwQ*m&b#_pn^@zO zw3g5Ayi7sxd2Ts||M6OpPKja*qpDGzSy^`k+Oy*iPshS%KRDLJ{UTKCasi||lT?|s zu2I1I+J59!7397o8a+unL6;C?T0<-JgMy7AK0DG#Y?CY4UE(!1tIp5NVI zR03(G|H($)7OA;knECceJae)Z8K@1=9&6!Zp{y^EUPYdW`bWO#v8^w2`5nrS*M}2G z^$JzKP3~cz{<36(b-mXvl0CiJEYK?okD}`N3hAX22guJDk&yV5lnQa*{qHNEV;rxJ*H=v!Br5GJ#V4Co^t=UV zU&=3kUy*AHyl~NQN|YO;R}ciI&#T)#us4{+`La}&LPPM`WJZZVr#f7~?Jy4S&qk4} ze`DAO>1DGn%3O>^cx`_`%^m-8ATm)sOicRL0bq zVXUwfbXq!SBZQHTH|(uNr)D;{8MB1tN7tqD-JkFDMqY_lxvlhMNLz#qLv2JCUz8}x zw|sP2EarIpPP;oCg*Ej4HiO-W3sa5KzUu3fk1k^^C!5>zE$<>#-ufM_uGV1g$-8AE z5FCQDFkZ?c3WT*>20mzevWgIgLS(>d+gR6s zZ2&)DJ<}*sUtTjdlaIUemaqM?C&44*vxWG+r-Y}wySplN^TA;vtT2g`%d}9BMQiMg za+uWCm=|SfM!E7djl4ihiSfhSDTt+l*VyU-OUhL=q zqt)XKbH)F&t^qVgJ(nM!5xGn?lVCLFovh1Ji-xf4;v{1?Kd`r$nf8C|Jt+?$r0I^tYVNKS4e0jDX~5_ zX?GHIUTl1<&IiM~OgXOqAte`$ZSAo)`<~q(q`qLqv$Bk@8 zK9d^B*oTUOkUWzQPgN{NZpX*j$Wq^W|Nb#XKj=hz*B?nuNGJ#G9^R|Hd1~gg)X{E# z?Df-<6e9=Gj5P3VcpnPYM|uC%$Rbo>qC#tW@)fs*l*tD#@~D`YXRGUk;s+-eF`Zg| zxa;4W9QAf)iWsOx{8H_eYuezb`wML>`&#oCJUM;*Ki{hvl?A^PaxQK;*}$}TbQlvJ zqM$70)@V1ZswEVXCg!uN>^CNkIrqW2#Gu9q<2Za1;)K+J?VwU9lpABdXiw)nJsGMw$8ja|DF?!cY53Rg9*_imT^fCUvcr?|- z3b!Y8dA!k1?RYXYfgKzky&|{$&aptJlo3Y{tp?J|Ws1B)b2R;`s$W`=Hiifk#uYSG zZO~-70_NRDOo?G$QbaJ?&eU7!mwS;b4Q`DFhhmN~4SdaHH=-*49BJ5Ss}itNRZ*$& zQYgAu)3(FsF0Wqo;qGFo&!|u*EVWwT`HXgIY(dDiN_y`YpJ|Xv$jLY1Q{d2y<5tvQ zp2Em-Fs#yzy8blJ(kEZ4YQLR|5zEx9&f=4eC=6H2=GJ*<|E+ge^DUJ7S*1ffDLa=E zYp2iB=BTfKKCY^*9Ijcb*NgqOnC%4aj>3{OBK&jq>r`=Hm+(lmUhuu^p{!9lnRh^H z)wFqFQl8|3I`tc>2*0m+f(avP1d6G64j{%-`8WcBpi4Kpq_GM?o5<_CR|ne@TG9rM zva5%`>pJ6GY(7Whc%AJStmj=9!o$G&Z9dKv*BjbVepPiZC57l=moq&vX<`D7N12{hWERH^$*8@U(zOAoi4 zw>(sm0s8ze#M!Bm3wesL0|RqbBKcfyMR;3Q)dn6T{K(RYCZB@|M9Nx*TBgH%s*ZIxsY%G0T*mg2{ z)I3Z=+E@%*aJ(;pbp7dPiwsfg-dG~s?(YS@i~e6&@rBu-{p|mF2=A5gU__e~wC+`QnkfvUV$z?qzXh(w8tDW4 z(9vAX%c@(LEjl_QR(rr%v0jCyV|0^wd%)@8XFM!?ZbJ91fidOJ_W+?J8re_RMAy(Po2 z)WI7ESAAU{&UXBkC)gDF5Tapz)f~X5!A@Iqau&)sEQ|d!)12JgU=tzaGAc zU5z$lDv)X(av5cY!Wi@=nObi)0vSrI%zu<9=rV7dx=tzV^8J(liEb*UvKlJhc)$^r zly$SVdo@-c)(6=r%pO)sM*4?aPk4ans2&SG?tB*a6Rt_V9V|f1YhO%37?5iu2JKY# znZ~cL#f>D=cf=?Jo#bt#$V-wNy`Ia%`%`GO#C>*4X+tix1S4g`BpG!Yza>4!h+SyD zKA}0fc;)EmCMV)P0ELo0mtBij(Zn@=z-{L@-(A698DaxLvAo69u{}4x8YHfzhIX8O zmz6EN4|rr)OLn$Bp`>nmnWh}81+}%li$0TmQ_Mx^SfO(LLpDte1vGsqi^!0rUOsLP z{J3xJp_(m4t)QeZk^9c!>G9fNljo+Ux2}6F3#|TR>qM3I`sScBvkA&-^V2Nqm^d<@ zJY6(V=Y`Rm@i5KHIoA%RN;?S*b-0AgsJpoq#y};W(%7iTRa3d zZ$womg9r05$Kg=F#{`&j1eGF_x#~VCGSX>LgMWVnE!`}| z1GTu!G17|4jUq3%Dg zd*iAM$k>b)j%~Dk%fcJm!z_(8l#$$D%YhDf|f1jRZA7TU%KzjFlR5Pj4X8G z1_<(kVC+vmxX_WcZb#%JEWuym(NeKR;Y;_kHFag$pl(cBYk#uxAy6P3QR+_sn8D%s zzdq#?KaWK}R%_ZwX%xD^5XR$B{e>R5b|4^L>qDqx^1WYEz27t*Pu7`L z92X;sadNg!z}7q4!CEr=JI`g>oyGRHe(kq_SudaxU|D3&i;0Fy1N(G21#-%)(kqXz zwE2=U<~b@^(ZPXjsHA#ryp?bUl1IU-GdKZBpS!{4w>mD6QvGcu}I066c{HU zD+@kdQQFzfO36hSM}O5v1(b73OL3wn3QN#?rDOlb!~%aa>BjW!*R6FhvFcAgyLHAP z*WW^K`r-wdWW~B@ly?l6j|EeSCE7d?rE4jBp#v3p7V`%%kyMT$#q1eD5;X)KwU|8M zsur2G`8Xb1u4^al2nx9G6F>!jf=GOuK@5DW$NE=nL&oLjOQ|rJWm9|L#g9a$kux9aJcy>IVXdjmLC4Ko zW`z_Q$w++}!YZ*aBGgv%Gb0>q6)Oz91~x{D`WEe&kh^O&i%7F6oxEQ%5olxmNtA-_ z0bstB2@C;;kx=@ljQ!I#9iOfQuGZ4ahO?Zo35#AvQ}m|;?ik@I)#h0S;?vDyn|0O4 zR@B&Ef#+MS#h=^@hP}z#O)XQ>B%d^

NEAw0Z5(@0Luu8-L3Z)-w0b5OJCApnfgl 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 lFr;(~NXSrvfOHE;N=ui3(v5UT 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%0ARgop8H#BR$Pk%InY%!r;{ zGV#}Sf;gu8l=Ls$PsNtZXuNeO~6OUJw=~^1kk2FSkkh&`zo!Z=l!KqS;gs zpm}Cro(JubqTii*iVQPb)#QC%FZ~oL-}lINibI21CA;CQzMgBuJrX;*q)MBv^g*0y zy(jJM4R$-N^^+&zj2K_WC8yo5>2(l#!wx)pc~5kseQy@e=qkgvuoaN2Uhap24e~^> zKsJK1QSZsqh=4e2h9iMx-^Y_ml-UZz`3~RNJ=0BWgMDFWgI9}2_*7!Xqk5TyN`LZj zxNF+e%I5_UEAo`9hLCt*=$n>o0~tlL8_QBrpv@k3Es*(&DU)lXv$S^W|nwAH^V8!7#ImP*X? zE3{T>$DjQ{&u2DTz}<7(`x|y1Ar33sA4+0-UR-M@^tMrt;-QT>?F0O0+mVX%OS5W_ zc(hPT!dO61e&57VH$ZQ9)pS6Ir$EZBXV;q96!Npl6XSgT%27G;3~U+W`yb8MxJ3em zz$G&I>Q$*TDh}0q|9-QUvbsMeTX4d}qe|>o>p691LR9xk#J9<%`7MXXF9^?i7XG<> zfAB9#iI?ZYK440KL?n!?uZ=Xn#MWijO6N{0n z3lLT{rmkXRqSFN_ z;&?8srD%!jK6=$|dQr*RaqB<`pID)2V zs=}@%#i+5*b${JlUc1*za^n#OB&f-shWS3tX`=V+^l86vA;KWxCNF~?9>PG*v_O0R zEw^glC%54#zjNzEKXXKsKaW3I`2sH>gQZyd>bb<({Usg1951Xs@b^4y&EPS~`+hb% zXFW)J8~M`Qocw9+;||&%P8*1 zfJ}BTO%*~Yy2r5S0$Q>5V2JsYmN7IRzMZIfO7q<>?LP{cd)zTHe(n0ujcEE6aJvS_f9EGFY7~>@I)!dOs@|0fk=auh-Qj?Xpu-t?1zi#PNb)m|3jaEu(d>-pSV*0tvkW zlfaOdOBdW^Xt~Of$(%~=&riMlm=9S?+G-vWMs+9hM3;D19g5XBdN)F$oXqR z|Bw{*V6s$tLJDAVa?$I7_$Gl~KM%To1gWgGQz4hHza`jn zX+qU@850%%lo9-x7V2-ao`3H8d&=-t+llt&=Ztry*Gu!mz`p)fMSoKYOWnW1?m+4< ztxi-Y)4ik?$Du~;M2%@0%? z;e0Kg2dm6SoW`UasytHSeHD6OM(lpvaSDu0#l;OzuUh41`sE4EbTz3~k|k7bSUae$ zWWV7T;F$V`X-J(1h0VbcF!9&xC5aqb>Z9CQM=;M^j)R z)f^kXb4Yp5a{ihH?a};8G00gNlo66+lMvxYpM$mTf(j9iVDI|&S<%Ap4$XyvgDjA9 z9I*18+dejP7E(Z(LO!{F00$%dZnuWp+mSI{>}cUJUSHKv2kDoYz%@Lr8&+LEf@RPZ zAmq1~?%@Tm#;T`tE1v)p!stCKb@A<`4+23a{C$rz_D%*CW?8I^S%JDV@(Wlx2>E{= zsq}++c+6lY^Y+qkPH<@%oNb?l7{XW|vF6vdx0jZ|0=Gv1IkmIVh7HUL%)hR@J=_E? z4fk*qD|@a6an@Gp_|ba%jersZldmwIh|EAuk$Jh7wfTjfX0q5Cx@z_owDtyae3OwMoYO2ov#|^nZ6qN5G<4qBPx2=jm@_@d9O3RJ0q8I{C`q2jSK() diff --git a/man/domain_list.Rd b/man/domain_list.Rd index 4b066d6..ca4ce9f 100644 --- a/man/domain_list.Rd +++ b/man/domain_list.Rd @@ -5,7 +5,7 @@ \alias{domain_list} \title{Internal: List of Domains} \format{ -A data frame with 8 rows and 1 column +A data frame with 8 rows and 2 columns } \source{ The csv was manually created @@ -18,8 +18,8 @@ Internal Dataset: A simplified list of domains, to demo the function metadata_map \cr \cr This data was created with these two steps: \enumerate{ -\item \code{domain_list <- - read.csv('inst/inputs/domain_list_demo.csv',header=FALSE)} +\item \code{domain_list <- read.csv(system.file('inputs', + 'domain_list_demo.csv', package = 'mapmetadata'))} \item \code{usethis::use_data(domain_list)} } } diff --git a/man/look_up.Rd b/man/look_up.Rd index 4119d1b..4d7d68b 100644 --- a/man/look_up.Rd +++ b/man/look_up.Rd @@ -5,7 +5,7 @@ \alias{look_up} \title{Internal: Auto-categorisations} \format{ -A data frame with a variable number of rows and 3 columns +A data frame with a variable number of rows and 2 columns } \source{ The csv was manually created @@ -20,7 +20,8 @@ If it is contained within this look-up table, it uses the auto-categorised domain code rather than asking the user to categorise.\cr\cr This data was created with these two steps: \enumerate{ -\item \code{look_up <- read.csv('inst/inputs/look_up.csv')} +\item \code{look_up <- read.csv(system.file('inputs', + 'look_up.csv',package = 'mapmetadata'))} \item \code{usethis::use_data(look_up)} } } diff --git a/man/metadata.Rd b/man/metadata.Rd index 6c0b155..e5114e9 100644 --- a/man/metadata.Rd +++ b/man/metadata.Rd @@ -21,7 +21,8 @@ This data was created with these steps: \item Navigate to the dataset of interest, select 'Download data' and download the Structural Metadata file \item Shorten name of downloaded file e.g. 360_NCCHD_Metadata.csv -\item \code{metadata <- read.csv("inst/inputs/360_NCCHD_Metadata.csv")} +\item \code{metadata <- read.csv(system.file('inputs', + '360_NCCHD_Metadata.csv', package = 'mapmetadata'))} \item \code{usethis::use_data(metadata)} } } diff --git a/man/metadata_map.Rd b/man/metadata_map.Rd index a32b72f..ace33e0 100644 --- a/man/metadata_map.Rd +++ b/man/metadata_map.Rd @@ -20,8 +20,8 @@ metadata_map( (in the form of ID_Dataset_Metadata.csv). Run '?mapmetadata::metadata' to see how the metadata_file for the demo was created.} -\item{domain_file}{This should be a csv file created by the user, with each -domain on a separate line, no header. Run '?mapmetadata::domain_list' to +\item{domain_file}{This should be a csv file created by the user, with two +columns (Domain_Code and Domain_Name). Run '?mapmetadata::domain_list' to see how the domain_file for the demo was created.} \item{look_up_file}{The lookup file makes auto-categorisations intended for @@ -50,8 +50,8 @@ Default is 5. and cli_alert_success messages.} } \value{ -The function will return two csv files: 'OUTPUT_' which contains the -mappings and 'LOG_' which contains details about the dataset and session. +A html plot summarising the dataset. Various csv and png outputs to +summarise the user's mapping session for a specific table in the dataset. } \description{ This function will read in the metadata file for a chosen dataset and create @@ -65,7 +65,7 @@ auto-categorisations will be made by the function for commonly occurring variables, and categorisations for the same variable can be copied from one table to another. \cr \cr Example inputs are provided within the package data, for the user to run this -function in a demo mode. +function in a demo mode. Refer to the package website for more guidance. } \examples{ # Demo run requires no function inputs but requires user interaction. diff --git a/vignettes/mapmetadata.Rmd b/vignettes/mapmetadata.Rmd index 06f0e5f..c02d2bd 100644 --- a/vignettes/mapmetadata.Rmd +++ b/vignettes/mapmetadata.Rmd @@ -95,19 +95,20 @@ Run `data("domain_list")` to load the demo domain list into your R environment ( ```r data("domain_list") -print(domain_list) -1 NO MATCH / UNSURE -2 METADATA -3 ID -4 DEMOGRAPHICS -5 Socioeconomic info -6 Location info -7 Education info -8 Health info +print(domain_list, row.names = FALSE) +Domain_Code Domain_Name + 1 NO MATCH / UNSURE + 2 METADATA + 3 ID + 4 DEMOGRAPHICS + 5 Socioeconomic info + 6 Location info + 7 Education info + 8 Health info ``` Change this csv domain file to be more specific to your research domains (sometimes called latent variables or concepts) as these are broad and generic categories for demo purposes. -It is strongly recommended to keep the first four domains (NO MATCH / UNSURE, METADATA, ID, DEMOGRAPHICS). If you change them, you also have to change the lookup table. +It is recommended to keep the first four domains (NO MATCH / UNSURE, METADATA, ID, DEMOGRAPHICS) as they map to the demo lookup table, but this is not essential. # Using a custom lookup table input (advanced) @@ -115,39 +116,45 @@ Run `data("look_up")` to load the demo look up table into your R environment (yo ```r data("look_up") -print(look_up) - variable domain_label domain_code -1 NA No Match / Unsure 1 -2 AVAIL_FROM_DT Metadata 2 -3 ALF_E ID 3 -4 MOTHER_ALF_E ID 3 -5 CHILD_ALF_E ID 3 -6 RALF ID 3 -7 ALF_STS_CD ID 3 -8 MOTHER_ALF_STS_CD ID 3 -9 CHILD_ALF_STS_CD ID 3 -10 ALF_MTCH_PCT ID 3 -11 MOTHER_ALF_MTCH_PCT ID 3 -12 CHILD_ALF_MTCH_PCT ID 3 -13 SERVICE_USER_LOCAL_ID_E ID 3 -14 MAT_SERVICE_USER_LOCAL_ID_E ID 3 -15 CLIENT_ID_E ID 3 -16 AGE Demographics 4 -17 MAT_AGE Demographics 4 -18 MAT_AGE_AT_ASS Demographics 4 -19 CONTACT_AGE Demographics 4 -20 WOB Demographics 4 -21 MAT_WOB Demographics 4 -22 SEX Demographics 4 -23 SERVICE_USER_SEX_CD Demographics 4 -24 NENONATE_SEX_CD Demographics 4 -25 GENDER Demographics 4 -26 GNDR Demographics 4 -27 GNDR_CD Demographics 4 +print(look_up, row.names = FALSE) + Variable Domain_Name + NO MATCH / UNSURE + AVAIL_FROM_DT METADATA + ALF_E ID + MOTHER_ALF_E ID + CHILD_ALF_E ID + RALF ID + ALF_STS_CD ID + MOTHER_ALF_STS_CD ID + CHILD_ALF_STS_CD ID + ALF_MTCH_PCT ID + MOTHER_ALF_MTCH_PCT ID + CHILD_ALF_MTCH_PCT ID + SERVICE_USER_LOCAL_ID_E ID + MAT_SERVICE_USER_LOCAL_ID_E ID + CLIENT_ID_E ID + AGE DEMOGRAPHICS + MAT_AGE DEMOGRAPHICS + MAT_AGE_AT_ASS DEMOGRAPHICS + CONTACT_AGE DEMOGRAPHICS + WOB DEMOGRAPHICS + MAT_WOB DEMOGRAPHICS + SEX DEMOGRAPHICS + SERVICE_USER_SEX_CD DEMOGRAPHICS + NENONATE_SEX_CD DEMOGRAPHICS + GENDER DEMOGRAPHICS + GNDR DEMOGRAPHICS + GNDR_CD DEMOGRAPHICS ``` -The default lookup table (printed above) governs the automatic categorisations. If you modify the default lookup file you must ensure that all values contained in the domain_code column map to the the domain_file in the way you intend. -For example, we can see that the domain_file has 8 domains, which will be labelled with 1-8 by the function. If we included a '0' or '9' in the domain_code column of the lookup file, they would have nothing to map to, and the function would crash. +The default lookup table (printed above) governs the automatic categorisations within the [metadata_map](https://github.com/aim-rsf/mapmetadata/tree/main/R/metadata_map.R) function: +1. When a variable needs to be mapped to a domain, before asking the user it searches the lookup table +2. If the variable name is contained within the 'Variable' column of the lookup table, this triggers the auto-categorisation +3. For this variable, the Domain_Name is extracted from the lookup table and the Domain_Code from the domain_list (therefore for a variable to be auto-categorised there must be a matching Domain_Name in the lookup and the domain_list files) + +When creating a custom lookup table, you can use this lookup table as a base and just append new rows to the bottom. +Alternatively, if you do not want variables to be automatically mapped in the way defined by this lookup table, you can delete the rows for those specific variables. +Remember, you will always have the opportunity to review the variables that have been auto-categorised, and change the mapping decision as needed. # Copying across tables