####################################################################################
# Script to gather all results obtained from the local analysis. 
####################################################################################
source("libs_scripts.r")

# Define parameters for which results are present
Locations    <- c("Dubai", "Rio_de_Janeiro", "Rome", "Toronto")
True_climates <- c(-0.02, -0.04)
import       <- 1e-5
tmp_rho_mean <- 0.5
tmp_rho_Ks   <- c(0.1, 0.16)
my_sigmas    <- c(0, 0.05)
Term_times   <- c(TRUE, FALSE)
n_samples    <- 50

for (True_climate in True_climates) {
  for (tmp_rho_k in tmp_rho_Ks) {
    for (roiLocation in Locations) {
      for (tmp_sig in my_sigmas) {
        for (tt in Term_times) {

          sims_tot     <- data.frame()
          sims_reg_tot <- data.frame()

          for (id in 1:n_samples) {
            rdata_path <- paste0(
              "Results/R_sims_Te", True_climate, "_RH", True_climate,
              "_sigma", tmp_sig, "_",
              ifelse(tmp_rho_mean != 0, paste0("rho_mean", tmp_rho_mean, "_"), ""),
              roiLocation, "_",
              sprintf("_rho_k%s", gsub("\\.", "-", as.character(tmp_rho_k))),
              sprintf("_import_%s", as.character(import)),
              ifelse(tt, "_School-Forced", ""),
              "/results_", id, ".RData"
            )

            if (file.exists(rdata_path)) {
              load(rdata_path)  # brings sims_all, sim_reg, final_pars into scope
              sims_tot     <- rbind(sims_tot,     sims_all |> mutate(.id = id))
              sims_reg_tot <- rbind(sims_reg_tot, sim_reg  |> mutate(.id = id))
            } else {
              cat("WARNING: not found:", rdata_path, "\n")
            }
          }

          my_path <- paste0(
            "Results_Aggregated/R_sims_Te",
            final_pars[1, "True.e_Te"], "_RH", final_pars[1, "True.e_RH"], "_",
            "sigma", final_pars[1, "sigma_beta"], "_",
            "rho_mean", final_pars[1, "rho_mean"], "_",
            roiLocation, "_",
            sprintf("_rho_k%s", gsub("\\.", "-", as.character(final_pars[1, "rho_k"]))),
            sprintf("_import_%s", as.character(import)),
            ifelse(tt, "_School-Forced", "")
          )

          dir.create(my_path, recursive = TRUE, showWarnings = FALSE)
          saveRDS(sims_tot,     file = file.path(my_path, "sims_tot.rds"))
          saveRDS(final_pars,   file = file.path(my_path, "final_pars.rds"))
          saveRDS(sims_reg_tot, file = file.path(my_path, "sims_reg_tot.rds"))

          rm(sims_tot, sims_reg_tot, final_pars)
          cat("Done:", roiLocation, "| Te:", True_climate, "| sigma:", tmp_sig,
              "| rho_k:", tmp_rho_k, "| school:", tt, "\n")
        }
      }
    }
  }
}