#' Score a directory of tile data files with a Keras model
#'
#' @param slice_data_dir Directory containing sliced image .rds files
#'
#' @param model_h5_weights Saved h5 weights from a trained keras model, used to score
#' the image tiles.
#' @param model_params_dput_file Path to file containing \code{dput} export of parameters
#' used during training of the model contained in `model_h5_weights`.
#'
#' @param score_outdir Path to directory where results of image scoring should be save
#' @param compress_score_rds Should saved score results be compressed
#' @param return_score Should list of score results be returned as an R object by the function
#'
#' @param verbose Should messages about current step being processes be printed to screen?
#'
#' @return List of data frame with one row for each tile, containing:
#' List of lists containing model parameters and input `img_data` data frame with
#' additional column containing model predicted probabilities for each slice
#'
#' If \code{score_outdir != NULL} each list will be saved to score_outdir as an
#' RDS file, compressed if \code{compress_score_rds == TRUE}.
#'
#' @export
#' @importFrom pbapply pblapply
#' @importFrom keras load_model_hdf5
#' @importFrom stringr str_match
score_slice_data_dir <- function(slice_data_dir,
model_params_dput_file, model_h5_weights,
score_outdir = NULL, compress_score_rds = FALSE,
return_score = TRUE, keep_array = FALSE, verbose = FALSE) {
slice_data_files <- list.files(slice_data_dir, full.names = TRUE, recursive = TRUE)
images_to_score <- split(slice_data_files, 1:length(slice_data_files))
# load model and score
my_model_params <- eval(parse(model_params_dput_file))
scoring_model <- load_model_hdf5(model_h5_weights)
out <- pblapply(images_to_score, function(x) {
slice_data <- readRDS(x)
score_outname <- stringr::str_match(x, "(.*/)(.*?)\\.rds$")[, 3]
score_slice_data(
slice_data = slice_data,
model_params = my_model_params,
scoring_model = scoring_model,
score_outpath = file.path(score_outdir, paste0(score_outname, "_scores.rds")),
return_score = return_score,
keep_array = keep_array,
verbose = verbose
)
})
out
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.