From a203c88c250d6cee435df508cfa1bac76f55018e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=B6nig?= <ye87zine@usr.idiv.de> Date: Fri, 31 Jan 2025 09:14:25 +0100 Subject: [PATCH] msdm finally learn species embeddings --- R/04_02_modelling_msdm_embed.R | 39 ++- R/05_02_publication_analysis.R | 44 +-- renv.lock | 500 ++++++++++++++++++++++++++------- 3 files changed, 445 insertions(+), 138 deletions(-) diff --git a/R/04_02_modelling_msdm_embed.R b/R/04_02_modelling_msdm_embed.R index 8257a3a..dd991f5 100644 --- a/R/04_02_modelling_msdm_embed.R +++ b/R/04_02_modelling_msdm_embed.R @@ -15,7 +15,7 @@ model_data = model_data %>% # Train model #### # ----------------------------------------------------------------------# predictors = c("bio6", "bio17", "cmi", "rsds", "igfc", "dtfw", "igsw", "roughness") -formula = as.formula(paste0("present ~ ", paste(predictors, collapse = '+'), " + ", "e(species, dim = 30, train = T, lambda = 0.0001)")) +formula = as.formula(paste0("present ~ ", paste(predictors, collapse = '+'), " + ", "e(species, dim = 10)")) # 1. Cross validation for(fold in 1:5){ @@ -27,24 +27,21 @@ for(fold in 1:5){ while(!converged){ msdm_embed_fit = dnn( formula, - data = train_data, - hidden = c(400L, 400L, 400L), + data = model_data, + hidden = c(200L, 200L, 200L), loss = "binomial", - activation = c("sigmoid", "leaky_relu", "leaky_relu"), - epochs = 25000, - lr = 0.01, - baseloss = 1, - batchsize = nrow(train_data), - dropout = 0.3, - burnin = 500, - optimizer = config_optimizer("adam", weight_decay = 0.001), - lr_scheduler = config_lr_scheduler("reduce_on_plateau", patience = 100, factor = 0.7), - early_stopping = 300, + epochs = 2500, + lr = 0.001, + batchsize = 4096, + dropout = 0.25, + burnin = 50, + optimizer = config_optimizer("adam"), + early_stopping = 200, validation = 0.2, device = "cuda" ) - if(sum(!is.na(msdm_embed_fit$losses$valid_l)) > 5000){ + if(min(msdm_embed_fit$losses$valid_l) < 0.4){ converged = T } } @@ -56,17 +53,15 @@ for(fold in 1:5){ msdm_embed_fit = dnn( formula, data = model_data, - hidden = c(400L, 400L, 400L), + hidden = c(200L, 200L, 200L), loss = "binomial", - activation = c("sigmoid", "leaky_relu", "leaky_relu"), - epochs = 25000, - lr = 0.01, + epochs = 2500, + lr = 0.001, baseloss = 1, - batchsize = nrow(model_data), - dropout = 0.3, + batchsize = 4096, + dropout = 0.25, burnin = 500, - optimizer = config_optimizer("adam", weight_decay = 0.001), - lr_scheduler = config_lr_scheduler("reduce_on_plateau", patience = 100, factor = 0.7), + optimizer = config_optimizer("adam"), early_stopping = 300, validation = 0.2, device = "cuda" diff --git a/R/05_02_publication_analysis.R b/R/05_02_publication_analysis.R index babf048..19856d7 100644 --- a/R/05_02_publication_analysis.R +++ b/R/05_02_publication_analysis.R @@ -144,6 +144,12 @@ ggsave("plots/publication/model_performance_vs_functional_groups.pdf", # ------------------------------------------------------------------ # # 3. Range predictions #### # ------------------------------------------------------------------ # +library(caret) +library(gam) +library(gbm) +library(cito) +library(randomForest) + # Define plotting function plot_predictions = function(spec, model_data, raster_data, algorithms = c("gam", "gbm", "rf", "nn", "msdm")){ # Species data @@ -170,7 +176,7 @@ plot_predictions = function(spec, model_data, raster_data, algorithms = c("gam", # Load model tryCatch({ if(algorithm == "msdm"){ - load("data/r_objects/msdm_embed_results/msdm_embed_fit_full.RData") + load("data/r_objects/msdm_embed_results/msdm_embed_fit_test.RData") probabilities = predict(msdm_embed_fit, new_data, type = "response")[,1] predictions = factor(round(probabilities), levels = c("0", "1"), labels = c("A", "P")) } else if(algorithm == "nn") { @@ -184,7 +190,7 @@ plot_predictions = function(spec, model_data, raster_data, algorithms = c("gam", }, error = function(e){ warning(toupper(algorithm), ": Model could not be loaded.") }) - + raster_pred = terra::rast(raster_crop, nlyrs = 1) values(raster_pred)[as.integer(rownames(new_data))] <- predictions @@ -205,19 +211,19 @@ raster_data = terra::rast(raster_filepaths) %>% terra::crop(sf::st_bbox(sa_polygon)) %>% terra::project(sf::st_crs(model_data)$input) -spec = "Thyroptera tricolor" +spec = "Abrothrix andinus" pdf(file = paste0("plots/range_predictions/", spec, ".pdf")) plot_predictions(spec, model_data, raster_data, algorithms = c("gam", "gbm", "rf", "msdm")) dev.off() # ------------------------------------------------------------------ # -# 5. Compare msdm predictions #### +# 4. Compare msdm predictions #### # ------------------------------------------------------------------ # # Check predictions for different species -load("data/r_objects/msdm_embed_results/msdm_embed_fit.RData") +load("data/r_objects/msdm_embed_results/msdm_embed_fit_test.RData") specs = sample(unique(model_data$species), size = 2, replace = F) -new_data = spatSample(raster_data, 1000, replace = F, as.df = T) %>% +new_data = spatSample(raster_data, 10, replace = F, as.df = T) %>% drop_na() new_data1 = dplyr::mutate(new_data, species = specs[1]) @@ -226,7 +232,8 @@ new_data2 = dplyr::mutate(new_data, species = specs[2]) pred1 = predict(msdm_embed_fit, new_data1, type = "response") pred2 = predict(msdm_embed_fit, new_data2, type = "response") -pred1 == pred2 +pred1 +pred2 # ---> identical predictions @@ -237,7 +244,7 @@ msdm_embed_fit$net$e_1$parameters$weight$set_data(torch::torch_tensor(embeddings # ---> Invalid external pointer # ------------------------------------------------------------------ # -# 6. Compare species embeddings #### +# 5. Compare species embeddings #### # ------------------------------------------------------------------ # all_embeddings = lapply(1:5, function(fold){ load(paste0("data/r_objects/msdm_embed_results/msdm_embed_fit_fold", fold, ".RData")) @@ -260,14 +267,15 @@ for(i in seq_along(pairs)){ } # ------------------------------------------------------------------ # -# 7. Analyse species embeddings #### +# 6. Analyse species embeddings #### # ------------------------------------------------------------------ # -embeddings = coef(msdm_fit_embedding_raw)[[1]][[1]] -species_lookup = msdm_fit_embedding_raw$data$data[,c("species", "species_int")] %>% - distinct() %>% - mutate(genus = stringr::str_extract(rownames(embeddings), "([a-zA-Z]+) (.*)", group = 1)) +embeddings = coef(msdm_embed_fit)[[1]][[1]] +rownames(embeddings) = levels(species_lookup$species) -rownames(embeddings) = species_lookup$species +species_lookup = data.frame(species = levels(model_data$species)) %>% + dplyr::mutate( + genus = stringr::str_extract(species, "([a-zA-Z]+) (.*)", group = 1) + ) ## Dimensionality reduction #### ### PCA #### @@ -290,7 +298,6 @@ ggplot(df_plot, aes(x = X, y = Y, col = functional_group, label=genus)) + geom_text(hjust=0, vjust=0) + guides(col="none") -# --> PCA not informative on 2 dimensions either ### TSNE #### tsne_result <- Rtsne(embeddings, verbose = FALSE) @@ -306,14 +313,11 @@ ggplot(df_plot, aes(x = X, y = Y, col = functional_group, label=genus)) + geom_text(hjust=0, vjust=0) + guides(col="none") -# --> TSNE not informative on 2 dimensions either - - ### KNN #### embeddings_dist = as.matrix(dist(embeddings)) k = 9 -knn_results = sapply(as.character(species_lookup$species), FUN = function(spec){ +knn_results = sapply(as.integer(species_lookup$species), FUN = function(spec){ return(sort(embeddings_dist[spec,])[2:(k+1)]) }, USE.NAMES = T, simplify = F) @@ -344,7 +348,7 @@ plot_knn_ranges(sample(species_lookup$species, 1)) # Repeat this line to plot ra # Clustering embeddings_dist = dist(embeddings, method = "euclidean") -hclust_complete = hclust(dist_matrix, method = "complete") +hclust_complete = hclust(embeddings_dist, method = "complete") plot(hclust_complete, main = "Complete Linkage", xlab = "", sub = "", labels = FALSE) # Phylo Correlation diff --git a/renv.lock b/renv.lock index 7f13630..f26410c 100644 --- a/renv.lock +++ b/renv.lock @@ -112,6 +112,54 @@ ], "Hash": "64ff3427f559ce3f2597a4fe13255cb6" }, + "Deriv": { + "Package": "Deriv", + "Version": "4.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "cd52c065c9e687c60c56b51f10f7bcd3" + }, + "FactoMineR": { + "Package": "FactoMineR", + "Version": "2.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DT", + "MASS", + "R", + "car", + "cluster", + "ellipse", + "emmeans", + "flashClust", + "ggplot2", + "ggrepel", + "grDevices", + "graphics", + "lattice", + "leaps", + "multcompView", + "scatterplot3d", + "stats", + "utils" + ], + "Hash": "54fc333adf872599b177a62d5759892a" + }, + "Formula": { + "Package": "Formula", + "Version": "1.2-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "7a29697b75e027767a53fde6c903eca7" + }, "KernSmooth": { "Package": "KernSmooth", "Version": "2.23-20", @@ -140,11 +188,12 @@ }, "Matrix": { "Package": "Matrix", - "Version": "1.5-4", + "Version": "1.6-5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", + "grDevices", "graphics", "grid", "lattice", @@ -152,7 +201,20 @@ "stats", "utils" ], - "Hash": "e779c7d9f35cc364438578f334cffee2" + "Hash": "8c7115cd3a0e048bda2a7cd110549f7a" + }, + "MatrixModels": { + "Package": "MatrixModels", + "Version": "0.5-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Matrix", + "R", + "methods", + "stats" + ], + "Hash": "0776bf7526869e0286b0463cb72fb211" }, "ModelMetrics": { "Package": "ModelMetrics", @@ -188,14 +250,14 @@ }, "Rcpp": { "Package": "Rcpp", - "Version": "1.0.13", + "Version": "1.0.14", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "methods", "utils" ], - "Hash": "f27411eb6d9c3dada5edd444b8416675" + "Hash": "e7bdd9ee90e96921ca8a0f1972d66682" }, "RcppArmadillo": { "Package": "RcppArmadillo", @@ -261,6 +323,20 @@ ], "Hash": "75b4a36aeeed440ad03b996081190703" }, + "Rdpack": { + "Package": "Rdpack", + "Version": "2.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "rbibutils", + "tools", + "utils" + ], + "Hash": "a9e2118c664c2cd694f03de074e8d4b3" + }, "Rfast": { "Package": "Rfast", "Version": "2.1.0", @@ -275,6 +351,17 @@ ], "Hash": "79e8394e1fa06a4ae954b70ca9b16e8f" }, + "Rtsne": { + "Package": "Rtsne", + "Version": "0.17", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp", + "stats" + ], + "Hash": "f81f7764a3c3e310b1d40e1a8acee19e" + }, "SQUAREM": { "Package": "SQUAREM", "Version": "2021.1", @@ -285,6 +372,20 @@ ], "Hash": "0cf10dab0d023d5b46a5a14387556891" }, + "SparseM": { + "Package": "SparseM", + "Version": "1.84-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "e78499cbcbbca98200254bd171379165" + }, "Symobio": { "Package": "Symobio", "Version": "0.0.0.9000", @@ -422,27 +523,28 @@ }, "bit": { "Package": "bit", - "Version": "4.5.0", + "Version": "4.5.0.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "5dc7b2677d65d0e874fc4aaf0e879987" + "Hash": "f89f074e0e49bf1dbe3eba0a15a91476" }, "bit64": { "Package": "bit64", - "Version": "4.5.2", + "Version": "4.6.0-1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "bit", + "graphics", "methods", "stats", "utils" ], - "Hash": "e84984bf5f12a18628d9a02322128dfd" + "Hash": "4f572fbc586294afff277db583b9060f" }, "blob": { "Package": "blob", @@ -546,6 +648,41 @@ ], "Hash": "d7e13f49c19103ece9e58ad2d83a7354" }, + "car": { + "Package": "car", + "Version": "3.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Formula", + "MASS", + "R", + "abind", + "carData", + "grDevices", + "graphics", + "lme4", + "mgcv", + "nlme", + "nnet", + "pbkrtest", + "quantreg", + "scales", + "stats", + "utils" + ], + "Hash": "82067bf302d1440b730437693a86406a" + }, + "carData": { + "Package": "carData", + "Version": "3.0-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "ac6cdb8552c61bd36b0e54d07cf2aab7" + }, "caret": { "Package": "caret", "Version": "7.0-1", @@ -598,9 +735,13 @@ }, "cito": { "Package": "cito", - "Version": "1.1", - "Source": "Repository", - "Repository": "CRAN", + "Version": "1.1.1", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "cito", + "RemoteUsername": "citoverse", + "RemoteSha": "46ee5c209e1241d7daa8262fdaf3904c841c36c7", "Requirements": [ "R", "abind", @@ -611,11 +752,12 @@ "lme4", "parabar", "progress", + "rlang", "tibble", "torch", "torchvision" ], - "Hash": "087adef61576c3153598bc3859b17969" + "Hash": "2886d012c57d81f96151e8ed41af3ed3" }, "class": { "Package": "class", @@ -750,13 +892,6 @@ "Repository": "CRAN", "Hash": "f0acb9dcb71a9cd9d5ae233c5035b1c5" }, - "commonmark": { - "Package": "commonmark", - "Version": "1.9.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "14eb0596f987c71535d07c3aff814742" - }, "conflicted": { "Package": "conflicted", "Version": "1.2.0", @@ -772,14 +907,31 @@ }, "coro": { "Package": "coro", - "Version": "1.0.4", + "Version": "1.1.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "rlang" ], - "Hash": "4b224d10f3b10ce791c6a4afd50abce3" + "Hash": "4998c8836ff95c90993a4eb8d853df71" + }, + "cowplot": { + "Package": "cowplot", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "ggplot2", + "grDevices", + "grid", + "gtable", + "methods", + "rlang", + "scales" + ], + "Hash": "8ef2084dd7d28847b374e55440e4f8cb" }, "cpp11": { "Package": "cpp11", @@ -932,6 +1084,30 @@ ], "Hash": "5c8646b40ba69146afc070aaea9f893c" }, + "doBy": { + "Package": "doBy", + "Version": "4.6.24", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Deriv", + "MASS", + "Matrix", + "R", + "boot", + "broom", + "cowplot", + "dplyr", + "ggplot2", + "methods", + "microbenchmark", + "modelr", + "rlang", + "tibble", + "tidyr" + ], + "Hash": "8ddf795104defe53c5392a588888ec68" + }, "doParallel": { "Package": "doParallel", "Version": "1.0.17", @@ -1017,6 +1193,18 @@ ], "Hash": "27a09ca40266a1066d62ef5402dd51d6" }, + "ellipse": { + "Package": "ellipse", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "stats" + ], + "Hash": "4aa52573ccedf7dc635a0eb471944a36" + }, "ellipsis": { "Package": "ellipsis", "Version": "0.3.2", @@ -1028,6 +1216,34 @@ ], "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" }, + "emmeans": { + "Package": "emmeans", + "Version": "1.10.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "estimability", + "graphics", + "methods", + "mvtnorm", + "numDeriv", + "stats", + "utils" + ], + "Hash": "6b0c6fcbdbefe525d2ee713f95880f90" + }, + "estimability": { + "Package": "estimability", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "21ec52af13afbcab1cb317567b639b0a" + }, "evaluate": { "Package": "evaluate", "Version": "1.0.0", @@ -1109,6 +1325,16 @@ ], "Hash": "192053c276525c8495ccfd523aa8f2d1" }, + "flashClust": { + "Package": "flashClust", + "Version": "1.01-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "09fb526c49460c4933bc077db6eba924" + }, "fontawesome": { "Package": "fontawesome", "Version": "0.5.2", @@ -1152,14 +1378,14 @@ }, "fs": { "Package": "fs", - "Version": "1.6.4", + "Version": "1.6.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a" + "Hash": "7f48af39fa27711ea5fbd183b399920d" }, "furrr": { "Package": "furrr", @@ -1287,6 +1513,22 @@ ], "Hash": "44c6a2f8202d5b7e878ea274b1092426" }, + "ggrepel": { + "Package": "ggrepel", + "Version": "0.9.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "ggplot2", + "grid", + "rlang", + "scales", + "withr" + ], + "Hash": "bc7c0d607038ae9cb4f539b47cbdbda7" + }, "globals": { "Package": "globals", "Version": "0.16.3", @@ -1385,7 +1627,7 @@ }, "gtable": { "Package": "gtable", - "Version": "0.3.5", + "Version": "0.3.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1394,9 +1636,10 @@ "glue", "grid", "lifecycle", - "rlang" + "rlang", + "stats" ], - "Hash": "e18861963cbc65a27736e02b3cd3c4a0" + "Hash": "de949855009e2d4d0e52a844e30617ae" }, "hardhat": { "Package": "hardhat", @@ -1734,6 +1977,13 @@ ], "Hash": "d908914ae53b04d4c0c0fd72ecc35370" }, + "leaps": { + "Package": "leaps", + "Version": "3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06ddb0b69b0714ae929b1b6029d6faf0" + }, "libgeos": { "Package": "libgeos", "Version": "3.11.1-2", @@ -1766,7 +2016,7 @@ }, "lme4": { "Package": "lme4", - "Version": "1.1-35.5", + "Version": "1.1-36", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1784,11 +2034,12 @@ "nlme", "nloptr", "parallel", + "reformulas", "splines", "stats", "utils" ], - "Hash": "16a08fc75007da0d08e0c0388c7c33e6" + "Hash": "5f0e0456cdabdc82fbf1e4a7dcb5885e" }, "lubridate": { "Package": "lubridate", @@ -1853,6 +2104,18 @@ ], "Hash": "3460beba7ccc8946249ba35327ba902a" }, + "microbenchmark": { + "Package": "microbenchmark", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "stats" + ], + "Hash": "f9d226d88d4087d817d4e616626ce8e5" + }, "mime": { "Package": "mime", "Version": "0.12", @@ -1901,6 +2164,16 @@ ], "Hash": "4f50122dc256b1b6996a4703fecea821" }, + "multcompView": { + "Package": "multcompView", + "Version": "0.1-10", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grid" + ], + "Hash": "bd174e328b679e9a1ce589422002c72b" + }, "munsell": { "Package": "munsell", "Version": "0.5.1", @@ -1912,6 +2185,17 @@ ], "Hash": "4fd8900853b746af55b81fda99da7695" }, + "mvtnorm": { + "Package": "mvtnorm", + "Version": "1.3-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "c7241e6be9d6df551a2e539a50f5c875" + }, "nlme": { "Package": "nlme", "Version": "3.1-162", @@ -2006,7 +2290,7 @@ }, "parabar": { "Package": "parabar", - "Version": "1.1.1", + "Version": "1.4.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2017,7 +2301,7 @@ "progress", "utils" ], - "Hash": "9f6ea158c643fb9fbbf096c958b51fdf" + "Hash": "9b5d3243600f0e70472ec4b376765f9c" }, "parallelly": { "Package": "parallelly", @@ -2031,6 +2315,43 @@ ], "Hash": "6e8b139c1904f5e9e14c69db64453bbe" }, + "patchwork": { + "Package": "patchwork", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "farver", + "ggplot2", + "grDevices", + "graphics", + "grid", + "gtable", + "rlang", + "stats", + "utils" + ], + "Hash": "e23fb9ecb1258207bcb763d78d513439" + }, + "pbkrtest": { + "Package": "pbkrtest", + "Version": "0.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "Matrix", + "R", + "broom", + "doBy", + "dplyr", + "lme4", + "methods", + "numDeriv" + ], + "Hash": "938e6bbc4ac57534f8b43224506a8966" + }, "permute": { "Package": "permute", "Version": "0.9-7", @@ -2100,12 +2421,11 @@ }, "pillar": { "Package": "pillar", - "Version": "1.9.0", + "Version": "1.10.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "cli", - "fansi", "glue", "lifecycle", "rlang", @@ -2113,7 +2433,7 @@ "utils", "vctrs" ], - "Hash": "15da5a8412f317beeee6175fbc76f4bb" + "Hash": "8b16b6097daef84cd3c40a6a7c5c9d86" }, "pkgconfig": { "Package": "pkgconfig", @@ -2190,7 +2510,7 @@ }, "processx": { "Package": "processx", - "Version": "3.8.4", + "Version": "3.8.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2199,7 +2519,7 @@ "ps", "utils" ], - "Hash": "0c90a7d71988856bad2a2a45dd871bb9" + "Hash": "790b1edafbd9980aeb8c3d77e3b0ba33" }, "prodlim": { "Package": "prodlim", @@ -2276,14 +2596,14 @@ }, "ps": { "Package": "ps", - "Version": "1.8.0", + "Version": "1.8.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "4b9c8485b0c7eecdf0a9ba5132a45576" + "Hash": "b4404b1de13758dea1c0484ad0d48563" }, "purrr": { "Package": "purrr", @@ -2310,6 +2630,24 @@ ], "Hash": "5f919ae5e7f83a6f91dcf2288943370d" }, + "quantreg": { + "Package": "quantreg", + "Version": "5.99.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "Matrix", + "MatrixModels", + "R", + "SparseM", + "graphics", + "methods", + "stats", + "survival" + ], + "Hash": "c48844cd7961de506a1b4d22b2e082c7" + }, "ragg": { "Package": "ragg", "Version": "1.3.3", @@ -2345,6 +2683,18 @@ ], "Hash": "0e2829df8cb74a98179c886b023ffea8" }, + "rbibutils": { + "Package": "rbibutils", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "tools", + "utils" + ], + "Hash": "dfc034a172fd88fc66b1a703894c4185" + }, "readr": { "Package": "readr", "Version": "2.1.5", @@ -2415,6 +2765,19 @@ ], "Hash": "fc6672e55fcd1b5c461a3529ff6b1b08" }, + "reformulas": { + "Package": "reformulas", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Matrix", + "Rdpack", + "methods", + "stats" + ], + "Hash": "d23beb08dca526d22ff47ce399260ba4" + }, "rematch": { "Package": "rematch", "Version": "2.0.0", @@ -2501,14 +2864,14 @@ }, "rlang": { "Package": "rlang", - "Version": "1.1.4", + "Version": "1.1.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "3eec01f8b1dee337674b2e34ab1f9bc1" + "Hash": "724dcc1490cd7071ee75ca2994a5446e" }, "rmarkdown": { "Package": "rmarkdown", @@ -2718,49 +3081,6 @@ ], "Hash": "5c47e84dc0a3ca761ae1d307889e796d" }, - "shiny": { - "Package": "shiny", - "Version": "1.9.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": "6a293995a66e12c48d13aa1f957d09c7" - }, - "sourcetools": { - "Package": "sourcetools", - "Version": "0.1.7-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5f5a7629f956619d519205ec475fe647" - }, "sp": { "Package": "sp", "Version": "2.1-4", @@ -3273,7 +3593,7 @@ }, "withr": { "Package": "withr", - "Version": "3.0.1", + "Version": "3.0.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -3281,7 +3601,7 @@ "grDevices", "graphics" ], - "Hash": "07909200e8bbe90426fbfeb73e1e27aa" + "Hash": "cc2d62c76458d425210d1eb1478b30b4" }, "wk": { "Package": "wk", @@ -3319,18 +3639,6 @@ ], "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.10", -- GitLab