Skip to content

Commit

Permalink
allow for testing design lists which are not in a tomic object
Browse files Browse the repository at this point in the history
  • Loading branch information
shackett committed Feb 19, 2024
1 parent ce87ceb commit 2fe0db0
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 14 deletions.
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export(app_flow)
export(app_heatmap)
export(app_pcs)
export(center_tomic)
export(check_design)
export(check_tomic)
export(convert_wide_to_tidy_omic)
export(create_tidy_omic)
Expand Down
4 changes: 2 additions & 2 deletions R/data_classes.R
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ check_tidy_omic <- function(tidy_omic, fast_check = TRUE) {
checkmate::assertClass(tidy_omic, "tidy_omic")
checkmate::assertLogical(fast_check, len = 1)
# check design
check_design(tidy_omic)
check_design_in_tomic(tidy_omic)

feature_pk <- tidy_omic$design$feature_pk
sample_pk <- tidy_omic$design$sample_pk
Expand Down Expand Up @@ -475,7 +475,7 @@ check_triple_omic <- function(triple_omic, fast_check = TRUE) {
checkmate::assertClass(triple_omic, "triple_omic")
checkmate::assertLogical(fast_check, len = 1)
# check design
check_design(triple_omic)
check_design_in_tomic(triple_omic)

# variables are same as design
checkmate::assertNames(
Expand Down
56 changes: 45 additions & 11 deletions R/design.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,51 @@ get_design_tbl <- function(tomic) {
dplyr::bind_rows()
}

check_design <- function(tomic) {
#' Check Design
#'
#' Check that the design list embedded in `tomic` objects is properly
#' formatted.
#'
#' @param tomic_design a list with named attributes describing feature,
#' sample, and measurement variables.
#'
#' @return 0, invisibly
#'
#' @examples
#' check_design(brauer_2008_triple$design)
#'
#' @export
check_design <- function(tomic_design) {

checkmate::assertList(tomic_design)

EXPECTED_ATTRIBUTES <- c("feature_pk", "features", "measurements", "sample_pk", "samples")
extra_elements <- setdiff(names(tomic_design), EXPECTED_ATTRIBUTES)
if (length(extra_elements) > 0) {
cli::cli_abort(
"The following unexpected attributes were found in the design: {.field {extra_elements}}"
)
}

missing_elements <- setdiff(EXPECTED_ATTRIBUTES, names(tomic_design))
if (length(missing_elements) > 0) {
cli::cli_abort(
"The following attributes were missing in the design: {.field {missing_elements}}"
)
}

checkmate::assertString(tomic_design$feature_pk)
checkmate::assertDataFrame(tomic_design$features)
checkmate::assertDataFrame(tomic_design$measurements)
checkmate::assertString(tomic_design$sample_pk)
checkmate::assertDataFrame(tomic_design$samples)
}

check_design_in_tomic <- function(tomic) {

checkmate::assertClass(tomic, "tomic")
stopifnot("design" %in% names(tomic))
stopifnot(all(
sort(names(tomic$design)) ==
c("feature_pk", "features", "measurements", "sample_pk", "samples")
))

checkmate::assertString(tomic$design$feature_pk)
checkmate::assertDataFrame(tomic$design$features)
checkmate::assertDataFrame(tomic$design$measurements)
checkmate::assertString(tomic$design$sample_pk)
checkmate::assertDataFrame(tomic$design$samples)
check_design(tomic$design)

}

23 changes: 23 additions & 0 deletions man/check_design.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions man/romic-package.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion tests/testthat/test-design.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ test_that("extract design as a table", {
get_design_tbl(brauer_2008_tidy) %>%
expect_snapshot()

expect_invisible(check_design(brauer_2008_tidy))
expect_invisible(check_design_in_tomic(brauer_2008_tidy))
})

0 comments on commit 2fe0db0

Please sign in to comment.