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:
This example write out the yearly deciles without performing any corrections to the data (so the corrections factor can be later computed):
This example applies pre-computed correction factors (quantiles computed over the whole dataset):
Example of correction file (quantiles in the first column and correction factors as second column):
#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 ¶m, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec) |
Public Member Functions inherited from mio::ProcessingBlock | |
virtual | ~ProcessingBlock () |
virtual void | process (const unsigned int ¶m, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0 |
virtual void | process (Date &dateStart, Date &dateEnd) |
std::string | getName () const |
const ProcessingProperties & | getProperties () 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< DateRange > | getTimeRestrictions () const |
Protected Member Functions | |
void | correctPeriod (const unsigned int ¶m, 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 ¶meter, 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 ¶m, const std::vector< MeteoData > &ivec, std::vector< double > &ovec) |
static void | extract_dbl_vector (const unsigned int ¶m, 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< DateRange > | time_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_spec > | readCorrections (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... | |
mio::ProcQuantileMapping::ProcQuantileMapping | ( | const std::vector< std::pair< std::string, std::string > > & | vecArgs, |
const std::string & | name, | ||
const Config & | cfg | ||
) |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |
|
virtual |
Implements mio::ProcessingBlock.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |