
################################
### SEASONAL MULTIMODEL TEST ###
################################

# Load modules
source("modules/Loading/Loading.R")
source("modules/Units/Units.R")
source("modules/Calibration/Calibration.R")
source("modules/Anomalies/Anomalies.R")
source("modules/Skill/Skill.R")
source("modules/Saving/Saving.R")
source("modules/Visualization/Visualization.R")
source("modules/Multimodel/Multimodel.R")

## Complete recipe to be splitted
sunset_outputs_folder <- '/esarchive/scratch/cdelgado/sunset_outputs/'
recipe_file <- "recipes/recipe_multimodel_seasonal.yml"
system(paste0('rm -r ',sunset_outputs_folder,'recipe_multimodel_seasonal_*'))
system(paste0('Rscript split.R ',recipe_file))

atomic_recipe_folder <- paste0(sunset_outputs_folder,list.files(sunset_outputs_folder),'/logs/recipes/')
atomic_recipe_files <- list.files(atomic_recipe_folder)
atomic_recipe_files <- atomic_recipe_files[-length(atomic_recipe_files)]
atomic_recipe_files <- paste0(atomic_recipe_folder,atomic_recipe_files)

for (recipe_file in atomic_recipe_files){
  
  # Read recipe
  recipe <- prepare_outputs(recipe_file)
  
  if (recipe$Analysis$Datasets$System$name == 'Multimodel'){
    
    # Load datasets and create multimodel
    data <- Multimodel(recipe)
    probabilities <- data$prob
    data <- data$data
    
  } else {
    
    # Load datasets
    data <- Loading(recipe)
    # Change units
    data <- Units(recipe, data)
    # Calibrate datasets
    data <- Calibration(recipe, data)
    # Compute anomalies
    data <- Anomalies(recipe, data)
    # Compute percentiles and probability bins
    probabilities <- Probabilities(recipe, data)
    
  }
  
  # Compute skill metrics 
  skill_metrics <- Skill(recipe, data)
  # Plot data
  Visualization(recipe, data, skill_metrics, probabilities, significance = T)
  
}
