Learn R Programming

CSIndicators

Sectoral Indicators for Climate Services Based on Sub-Seasonal to Decadal Climate Predictions

Set of generalised tools for the flexible computation of climate related indicators defined by the user. Each method represents a specific mathematical approach which is combined with the possibility to select an arbitrary time period to define the indicator. This enables a wide range of possibilities to tailor the most suitable indicator for each particular climate service application (agriculture, food security, energy, water management…). This package is intended for sub-seasonal, seasonal and decadal climate predictions, but its methods are also applicable to other time-scales, provided the dimensional structure of the input is maintained. Additionally, the outputs of the functions in this package are compatible with CSTools.

How to cite

Pérez-Zanón, N., Ho, A. Chou, C., Lledó, L., Marcos-Matamoros, R., Rifà, E. and González-Reviriego, N. (2023). CSIndicators: Get tailored climate indicators for applications in your sector. Climate Services. https://doi.org/10.1016/j.cliser.2023.100393

For details in the methodologies see:

Pérez-Zanón, N., Caron, L.-P., Terzago, S., Van Schaeybroeck, B., Lledó, L., Manubens, N., Roulin, E., Alvarez-Castro, M. C., Batté, L., Bretonnière, P.-A., Corti, S., Delgado-Torres, C., Domínguez, M., Fabiano, F., Giuntoli, I., von Hardenberg, J., Sánchez-García, E., Torralba, V., and Verfaillie, D.: Climate Services Toolbox (CSTools) v4.0: from climate forecasts to climate forecast information, Geosci. Model Dev., 15, 6115–6142, https://doi.org/10.5194/gmd-15-6115-2022, 2022.

Chou, C., R. Marcos-Matamoros, L. Palma Garcia, N. Pérez-Zanón, M. Teixeira, S. Silva, N. Fontes, A. Graça, A. Dell'Aquila, S. Calmanti and N. González-Reviriego (2023). Advanced seasonal predictions for vine management based on bioclimatic indicators tailored to the wine sector. Climate Services, 30, 100343, https://doi.org/10.1016/j.cliser.2023.100343.
Lledó, Ll., V. Torralba, A. Soret, J. Ramon and F.J. Doblas-Reyes (2019). Seasonal forecasts of wind power generation. Renewable Energy, 143, 91-100, https://doi.org/10.1016/j.renene.2019.04.135.

Installation

You can then install the public released version of CSIndicators from CRAN:

install.packages("CSIndicators")

Or the development version from the GitLab repository:

# install.packages("devtools")
devtools::install_git("https://gitlab.earth.bsc.es/es/csindicators.git")

Overview

To learn how to use the package see:

Functions documentation can be found here.

FunctionCST versionIndicators
PeriodMeanCST_PeriodMeanGST, SprTX, DTR, BIO1, BIO2
PeriodMaxCST_PeriodMaxBIO5, BIO13
PeriodMinPeriodMinBIO6, BIO14
PeriodVarianceCST_PeriodVarianceBIO4, BIO15
PeriodAccumulationCST_PeriodAccumulationSprR, HarR, PRCPTOT, BIO16, ...
PeriodPETCST_PeriodPETPET, SPEI
PeriodStandardizationCST_PeriodStandardizationSPEI, SPI
AccumulationExceedingThresholdCST_AccumulationExceedingThresholdGDD, R95pTOT, R99pTOT
TotalTimeExceedingThresholdCST_TotalTimeExceedingThresholdSU35, SU, FD, ID, TR, R10mm, Rnmm
TotalSpellTimeExceedingThresholdCST_TotalSpellTimeExceedingThresholdWSDI, CSDI
WindCapacityFactorCST_WindCapacityFactorWind Capacity Factor
WindPowerDensityCST_WindPowerDensityWind Power Density
Auxiliar functionCST version
AbsToProbsCST_AbsToProbs
QThresholdCST_QThreshold
ThresholdCST_Threshold
MergeRefToExpCST_MergeRefToExp
SelectPeriodOnDataCST_SelectPeriodOnData
SelectPeriodOnDates

Find the current status of each function in this link.

Note I: the CST version uses 's2dv_cube' objects as inputs and outputs while the former version uses multidimensional arrays with named dimensions as inputs and outputs.

Note II: All functions computing indicators allows to subset a time period if required, although this temporal subsetting can also be done with functions SelectPeriodOnData in a separated step.

Object class s2dv_cube

This package is designed to be compatible with other R packages such as CSTools through a common object: the s2dv_cube, used in functions with the prefix CST.

An s2dv_cube is an object to store ordered multidimensional array with named dimensions, specific coordinates and stored metadata. As an example, this is how it looks like (see CSTools::lonlat_temp_st$exp):

's2dv_cube'
Data          [ 279.99, 280.34, 279.45, 281.99, 280.92,  ... ] 
Dimensions    ( dataset = 1, var = 1, member = 15, sdate = 6, ftime = 3, lat = 22, lon = 53 ) 
Coordinates  
 * dataset : dat1 
 * var : tas 
   member : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 
 * sdate : 20001101, 20011101, 20021101, 20031101, 20041101, 20051101 
   ftime : 1, 2, 3 
 * lat : 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, ...
 * lon : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
Attributes   
   Dates  : 2000-11-01 2001-11-01 2002-11-01 2003-11-01 2004-11-01 ... 
   varName  : tas 
   metadata :  
      lat 
        units : degrees_north 
        long name : latitude 
      lon 
        units : degrees_east 
        long name : longitude 
      ftime 
        units : hours since 2000-11-01 00:00:00 
      tas 
        units : K 
        long name : 2 metre temperature 
   Datasets  : dat1 
   when  : 2023-10-02 10:11:06 
   source_files  : "/ecmwf/system5c3s/monthly_mean/tas_f6h/tas_20001101.nc" ... 
   load_parameters  : 
       ( dat1 )  : dataset = dat1, var = tas, sdate = 20001101 ... 

Note: The current s2dv_cube object (CSIndicators > 0.0.2 and CSTools > 4.1.1) differs from the original object used in the previous versions of the packages. More information about the s2dv_cube object class can be found here: description of the s2dv_cube object structure document.

Contribute

  1. Open an issue to ask for help or describe a function to be integrated
  2. Agree with maintainers (@ngonzal2, @rmarcos, @nperez and @erifarov) on the requirements
  3. Create a new branch from master with a meaningful name
  4. Once the development is finished, open a merge request to merge the branch on master

Note: Remember to work with multidimensionals arrays with named dimensions when possible and use multiApply.

Add a function

To add a new function in this R package, follow this considerations:

  1. Each function exposed to the users should be in separate files in the R folder
  2. The name of the function should match the name of the file (e.g.: Function() included in file Function.R)
  3. The documentation should be in roxygen2 format as a header of the function
  4. Once, the function and the documentation is finished, run the command devtools::document() in your R terminal to automatically generate the Function.Rd file
  5. Remember to use R 4.1.2 when doing the development
  6. Code format: include spaces between operators (e.g. +, -, &), before and after ','. The maximum length of lines is of 100 characters (hard limit 80 characters). Number of indentation spaces is 2.
  7. Functions computing Climate indicators should include a temporal subsetting option. Use the already existing functions to adapt your code.

Copy Link

Version

Install

install.packages('CSIndicators')

Monthly Downloads

421

Version

1.2.0

License

GPL-3

Maintainer

Victoria Agudetse

Last Published

March 11th, 2026

Functions in CSIndicators (1.2.0)

CST_PeriodMax

Period Max on 's2dv_cube' objects
CST_PeriodMin

Period Min on 's2dv_cube' objects
CST_PeriodPET

Compute the Potential Evapotranspiration
CST_PeriodStandardization

Compute the Standardization of Precipitation-Evapotranspiration Index
CST_QThreshold

Transform an absolute threshold into probabilities
CST_RNoughtIndices

R0 Index computation on s2dv_cube objects
CST_PeriodVariance

Period Variance on 's2dv_cube' objects
CST_TotalTimeExceedingThreshold

Total Time of a variable Exceeding (not exceeding) a Threshold
CST_TotalSpellTimeExceedingThreshold

Total Spell Time Exceeding Threshold
PeriodAccumulation

Period Accumulation on multidimensional array objects
MultiVarExceedingThreshold

Binary probabilities based on climate thresholds (internal function)
MergeRefToExp

Merge a Reference To Experiments
MaxSpellTimeExceedingThreshold

Maximum spell of a variable exceeding (or not exceeding) a defined Threshold
CST_WindPowerDensity

Wind power density on s2dv_cube objects
CST_WindCapacityFactor

Wind capacity factor on s2dv_cube objects
HeatIndex

Heat Index on multidimensional array objects
DayLength

Day length on multidimensional array objects
PeriodMean

Period Mean on multidimensional array objects
PeriodStandardization

Compute the Standardization of Precipitation-Evapotranspiration Index
PeriodVariance

Period Variance on multidimensional array objects
QThreshold

Transform an absolute threshold into probabilities
PeriodMax

Period max on multidimensional array objects
PeriodPET

Compute the Potential Evapotranspiration
RNoughtIndices

R0 Index computation on s2dv_cube objects
PeriodMin

Period Min on multidimensional array objects
SelectPeriodOnData

Select a period on Data on multidimensional array objects
SelectPeriodOnDates

Select a period on Dates
TotalSpellTimeExceedingThreshold

Total Spell Time Exceeding Threshold
Threshold

Absolute value of a relative threshold (percentile)
WindPowerDensity

Wind power density on multidimensional array objects
TotalTimeExceedingThreshold

Total Time of a variable Exceeding (not exceeding) a Threshold
WindCapacityFactor

Wind capacity factor
CST_AbsToProbs

Transform ensemble forecast into probabilities
CST_AccumulationExceedingThreshold

Accumulation of a variable when Exceeding (not exceeding) a Threshold
CST_MaxSpellTimeExceedingThreshold

Maximum spell of a variable exceeding (or not exceeding) a defined Threshold
AbsToProbs

Transform ensemble forecast into probabilities
CST_PeriodMean

Period Mean on 's2dv_cube' objects
CST_PeriodAccumulation

Period Accumulation on 's2dv_cube' objects
CST_MultiVarExceedingThreshold

Binary probabilities based on climate thresholds
CST_MergeRefToExp

Merge a Reference To Experiments
CST_DayLength

Day length on 's2dv_cube' objects
CST_HeatIndex

Heat Index on s2dv_cube objects
CST_Threshold

Absolute value of a relative threshold (percentile)
CST_SelectPeriodOnData

Select a period on Data on 's2dv_cube' objects
AccumulationExceedingThreshold

Accumulation of a variable when Exceeding (not exceeding) a Threshold