Se ha utilizado Mambaforge para llevar a cabo este proyecto, creando un entorno donde se han instalado todos los paquetes necesarios. Con el objetivo de facilitar la reproducibilidad del trabajo, se exportó el entorno mamba en un archivo .yml
que se encuentra en el directorio principal. En función del sistema operativo que vaya usted a utilizar exite:
- Para Ubuntu:
ubuntu_env_meteo3.yml
- Para Windows:
win_env_climate4r3.yml
Una vez instalado Mambaforge, se crea un entorno conda/mamba a partir del archivo .yml
con el siguiente comando sobre la terminal de Mambaforge. En el siguiente ejemplo se crea el entorno clim4R utilizando el archivo de instalación de Ubuntu:
conda env create --name clim4R --file ubuntu_env_meteo3.yml
Si se prefiere no utilizar el archivo de instalación .yml
, se puede crear un entorno manualmente y descargar las librerías de climate4R de la siguiente forma sobre la terminal de Mambaforge:
conda create -n clim4R
conda activate clim4R
conda install --override-channels -c conda-forge r-base r-devtools rstudio-desktop
conda install -y -c conda-forge -c r -c defaults -c santandermetgroup r-loader r-transformer r-visualizer r-loader.java r-climate4r.udg r-downscaler r-convertr
Ahora ya se encuentran instalados los paquetes y librerías básicas para comenzar con el proyecto. Para continuar asegurando la reproducibilidad del proyecto, se recomienda instalar las mismas versiones de los paquetes de climate4R que se emplearon en este proyecto y el resto de librerias necesarias (índices climáticos y métodos de correción de sesgo multivariable).
Una vez activado el entorno que se ha creado, se actualizan las versiones específicas de los paquetes de climate4R desde el repositorio de GitHub.
Para Ubuntu, desde la terminal de R:
install.packages("remotes")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/climate4R.UDG@devel")
remotes::install_github("Jeyjei/climate4R.indices")
remotes::install_github("Jeyjei/downscaleR@devel-JJVelasco")
Para Windows, si no lo has hecho antes, recomiendo instalar previamente el paquete loadeR desde la terminal de Mambaforge (dentro del entorno creado):
mamba activate clim4R
mamba install -y -c conda-forge -c r -c defaults -c santandermetgroup r-loader
Desde la terminal de R:
install.packages("remotes", type = "win.binary")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/[email protected]")
remotes::install_github("SantanderMetGroup/climate4R.UDG@devel")
remotes::install_github("Jeyjei/climate4R.indices")
remotes::install_github("Jeyjei/downscaleR@devel-JJVelasco")
Si aparece algún error a la hora de instalar las librerías de climate4R desde la terminal de R, por favor, primero intente instalar la librería desde la terminal de Mambaforge utilizando los canales principales (como se ha hecho previamente con el paquete loadeR):
mamba install -y -c conda-forge -c r -c defaults -c santandermetgroup r-loader
o si quieres más paquetes
conda install -y -c conda-forge -c r -c defaults -c santandermetgroup r-loader r-transformer r-visualizer r-loader.java r-climate4R.UDG r-downscaleR
Posteriormente, intente actualizar dicho paquete desde la terminal en R con remotes o devtools:
install.packages("devtools", type = "win.binary") # Para Windows
install.packages("devtools") # Para Ubuntu
devtools::install_github(c("SantanderMetGroup/[email protected]", "SantanderMetGroup/[email protected]", "SantanderMetGroup/[email protected]", "SantanderMetGroup/[email protected]", "SantanderMetGroup/[email protected]", "SantanderMetGroup/climate4R.UDG@devel"))
# devtools::install_github(c('SantanderMetGroup/climate4R.UDG','SantanderMetGroup/loadeR'))
Para comprobar que se han instalado las versiones correspondientes, utilizar el siguiente comando reemplazando nombre_del_paquete por el nombre de la librería que desea verificar:
packageVersion("nombre_del_paquete")
Ahora, desde la terminal de R, instalamos el resto de librerías necesarias:
install.packages(c("MBC", "maptools"), type = "win.binary") # Para Windows
install.packages(c("MBC", "maptools")) # Para Windows
Como se ha recomendado anteriormente, si sufre algún problema con esta instalación, inténtela desde la terminal de Mambaforge:
conda activate clim4R
conda install -c conda-forge -c r r-maptools r-MBC
A continuación explicaremos cada archivo .R utilizado, su funcionalidad y los archivos que genera:
-
01_GenerateMetadata.R
: Este archivo recopila los metadatos de los modelos climáticos de interés a través de una URL incluida en el código o del archivoinventory.csv
. En el código se debe especificar las características de los modelos y los datos que se quieren de ellos. El código está diseñado para generar:- El archivo
list_metadata_models_DEV.txt
que indica los metadatos a nivel usuario de los modelos de interés, indicando con un 1 si la variable solicitada está disponible o con un 0 si no fuera el caso. - El archivo
df_metadata_models_DEV.Rdata
que contiene metadatos más detallados y las rutas de los datos asociados a cada modelo de interés.
- El archivo
-
02_Generate_Model_Interpol.R
: A través de los ficheros de metadatos generados por el código01GenerateMetadataCORDEX_DEV.R
, este archivo carga las variables asociadas a cada modelo y las interpola haciendo uso de los datos de la carpeta ibera01. El código está diseñado para crear una capeta con el nombre del modelo en el directorio de CordexDEV y almacenar en ella sus variables interpoladas asociadas en formato .Rdata para su futura utilización. Los datos de iberia01 empleados corresponden a la península ibérica, motivo por el cuál, el código acota los datos en esta zona del mapa. Además, genera en CordexDEV el archivolist_models_Dev.txt
que indica qué modelos tienen disponible las variables necesarias, seleccionando así los que cumplen con las exigencias.
-
03_Calculate_AgroIndex.R
: Este archivo calcula los índices agroclimáticos para cada uno de los modelos que habitan en CordexDev. De forma automática y utilizando los metadatos del índices agroclimáticos, carga las variables que son necesarias para calcular cada uno de los índices seleccionados. Como dichos índices utilizan la temperatura en grados centígrados ($ºC$ ) y la precipitación en$kg/m^2$ , previo al cálculo, se cambia de unidades a las variables que no cumplan con estas especificaciones. El código está diseñado para crear una carpeta, agroindex_..., dentro de cada carpeta de modelo y almacenar en ella los índices calculados en formato .Rdata. Además, en la carpeta plots_... se guardan las representaciones gráficas en formato .png o .pdf de los índices calculados. -
04_Calculate_Bias_of_AgroIndex.R
: Este archivo genera el valor (mapa) del bias resultante al comparar/restar el valor promedio del índice agroclimático calculado utilizando el modelo interpolado y el valor calculado a partir de los datos observados de Iberia01. El índice agroclimático (en la carpeta agroindex_...) se calcula anualmente, y se determina el promedio de todos los años para obtener un único mapa del índice agroclimático. Para obtener el mapa de bias, se realiza la resta entre el mapa resultante del índice de Iberia01 y el mapa del modelo.
-
05_BiasCorrection_LocalData_all_year.R
: Este archivo aplica un método de correción de bias a una variable (univariable) o a un conjunto de variables (multivariable) climáticas para cada uno de los modelos históricos que habitan en CordexDev. Para aplicar los métodos de correción de bias (BC) es necesario definir un periodo de calibración (involucra a los modelos históricos y a las observaciones) y un periodo de proyección a futuro (que puede involucrar al modelo histórico del periodo de calibración o su modelo RCP asociado). Por este motivo, se recorren únicamente los modelos históricos (y se hacen uso de sus modelos RCP asociados si es necesario). Se pueden definir dos casos de uso:- El periodo de calibración y el periodo de proyección se encuentran ambos dentro del rango de datos del modelo histórico y de las observaciones. Solo se hace uso del modelo histórico y de los datos observados. De esta forma, se puede hacer un análisis estadístico de los resultados del periodo de proyección al compararlos con datos observados.
- El periodo de proyección se define en un intervalo de tiempo donde no existen datos observados. Se hace uso de las observaciones y un modelo histórico para el periodo de calibración y su modelo RCP asociado para el periodo de proyección.
El código está diseñado para crear una capeta con el nombre del modelo en el directorio de CordexDEV_bias (que se crea si no existe) y almacenar en ella las variables corregidas en formato .Rdata para su futura utilización. Además, se calcula el mapa de bias para cada variable, comparando su versión sin corregir y su versión corregida.
En el caso de utilizar un método de BC multivariable, se obtiene corregido las variables del periodo de calibración y las del periodo de proyección. Los archivos .Rdata del periodo de calibración se guardan en la carpeta del modelo utilizado para dicho periodo. Los archivos .Rdata del periodo de proyección (RCP o el mismo modelo histórico) se guardan en la carpeta del modelo utilizado para dicho periodo.
-
05_BiasCorrection_LocalData_by_season.R
: Este archivo es una copia del archivo05_BiasCorrection_LocalData_all_year.R
orientado a ejecutar el código dentro un bucle que recorre los meses del año (season). De esta forma, se corrigen todos los eneros juntos, todos los febreros, etc. Una ventaja de la correción mensual, obviando la disminución de recursos computacionales, es que consiguies centrarte en la dependencia mensual de las variables, capturando así más variabilidad. Al utilizar todos los datos de un año, corres el riesgo de que los meses más cálidos y fríos, a primer orden, establezcan la variabilidad y la dependencia entre variables del estudio, ocultando la del resto de meses. -
06_Calculate_AgroIndex_BC.R
: Este archivo calcula los índices agroclimáticos para cada uno de los modelos que habitan en CordexDev_bias, es decir, con las variables que han sido corregidas previamente por un método de correción de bias. De forma automática y utilizando los metadatos del índices agroclimáticos, carga las variables que son necesarias para calcular cada uno de los índices seleccionados. Como dichos índices utilizan la temperatura en grados centígrados ($ºC$ ) y la precipitación en$kg/m^2$ , previo al cálculo, se cambia de unidades a las variables que no cumplan con estas especificaciones. El código está diseñado para crear una carpeta, agroindex_..., dentro de cada carpeta de modelo y almacenar en ella los índices calculados en formato .Rdata. Además, en la carpeta plots_... se guardan las representaciones gráficas en formato .png o .pdf de los índices calculados.
00_Plot_Data.R
: Este archivo tiene como función representar los datos (.Rdata) asociados a cada modelo. El código está diseñado para examinar la carpeta CordexDev, seleccionar todos los modelos presentes en la misma y guardar en formato .png la representación gráfica de aquellos archivos .Rdata en cuyo nombre aparezca pr_, tas_, tasmax_ y tasmin_. Por ese motivo es importante que los archivos de datos (.Rdata) contengan en sus nombres dichas cadenas de caracteres, indicando los datos de la variable que almacenan.
Para comenzar el proyecto desde el principio será necesario establecer la siguiente organización de carpetas y archivos:
.
├── ubuntu_env_meteo3.yml
├── win_env_climate4r3.yml
├── Scripts
│ ├── 00_Plot_Data.R
│ ├── 00_Calculate_Bias_CordexDev_Iberia01.R
│ ├── 01_GenerateMetadata.R
│ ├── 02_Generate_Model_Interpol.R
│ ├── 03_Calculate_AgroIndex.R
│ ├── 04_Calculate_Bias_of_AgroIndex.R
│ ├── 05_BiasCorrection_LocalData_all_year.R
│ ├── 05_BiasCorrection_LocalData_by_season.R
│ ├── 06_Calculate_AgroIndex_BC.R
│ └── Create_Figures/
| ├── Fig1_AgroIndex_iberia01.R
| ├── ...
| └── Fig5_Correlacion_Variables_HIST.R
└── Datos
├── iberia01
│ ├── pr_iberia01_1986-2005.Rdata
│ ├── tas_iberia01_1986-2005.Rdata
| ├── tasmax_iberia01_1986-2005.Rdata
│ └── tasmin_iberia01_1986-2005.Rdata
|
└── CordexDev
└── Metadatos
├── CMIP5_Atlas_WarmingLevels.csv
└── inventory.csv
- pr_ si se trata de un archivo de precipitación.
- tas_ si se trata de un archivo de temperatura media del aire en la superficie.
- tasmax_ si se trata de un archivo de temperatura máxima del aire en la superficie.
- tasmin_ si se trata de un archivo de temperatura mínima del aire en la superficie.
Para comenzar el proyecto desde el principio será necesario establecer la siguiente organización de carpetas y archivos:
.
├── ubuntu_env_meteo3.yml
├── win_env_climate4r3.yml
├── Scripts
│ ├── 00_Plot_Data.R
│ ├── 00_Calculate_Bias_CordexDev_Iberia01.R
│ ├── 01_GenerateMetadata.R
│ ├── 02_Generate_Model_Interpol.R
│ ├── 03_Calculate_AgroIndex.R
│ ├── 04_Calculate_Bias_of_AgroIndex.R
│ ├── 05_BiasCorrection_LocalData_all_year.R
│ ├── 05_BiasCorrection_LocalData_by_season.R
│ ├── 06_Calculate_AgroIndex_BC.R
│ └── Create_Figures/
| ├── Fig1_AgroIndex_iberia01.R
| ├── ...
| └── Fig5_Correlacion_Variables_HIST.R
└── Datos
├── iberia01
│ ├── pr_iberia01_1986-2005.Rdata
│ ├── tas_iberia01_1986-2005.Rdata
| ├── tasmax_iberia01_1986-2005.Rdata
│ └── tasmin_iberia01_1986-2005.Rdata
|
├── CordexDev
│ ├── Metadatos
| | ├── inventory.csv
| │ ├── list_metadata_models_DEV.txt
| │ └── df_metadata_models_DEV.Rdata
| ├── list_models_Dev.txt
| ├── model_1
| │ ├── pr_1_interpol_Dev.Rdata
| │ ├── pr_2_interpol_Dev.Rdata
| | ├── tasmax_1_interpol_Dev.Rdata
| │ ├── tasmax_2_interpol_Dev.Rdata
| | ├── ...
| │ ├── agroindex_model_1
| | | ├── HI.Rdata
| | | └── ...
| | └── plots_model_1
| | └── Figuras .png
| ├── model_2
| | └── ...
| └── ....
|
├── CordexDev_CV2_BC
| ├── list_models_bias.txt
| ├── model_1
| │ ├── pr-c_1986-2005_EQM(pr)_CV-Random.Rdata
| │ ├── pr-c_1986-2005_EQM(pr)_CV-WarmCold.Rdata
| │ ├── pr-c_1986-2005_PQM(pr)_CV-Random.Rdata
| │ ├── pr-c_1986-2005_PQM(pr)_CV-WarmCold.Rdata
| │ ├── pr-c_1986-2005_QDM(pr)_CV-Random.Rdata
| │ ├── pr-c_1986-2005_QDM(pr)_CV-WarmCold.Rdata
| │ ├── pr-c_1986-2005_MBCR(tas-tasmin-tasmax-pr)_CV-Random.Rdata
| │ ├── pr-c_1986-2005_MBCR(tas-tasmin-tasmax-pr)_CV-WarmCold.Rdata
| | ├── tasmax-c_1986-2005_EQM(pr)_CV-Random.Rdata
| | ├── ...
| │ ├── agroindex_model_1
| | | ├── HI.Rdata
| | | └── ...
| | └── plots_model_1
| | └── Figuras .png
| ├── model_2
| | └── ...
| └── ....