diff --git a/laravel_app/app/Jobs/ProjectDownloadTiffJob.php b/laravel_app/app/Jobs/ProjectDownloadTiffJob.php index ef9aa6f..5d931f8 100644 --- a/laravel_app/app/Jobs/ProjectDownloadTiffJob.php +++ b/laravel_app/app/Jobs/ProjectDownloadTiffJob.php @@ -53,6 +53,7 @@ public function handle(): void if (!$process->isSuccessful()) { logger('error', $process->getErrorOutput()); } + logger($process->getOutput()); $this->download->setStatusSuccess(); } diff --git a/r_app/2_CI_data_prep.R b/r_app/2_CI_data_prep.R index 8c509ca..8ffa998 100644 --- a/r_app/2_CI_data_prep.R +++ b/r_app/2_CI_data_prep.R @@ -3,14 +3,453 @@ renv::activate('~/smartCane/r_app') renv::restore() + + library(here) library(sf) library(terra) library(tidyverse) library(lubridate) library(exactextractr) +#funcion CI_prep package + +date_list <- function(weeks_in_the_paste){ + week <- week(Sys.Date()- weeks(weeks_in_the_paste) ) + year <- year(Sys.Date()- weeks(weeks_in_the_paste) ) + days_filter <- Sys.Date() - weeks(weeks_in_the_paste) - days(0:6) + + return(c("week" = week, + "year" = year, + "days_filter" = list(days_filter))) + +} + +CI_func <- function(x, drop_layers = FALSE){ + CI <- x[[4]]/x[[2]]-1 + add(x) <- CI + names(x) <- c("red", "green", "blue","nir", "cloud" ,"CI") + if(drop_layers == FALSE){ + return(x) + }else{ + return(x$CI) + } +} + +mask_raster <- function(raster, fields){ + # x <- rast(filtered_files[1]) + x <- rast(raster) + emtpy_or_full <- global(x, sum) + + if(emtpy_or_full[1,] >= 2000000){ + names(x) <- c("red", "green", "blue","nir", "cloud") + cloud <- x$cloud + + cloud[cloud == 0 ] <- NA + x_masked <- mask(x, cloud, inverse = T) %>% crop(.,fields, mask = TRUE ) + x_masked <- x_masked %>% CI_func() + + message(raster, " masked") + return(x_masked) + } +} + +date_extract <- function(file_path) { + str_extract(file_path, "\\d{4}-\\d{2}-\\d{2}") +} + +extract_rasters_daily <- function(file, field_geojson, quadrants = TRUE, save_dir) { + # x <- rast(filtered_files[1])%>% CI_func(drop_layers = TRUE) + # date <- date_extract(filtered_files[1]) + # field_geojson <- sf::st_as_sf(pivot_sf_q) + + field_geojson <- sf::st_as_sf(field_geojson) + x <- rast(file[1]) %>% CI_func(drop_layers = TRUE) + date <- date_extract(file) + + pivot_stats <- cbind(field_geojson, mean_CI = round(exactextractr::exact_extract(x, field_geojson, fun = "mean"), 2)) %>% + st_drop_geometry() %>% rename("{date}" := mean_CI) + + save_suffix <- if (quadrants){"quadrant"} else {"whole_field"} + + save_path <- here(save_dir, paste0("extracted_", date, "_", save_suffix, ".rds")) + + saveRDS(pivot_stats, save_path) +} + +right = function(text, num_char) { + substr(text, nchar(text) - (num_char-1), nchar(text)) +} + +extract_CI_data <- function(field_names, harvesting_data, field_CI_data, season) { + # field_names = "1.2A" + # harvesting_data = harvesting_data + # field_CI_data = pivot_stats_long + # season= 2021 + + filtered_harvesting_data <- harvesting_data %>% + filter(Year == season, Field %in% field_names) + + filtered_field_CI_data <- field_CI_data %>% + filter(Field %in% field_names) + + # CI <- map_df(field_names, ~ { + ApproxFun <- approxfun(x = filtered_field_CI_data$Date, y = filtered_field_CI_data$value) + Dates <- seq.Date(ymd(min(filtered_field_CI_data$Date)), ymd(max(filtered_field_CI_data$Date)), by = 1) + LinearFit <- ApproxFun(Dates) + + CI <- data.frame(Date = Dates, FitData = LinearFit) %>% + left_join(., filtered_field_CI_data, by = "Date") %>% + filter(Date > filtered_harvesting_data$Season_start & Date < filtered_harvesting_data$Season_end) %>% + mutate(DOY = seq(1, n(), 1), + model = paste0("Data", season, " : ", field_names), + season = season, + Field = field_names) + # }) #%>% + #{if (length(field_names) > 0) message("Done!")} + + return(CI) +} + +load_fields <- function(geojson_path) { + field_geojson <- st_read(geojson_path) %>% + select(pivot, pivot_quadrant) %>% + vect() + return(field_geojson) +} + +load_harvest_data <- function(havest_data_path){ + harvest_data <- readRDS(havest_data_path) + return(harvest_data) +} + +load_rasters <- function(raster_path, dates) { + raster_files <- list.files(raster_path, full.names = TRUE, pattern = ".tif") + filtered_files <- map(dates$days_filter, ~ raster_files[grepl(pattern = .x, x = raster_files)]) %>% + compact() %>% + flatten_chr() + + return(filtered_files) +} + +mask_and_set_names <- function(filtered_files, fields) { + rasters_masked <- map(filtered_files, mask_raster, fields = fields) %>% set_names(filtered_files) + rasters_masked[sapply(rasters_masked, is.null)] <- NULL + rasters_masked <- setNames(rasters_masked, map_chr(names(rasters_masked), date_extract)) + + return(rasters_masked) +} + +calculate_total_pix_area <- function(filtered_files, fields_geojson) { + # total_pix_area <- rast(filtered_files[1]) %>% + # subset(1) %>% + # crop(fields_geojson, mask = TRUE)%>% + # global(.data, fun = "notNA") + total_pix_area <- rast(filtered_files[1]) %>% subset(1) %>% crop(fields_geojson, mask = TRUE) %>% freq(., usenames = TRUE) + + return(total_pix_area) +} + +cloud_layer_extract <- function(rasters_masked){ + cloud_layer_rast <- map(rasters_masked, function(spatraster) { + spatraster[[5]] + }) %>% rast() + + return(cloud_layer_rast) +} + +calculate_cloud_coverage <- function(cloud_layer_rast, total_pix_area) { + cloud_perc_list <- freq(cloud_layer_rast, usenames = TRUE) %>% + mutate(cloud_perc = (100 -((count/total_pix_area$count)*100)), + cloud_thres_5perc = as.integer(cloud_perc < 5), + cloud_thres_40perc = as.integer(cloud_perc < 40)) %>% + rename(Date = layer) %>% select(-value, -count) + + cloud_index_5perc <- which(cloud_perc_list$cloud_thres_5perc == max(cloud_perc_list$cloud_thres_5perc)) + cloud_index_40perc <- which(cloud_perc_list$cloud_thres_40perc == max(cloud_perc_list$cloud_thres_40perc)) + + return(list(cloud_perc_list = cloud_perc_list, cloud_index_5perc = cloud_index_5perc, cloud_index_40perc = cloud_index_40perc)) +} + +process_cloud_coverage <- function(cloud_coverage, rasters_masked) { + if (sum(cloud_coverage$cloud_perc_list$cloud_thres_5perc) > 1) { + message("More than 1 raster without clouds (<5%), max mosaic made ") + + cloudy_rasters_list <- rasters_masked[cloud_coverage$cloud_index_5perc] + rsrc <- sprc(cloudy_rasters_list) + x <- mosaic(rsrc) + names(x) <- c("red", "green", "blue", "nir", "cloud", "CI") + + } else if (sum(cloud_coverage$cloud_perc_list$cloud_thres_5perc) == 1) { + message("Only 1 raster without clouds (<5%)") + + x <- rast(rasters_masked[cloud_coverage$cloud_index_5perc[1]]) + names(x) <- c("red", "green", "blue", "nir", "cloud", "CI") + + } else if (sum(cloud_coverage$cloud_perc_list$cloud_thres_40perc) > 1) { + message("More than 1 image contains clouds, composite made of <40% cloud cover images") + + cloudy_rasters_list <- rasters_masked[cloud_coverage$cloud_index_40perc] + rsrc <- sprc(cloudy_rasters_list) + x <- mosaic(rsrc) + names(x) <- c("red", "green", "blue", "nir", "cloud", "CI") + + } else if (sum(cloud_coverage$cloud_perc_list$cloud_thres_40perc) == 0) { + message("No cloud free images available") + x <- rast(rasters_masked[1]) + x[x] <- NA + names(x) <- c("red", "green", "blue", "nir", "cloud", "CI") + } + + return(x) +} + +extract_rasters_daily_func <- function(daily_vals_dir, filtered_files, fields_geojson) { + extracted_files <- walk(filtered_files, extract_rasters_daily, field_geojson = fields_geojson, quadrants = TRUE, daily_vals_dir) + return(extracted_files) +} + +CI_load <- function(daily_vals_dir, grouping_variable){ + extracted_values <- list.files(here(daily_vals_dir), full.names = TRUE) + + field_CI_values <- extracted_values %>% + map_dfr(readRDS) %>% + group_by(.data[[grouping_variable]]) %>% + summarise(across(everything(), ~ first(na.omit(.)))) + return(field_CI_values) +} + +CI_long <- function(field_CI_values, pivot_long_cols){ + field_CI_long <- field_CI_values %>% + gather("Date", value, -pivot_long_cols) %>% + mutate(Date = right(Date, 8), + Date = ymd(Date) + ) %>% + drop_na(c("value","Date")) %>% + mutate(value = as.numeric(value))%>% + filter_all(all_vars(!is.infinite(.)))%>% + rename(Field = pivot_quadrant) + + return(field_CI_long) +} + +process_year_data <- function(year, harvest_data, field_CI_long) { + pivots_dates_year <- harvest_data %>% na.omit() %>% filter(Year == year) + pivot_select_model_year <- unique(pivots_dates_year$Field) + + data <- map_dfr(pivot_select_model_year, ~ extract_CI_data(.x, harvest_data, field_CI_long, season = year)) + + return(data) +} + + + +#functions for CI_data_prep +create_mask_and_crop <- function(file, pivot_sf_q) { + # file <- filtered_files[5] + message("starting ", file) + loaded_raster <- rast(file) + names(loaded_raster) <- c("Red", "Green", "Blue", "NIR") + # names(CI) <- c("green","nir") + message("raster loaded") + + # CI <- CI[[2]] / CI[[1]] - 1 + CI <- loaded_raster$NIR / loaded_raster$Green - 1 + + loaded_raster$CI <- CI + # CI <- CI$nir/CI$green-1 + message("CI calculated") + loaded_raster <- terra::crop(loaded_raster, pivot_sf_q, mask = TRUE) #%>% CI_func() + + loaded_raster[loaded_raster == 0] <- NA + # names(v_crop) <- c("red", "green", "blue","nir", "cloud" ,"CI") + # v_crop$CI <- v_crop$CI - 1 + new_file <- here(merged_final, paste0(tools::file_path_sans_ext(basename(file)), ".tif")) + writeRaster(loaded_raster, new_file, overwrite = TRUE) + + vrt_file <- here(daily_vrt, paste0(tools::file_path_sans_ext(basename(file)), ".vrt")) + terra::vrt(new_file, vrt_file, overwrite = TRUE) + + # v_crop <- mask_raster(v, pivot_sf_q) + return(loaded_raster) +} + + +extract_rasters_daily <- function(file, field_geojson, quadrants = TRUE, save_dir) { + # x <- rast(filtered_files[1])%>% CI_func(drop_layers = TRUE) + # date <- date_extract(filtered_files[1]) + # field_geojson <- sf::st_as_sf(pivot_sf_q) + field_geojson <- sf::st_as_sf(field_geojson) + x <- rast(file[1]) + date <- date_extract(file) + pivot_stats <- cbind(field_geojson, mean_CI = round(exactextractr::exact_extract(x$CI, field_geojson, fun = "mean"), 2)) %>% + st_drop_geometry() %>% rename("{date}" := mean_CI) + save_suffix <- if (quadrants){"quadrant"} else {"whole_field"} + save_path <- here(save_dir, paste0("extracted_", date, "_", save_suffix, ".rds")) + saveRDS(pivot_stats, save_path) +} + +#functions for rmarkdown file + + +create_RGB_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = TRUE, legend_is_portrait = FALSE, week, age, red = TRUE) { + r <- if (red) 1 else 4 # Set r based on the value of red + title <- if (red) paste0("RGB image of the fields") else paste0("False colour image of the fields") + + tm_shape(pivot_raster, unit = "m") + tm_rgb(r = r, g = 2, b = 3, max.value = 255) + + tm_layout(main.title = title, + main.title.size = 1) + + tm_scale_bar(position = c("right", "top"), text.color = "black") + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(pivot_shape) + tm_borders(col = "gray") + + tm_text("subField", size = 0.6, col = "gray") + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha = 0.5) +} + +create_CI_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week, age, legend_only = F){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = CI_breaks, palette = "RdYlGn",legend.is.portrait = legend_is_portrait ,midpoint = NA) + + tm_layout(main.title = paste0("Max CI week ", week,"\n", age, " weeks old"), + main.title.size = 1, legend.show = show_legend, legend.only = legend_only) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("subField", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +tmap_options(check.and.fix = TRUE) +} + +create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week_1, week_2, age){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = CI_diff_breaks, palette = "PRGn",legend.is.portrait = legend_is_portrait ,midpoint = 0, title = "CI difference") + + tm_layout(main.title = paste0("CI change week ", week_1, "- week ",week_2, "\n", age," weeks old"), + main.title.size = 1, legend.show = show_legend) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("subField", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +} + +ci_plot <- function(pivotName){ + # pivotName = "MV2B09" + # pivotName = "1.1" + + pivotShape <- AllPivots_merged %>% terra::subset(Field %in% pivotName) %>% st_transform(crs(CI)) + # age <- AllPivots %>% dplyr::filter(Field %in% pivotName) %>% st_drop_geometry() %>% dplyr::select(Age) %>% unique() %>% + # mutate(Age = round(Age)) + + age <- AllPivots %>% + group_by(Field) %>% + filter(Season == max(Season, na.rm = TRUE), Field %in% pivotName) %>% + dplyr::select(Age)%>% st_drop_geometry() %>% unique() + + AllPivots2 <- AllPivots0 %>% dplyr::filter(Field %in% pivotName) + + singlePivot <- CI %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m1 <- CI_m1 %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m2 <- CI_m2 %>% crop(., pivotShape) %>% mask(., pivotShape) + # singlePivot_m3 <- CI_m3 %>% crop(., pivotShape) %>% mask(., pivotShape) + + singlePivot_RGB <- RGB_raster %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_false <- RGB_raster_stretch %>% crop(., pivotShape) %>% mask(., pivotShape) + + abs_CI_last_week <- last_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + abs_CI_three_week <- three_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + + # planting_date <- harvesting_data %>% dplyr::filter(Field %in% pivotName) %>% ungroup() %>% dplyr::select(planting_date) %>% unique() + + joined_spans2 <- joined_spans %>% st_transform(crs(pivotShape)) %>% dplyr::filter(Field %in% pivotName) %>% st_crop(., pivotShape) + + # CImap_m2 <- create_CI_map(singlePivot_m2, AllPivots2, joined_spans2, show_legend= T, legend_is_portrait = T, week = week_minus_2, age = age -2) + Legend_map <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= T, legend_is_portrait =T, week = week_minus_1, age = age -1, legend_only = T) + CImap_m1 <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= T, legend_is_portrait =T, week = week_minus_1, age = age -1) + CImap <- create_CI_map(singlePivot, AllPivots2, joined_spans2, show_legend= F, legend_is_portrait = T, week = week, age = age ) + RGBmap <- create_RGB_map(singlePivot_false, AllPivots2, joined_spans2, show_legend= F, week = week, age = age, red =T ) + Falsemap <- create_RGB_map(singlePivot_false, AllPivots2, joined_spans2, show_legend= F, week = week, age = age, red =F ) + + + CI_max_abs_last_week <- create_CI_diff_map(abs_CI_last_week,AllPivots2, joined_spans2, show_legend = T, legend_is_portrait = T, week_1 = week, week_2 = week_minus_1, age = age) + CI_max_abs_three_week <- create_CI_diff_map(abs_CI_three_week, AllPivots2, joined_spans2, show_legend = F, legend_is_portrait = T, week_1 = week, week_2 = week_minus_3, age = age) + + # tst <- tmap_arrange(CImap_m2, CImap_m1, CImap,CI_max_abs_last_week, CI_max_abs_three_week, nrow = 1) + tst <- tmap_arrange(RGBmap,Falsemap, + CImap_m1, CImap, + CI_max_abs_last_week, CI_max_abs_three_week, + ncol = 2) + + cat(paste("## Field", pivotName, "-", age$Age[1], "weeks after planting/harvest", "\n")) + # cat("\n") + # cat('

Pivot', pivotName, '- week', week, '-', age$Age, 'weeks after planting/harvest

') + # cat(paste("# Pivot",pivots$pivot[i],"\n")) + print(tst) + +} + + +subchunkify <- function(g, fig_height=7, fig_width=5) { + g_deparsed <- paste0(deparse( + function() {g} + ), collapse = '') + + sub_chunk <- paste0("```{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=", fig_height, ", fig.width=", fig_width, ", echo=FALSE}", + "\n(", + g_deparsed + , ")()", + "\n``` + ") + + cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE)) +} + +cum_ci_plot <- function(pivotName){ + + # pivotName = "2.1" + + # Check if pivotName exists in the data + if (!pivotName %in% unique(CI_quadrant$Field)) { + # message("PivotName '", pivotName, "' not found. Plotting empty graph.") + g <- ggplot() + labs(title = "Empty Graph - Yield dates missing") + return( + subchunkify(g, fig_height=2, fig_width = 10) + ) + } else { + # message("PivotName '", pivotName, "' found. Plotting normal graph.") + data_ci <- CI_quadrant %>% filter(Field %in% pivotName) + + + + data_ci2 <- data_ci %>% mutate(CI_rate = cumulative_CI/DOY, + week = week(Date))%>% group_by(subField) %>% + mutate(mean_rolling10 = rollapplyr(CI_rate , width = 10, FUN = mean, partial = TRUE)) + + # date_preperation_perfect_pivot <- data_ci2 %>% group_by(season) %>% summarise(min_date = min(Date), + # max_date = max(Date), + # days = max_date - min_date) + + # Identify unique seasons + filtered_data <- data_ci2 %>% + group_by(season) %>% + mutate(rank = dense_rank(desc(season))) %>% + filter(rank <= 2) %>% + ungroup() %>% + dplyr::select(-rank) + + + # g <- ggplot(data= data_ci2 %>% filter(season %in% unique_seasons)) + + g <- ggplot(data= filtered_data ) + + # geom_line(aes(Date, mean_rolling10, col = subField)) + + geom_line(aes(Date, CI_rate, col = subField)) + + facet_wrap(~season, scales = "free_x") + + # geom_line(data= perfect_pivot, aes(Date , mean_rolling10, col = "Model CI (p5.1 Data 2022, \n date x axis is fictive)"), lty="11",size=1) + + labs(title = paste("CI rate - Field", pivotName), + y = "CI rate (cumulative CI / Age)")+ + # scale_y_continuous(limits=c(0.5,3), breaks = seq(0.5, 3, 0.5))+ + scale_x_date(date_breaks = "1 month", date_labels = "%m-%Y") + + theme(axis.text.x = element_text(angle = 60, hjust = 1), + legend.justification=c(1,0), legend.position = c(1, 0), + legend.title = element_text(size = 8), + legend.text = element_text(size = 8)) + + guides(color = guide_legend(nrow = 2, byrow = TRUE)) + subchunkify(g, fig_height=6, fig_width = 10) + } +} + -library(CIprep) # Vang alle command line argumenten op args <- commandArgs(trailingOnly = TRUE) @@ -56,7 +495,7 @@ weekly_CI_mosaic <- here(laravel_storage_dir, "weekly_mosaic") daily_vrt <- here(data_dir, "vrt") harvest_dir <- here(data_dir, "HarvestData") -source(here("r_app", "parameters_project.R")) +source("parameters_project.R") dir.create(here(laravel_storage_dir)) dir.create(here(data_dir)) @@ -69,19 +508,19 @@ dir.create(merged_final) dir.create(harvest_dir) - +weeks_ago = 0 # Creating weekly mosaic dates <- date_list(weeks_ago) - +print(dates) #load pivot geojson # pivot_sf_q <- st_read(here(data_dir, "pivot.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% vect() raster_files <- list.files(planet_tif_folder,full.names = T, pattern = ".tif") -head(raster_files) filtered_files <- map(dates$days_filter, ~ raster_files[grepl(pattern = .x, x = raster_files)]) %>% compact() %>% flatten_chr() +head(filtered_files) # filtered_files <- raster_files #for first CI extraction diff --git a/r_app/packages/CIprep_0.1.4.tar.gz b/r_app/packages/CIprep_0.1.4.tar.gz old mode 100644 new mode 100755 diff --git a/r_app/renv.lock b/r_app/renv.lock index ee6da0f..5dd9e9c 100644 --- a/r_app/renv.lock +++ b/r_app/renv.lock @@ -1,6 +1,6 @@ { "R": { - "Version": "4.3.1", + "Version": "4.3.3", "Repositories": [ { "Name": "CRAN", @@ -11,7 +11,7 @@ "Packages": { "CAST": { "Package": "CAST", - "Version": "0.8.1", + "Version": "0.9.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -19,73 +19,55 @@ "R", "caret", "data.table", + "forcats", "ggplot2", "grDevices", "graphics", "lattice", "methods", "plyr", + "sf", "stats", "utils", "zoo" ], - "Hash": "1ac6cd0b634bf5f394b1199425c9b3b2" - }, - "CIprep": { - "Package": "CIprep", - "Version": "0.1.4", - "Source": "unknown", - "Requirements": [ - "data.table", - "dplyr", - "exactextractr", - "here", - "lubridate", - "magrittr", - "purrr", - "sf", - "stats", - "stringr", - "terra", - "tidyr" - ], - "Hash": "2b02278685760e0f4295c8c9ee3c49d9" + "Hash": "51b195c0064f6060a76c3e4a4ecfe4e4" }, "DBI": { "Package": "DBI", - "Version": "1.1.3", + "Version": "1.2.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "b2866e62bab9378c3cc9476a1954226b" + "Hash": "164809cd72e1d5160b4cb3aa57f510fe" }, "FNN": { "Package": "FNN", - "Version": "1.1.3.2", + "Version": "1.1.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "e9e53a559ef99e0c02bc2f9a944f0bee" + "Hash": "eaabdc7938aa3632a28273f53a0d226d" }, "KernSmooth": { "Package": "KernSmooth", - "Version": "2.23-21", + "Version": "2.23-22", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "stats" ], - "Hash": "6314fc110e09548ba889491db6ae67fb" + "Hash": "2fecebc3047322fa5930f74fae5de70f" }, "MASS": { "Package": "MASS", - "Version": "7.3-60", + "Version": "7.3-60.0.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -96,15 +78,16 @@ "stats", "utils" ], - "Hash": "a56a6365b3fa73293ea8d084be0d9bb0" + "Hash": "b765b28387acc8ec9e9c1530713cb19c" }, "Matrix": { "Package": "Matrix", - "Version": "1.5-4.1", + "Version": "1.6-5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", + "grDevices", "graphics", "grid", "lattice", @@ -112,7 +95,7 @@ "stats", "utils" ], - "Hash": "38082d362d317745fb932e13956dccbb" + "Hash": "8c7115cd3a0e048bda2a7cd110549f7a" }, "ModelMetrics": { "Package": "ModelMetrics", @@ -148,14 +131,14 @@ }, "Rcpp": { "Package": "Rcpp", - "Version": "1.0.11", + "Version": "1.0.12", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "methods", "utils" ], - "Hash": "ae6cbbe1492f4de79c45fce06f967ce8" + "Hash": "5ea2700d21e038ace58269ecdbeb9ec0" }, "SQUAREM": { "Package": "SQUAREM", @@ -169,7 +152,7 @@ }, "XML": { "Package": "XML", - "Version": "3.99-0.14", + "Version": "3.99-0.16.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -177,7 +160,7 @@ "methods", "utils" ], - "Hash": "e5c8af79df616c135b21eaeb1dc6bc5c" + "Hash": "da3098169c887914551b607c66fe2a28" }, "abind": { "Package": "abind", @@ -193,13 +176,13 @@ }, "askpass": { "Package": "askpass", - "Version": "1.1", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "sys" ], - "Hash": "e8a22846fff485f0be3770c2da758713" + "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" }, "backports": { "Package": "backports", @@ -280,23 +263,25 @@ }, "bslib": { "Package": "bslib", - "Version": "0.5.0", + "Version": "0.7.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "base64enc", "cachem", + "fastmap", "grDevices", "htmltools", "jquerylib", "jsonlite", + "lifecycle", "memoise", "mime", "rlang", "sass" ], - "Hash": "1b117970533deb6d4e992c1b34e9d905" + "Hash": "8644cc53f43828f19133548195d7e59e" }, "cachem": { "Package": "cachem", @@ -311,7 +296,7 @@ }, "callr": { "Package": "callr", - "Version": "3.7.3", + "Version": "3.7.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -320,7 +305,7 @@ "processx", "utils" ], - "Hash": "9b2191ede20fa29828139b9900922e51" + "Hash": "d7e13f49c19103ece9e58ad2d83a7354" }, "caret": { "Package": "caret", @@ -375,7 +360,7 @@ }, "classInt": { "Package": "classInt", - "Version": "0.4-9", + "Version": "0.4-10", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -387,18 +372,18 @@ "graphics", "stats" ], - "Hash": "bee651a42a89633eccb36dca9d9ab413" + "Hash": "f5a40793b1ae463a7ffb3902a95bf864" }, "cli": { "Package": "cli", - "Version": "3.6.1", + "Version": "3.6.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "89e6d8219950eac806ae0c489052048a" + "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52" }, "clipr": { "Package": "clipr", @@ -450,6 +435,13 @@ ], "Hash": "f20c47fd52fae58b4e377c37bb8c335b" }, + "commonmark": { + "Package": "commonmark", + "Version": "1.9.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5d8225445acb167abf7797de48b2ee3c" + }, "conflicted": { "Package": "conflicted", "Version": "1.2.0", @@ -465,10 +457,13 @@ }, "cpp11": { "Package": "cpp11", - "Version": "0.4.5", + "Version": "0.4.7", "Source": "Repository", "Repository": "CRAN", - "Hash": "f07821e9b0aada6c999d4692e22a2ea7" + "Requirements": [ + "R" + ], + "Hash": "5a295d7d963cc5035284dcdbaf334f4e" }, "crayon": { "Package": "crayon", @@ -484,7 +479,7 @@ }, "crosstalk": { "Package": "crosstalk", - "Version": "1.2.0", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -493,32 +488,32 @@ "jsonlite", "lazyeval" ], - "Hash": "6aa54f69598c32177e920eb3402e8293" + "Hash": "ab12c7b080a57475248a30f4db6298c0" }, "curl": { "Package": "curl", - "Version": "5.0.1", + "Version": "5.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "2118af9cb164c8d2dddc7b89eaf732d9" + "Hash": "411ca2c03b1ce5f548345d2fc2685f7a" }, "data.table": { "Package": "data.table", - "Version": "1.14.8", + "Version": "1.15.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "b4c06e554f33344e044ccd7fdca750a9" + "Hash": "8ee9ac56ef633d0c7cab8b2ca87d683e" }, "dbplyr": { "Package": "dbplyr", - "Version": "2.3.3", + "Version": "2.5.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -542,7 +537,7 @@ "vctrs", "withr" ], - "Hash": "d6fd1b1440c1cacc6623aaa4e9fe352b" + "Hash": "39b2e002522bfd258039ee4e889e0fd1" }, "diagram": { "Package": "diagram", @@ -570,18 +565,18 @@ }, "digest": { "Package": "digest", - "Version": "0.6.33", + "Version": "0.6.35", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "b18a9cf3c003977b0cc49d5e76ebe48d" + "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31" }, "dplyr": { "Package": "dplyr", - "Version": "1.1.2", + "Version": "1.1.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -600,7 +595,7 @@ "utils", "vctrs" ], - "Hash": "dea6970ff715ca541c387de363ff405e" + "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" }, "dtplyr": { "Package": "dtplyr", @@ -623,7 +618,7 @@ }, "e1071": { "Package": "e1071", - "Version": "1.7-13", + "Version": "1.7-14", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -635,7 +630,7 @@ "stats", "utils" ], - "Hash": "1046cb48d06cb40c2900d8878f03a0fe" + "Hash": "4ef372b716824753719a8a38b258442d" }, "ellipsis": { "Package": "ellipsis", @@ -650,18 +645,18 @@ }, "evaluate": { "Package": "evaluate", - "Version": "0.21", + "Version": "0.23", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "d59f3b464e8da1aef82dc04b588b8dfb" + "Hash": "daf4a1246be12c1fa8c7705a0935c1a0" }, "exactextractr": { "Package": "exactextractr", - "Version": "0.9.1", + "Version": "0.10.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -671,11 +666,11 @@ "raster", "sf" ], - "Hash": "146d8a90d297c46e9ac4b9cad4643124" + "Hash": "3db813596387e90573ad092d5e3fde37" }, "fansi": { "Package": "fansi", - "Version": "1.0.4", + "Version": "1.0.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -683,7 +678,7 @@ "grDevices", "utils" ], - "Hash": "1d9e7ad3c8312a192dea7d3db0274fde" + "Hash": "962174cf2aeb5b9eea581522286a911f" }, "farver": { "Package": "farver", @@ -701,7 +696,7 @@ }, "fontawesome": { "Package": "fontawesome", - "Version": "0.5.1", + "Version": "0.5.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -709,7 +704,7 @@ "htmltools", "rlang" ], - "Hash": "1e22b8cabbad1eae951a75e9f8b52378" + "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" }, "forcats": { "Package": "forcats", @@ -769,7 +764,7 @@ }, "future": { "Package": "future", - "Version": "1.33.0", + "Version": "1.33.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -780,11 +775,11 @@ "parallelly", "utils" ], - "Hash": "8e92c7bc53e91b9bb1faf9a6ef0e8514" + "Hash": "fd7b1d69d16d0d114e4fa82db68f184c" }, "future.apply": { "Package": "future.apply", - "Version": "1.11.0", + "Version": "1.11.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -794,7 +789,7 @@ "parallel", "utils" ], - "Hash": "ba4be138fe47eac3e16a6deaa4da106e" + "Hash": "afe1507511629f44572e6c53b9baeb7c" }, "gargle": { "Package": "gargle", @@ -846,17 +841,17 @@ }, "geometries": { "Package": "geometries", - "Version": "0.2.3", + "Version": "0.2.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "Rcpp" ], - "Hash": "122e8341ead01f3746dd312ecc5ffd28" + "Hash": "a722b946e99fd7a006ab1239c0d1b2bc" }, "ggplot2": { "Package": "ggplot2", - "Version": "3.4.2", + "Version": "3.5.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -877,29 +872,29 @@ "vctrs", "withr" ], - "Hash": "3a147ee02e85a8941aad9909f1b43b7b" + "Hash": "52ef83f93f74833007f193b2d4c159a2" }, "globals": { "Package": "globals", - "Version": "0.16.2", + "Version": "0.16.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "codetools" ], - "Hash": "baa9585ab4ce47a9f4618e671778cc6f" + "Hash": "2580567908cafd4f187c1e5a91e98b7f" }, "glue": { "Package": "glue", - "Version": "1.6.2", + "Version": "1.7.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e" + "Hash": "e0b3a53876554bd45879e596cdb10a52" }, "googledrive": { "Package": "googledrive", @@ -961,23 +956,9 @@ "Repository": "CRAN", "Hash": "7a0051eef852c301b5efe2f7913dd45f" }, - "gridExtra": { - "Package": "gridExtra", - "Version": "2.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "graphics", - "grid", - "gtable", - "utils" - ], - "Hash": "7d7f283939f563670a697165b2cf5560" - }, "gtable": { "Package": "gtable", - "Version": "0.3.3", + "Version": "0.3.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -988,11 +969,11 @@ "lifecycle", "rlang" ], - "Hash": "b44addadb528a0d227794121c00572a0" + "Hash": "b29cf3031f49b04ab9c852c912547eef" }, "hardhat": { "Package": "hardhat", - "Version": "1.3.0", + "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1003,11 +984,11 @@ "tibble", "vctrs" ], - "Hash": "b56b42c50bb7c76a683e8e61f415d828" + "Hash": "921fd010cd788de75a9c71c2c3aee1f2" }, "haven": { "Package": "haven", - "Version": "2.5.3", + "Version": "2.5.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1024,7 +1005,7 @@ "tidyselect", "vctrs" ], - "Hash": "9b302fe352f9cfc5dcf0a4139af3a565" + "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1" }, "here": { "Package": "here", @@ -1063,24 +1044,23 @@ }, "htmltools": { "Package": "htmltools", - "Version": "0.5.5", + "Version": "0.5.8.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "base64enc", "digest", - "ellipsis", "fastmap", "grDevices", "rlang", "utils" ], - "Hash": "ba0240784ad50a62165058a27459304a" + "Hash": "81d371a9cc60640e74e4ab6ac46dcedc" }, "htmlwidgets": { "Package": "htmlwidgets", - "Version": "1.6.2", + "Version": "1.6.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1091,11 +1071,26 @@ "rmarkdown", "yaml" ], - "Hash": "a865aa85bcb2697f47505bfd70422471" + "Hash": "04291cc45198225444a397606810ac37" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "Rcpp", + "later", + "promises", + "utils" + ], + "Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0" }, "httr": { "Package": "httr", - "Version": "1.4.6", + "Version": "1.4.7", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1106,7 +1101,7 @@ "mime", "openssl" ], - "Hash": "7e5e3cbd2a7bc07880c94e22348fb661" + "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" }, "ids": { "Package": "ids", @@ -1181,17 +1176,17 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.7", + "Version": "1.8.8", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "methods" ], - "Hash": "266a20443ca13c65688b2116d5220f76" + "Hash": "e1b9c55281c5adc4dd113652d9e26768" }, "knitr": { "Package": "knitr", - "Version": "1.43", + "Version": "1.46", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1203,22 +1198,33 @@ "xfun", "yaml" ], - "Hash": "9775eb076713f627c07ce41d8199d8f6" + "Hash": "6e008ab1d696a5283c79765fa7b56b47" }, "labeling": { "Package": "labeling", - "Version": "0.4.2", + "Version": "0.4.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "graphics", "stats" ], - "Hash": "3d5108641f47470611a32d0bdf357a72" + "Hash": "b64ec208ac5bc1852b285f665d6368b3" + }, + "later": { + "Package": "later", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp", + "rlang" + ], + "Hash": "a3e051d405326b8b0012377434c62b37" }, "lattice": { "Package": "lattice", - "Version": "0.21-8", + "Version": "0.22-5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1229,16 +1235,17 @@ "stats", "utils" ], - "Hash": "0b8a6d63c8770f02a8b5635f3c431e6b" + "Hash": "7c5e89f04e72d6611c77451f6331a091" }, "lava": { "Package": "lava", - "Version": "1.7.2.1", + "Version": "1.8.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "SQUAREM", + "cli", "future.apply", "grDevices", "graphics", @@ -1249,7 +1256,7 @@ "survival", "utils" ], - "Hash": "bbc70840ea0f91f34dd9703efe4c96c3" + "Hash": "579303ca1e817d94cea694b319803380" }, "lazyeval": { "Package": "lazyeval", @@ -1282,7 +1289,7 @@ }, "leaflet": { "Package": "leaflet", - "Version": "2.2.0", + "Version": "2.2.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1300,20 +1307,21 @@ "scales", "sp", "stats", - "viridis", + "viridisLite", "xfun" ], - "Hash": "f73dcc38ff38127bc11ea776786996de" + "Hash": "ca012d4a706e21ce217ba15f22d402b2" }, "leaflet.providers": { "Package": "leaflet.providers", - "Version": "1.13.0", + "Version": "2.0.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ - "R" + "R", + "htmltools" ], - "Hash": "235cd5abed82d9e6e79eb05eee248983" + "Hash": "c0b81ad9d5d932772f7a457ac398cf36" }, "leafsync": { "Package": "leafsync", @@ -1331,7 +1339,7 @@ }, "lifecycle": { "Package": "lifecycle", - "Version": "1.0.3", + "Version": "1.0.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1340,21 +1348,21 @@ "glue", "rlang" ], - "Hash": "001cecbeac1cff9301bdc3775ee46a86" + "Hash": "b8552d117e1b808b09a832f589b79035" }, "listenv": { "Package": "listenv", - "Version": "0.9.0", + "Version": "0.9.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "4fbd3679ec8ee169ba28d4b1ea7d0e8f" + "Hash": "e2fca3e12e4db979dccc6e519b10a7ee" }, "lubridate": { "Package": "lubridate", - "Version": "1.9.2", + "Version": "1.9.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1363,11 +1371,11 @@ "methods", "timechange" ], - "Hash": "e25f18436e3efd42c7c590a1c4c15390" + "Hash": "680ad542fbcf801442c83a6ac5a2126c" }, "lwgeom": { "Package": "lwgeom", - "Version": "0.2-13", + "Version": "0.2-14", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1376,7 +1384,7 @@ "sf", "units" ], - "Hash": "9804362cc0267990ac61a85edeca73ed" + "Hash": "f1fb7cc9fc60f3b039201174268aaad9" }, "magrittr": { "Package": "magrittr", @@ -1401,7 +1409,7 @@ }, "mgcv": { "Package": "mgcv", - "Version": "1.8-42", + "Version": "1.9-1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1414,7 +1422,7 @@ "stats", "utils" ], - "Hash": "3460beba7ccc8946249ba35327ba902a" + "Hash": "110ee9d83b496279960e162ac97764ce" }, "mime": { "Package": "mime", @@ -1446,18 +1454,18 @@ }, "munsell": { "Package": "munsell", - "Version": "0.5.0", + "Version": "0.5.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "colorspace", "methods" ], - "Hash": "6dfe8bf774944bd5595785e3229d8771" + "Hash": "4fd8900853b746af55b81fda99da7695" }, "nlme": { "Package": "nlme", - "Version": "3.1-162", + "Version": "3.1-164", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1467,7 +1475,7 @@ "stats", "utils" ], - "Hash": "0984ce8da8da9ead8643c5cbbb60f83e" + "Hash": "a623a2239e642806158bc4dc3f51565d" }, "nnet": { "Package": "nnet", @@ -1493,17 +1501,17 @@ }, "openssl": { "Package": "openssl", - "Version": "2.1.0", + "Version": "2.1.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "askpass" ], - "Hash": "273a6bb4a9844c296a459d2176673270" + "Hash": "2a0dc8c6adfb6f032e4d4af82d258ab5" }, "pROC": { "Package": "pROC", - "Version": "1.18.4", + "Version": "1.18.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1512,11 +1520,11 @@ "methods", "plyr" ], - "Hash": "4b0115a395ea29f88b1c128dc483ced2" + "Hash": "82d32ebd548c6a4e7de73bab96411b3b" }, "parallelly": { "Package": "parallelly", - "Version": "1.36.0", + "Version": "1.37.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1524,7 +1532,7 @@ "tools", "utils" ], - "Hash": "bca377e1c87ec89ebed77bba00635b2e" + "Hash": "5410df8d22bd36e616f2a2343dbb328c" }, "pillar": { "Package": "pillar", @@ -1555,14 +1563,14 @@ }, "plyr": { "Package": "plyr", - "Version": "1.8.8", + "Version": "1.8.9", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "Rcpp" ], - "Hash": "d744387aef9047b0b48be2933d78e862" + "Hash": "6b8177fd19982f0020743fadbfdbd933" }, "png": { "Package": "png", @@ -1576,14 +1584,17 @@ }, "prettyunits": { "Package": "prettyunits", - "Version": "1.1.1", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" + "Requirements": [ + "R" + ], + "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" }, "processx": { "Package": "processx", - "Version": "3.8.2", + "Version": "3.8.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1592,11 +1603,11 @@ "ps", "utils" ], - "Hash": "3efbd8ac1be0296a46c55387aeace0f3" + "Hash": "0c90a7d71988856bad2a2a45dd871bb9" }, "prodlim": { "Package": "prodlim", - "Version": "2023.03.31", + "Version": "2023.08.28", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1611,24 +1622,25 @@ "stats", "survival" ], - "Hash": "3f60fadb28cfebdd20b0dd4198a38c60" + "Hash": "c73e09a2039a0f75ac0a1e5454b39993" }, "progress": { "Package": "progress", - "Version": "1.2.2", + "Version": "1.2.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ + "R", "R6", "crayon", "hms", "prettyunits" ], - "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" + "Hash": "f4625e061cb2865f111b47ff163a5ca6" }, "progressr": { "Package": "progressr", - "Version": "0.13.0", + "Version": "0.14.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1636,7 +1648,23 @@ "digest", "utils" ], - "Hash": "376a8ebcc878f9c1395e212548fc297a" + "Hash": "ac50c4ffa8f6a46580dd4d7813add3c4" + }, + "promises": { + "Package": "promises", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "Rcpp", + "fastmap", + "later", + "magrittr", + "rlang", + "stats" + ], + "Hash": "434cd5388a3979e74be5c219bcd6e77d" }, "proxy": { "Package": "proxy", @@ -1652,18 +1680,18 @@ }, "ps": { "Package": "ps", - "Version": "1.7.5", + "Version": "1.7.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "709d852d33178db54b17c722e5b1e594" + "Hash": "dd2b9319ee0656c8acf45c7f40c59de7" }, "purrr": { "Package": "purrr", - "Version": "1.0.1", + "Version": "1.0.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1674,18 +1702,29 @@ "rlang", "vctrs" ], - "Hash": "d71c815267c640f17ddbf7f16144b4bb" + "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" }, "ragg": { "Package": "ragg", - "Version": "1.2.5", + "Version": "1.3.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "systemfonts", "textshaping" ], - "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9" + "Hash": "082e1a198e3329d571f4448ef0ede4bc" + }, + "randomForest": { + "Package": "randomForest", + "Version": "4.7-1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "b52825075358b1ebd159e262bf40649d" }, "rapidjsonr": { "Package": "rapidjsonr", @@ -1706,7 +1745,7 @@ }, "raster": { "Package": "raster", - "Version": "3.6-23", + "Version": "3.6-26", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1716,11 +1755,11 @@ "sp", "terra" ], - "Hash": "337d6d70f7d6bf78df236a5a53f09db0" + "Hash": "7d6eda494f34a644420ac1bfd2a8023a" }, "readr": { "Package": "readr", - "Version": "2.1.4", + "Version": "2.1.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1739,7 +1778,7 @@ "utils", "vroom" ], - "Hash": "b5047343b3825f37ad9d3b5d89aa1078" + "Hash": "9de96463d2117f6ac49980577939dfb3" }, "readxl": { "Package": "readxl", @@ -1758,7 +1797,7 @@ }, "recipes": { "Package": "recipes", - "Version": "1.0.6", + "Version": "1.0.10", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1787,14 +1826,14 @@ "vctrs", "withr" ], - "Hash": "eb53ffc9674dc9a52c3a7e22d96d3f56" + "Hash": "69783cdd607c58fffb21c5c26c6ededf" }, "rematch": { "Package": "rematch", - "Version": "1.0.1", + "Version": "2.0.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" + "Hash": "cbff1b666c6fa6d21202f07e2318d4f1" }, "rematch2": { "Package": "rematch2", @@ -1818,7 +1857,7 @@ }, "reprex": { "Package": "reprex", - "Version": "2.0.2", + "Version": "2.1.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1836,7 +1875,7 @@ "utils", "withr" ], - "Hash": "d66fe009d4c20b7ab1927eb405db9ee2" + "Hash": "1425f91b4d5d9a8f25352c44a3d914ed" }, "reshape2": { "Package": "reshape2", @@ -1853,18 +1892,18 @@ }, "rlang": { "Package": "rlang", - "Version": "1.1.1", + "Version": "1.1.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb" + "Hash": "42548638fae05fd9a9b5f3f437fbbbe2" }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.23", + "Version": "2.26", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1877,18 +1916,17 @@ "jsonlite", "knitr", "methods", - "stringr", "tinytex", "tools", "utils", "xfun", "yaml" ], - "Hash": "79f14e53725f28900d936f692bfdd69f" + "Hash": "9b148e7f95d33aac01f31282d49e4f44" }, "rpart": { "Package": "rpart", - "Version": "4.1.19", + "Version": "4.1.23", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1897,21 +1935,21 @@ "graphics", "stats" ], - "Hash": "b3c892a81783376cc2204af0f5805a80" + "Hash": "b3d390424f41d04174cccf84d49676c2" }, "rprojroot": { "Package": "rprojroot", - "Version": "2.0.3", + "Version": "2.0.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "1de7ab598047a87bba48434ba35d497d" + "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" }, "rsample": { "Package": "rsample", - "Version": "1.2.0", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1932,18 +1970,18 @@ "tidyselect", "vctrs" ], - "Hash": "b20bb09ceef690842b44585ef49db74e" + "Hash": "95e0f11d79a7494919c14aa4d8e9e177" }, "rstudioapi": { "Package": "rstudioapi", - "Version": "0.15.0", + "Version": "0.16.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "5564500e25cffad9e22244ced1379887" + "Hash": "96710351d642b70e8f02ddeb237c46a7" }, "rvest": { "Package": "rvest", - "Version": "1.0.3", + "Version": "1.0.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1956,14 +1994,13 @@ "rlang", "selectr", "tibble", - "withr", "xml2" ], - "Hash": "a4a5ac819a467808c60e36e92ddf195e" + "Hash": "0bcf0c6f274e90ea314b812a6d19a519" }, "s2": { "Package": "s2", - "Version": "1.1.4", + "Version": "1.1.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1971,11 +2008,11 @@ "Rcpp", "wk" ], - "Hash": "f1cbe03bb3346f8e817518ffa20f9f5a" + "Hash": "32f7b1a15bb01ae809022960abad5363" }, "sass": { "Package": "sass", - "Version": "0.4.7", + "Version": "0.4.9", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1985,25 +2022,27 @@ "rappdirs", "rlang" ], - "Hash": "6bd4d33b50ff927191ec9acbf52fd056" + "Hash": "d53dbfddf695303ea4ad66f86e99b95d" }, "scales": { "Package": "scales", - "Version": "1.2.1", + "Version": "1.3.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "R6", "RColorBrewer", + "cli", "farver", + "glue", "labeling", "lifecycle", "munsell", "rlang", "viridisLite" ], - "Hash": "906cb23d2f1c5680b8ce439b44c6fa63" + "Hash": "c19df082ba346b0ffa6f833e92de34d1" }, "selectr": { "Package": "selectr", @@ -2020,7 +2059,7 @@ }, "sf": { "Package": "sf", - "Version": "1.0-14", + "Version": "1.0-16", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2039,11 +2078,11 @@ "units", "utils" ], - "Hash": "e2111252a76984ca50bf8d6314348681" + "Hash": "ad57b543f7c3fca05213ba78ff63df9b" }, "sfheaders": { "Package": "sfheaders", - "Version": "0.4.3", + "Version": "0.4.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2051,11 +2090,11 @@ "Rcpp", "geometries" ], - "Hash": "0b0a55852e87b8f8478efb505eba2ebe" + "Hash": "d63e904c63deda45f3f9149c7dcf8703" }, "shape": { "Package": "shape", - "Version": "1.4.6", + "Version": "1.4.6.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2064,11 +2103,44 @@ "graphics", "stats" ], - "Hash": "9067f962730f58b14d8ae54ca885509f" + "Hash": "5c47e84dc0a3ca761ae1d307889e796d" + }, + "shiny": { + "Package": "shiny", + "Version": "1.8.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "bslib", + "cachem", + "commonmark", + "crayon", + "fastmap", + "fontawesome", + "glue", + "grDevices", + "htmltools", + "httpuv", + "jsonlite", + "later", + "lifecycle", + "methods", + "mime", + "promises", + "rlang", + "sourcetools", + "tools", + "utils", + "withr", + "xtable" + ], + "Hash": "54b26646816af9960a4c64d8ceec75d6" }, "slider": { "Package": "slider", - "Version": "0.3.0", + "Version": "0.3.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2078,11 +2150,21 @@ "vctrs", "warp" ], - "Hash": "c1c73df260af9e1e3692eb3b8e1ecb88" + "Hash": "a584625e2b9e4fad4be135c8ea5c99aa" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5f5a7629f956619d519205ec475fe647" }, "sp": { "Package": "sp", - "Version": "2.0-0", + "Version": "2.1-3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2095,11 +2177,11 @@ "stats", "utils" ], - "Hash": "2551981e6f85d59c81652bf654d6c3ca" + "Hash": "1a0cc0cec2915700e63fd0921085cf6a" }, "stars": { "Package": "stars", - "Version": "0.6-4", + "Version": "0.6-5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2112,11 +2194,11 @@ "sf", "units" ], - "Hash": "8b4284bf9fddfb481d516877a2045023" + "Hash": "7ce64dc10f536ec74475652a2fd764fe" }, "stringi": { "Package": "stringi", - "Version": "1.7.12", + "Version": "1.8.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2125,11 +2207,11 @@ "tools", "utils" ], - "Hash": "ca8bd84263c77310739d2cf64d84d7c9" + "Hash": "058aebddea264f4c99401515182e656a" }, "stringr": { "Package": "stringr", - "Version": "1.5.0", + "Version": "1.5.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2142,11 +2224,11 @@ "stringi", "vctrs" ], - "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + "Hash": "960e2ae9e09656611e0b8214ad543207" }, "survival": { "Package": "survival", - "Version": "3.5-5", + "Version": "3.5-8", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2158,7 +2240,7 @@ "stats", "utils" ], - "Hash": "d683341b1fa2e8d817efde27d6e6d35b" + "Hash": "184d7799bca4ba8c3be72ea396f4b9a3" }, "sys": { "Package": "sys", @@ -2169,18 +2251,18 @@ }, "systemfonts": { "Package": "systemfonts", - "Version": "1.0.4", + "Version": "1.0.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "cpp11" ], - "Hash": "90b28393209827327de889f49935140a" + "Hash": "6d538cff441f0f1f36db2209ac7495ac" }, "terra": { "Package": "terra", - "Version": "1.7-39", + "Version": "1.7-71", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2188,11 +2270,11 @@ "Rcpp", "methods" ], - "Hash": "6037d18193ca3f16900646e773937094" + "Hash": "e8611881ab70a4fb7a1f629b31e6fcff" }, "textshaping": { "Package": "textshaping", - "Version": "0.3.6", + "Version": "0.3.7", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2200,7 +2282,7 @@ "cpp11", "systemfonts" ], - "Hash": "1ab6223d3670fac7143202cb6a2d43d5" + "Hash": "997aac9ad649e0ef3b97f96cddd5622b" }, "tibble": { "Package": "tibble", @@ -2223,7 +2305,7 @@ }, "tidyr": { "Package": "tidyr", - "Version": "1.3.0", + "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2242,11 +2324,11 @@ "utils", "vctrs" ], - "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf" + "Hash": "915fb7ce036c22a6a33b5a8adb712eb1" }, "tidyselect": { "Package": "tidyselect", - "Version": "1.2.0", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2258,7 +2340,7 @@ "vctrs", "withr" ], - "Hash": "79540e5fcd9e0435af547d885f184fd5" + "Hash": "829f27b9c4919c16b593794a6344d6c0" }, "tidyverse": { "Package": "tidyverse", @@ -2302,7 +2384,7 @@ }, "timeDate": { "Package": "timeDate", - "Version": "4022.108", + "Version": "4032.109", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2312,28 +2394,28 @@ "stats", "utils" ], - "Hash": "3f7918d2b36c17ffe07cddba6458453e" + "Hash": "fa276a2ec2555d74b4eabf56fba3d209" }, "timechange": { "Package": "timechange", - "Version": "0.2.0", + "Version": "0.3.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "cpp11" ], - "Hash": "8548b44f79a35ba1791308b61e6012d7" + "Hash": "c5f3c201b931cd6474d17d8700ccb1c8" }, "tinytex": { "Package": "tinytex", - "Version": "0.45", + "Version": "0.50", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "xfun" ], - "Hash": "e4e357f28c2edff493936b6cb30c3d65" + "Hash": "be7a76845222ad20adb761f462eed3ea" }, "tmap": { "Package": "tmap", @@ -2399,38 +2481,38 @@ }, "units": { "Package": "units", - "Version": "0.8-2", + "Version": "0.8-5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "Rcpp" ], - "Hash": "422376fe53419adcde4710d43acbcdd0" + "Hash": "119d19da480e873f72241ff6962ffd83" }, "utf8": { "Package": "utf8", - "Version": "1.2.3", + "Version": "1.2.4", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "1fe17157424bb09c48a8b3b550c753bc" + "Hash": "62b65c52671e6665f803ff02954446e9" }, "uuid": { "Package": "uuid", - "Version": "1.1-0", + "Version": "1.2-0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "f1cb46c157d080b729159d407be83496" + "Hash": "303c19bfd970bece872f93a824e323d9" }, "vctrs": { "Package": "vctrs", - "Version": "0.6.3", + "Version": "0.6.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2440,20 +2522,7 @@ "lifecycle", "rlang" ], - "Hash": "d0ef2856b83dc33ea6e255caf6229ee2" - }, - "viridis": { - "Package": "viridis", - "Version": "0.6.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "gridExtra", - "viridisLite" - ], - "Hash": "80cd127bc8c9d3d9f0904ead9a9102f1" + "Hash": "c03fa420630029418f7e6da3667aac4a" }, "viridisLite": { "Package": "viridisLite", @@ -2467,7 +2536,7 @@ }, "vroom": { "Package": "vroom", - "Version": "1.6.3", + "Version": "1.6.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2489,17 +2558,17 @@ "vctrs", "withr" ], - "Hash": "8318e64ffb3a70e652494017ec455561" + "Hash": "390f9315bc0025be03012054103d227c" }, "warp": { "Package": "warp", - "Version": "0.2.0", + "Version": "0.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "2982481615756e24e79fee95bdc95daa" + "Hash": "fea474d578b1cbcb696ae6ac8bdcc439" }, "widgetframe": { "Package": "widgetframe", @@ -2519,55 +2588,69 @@ }, "withr": { "Package": "withr", - "Version": "2.5.0", + "Version": "3.0.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "grDevices", - "graphics", - "stats" + "graphics" ], - "Hash": "c0e49a9760983e81e55cdd9be92e7182" + "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35" }, "wk": { "Package": "wk", - "Version": "0.7.3", + "Version": "0.9.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "68a7ab6ec1afb5f076172b983c069313" + "Hash": "5d4545e140e36476f35f20d0ca87963e" }, "xfun": { "Package": "xfun", - "Version": "0.39", + "Version": "0.43", "Source": "Repository", "Repository": "CRAN", "Requirements": [ + "grDevices", "stats", "tools" ], - "Hash": "8f56e9acb54fb525e66464d57ab58bcb" + "Hash": "ab6371d8653ce5f2f9290f4ec7b42a8e" }, "xml2": { "Package": "xml2", - "Version": "1.3.5", + "Version": "1.3.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", - "methods" + "cli", + "methods", + "rlang" ], - "Hash": "6c40e5cfcc6aefd88110666e18c31f40" + "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "utils" + ], + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" }, "yaml": { "Package": "yaml", - "Version": "2.3.7", + "Version": "2.3.8", "Source": "Repository", "Repository": "CRAN", - "Hash": "0d0056cc5383fbc240ccd0cb584bf436" + "Hash": "29240487a071f535f5e5d5a323b7afbd" }, "zoo": { "Package": "zoo",