#' Preprocessor flowcam data
#'
#' extract data from all \code{*_classes_*_data.csv} files
#'
#' @param input directory from which to read the data
#' @param output directory to which to write the data
#'
#' @return invisibly \code{TRUE} when completed successful
#'
#' @importFrom tools file_path_sans_ext
#' @importFrom data.table fread
#' @importFrom yaml read_yaml yaml.load
#' @importFrom utils write.csv
#' @importFrom dplyr left_join group_by summarise mutate n select filter full_join
#' @importFrom purrr reduce
#' @importFrom plyr join ldply
#' @importFrom magrittr %>%
#' @importFrom stats predict
#' @importFrom utils read.csv
#' @import e1071
#'
#' @export
extractor_flowcam_classify <- function(input, output) {
message("########################################################")
message(" classifying flowcam...")
add_path <- file.path(output, "flowcam")
dir.create(add_path, recursive = TRUE, showWarnings = FALSE)
loggit::set_logfile(file.path(add_path, "flowcam.log"))
load_parameter(file.path(input, "flowcam", "flowcam.yml"))
##
processing <- file.path(normalizePath(output), "flowcam", paste0("EXTRACTING_CLASSIFY.FLOWCAM", ".PROCESSING"))
error <- file.path(normalizePath(output), "flowcam", paste0("ERROR.EXTRACTING_CLASSIFY.FLOWCAM", ".ERROR"))
on.exit({
if (file.exists(processing)) {
unlink(processing)
file.create(error)
}
}
)
file.create(processing)
##
# Get flowcam directory names ------------------------------------------------------
flowcam_path <- file.path(input, "flowcam")
algae_traits_file <- file.path(add_path, "algae_traits_filtered.rds")
# additional files
design_file <- file.path(flowcam_path, "experimental_design.csv")
# composition_file <- file.path(flowcam_path, "compositions.csv")
# the classifiers for increasing temperatures will have to be updated during experiment!!
# classify ----------------------------------------------------------------
result <- classify_LEEF_2(
algae_traits = readRDS(algae_traits_file),
classifiers = readRDS(file.path(flowcam_path, par_classifiers())),
exp_design = read.csv(design_file),
species_tracked = par_species_tracked(),
timestamp = yaml::read_yaml(file.path(input, "flowcam", "sample_metadata.yml"))$timestamp
)
# SAVE --------------------------------------------------------------------
#
saveRDS(
result$algae_traits,
file = file.path(add_path, "algae_traits.rds")
)
# utils::write.csv(
# result$algae_traits,
# file = file.path(add_path, "algae_traits.csv"),
# row.names = FALSE
# )
#
utils::write.csv(
result$algae_density,
file = file.path(add_path, "algae_density.csv"),
row.names = FALSE
)
#
to_copy <- grep(
list.files(
file.path(input, "flowcam"),
full.names = TRUE
),
pattern = "_classifiers_",
invert = TRUE,
value = TRUE
)
file.copy(
from = to_copy,
to = file.path(output, "flowcam", "")
)
# Finalize ----------------------------------------------------------------
unlink(processing)
message(" done")
message("########################################################")
invisible(TRUE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.