diff --git a/SUNSET-oper.sh b/SUNSET-oper.sh index 25e579373dd72b6547aa88d72381edbf88a46790..fc67c93f179b492eede0bc894b6537bb7dc6ce73 100755 --- a/SUNSET-oper.sh +++ b/SUNSET-oper.sh @@ -3,21 +3,34 @@ source /etc/profile.d/modules.sh #set -eu #set -v +set -e function usage { - echo "Usage: $0 -e= -str= -sd=YYYYMMDD -h= " + echo "Usage: $0 -e= -r= -h= [-cd=] [-sd=YYYYMMDD] [--rr=no]" echo " " - echo " -e, --expid: EXPID" + echo " -e, --expid: Autosubmit EXPID" echo " [MANDATORY]" - echo " -r, --recipe: Recipe template" + echo " -r, --recipe: Path to YAML recipe template" echo " [MANDATORY]" echo " -h, --horizon: Forecast horizon: 'subseasonal', 'seasonal', or 'decadal'" echo " [MANDATORY]" - echo " -sd, --start_date: Start date (YYYYMMDD) of the forecast in YYYYMMDD" - echo " format. If -str is hcst, any year can be used." - echo " The default value is the current date." + echo " -sd, --start_date: Start date (YYYYMMDD) of the forecast." + echo " If not specified, it will be set as the" + echo " first day of the current month (seasonal) or the" + echo " most recent Thursday (subseasonal)." echo " -cd, --code_dir: Directory where the SUNSET code is stored." echo " The default value is the current working directory." + echo " -rr, --rerun: Options: 'no' (default), 'rerun_failed', 'skip_failed'" + echo " - 'no': The Autosubmit experiment is newly generated" + echo " for the specified start date, and the workflow" + echo " runs from the beginning as normal." + echo " - 'rerun_failed': The FAILED jobs in the Autosubmit" + echo " experiment are run again, for the same start date" + echo " previously created." + echo " - 'skip_failed': The FAILED jobs in the Autosubmit" + echo " experiment are skipped so that any pending workflow" + echo " dependencies can run. Dependencies might fail if" + echo " they require outputs from the FAILED jobs." echo " " } @@ -45,6 +58,10 @@ function parse_args { horizon="${i#*=}" shift # past argument=value ;; + -r=*|--rerun=*) + export rerun=`echo $1 | sed -e 's/^[^=]*=//g'` + shift + ;; -h|--help) usage shift # past argument with no value @@ -59,6 +76,9 @@ function parse_args { if [ -z "$code_dir" ]; then code_dir=./ fi + if [ -z "$rerun" ]; then + rerun='no' + fi } function get_startdate { @@ -79,28 +99,49 @@ function get_startdate { function launch_auto { - code_dir=${code_dir[@]} - echo "*** Launching operational: ***" - echo "[INFO] CURRENT TIME: $(date)" - echo "[INFO] STARTDATE: ${sdate[@]}" - echo "[INFO] Using EXPID: ${expid}" - echo "[INFO] Running SUNSET launcher from ${code_dir}" + rerun=${rerun[@]} + username=$(whoami) + if [ $rerun == "no" ]; then + code_dir=${code_dir[@]} + echo "*** Launching operational: ***" + echo "[INFO] CURRENT TIME: $(date)" + echo "[INFO] STARTDATE: ${sdate[@]}" + echo "[INFO] Using EXPID: ${expid}" + echo "[INFO] Running SUNSET launcher from ${code_dir}" - cd ${code_dir} - source MODULES - launcher_args=$(Rscript recipe_maker.R ${recipe_template} --sd=${sdate[@]} --horizon=${horizon} --expid=${expid}) - bash ${code_dir}/launch_SUNSET.sh ${launcher_args} --disable_unique_ID + cd ${code_dir} + source MODULES + launcher_args=$(Rscript recipe_maker.R ${recipe_template} --sd=${sdate[@]} --horizon=${horizon} --expid=${expid}) + bash ${code_dir}/launch_SUNSET.sh ${launcher_args} --disable_unique_ID + + ## TODO: Set up ssh to AS machine; or do it directly as part of launch_SUNSET.sh? + ssh ${username}@bscesautosubmit04.bsc.es "module load autosubmit/4.1.14-foss-2023b-Python-3.11.5; + autosubmit create ${expid} --noplot; + autosubmit refresh ${expid}; + # create must be done each time + autosubmit monitor ${expid}; + # Save for logging purposes (specify -fs to filter + # jobs when ensemble, -o {pdf,png,ps,svg} for different plot format files) + nohup autosubmit run -v ${expid} &" + elif [ $rerun == "rerun_failed" ]; then + echo "*** Re-running failed jobs ***" + echo "[INFO] CURRENT TIME: $(date)" + echo "[INFO] STARTDATE: ${sdate[@]}" + echo "[INFO] EXPID: ${expid}" + ssh ${username}@bscesautosubmit04.bsc.es "module load autosubmit/4.1.14-foss-2023b-Python-3.11.5; + autosubmit setstatus ${expid} -np -fs FAILED -t WAITING -s; + nohup autosubmit run -v ${expid} &" + elif [ $rerun == "skip_failed" ]; then + echo "*** Skipping failed jobs ***" + echo "[WARNING] Previously failed jobs will NOT be completed" + echo "[INFO] CURRENT TIME: $(date)" + echo "[INFO] STARTDATE: ${sdate[@]}" + echo "[INFO] EXPID: ${expid}" + ssh ${username}@bscesautosubmit04.bsc.es "module load autosubmit/4.1.14-foss-2023b-Python-3.11.5; + autosubmit setstatus ${expid} -np -fs FAILED -t COMPLETED -s; + nohup autosubmit run -v ${expid} &" + fi - ## TODO: Set up ssh to AS machine; or do it directly as part of launch_SUNSET.sh? - username=$(whoami) - ssh ${username}@bscesautosubmit04.bsc.es "module load autosubmit/4.1.14-foss-2023b-Python-3.11.5; - autosubmit create ${expid} --noplot; - autosubmit refresh ${expid}; - # create must be done each time - autosubmit monitor ${expid}; - # Save for logging purposes (specify -fs to filter - # jobs when ensemble, -o {pdf,png,ps,svg} for different plot format files) - nohup autosubmit run -v ${expid} &" } ######### diff --git a/conf/archive_subseasonal.yml b/conf/archive_subseasonal.yml index c5f21fd535c7e14053fb05a9202a6a24d0c14b8f..a0ec9bf1a5d140ab04a04756d8720dca599d8bc9 100644 --- a/conf/archive_subseasonal.yml +++ b/conf/archive_subseasonal.yml @@ -18,6 +18,7 @@ gpfs: institution: "NOAA NCEP" #? srchc: "exp/ncep/cfs-v2/" srcfc: "exp/ncep/cfs-v2/" + src: "exp/ncep/cfs-v2/" weekly_mean: {"tas":"weekly_mean/s2s/tas_f24h/", "prlr":"weekly_mean/s2s/prlr_f24h/", "tasmax":"weekly_mean/s2s/tasmax_f24h/", diff --git a/modules/Crossval/Crossval_anomalies.R b/modules/Crossval/Crossval_anomalies.R index 0467480908424c3c32c32a67a4b650d9c0ab8c0e..c22464e09e6618b7e3f53ce5e5f4ecfed6fd97d7 100644 --- a/modules/Crossval/Crossval_anomalies.R +++ b/modules/Crossval/Crossval_anomalies.R @@ -295,7 +295,8 @@ Crossval_anomalies <- function(recipe, data) { for (l in 1:dim(lims[[ps]])['bin']) { tmp_lims <- ClimProjDiags::Subset(x = tmp_lims3, along = "bin", - indices = l) + indices = l, + drop = "selected") tmp_lims2 <- append(tmp_lims2, list(tmp_lims)) names(tmp_lims2)[length(tmp_lims2)] <- as.character(categories[[ps]][l]) } diff --git a/operationals/bigpredidata/recipe_bigpredidata_oper.yml b/operationals/bigpredidata/recipe_bigpredidata_oper.yml new file mode 100644 index 0000000000000000000000000000000000000000..1f3f0d542efc4feaa7a5383102f52e13d9e0f160 --- /dev/null +++ b/operationals/bigpredidata/recipe_bigpredidata_oper.yml @@ -0,0 +1,95 @@ +Description: + Author: nperez + Info: ECVs Oper ESS ECMWF SEAS5 Seasonal Forecast recipe (monthly mean, tas) + +Analysis: + Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal + Variables: + - {name: tasmin, freq: monthly_mean, units: C} + - {name: tasmax, freq: monthly_mean, units: C} + - {name: tas, freq: monthly_mean, units: C} + - {name: prlr, freq: monthly_mean, units: mm, flux: no} + - {name: sfcWind, freq: monthly_mean} + - {name: rsds, freq: monthly_mean} + Datasets: + System: + - {name: ECMWF-SEAS5.1} + Multimodel: no # Mandatory, bool: Either yes/true or no/false + Reference: + - {name: ERA5} # Mandatory, str: Reference codename. See docu. + Time: + sdate: +# - '0101' +# - '0201' +# - '0301' +# - '0401' +# - '0501' + - '0601' +# - '0701' +# - '0801' +# - '0901' +# - '1001' +# - '1101' +# - '1201' + fcst_year: 2025 # Optional, int: Forecast year 'YYYY' + hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' + hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' + ftime_min: 1 # Mandatory, int: First leadtime time step in months + ftime_max: 6 # Mandatory, int: Last leadtime time step in months + Region: + - {name: "Iberia", latmin: 36, latmax: 44, lonmin: -10, lonmax: 5} + - {name: "EU", latmin: 20, latmax: 80, lonmin: -20, lonmax: 40} + Regrid: + method: bilinear # Mandatory, str: Interpolation method. See docu. + type: "to_reference" + #type: /esarchive/scratch/nmilders/gitlab/git_clones/auto-s2s/conf/grid_description.txt #'r360x180' # Mandatory, str: to_system, to_reference, or CDO-accepted grid. + Workflow: + Anomalies: + compute: no + cross_validation: no + save: none + Calibration: + method: bias # Mandatory, str: bias, evmos, mse_min, crps_min, rpc_based + cross_validation: yes + save: none + Skill: + metric: rpss + save: all + cross_validation: yes + Probabilities: + percentiles: [[1/3, 2/3]] # frac: Quantile thresholds. + save: all + Indicators: + index: no + Visualization: + plots: most_likely_terciles + NA_color: white + multi_panel: no + dots: no + mask_terciles: yes + shapefile: recintos_provinciales_inspire_peninbal_etrs89.shp + file_format: PNG # Final file format of the plots. Formats available: PNG, JPG, JPEG, EPS. Defaults to PDF. + ncores: 12 # Optional, int: number of cores, defaults to 1 + remove_NAs: TRUE # Optional, bool: Whether NAs are removed, defaults to FALSE + Output_format: S2S4E + logo: yes +Run: + Loglevel: INFO + Terminal: yes + filesystem: gpfs + output_dir: /esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset # replace with the directory where you want to save the outputs + code_dir: /esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset/sunset # replace with the directory where your code is + autosubmit: yes + # fill only if using autosubmit + auto_conf: + script: operational/script_bigpredidata_oper.R # replace with the path to your script + expid: a8kg # replace with your EXPID + hpc_user: bsc032413 # replace with your hpc username + wallclock: 03:00 # hh:mm + processors_per_job: 24 + custom_directives: #['#SBATCH --exclusive'] + platform: amd + email_notifications: no # enable/disable email notifications. Change it if you want to. + email_address: paloma.trascasa@bsc.es # replace with your email address + notify_completed: yes # notify me by email when a job finishes + notify_failed: no # notify me by email when a job fails diff --git a/operationals/bigpredidata/recipe_bigpredidata_oper_subseasonal.yml b/operationals/bigpredidata/recipe_bigpredidata_oper_subseasonal.yml new file mode 100755 index 0000000000000000000000000000000000000000..264321fe16777664cfb1bd33f51299d0fde776d6 --- /dev/null +++ b/operationals/bigpredidata/recipe_bigpredidata_oper_subseasonal.yml @@ -0,0 +1,88 @@ + +Description: + Author: nperez + Info: ECVs Oper ESS ECMWF SEAS5 Seasonal Forecast recipe (monthly mean, tas) + +Analysis: + Horizon: subseasonal # Mandatory, str: either subseasonal, seasonal, or decadal + Variables: + - {name: 'tasmin', freq: 'weekly_mean', units: 'C'} + - {name: 'tasmax', freq: 'weekly_mean', units: 'C'} + - {name: 'tas', freq: 'weekly_mean', units: 'C'} + - {name: 'prlr', freq: 'weekly_mean', units: 'mm', flux: no} + - {name: 'sfcWind', freq: 'weekly_mean'} + - {name: 'rsds', freq: 'weekly_mean'} + Datasets: + System: + - {name: 'NCEP-CFSv2', member: 'all'} + Multimodel: no # Mandatory, bool: Either yes/true or no/false + Reference: + - {name: ERA5} # Mandatory, str: Reference codename. See docu. + Time: + sdate: 20250612 + fcst_year: '2025' # Optional, int: Forecast year 'YYYY' + hcst_start: '1999' # Mandatory, int: Hindcast start year 'YYYY' + hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' + ftime_min: 1 # Mandatory, int: First leadtime time step in months + ftime_max: 4 # Mandatory, int: Last leadtime time step in months + week_day: Thursday + sweek_window: 9 + sday_window: 3 + Region: + - {name: "Iberia", latmin: 36, latmax: 44, lonmin: -10, lonmax: 5} + - {name: "EU", latmin: 20, latmax: 80, lonmin: -20, lonmax: 40} + + Regrid: + method: bilinear # Mandatory, str: Interpolation method. See docu. + type: "to_reference" + #type: /esarchive/scratch/nmilders/gitlab/git_clones/auto-s2s/conf/grid_description.txt #'r360x180' # Mandatory, str: to_system, to_reference, or CDO-accepted grid. + Workflow: + Anomalies: + compute: no + cross_validation: no + save: none + Calibration: + method: bias # Mandatory, str: bias, evmos, mse_min, crps_min, rpc_based + cross_validation: yes + save: none + Skill: + metric: rpss + save: all + cross_validation: yes + Probabilities: + percentiles: [[1/3, 2/3]] + save: all + Indicators: + index: no + Visualization: + plots: most_likely_terciles + NA_color: white + multi_panel: no + dots: no + mask_terciles: yes + shapefile: recintos_provinciales_inspire_peninbal_etrs89.shp + file_format: PNG # Final file format of the plots. Formats available: PNG, JPG, JPEG, EPS. Defaults to PDF. + ncores: 12 # Optional, int: number of cores, defaults to 1 + remove_NAs: TRUE # Optional, bool: Whether NAs are removed, defaults to FALSE + Output_format: S2S4E + logo: yes +Run: + Loglevel: INFO + Terminal: yes + filesystem: gpfs + output_dir: /esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset # replace with the directory where you want to save the outputs + code_dir: /esarchive/scratch/ptrascas/R/dev-test_bigpredidata/sunset/sunset # replace with the directory where your code is + autosubmit: yes + # fill only if using autosubmit + auto_conf: + script: operational/script_bigpredidata_oper.R # replace with the path to your script + expid: a8kh # replace with your EXPID + hpc_user: bsc032413 # replace with your hpc username + wallclock: 05:00 # hh:mm + processors_per_job: 24 + custom_directives: ['#SBATCH --exclusive'] + platform: amd + email_notifications: no # enable/disable email notifications. Change it if you want to. + email_address: paloma.trascasa@bsc.es # replace with your email address + notify_completed: yes # notify me by email when a job finishes + notify_failed: no # notify me by email when a job fails diff --git a/script_bigpredidata_oper.R b/operationals/bigpredidata/script_bigpredidata_oper.R similarity index 82% rename from script_bigpredidata_oper.R rename to operationals/bigpredidata/script_bigpredidata_oper.R index 3756a4426a0f4db4671786433e06c71db0ecaeac..4ce1cb59c2d57035f27ce0710db608dd94cf7ce2 100644 --- a/script_bigpredidata_oper.R +++ b/operationals/bigpredidata/script_bigpredidata_oper.R @@ -14,14 +14,14 @@ recipe <- read_atomic_recipe(recipe_file) data <- Loading(recipe) data <- Units(recipe, data) -source("modules/Crossval/Crossval_anomalies.R") -data <- Crossval_anomalies(recipe = recipe, data = data) +source("modules/Crossval/Crossval_calibration.R") +data <- 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 = data, - fair = FALSE, nmemb = NULL, nmemb_ref = NULL) +skill_metrics <- Crossval_metrics(recipe = recipe, data = data, + Fair = FALSE) Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics, significance = TRUE, probabilities = data$probs) diff --git a/operationals/test/recipe_bigpredidata_oper_subseasonal.yml b/operationals/test/recipe_bigpredidata_oper_subseasonal.yml new file mode 100755 index 0000000000000000000000000000000000000000..700c420a786ad73bcee2f28c31e228fa6dcbd451 --- /dev/null +++ b/operationals/test/recipe_bigpredidata_oper_subseasonal.yml @@ -0,0 +1,83 @@ + +Description: + Author: nperez + Info: ECVs Oper ESS ECMWF SEAS5 Seasonal Forecast recipe (monthly mean, tas) + +Analysis: + Horizon: subseasonal # Mandatory, str: either subseasonal, seasonal, or decadal + Variables: + - {name: tas, freq: weekly_mean, units: C} + - {name: prlr, freq: weekly_mean, units: mm, flux: no} + - {name: sfcWind, freq: weekly_mean} + Datasets: + System: + - {name: 'NCEP-CFSv2', member: 'all'} + Multimodel: no # Mandatory, bool: Either yes/true or no/false + Reference: + - {name: ERA5} # Mandatory, str: Reference codename. See docu. + Time: + sdate: + fcst_year: '2025' # Optional, int: Forecast year 'YYYY' + hcst_start: '1999' # Mandatory, int: Hindcast start year 'YYYY' + hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' + ftime_min: 1 # Mandatory, int: First leadtime time step in months + ftime_max: 4 # Mandatory, int: Last leadtime time step in months + week_day: Thursday + sweek_window: 9 + sday_window: 3 + Region: + - {name: "Iberia", latmin: 36, latmax: 44, lonmin: -10, lonmax: 5} + Regrid: + method: bilinear # Mandatory, str: Interpolation method. See docu. + type: "to_system" + #type: /esarchive/scratch/nmilders/gitlab/git_clones/auto-s2s/conf/grid_description.txt #'r360x180' # Mandatory, str: to_system, to_reference, or CDO-accepted grid. + Workflow: + Anomalies: + compute: no + cross_validation: no + save: none + Calibration: + method: bias # Mandatory, str: bias, evmos, mse_min, crps_min, rpc_based + cross_validation: yes + save: all + Skill: + metric: rpss + save: none + cross_validation: yes + Probabilities: + percentiles: [[1/3, 2/3]] # frac: Quantile thresholds. This avoids saving the probs of 10 to 90 + save: all + Indicators: + index: no + Visualization: + plots: most_likely_terciles + NA_color: white + multi_panel: no + dots: no + mask_terciles: yes + shapefile: shapefiles/recintos_provinciales_inspire_peninbal_etrs89.shp + file_format: PNG # Final file format of the plots. Formats available: PNG, JPG, JPEG, EPS. Defaults to PDF. + ncores: 16 # Optional, int: number of cores, defaults to 1 + remove_NAs: TRUE # Optional, bool: Whether NAs are removed, defaults to FALSE + Output_format: scorecards + logo: yes +Run: + Loglevel: INFO + Terminal: yes + filesystem: gpfs + output_dir: /esarchive/scratch/vagudets/oper/test/results/ # replace with the directory where you want to save the outputs + code_dir: /esarchive/scratch/vagudets/oper/test/sunset # replace with the directory where your code is + autosubmit: yes + # fill only if using autosubmit + auto_conf: + script: scripts/script_bigpredidata_oper.R # replace with the path to your script + expid: a6wq # replace with your EXPID + hpc_user: bsc032762 # replace with your hpc username + wallclock: 02:00 # hh:mm + processors_per_job: 24 + custom_directives: + platform: amd + email_notifications: yes # enable/disable email notifications. Change it if you want to. + email_address: victoria.agudetse@bsc.es # replace with your email address + notify_completed: yes # notify me by email when a job finishes + notify_failed: yes # notify me by email when a job fails diff --git a/operationals/test/script_bigpredidata_oper.R b/operationals/test/script_bigpredidata_oper.R new file mode 100644 index 0000000000000000000000000000000000000000..4ce1cb59c2d57035f27ce0710db608dd94cf7ce2 --- /dev/null +++ b/operationals/test/script_bigpredidata_oper.R @@ -0,0 +1,37 @@ +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.yml" +recipe <- read_atomic_recipe(recipe_file) +#recipe <- prepare_outputs(recipe_file) +# Load datasets +data <- Loading(recipe) +data <- Units(recipe, data) + +source("modules/Crossval/Crossval_calibration.R") +data <- 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 = data, + Fair = FALSE) + +Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics, + significance = TRUE, probabilities = data$probs) +#if (!is.null(data$fcst)) { +# # Required to plot a forecast: +# data$fcst <- res$fcst +# Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics, +# significance = TRUE, probabilities = res$probs) +#} else { +# Visualization(recipe = recipe, data = data, skill_metrics = skill_metrics, +# significance = TRUE) +#} + diff --git a/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.cpg b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.cpg new file mode 100644 index 0000000000000000000000000000000000000000..3ad133c048f2189041151425a73485649e6c32c0 --- /dev/null +++ b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.dbf b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.dbf new file mode 100644 index 0000000000000000000000000000000000000000..c6e0ee9c4ef805a7e8082bcddc9da596fd84bcb1 Binary files /dev/null and b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.dbf differ diff --git a/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.prj b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.prj new file mode 100644 index 0000000000000000000000000000000000000000..c86d539635a70a0d7940025e083d1164615d85f6 --- /dev/null +++ b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.prj @@ -0,0 +1 @@ +GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]] \ No newline at end of file diff --git a/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shp b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shp new file mode 100644 index 0000000000000000000000000000000000000000..aa3b030ac171920fa680322ce24fdecd52347759 Binary files /dev/null and b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shp differ diff --git a/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shx b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shx new file mode 100644 index 0000000000000000000000000000000000000000..ba650b806e2d41652728f763ab877bb7ed196564 Binary files /dev/null and b/shapefiles/bigpredidata/recintos_provinciales_inspire_peninbal_etrs89.shx differ