MeteoIODoc 20240419.5ef1d57f
mio::ProcQuantileMapping Class Reference

Detailed Description

Quantile Mapping correction.

The statistical distribution of the chosen parameter is computed and the multiplying factors provided as arguments are used to correct each provided quantiles (see https://rcmes.jpl.nasa.gov/content/statistical-downscaling#download).The quantiles must be provided as increasing decimal numbers between 0 (0%) and 1 (100%) and the full range must be covered. Values given for quantiles less than 0.5 (50%) are assumed to extend toward 0 while values above are assumed to extend toward 1 (100%).

It takes the following arguments:

  • TYPE: either ADD (add the correction coefficient) or MULT (multiply by the correction coefficient);
  • PERIOD: either YEARLY, MONTHLY, WEEKLY or DAILY. This describes the period over which the quantiles were calculated (and is currently used as a sliding window). If no argument is given, it takes the whole dataset at once (optional);
  • CORRECTIONS: the file and path containing the corrections to apply;
  • WRITE_QUANTILES: write out the average value of each quantile (if no corrections file is provided, it will generate 10 quantiles).

This example write out the yearly deciles without performing any corrections to the data (so the corrections factor can be later computed):

VW::filter1 = QM
VW::arg1::period = yearly
VW::arg1::write_quantiles = true

This example applies pre-computed correction factors (quantiles computed over the whole dataset):

TA::filter1 = QM
TA::arg1::corrections = correctionsTA.dat
TA::arg1::type = add

Example of correction file (quantiles in the first column and correction factors as second column):

0 1.2
0.25 1.2
0.5 1.05
0.8 0.95
0.9 0.89

#include <ProcQuantileMapping.h>

Public Member Functions

 ProcQuantileMapping (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg)
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)
 
- Public Member Functions inherited from mio::ProcessingBlock
virtual ~ProcessingBlock ()
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0
 
virtual void process (Date &dateStart, Date &dateEnd)
 
std::string getName () const
 
const ProcessingPropertiesgetProperties () const
 
const std::string toString () const
 
bool skipStation (const std::string &station_id) const
 Should the provided station be skipped in the processing? More...
 
bool noStationsRestrictions () const
 
const std::vector< DateRangegetTimeRestrictions () const
 

Protected Member Functions

void correctPeriod (const unsigned int &param, const size_t &idx_start, const size_t &idx_end, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec) const
 
void writeQuantiles (const std::vector< double > &thresholds, const std::vector< double > &vecX, const std::string &parameter, const std::string &station) const
 
double getCorrection (const std::vector< double > &thresholds, const double &value) const
 
std::vector< std::pair< size_t, size_t > > getStarts (const std::vector< MeteoData > &ivec) const
 
void parse_args (const std::vector< std::pair< std::string, std::string > > &vecArgs)
 
- Protected Member Functions inherited from mio::ProcessingBlock
 ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg)
 protected constructor only to be called by children More...
 

Static Protected Member Functions

static size_t getQuantile (const std::vector< double > &thresholds, const double &value)
 
- Static Protected Member Functions inherited from mio::ProcessingBlock
static void extract_dbl_vector (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< double > &ovec)
 
static void extract_dbl_vector (const unsigned int &param, const std::vector< const MeteoData * > &ivec, std::vector< double > &ovec)
 

Protected Attributes

std::vector< double > quantiles
 
std::vector< double > corrections
 
std::string root_path
 
double period_duration
 
char type
 
bool write_quantiles
 
- Protected Attributes inherited from mio::ProcessingBlock
const std::set< std::string > excluded_stations
 
const std::set< std::string > kept_stations
 
const std::vector< DateRangetime_restrictions
 
ProcessingProperties properties
 
const std::string block_name
 

Additional Inherited Members

- Static Public Member Functions inherited from mio::ProcessingBlock
static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y)
 Read a data file structured as X Y value on each lines. More...
 
static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2)
 Read a data file structured as X Y1 Y2 value on each lines. More...
 
static std::vector< double > readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init)
 Read a correction file applicable to repeating time period. More...
 
static std::vector< offset_specreadCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2)
 Read a correction file, ie a file structured as timestamps followed by values on each lines. More...
 
static std::map< std::string, std::vector< DateRange > > readDates (const std::string &filter, const std::string &filename, const double &TZ)
 Read a list of date ranges by stationIDs from a file. More...
 
- Static Protected Attributes inherited from mio::ProcessingBlock
static const double soil_albedo = .23
 
static const double snow_albedo = .85
 
static const double snow_thresh = .1
 parametrize the albedo from HS More...
 

Constructor & Destructor Documentation

◆ ProcQuantileMapping()

mio::ProcQuantileMapping::ProcQuantileMapping ( const std::vector< std::pair< std::string, std::string > > &  vecArgs,
const std::string &  name,
const Config cfg 
)

Member Function Documentation

◆ correctPeriod()

void mio::ProcQuantileMapping::correctPeriod ( const unsigned int &  param,
const size_t &  idx_start,
const size_t &  idx_end,
const std::vector< MeteoData > &  ivec,
std::vector< MeteoData > &  ovec 
) const
protected

◆ getCorrection()

double mio::ProcQuantileMapping::getCorrection ( const std::vector< double > &  thresholds,
const double &  value 
) const
protected

◆ getQuantile()

size_t mio::ProcQuantileMapping::getQuantile ( const std::vector< double > &  thresholds,
const double &  value 
)
staticprotected

◆ getStarts()

std::vector< std::pair< size_t, size_t > > mio::ProcQuantileMapping::getStarts ( const std::vector< MeteoData > &  ivec) const
protected

◆ parse_args()

void mio::ProcQuantileMapping::parse_args ( const std::vector< std::pair< std::string, std::string > > &  vecArgs)
protected

◆ process()

void mio::ProcQuantileMapping::process ( const unsigned int &  param,
const std::vector< MeteoData > &  ivec,
std::vector< MeteoData > &  ovec 
)
virtual

Implements mio::ProcessingBlock.

◆ writeQuantiles()

void mio::ProcQuantileMapping::writeQuantiles ( const std::vector< double > &  thresholds,
const std::vector< double > &  vecX,
const std::string &  parameter,
const std::string &  station 
) const
protected

Member Data Documentation

◆ corrections

std::vector<double> mio::ProcQuantileMapping::corrections
protected

◆ period_duration

double mio::ProcQuantileMapping::period_duration
protected

◆ quantiles

std::vector<double> mio::ProcQuantileMapping::quantiles
protected

◆ root_path

std::string mio::ProcQuantileMapping::root_path
protected

◆ type

char mio::ProcQuantileMapping::type
protected

◆ write_quantiles

bool mio::ProcQuantileMapping::write_quantiles
protected

The documentation for this class was generated from the following files: