MeteoIODoc 20240328.18c31bd1
mio::FilterMAD Class Reference

Detailed Description

Median Absolute Deviation.

Values outside of median ± 3 σ_MAD are rejected. The σ_MAD is calculated as follows:

\( \sigma_{MAD} = K \cdot \mathop{median_i} \left( \left| X_i - \mathop{median_j} ( X_j ) \right| \right) \) with \( K = \Phi^{-1}; \Phi = 0.6745 \)


See http://en.wikipedia.org/wiki/Median_absolute_deviation for more information about the Mean Absolute Deviation. It takes the following arguments:

  • MIN_SIGMA: to avoid rejecting all points after a period of constant signal (which brings sigma to zero), you can set a minimum value for sigma (optional, default: 1.0);
  • STRICT: if a window can not be defined, set the current point to nodata (optional, default: false);
  • all the window parameters as defined in WindowedFilter::setWindowFParams().

Examples for the io.ini file:

TA::filter1 = mad
TA::arg1::soft = TRUE
TA::arg1::centering = left
TA::arg1::MIN_PTS = 1
TA::arg1::MIN_SPAN = 1800 ;ie 1800 seconds time span for the left leaning window and at least 1 point
RH::filter1 = mad
RH::arg1::MIN_PTS = 10
RH::arg1::MIN_SPAN = 600 ;strictly centered window spanning 600 seconds and at least 10 points
@ left
left centered window
Definition: WindowedFilter.h:38

#include <FilterMAD.h>

Public Member Functions

 FilterMAD (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)
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0
 
- 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
 

Additional Inherited Members

- Public Types inherited from mio::WindowedFilter
enum  Centering { left , center , right }
 
- 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...
 
- Protected Member Functions inherited from mio::WindowedFilter
 WindowedFilter (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg, const bool &skipWindowParams=false)
 Construct a WindowedFilter Object. This is for filters that require a certain window of data. More...
 
void setWindowFParams (const std::vector< std::pair< std::string, std::string > > &vecArgs)
 Parse the arguments in order to retrieve the user parameters for the data window. The following parameters are recognized: More...
 
const std::vector< const MeteoData * > & get_window (const size_t &index, const std::vector< MeteoData > &ivec)
 A function that cuts out the desired window for the 'index' element within ivec, the window elements are stored into vec_window Calls to this function have to start with index 0, then 1, 2, 3, ... vec_window is not allowed to be changed between two calls. More...
 
bool get_window_specs (const size_t &index, const std::vector< MeteoData > &ivec, size_t &start, size_t &end) const
 A function that computes the start and end for a window for the 'index' element from ivec The principle is to compute the first index that matches the minimum number of points criteria, and the one that matches the minimum time window, then combine them (with the equivalent of OR: we take the MIN index). Afterward, we compute the last index [...] for number of points and the last index [...] for the time window and combine them (with the equivalent of OR: we take the MIN index) or vice versa for right centering. More...
 
- 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 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 inherited from mio::WindowedFilter
Duration min_time_span
 This is filled in the constructor by calling setWindowFParams. More...
 
Centering centering
 This is filled in the constructor by calling setWindowFParams. More...
 
size_t min_data_points
 This is filled in the constructor by calling setWindowFParams. More...
 
size_t last_start
 
size_t last_end
 
bool is_soft
 
- 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
 
- 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

◆ FilterMAD()

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

Member Function Documentation

◆ process()

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

Implements mio::WindowedFilter.


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