R/check_arguments.R

Defines functions exact_division check_args_collapse_method check_args_filter check_args_nonwear_periods check_args_sleep_periods check_args_sleep_scores check_no_missing_state check_no_missing_counts check_no_missing_timestamps check_epochlen_is_60

check_epochlen_is_60 <- function(agdb, algorithm) {
  assert_that(get_epoch_length(agdb) == 60,
    msg = paste0(
      algorithm, " assumes 60sec epochs. ",
      "Aggregate epochs with `collapse_epochs`."
    )
  )
}
check_no_missing_timestamps <- function(agdb) {
  assert_that(has_missing_epochs(agdb) == FALSE,
    msg = paste0(
      "Missing timestamps. ",
      "Epochs should be evenly spaced from ",
      "first(timestamp) to last(timestamp)."
    )
  )
}
check_no_missing_counts <- function(agdb, var) {
  assert_that(noNA(agdb[[var]]),
    msg = paste0(
      "Missing ", var, " counts. These ",
      "can be imputed with `impute_epochs`."
    )
  )
}
check_no_missing_state <- function(agdb) {
  assert_that(has_name(agdb, "sleep"),
    msg = paste0(
      "Missing asleep/awake (S/W) indicator column. ",
      "State can be inferred with `apply_sadeh` ",
      "or `apply_cole_kripke.`"
    )
  )
  assert_that(noNA(agdb[["sleep"]]),
    msg = "Missing asleep/awake values."
  )
}
check_args_sleep_scores <- function(agdb, algorithm) {
  check_epochlen_is_60(agdb, algorithm)
  check_no_missing_timestamps(agdb)
  check_no_missing_counts(agdb, "axis1")
}
check_args_sleep_periods <- function(agdb, algorithm) {
  check_epochlen_is_60(agdb, algorithm)
  check_no_missing_timestamps(agdb)
  check_no_missing_state(agdb)
}
check_args_nonwear_periods <- function(agdb, algorithm,
                                       use_magnitude) {
  check_epochlen_is_60(agdb, algorithm)
  check_no_missing_timestamps(agdb)
  check_no_missing_counts(agdb, "axis1")
  if (use_magnitude) {
    check_no_missing_counts(agdb, "axis2")
    check_no_missing_counts(agdb, "axis3")
  }
}
check_args_filter <- function(agdb, var) {
  assert_that(has_name(agdb, var))
  check_no_missing_timestamps(agdb)
  check_no_missing_counts(agdb, var)
}
check_args_collapse_method <- function(agdb, epoch_len_out) {
  check_no_missing_timestamps(agdb)
  check_no_missing_counts(agdb, "axis1")
  assert_that(epoch_len_out == 60,
    msg = "Use `collapse_epochs` to aggregate to 60s epochs."
  )
  assert_that(exact_division(epoch_len_out, get_epoch_length(agdb)),
    msg = paste0(
      "Output epoch length is not an exact multiple ",
      "of input epoch length."
    )
  )
}

exact_division <- function(a, b) {
  (a %% b) == 0
}
dipetkov/actigraph.sleepr documentation built on March 25, 2022, 2:33 a.m.