Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK)
# | authors, and contributors see CITATION.cff file. This file is part
# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
# | AGPL-3.0, you are granted additional permissions described in the
# | REMIND License Exception, version 1.0 (see LICENSE file).
# | Contact: remind@pik-potsdam.de
# ---- Define set of runs that will be compared ----
if (exists("outputdirs")) {
# This is the case if this script was called via Rscript output.R
listofruns <- list(
list(period = "both", set = format(Sys.time(), "%Y-%m-%d_%H.%M.%S"), dirs = outputdirs),
NULL)
} else {
# This is the case if this script was called directly via Rscript
listofruns <- list(
#list(period = "both", set = "cpl-Base", dirs = c("coupled-remind_SDP-Base-rem-5", "coupled-remind_SSP1-Base-rem-5", "coupled-remind_SSP2-Base-rem-5", "coupled-remind_SSP5-Base-rem-5")),
#list(period = "both", set = "cpl-PkBudg900", dirs = c("coupled-remind_SDP-PkBudg900-rem-5", "coupled-remind_SSP1-PkBudg900-rem-5", "coupled-remind_SSP2-PkBudg900-rem-5", "coupled-remind_SSP5-PkBudg900-rem-5")),
#list(period = "both", set = "cpl-PkBudg1100", dirs = c("coupled-remind_SDP-PkBudg1100-rem-5", "coupled-remind_SSP1-PkBudg1100-rem-5", "coupled-remind_SSP2-PkBudg1100-rem-5", "coupled-remind_SSP5-PkBudg1100-rem-5")),
#list(period = "both", set = "cpl-PkBudg1300", dirs = c("coupled-remind_SDP-PkBudg1300-rem-3", "coupled-remind_SSP1-PkBudg1300-rem-5", "coupled-remind_SSP2-PkBudg1300-rem-5", "coupled-remind_SSP5-PkBudg1300-rem-5")),
#list(period = "both", set = "cpl-SDP", dirs = c("coupled-remind_SDP-Base-rem-5", "coupled-remind_SDP-PkBudg1300-rem-3", "coupled-remind_SDP-PkBudg1100-rem-5", "coupled-remind_SDP-PkBudg900-rem-5")),
list(period = "both", set = "cpl-SDP-1100", dirs = c("coupled-remind_SDP-Base-rem-5", "coupled-remind_SDP-PkBudg1300-rem-3", "coupled-remind_SDP-PkBudg1100-rem-5", "coupled-remind_SDP-PkBudg1000-rem-5")),
#list(period = "both", set = "cpl-SSP1", dirs = c("coupled-remind_SSP1-Base-rem-5", "coupled-remind_SSP1-PkBudg1300-rem-5", "coupled-remind_SSP1-PkBudg1100-rem-5", "coupled-remind_SSP1-PkBudg900-rem-5")),
#list(period = "both", set = "cpl-SSP2", dirs = c("coupled-remind_SSP2-Base-rem-5", "coupled-remind_SSP2-PkBudg1300-rem-5", "coupled-remind_SSP2-PkBudg1100-rem-5", "coupled-remind_SSP2-PkBudg900-rem-5", "coupled-remind_SSP2-NDC-rem-5")),
#list(period = "both", set = "cpl-SSP5", dirs = c("coupled-remind_SSP5-Base-rem-5", "coupled-remind_SSP5-PkBudg1300-rem-5", "coupled-remind_SSP5-PkBudg1100-rem-5", "coupled-remind_SSP5-PkBudg900-rem-5")),
#list(period = "both", set = "cpl-aff", dirs = c("coupled-remind_SDP-PkBudg1000-rem-5", "coupled-remind_SDP-PkBudg1000-affInf-rem-5","coupled-remind_SDP-PkBudg1000-aff900-rem-3","coupled-remind_SDP-PkBudg1000-aff760-rem-5","coupled-remind_SDP-PkBudg1000-cost3-rem-5","coupled-remind_SDP-PkBudg1000-cost2-rem-5")),
#list(period = "both", set = "cplstd-SDP", dirs = c("coupled-remind_SDP-Base-rem-5", "SDP-Base_2019-10-23_10.40.27/")), # "coupled-remind_SDP-PkBudg1300-rem-5", "coupled-remind_SDP-PkBudg1100-rem-5", "coupled-remind_SDP-PkBudg900-rem-5", , "SDP-PkBudg1300_2019-10-23_13.54.55/", "SDP-PkBudg1100_2019-10-23_13.52.02/", "SDP-PkBudg900_2019-10-23_13.49.07/"
#list(period = "both", set = "cplstd-SSP1", dirs = c("coupled-remind_SSP1-Base-rem-5", "coupled-remind_SSP1-PkBudg1300-rem-5", "coupled-remind_SSP1-PkBudg1100-rem-5", "coupled-remind_SSP1-PkBudg900-rem-5", "SSP1-Base_2019-10-23_10.36.05/", "SSP1-PkBudg1300_2019-10-23_13.42.42/", "SSP1-PkBudg1100_2019-10-23_13.40.05/", "SSP1-PkBudg900_2019-10-23_13.37.18/")),
#list(period = "both", set = "cplstd-SSP2", dirs = c("coupled-remind_SSP2-Base-rem-5", "coupled-remind_SSP2-NDC-rem-5", "coupled-remind_SSP2-PkBudg1300-rem-5", "coupled-remind_SSP2-PkBudg900-rem-5", "SSP2-Base_2019-10-23_10.44.15/", "SSP2-NDC_2019-10-23_11.57.53/", "SSP2-PkBudg1300_2019-10-23_14.03.57/", "SSP2-PkBudg900_2019-10-23_13.58.02/")), # , "coupled-remind_SSP2-PkBudg1100-rem-5" "SSP2-PkBudg1100_2019-10-23_14.01.04/",
#list(period = "both", set = "cplstd-SSP5", dirs = c("coupled-remind_SSP5-Base-rem-5", "SSP5-Base_2019-10-23_10.47.50/")), # , "coupled-remind_SSP5-PkBudg1300-rem-5", "coupled-remind_SSP5-PkBudg1100-rem-5", "coupled-remind_SSP5-PkBudg900-rem-5" , "SSP5-PkBudg1300_2019-10-23_14.16.09/", "SSP5-PkBudg1100_2019-10-23_14.13.22/", "SSP5-PkBudg900_2019-10-23_14.10.35/"
NULL)
}
# remove the NULL element
listofruns <- listofruns[!sapply(listofruns, is.null)]
# if no path in "dirs" starts with "output/" insert it at the beginning
# this is the case if listofruns was created in the lower case above !exists("outputdirs"), i.e. if this script was not called via Rscript output.R
for (i in 1:length(listofruns)) {
if(!any(grepl("output/",listofruns[[i]]$dirs))) {
listofruns[[i]]$dirs <- paste0("output/",listofruns[[i]]$dirs)
}
}
# ---- Start compareScenarios either on the cluster or locally ----
start_comp <- function(outputdirs,shortTerm,outfilename) {
jobname <- paste0("compScen",ifelse(outfilename=="","","-"),outfilename,ifelse(shortTerm, "-shortTerm", ""))
cat("Starting ",jobname,"\n")
on_cluster <- file.exists("/p/projects/")
if (on_cluster) {
system(paste0("srun --qos=standby --job-name=",jobname," --output=",jobname,".out --error=",jobname,".err --mail-type=END --time=200 --mem-per-cpu=8000 Rscript scripts/run_submit/run_compareScenarios.R outputdirs=",paste(outputdirs,collapse=",")," shortTerm=",shortTerm," outfilename=",jobname," &"))
} else {
outfilename <- jobname
tmp.env <- new.env()
script <- "scripts/run_submit/run_compareScenarios.R"
tmp.error <- try(sys.source(script,envir=tmp.env))
if(!is.null(tmp.error)) warning("Script ",script," was stopped by an error and not executed properly!")
rm(tmp.env)
}
}
# ---- For each list entry call start script that starts compareScenarios ----
for (r in listofruns) {
if (r$period == "short" | r$period == "both") start_comp(outputdirs = r$dirs, shortTerm = TRUE, outfilename = r$set)
if (r$period == "long" | r$period == "both") start_comp(outputdirs = r$dirs, shortTerm = FALSE, outfilename = r$set)
}