UFO
ufo::Gaussian_Thinning Class Reference

Group observations into grid cells and preserve only one observation in each cell. More...

#include <Gaussian_Thinning.h>

Inheritance diagram for ufo::Gaussian_Thinning:
Collaboration diagram for ufo::Gaussian_Thinning:

Public Member Functions

 Gaussian_Thinning (ioda::ObsSpace &obsdb, const eckit::Configuration &config, std::shared_ptr< ioda::ObsDataVector< int > > flags, std::shared_ptr< ioda::ObsDataVector< float > > obserr)
 
 ~Gaussian_Thinning () override
 
- Public Member Functions inherited from ufo::FilterBase
 FilterBase (ioda::ObsSpace &, const eckit::Configuration &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 ~FilterBase ()
 
void preProcess ()
 
void priorFilter (const GeoVaLs &)
 
void postFilter (const ioda::ObsVector &, const ObsDiagnostics &)
 
oops::Variables requiredVars () const
 
oops::Variables requiredHdiagnostics () const
 

Static Public Member Functions

static const std::string classname ()
 

Private Member Functions

void print (std::ostream &) const override
 
void applyFilter (const std::vector< bool > &, const Variables &, std::vector< std::vector< bool >> &) const override
 
int qcFlag () const override
 
std::vector< size_t > getValidObservationIds (const std::vector< bool > &apply, const ParallelObsDistribution &obsDistribution) const
 
void groupObservationsByCategory (const std::vector< size_t > &validObsIds, const ParallelObsDistribution &obsDistribution, RecursiveSplitter &splitter) const
 
void groupObservationsBySpatialLocation (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ParallelObsDistribution &obsDistribution, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
void groupObservationsByPressure (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ParallelObsDistribution &obsDistribution, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
void groupObservationsByTime (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ParallelObsDistribution &obsDistribution, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
std::vector< bool > identifyThinnedObservations (const std::vector< size_t > &validObsIds, const ParallelObsDistribution &obsDistribution, const RecursiveSplitter &splitter, const std::vector< float > &distancesToBinCenter) const
 
std::function< bool(size_t, size_t)> makeObservationComparator (const std::vector< size_t > &validObsIds, const std::vector< float > &distancesToBinCenter, const ParallelObsDistribution &obsDistribution) const
 
void flagThinnedObservations (const std::vector< bool > &isThinned, const ParallelObsDistribution &obsDistribution, std::vector< std::vector< bool > > &flagged) const
 

Static Private Member Functions

static boost::optional< SpatialBinSelectormakeSpatialBinSelector (const GaussianThinningParameters &options)
 
static boost::optional< EquispacedBinSelectormakePressureBinSelector (const GaussianThinningParameters &options)
 
static boost::optional< EquispacedBinSelectormakeTimeBinSelector (const GaussianThinningParameters &options, util::DateTime &timeOffset)
 
static std::unique_ptr< DistanceCalculatormakeDistanceCalculator (const GaussianThinningParameters &options)
 

Private Attributes

std::unique_ptr< GaussianThinningParametersoptions_
 

Additional Inherited Members

- Protected Attributes inherited from ufo::FilterBase
ioda::ObsSpace & obsdb_
 
const eckit::LocalConfiguration config_
 
std::shared_ptr< ioda::ObsDataVector< int > > flags_
 
std::shared_ptr< ioda::ObsDataVector< float > > obserr_
 
ufo::Variables allvars_
 
ufo::Variables filtervars_
 
ObsFilterData data_
 

Detailed Description

Group observations into grid cells and preserve only one observation in each cell.

Cell assignment can be based on an arbitrary combination of:

  • horizontal position
  • vertical position (in terms of air pressure)
  • time
  • category (arbitrary integer associated with each observation).

Selection of the observation to preserve in each cell is based on

  • its position in the cell
  • optionally, its priority.

See GaussianThinningParameters for the documentation of the available options.

Definition at line 58 of file Gaussian_Thinning.h.

Constructor & Destructor Documentation

◆ Gaussian_Thinning()

ufo::Gaussian_Thinning::Gaussian_Thinning ( ioda::ObsSpace &  obsdb,
const eckit::Configuration &  config,
std::shared_ptr< ioda::ObsDataVector< int > >  flags,
std::shared_ptr< ioda::ObsDataVector< float > >  obserr 
)

Definition at line 54 of file Gaussian_Thinning.cc.

◆ ~Gaussian_Thinning()

ufo::Gaussian_Thinning::~Gaussian_Thinning ( )
override

Definition at line 68 of file Gaussian_Thinning.cc.

Member Function Documentation

◆ applyFilter()

void ufo::Gaussian_Thinning::applyFilter ( const std::vector< bool > &  apply,
const Variables filtervars,
std::vector< std::vector< bool >> &  flagged 
) const
overrideprivatevirtual

Implements ufo::FilterBase.

Definition at line 73 of file Gaussian_Thinning.cc.

Here is the call graph for this function:

◆ classname()

static const std::string ufo::Gaussian_Thinning::classname ( )
inlinestatic

Definition at line 61 of file Gaussian_Thinning.h.

◆ flagThinnedObservations()

void ufo::Gaussian_Thinning::flagThinnedObservations ( const std::vector< bool > &  isThinned,
const ParallelObsDistribution obsDistribution,
std::vector< std::vector< bool > > &  flagged 
) const
private

Definition at line 424 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getValidObservationIds()

std::vector< size_t > ufo::Gaussian_Thinning::getValidObservationIds ( const std::vector< bool > &  apply,
const ParallelObsDistribution obsDistribution 
) const
private

Definition at line 103 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ groupObservationsByCategory()

void ufo::Gaussian_Thinning::groupObservationsByCategory ( const std::vector< size_t > &  validObsIds,
const ParallelObsDistribution obsDistribution,
RecursiveSplitter splitter 
) const
private

Definition at line 216 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ groupObservationsByPressure()

void ufo::Gaussian_Thinning::groupObservationsByPressure ( const std::vector< size_t > &  validObsIds,
const DistanceCalculator distanceCalculator,
const ParallelObsDistribution obsDistribution,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 235 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ groupObservationsBySpatialLocation()

void ufo::Gaussian_Thinning::groupObservationsBySpatialLocation ( const std::vector< size_t > &  validObsIds,
const DistanceCalculator distanceCalculator,
const ParallelObsDistribution obsDistribution,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 130 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ groupObservationsByTime()

void ufo::Gaussian_Thinning::groupObservationsByTime ( const std::vector< size_t > &  validObsIds,
const DistanceCalculator distanceCalculator,
const ParallelObsDistribution obsDistribution,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 294 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ identifyThinnedObservations()

std::vector< bool > ufo::Gaussian_Thinning::identifyThinnedObservations ( const std::vector< size_t > &  validObsIds,
const ParallelObsDistribution obsDistribution,
const RecursiveSplitter splitter,
const std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 369 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makeDistanceCalculator()

std::unique_ptr< DistanceCalculator > ufo::Gaussian_Thinning::makeDistanceCalculator ( const GaussianThinningParameters options)
staticprivate

Definition at line 117 of file Gaussian_Thinning.cc.

Here is the caller graph for this function:

◆ makeObservationComparator()

std::function< bool(size_t, size_t)> ufo::Gaussian_Thinning::makeObservationComparator ( const std::vector< size_t > &  validObsIds,
const std::vector< float > &  distancesToBinCenter,
const ParallelObsDistribution obsDistribution 
) const
private

Definition at line 392 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makePressureBinSelector()

boost::optional< EquispacedBinSelector > ufo::Gaussian_Thinning::makePressureBinSelector ( const GaussianThinningParameters options)
staticprivate

Definition at line 274 of file Gaussian_Thinning.cc.

Here is the caller graph for this function:

◆ makeSpatialBinSelector()

boost::optional< SpatialBinSelector > ufo::Gaussian_Thinning::makeSpatialBinSelector ( const GaussianThinningParameters options)
staticprivate

Definition at line 188 of file Gaussian_Thinning.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makeTimeBinSelector()

boost::optional< EquispacedBinSelector > ufo::Gaussian_Thinning::makeTimeBinSelector ( const GaussianThinningParameters options,
util::DateTime &  timeOffset 
)
staticprivate

Definition at line 337 of file Gaussian_Thinning.cc.

Here is the caller graph for this function:

◆ print()

void ufo::Gaussian_Thinning::print ( std::ostream &  os) const
overrideprivatevirtual

Implements ufo::FilterBase.

Definition at line 442 of file Gaussian_Thinning.cc.

◆ qcFlag()

int ufo::Gaussian_Thinning::qcFlag ( ) const
inlineoverrideprivatevirtual

Implements ufo::FilterBase.

Definition at line 73 of file Gaussian_Thinning.h.

Member Data Documentation

◆ options_

std::unique_ptr<GaussianThinningParameters> ufo::Gaussian_Thinning::options_
private

Definition at line 128 of file Gaussian_Thinning.h.


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