source("modules/Loading/Loading.R")
source("modules/Saving/Saving.R")
source("modules/Units/Units.R")
source("modules/Visualization/Visualization.R")
source("modules/Aggregation/Aggregation.R")

#args = commandArgs(trailingOnly = TRUE)
#recipe_file <- args[1]
#recipe_file <- "/esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset/sunset/recipes/recipe_bigpredidata_oper_test_sfcWind.yml"
recipe_file <- "/esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset/sunset/recipes/recipe_bigpredidata_oper_ecvs_Iberia_seasonal_sfcWind.yml"
#recipe <- read_atomic_recipe(recipe_file)
recipe <- prepare_outputs(recipe_file)
# Load datasets
data <- Loading(recipe)
data <- Units(recipe, data)
data_summary(data$hcst, recipe)
data_summary(data$obs, recipe)
data_summary(data$fcst, recipe)

if (!is.null(data$fcst)) {
  data_summary(data$fcst, recipe)
}

source("modules/Crossval/Crossval_Calibration.R")
res <- Crossval_Calibration(recipe = recipe, data = data)

# Save calibrated hindcast, forecast and probabilities

source("modules/Crossval/Crossval_metrics.R")
skill_metrics <- Crossval_metrics(recipe = recipe, data_crossval = res,
                                fair = FALSE, nmemb = NULL, nmemb_ref = NULL)



if (!is.null(data$fcst)) {
  # Required to plot a forecast:
  data$fcst <- res$fcst
  tmp_probs <- list(probs_fcst = res$probs$fcst[[1]])
  #nlats <- as.numeric(dim(data$hcst$data)['latitude'])
  #nlons <- as.numeric(dim(data$hcst$data)['longitude'])
  #ntimes <- as.numeric(dim(data$hcst$data)['time'])

  #   TODO: consider more than terciles
  #dim(tmp_probs$probs_fcst) <- c(bin = 3, syear = 1, var = 1, time = ntimes,
  #			       latitude = nlats, longitude = nlons)


#  Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics,
#		significance = TRUE, probabilities = tmp_probs)
#} else {
#    Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics, 
#		  significance = TRUE)
}

