Skip to content

Commit

Permalink
refactor and docs
Browse files Browse the repository at this point in the history
  • Loading branch information
egillax committed Oct 11, 2024
1 parent 9036d96 commit e88415f
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 33 deletions.
69 changes: 38 additions & 31 deletions R/ExternalValidatePlp.R
Original file line number Diff line number Diff line change
Expand Up @@ -477,37 +477,6 @@ validateExternal <- function(validationDesignList,
ParallelLogger::registerLogger(logger)
on.exit(closeLog(logger))

# create download tasks
extractUniqueCombinations <- function(validationDesignList) {
# todo add covariatesettings (currently only same covariateSettings for all models per design is supported)
# todo where restrictPlpDatasettings is empty, take from model and take that into account when creating tasks
ParallelLogger::logInfo("Extracting unique combinations of targetId and restrictPlpDataSettings for extracting data")
j <- 1
restrictContentMap <- list()
uniqueCombinations <- do.call(rbind, lapply(seq_along(validationDesignList), function(i) {
design <- validationDesignList[[i]]
restrictContent <- paste0(design$restrictPlpDataSettings, collapse = "|")
if (!(restrictContent %in% restrictContentMap)) {
restrictContentMap[[j]] <<- restrictContent
j <<- j + 1
}
data.frame(
targetId = design$targetId,
outcomeId = design$outcomeId,
restrictPlpIndex = which(restrictContent == restrictContentMap),
restrictPlpDataSettings = restrictContent
)
}))
uniqueCombinations <- uniqueCombinations %>%
dplyr::group_by(.data$targetId, .data$restrictPlpDataSettings) %>%
dplyr::summarise(outcomeIds = list(unique(.data$outcomeId)),
restrictPlpIndex = dplyr::first(.data$restrictPlpIndex), .groups = "drop") %>%
dplyr::rowwise() %>%
dplyr::mutate(restrictPlpDataSettings =
list(validationDesignList[[.data$restrictPlpIndex]]$restrictPlpDataSettings)) %>%
dplyr::ungroup()
return(uniqueCombinations)
}
downloadTasks <- extractUniqueCombinations(validationDesignList)


Expand Down Expand Up @@ -797,3 +766,41 @@ getPopulation <- function(validationDesign, modelDesigns, plpData) {
return(population)
}

#' extractUniqueCombinations
#' create download tasks based on unique combinations of targetId and
#' restrictPlpDataSettings. This is used to avoid downloading the same data
#' multiple times.
#' @param validationDesignList A list of validationDesign objects
#' @return A list of download tasks
#' @keywords internal
extractUniqueCombinations <- function(validationDesignList) {
# TODO add covariatesettings (currently only same covariateSettings for all models per design is supported)
# TODO where restrictPlpDatasettings is empty, take from model and take that into account when creating tasks
ParallelLogger::logInfo("Extracting unique combinations of targetId and restrictPlpDataSettings for extracting data")
j <- 1
restrictContentMap <- list()
uniqueCombinations <- do.call(rbind,
lapply(seq_along(validationDesignList), function(i) {
design <- validationDesignList[[i]]
restrictContent <- paste0(design$restrictPlpDataSettings, collapse = "|")
if (!(restrictContent %in% restrictContentMap)) {
restrictContentMap[[j]] <<- restrictContent
j <<- j + 1 # increment j from parent environment
}
data.frame(
targetId = design$targetId,
outcomeId = design$outcomeId,
restrictPlpIndex = which(restrictContent == restrictContentMap),
restrictPlpDataSettings = restrictContent
)
}))
uniqueCombinations <- uniqueCombinations %>%
dplyr::group_by(.data$targetId, .data$restrictPlpDataSettings) %>%
dplyr::summarise(outcomeIds = list(unique(.data$outcomeId)),
restrictPlpIndex = dplyr::first(.data$restrictPlpIndex), .groups = "drop") %>%
dplyr::rowwise() %>%
dplyr::mutate(restrictPlpDataSettings =
list(validationDesignList[[.data$restrictPlpIndex]]$restrictPlpDataSettings)) %>%
dplyr::ungroup()
return(uniqueCombinations)
}
4 changes: 2 additions & 2 deletions man/PatientLevelPrediction.Rd

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

24 changes: 24 additions & 0 deletions man/extractUniqueCombinations.Rd

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

0 comments on commit e88415f

Please sign in to comment.