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 Types

typedef GaussianThinningParameters Parameters_
 

Public Member Functions

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

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
 
ObsAccessor createObsAccessor () const
 
void groupObservationsBySpatialLocation (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ObsAccessor &obsAccessor, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
void groupObservationsByVerticalCoordinate (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ObsAccessor &obsAccessor, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
void groupObservationsByTime (const std::vector< size_t > &validObsIds, const DistanceCalculator &distanceCalculator, const ObsAccessor &obsAccessor, RecursiveSplitter &splitter, std::vector< float > &distancesToBinCenter) const
 
std::vector< bool > identifyThinnedObservations (const std::vector< size_t > &validObsIds, const ObsAccessor &obsAccessor, 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 ObsAccessor &obsAccessor) const
 

Static Private Member Functions

static boost::optional< SpatialBinSelectormakeSpatialBinSelector (const GaussianThinningParameters &options)
 
static std::unique_ptr< EquispacedBinSelectorBasemakeVerticalBinSelector (const GaussianThinningParameters &options)
 
static std::unique_ptr< EquispacedBinSelectorBasemakeTimeBinSelector (const GaussianThinningParameters &options, const util::DateTime &windowStart, const util::DateTime &windowEnd, util::DateTime &timeOffset)
 
static std::unique_ptr< DistanceCalculatormakeDistanceCalculator (const GaussianThinningParameters &options)
 

Private Attributes

GaussianThinningParameters options_
 

Additional Inherited Members

- Protected Attributes inherited from ufo::FilterBase
const eckit::LocalConfiguration config_
 
ufo::Variables filtervars_
 
- Protected Attributes inherited from ufo::ObsProcessorBase
ioda::ObsSpace & obsdb_
 
std::shared_ptr< ioda::ObsDataVector< int > > flags_
 
std::shared_ptr< ioda::ObsDataVector< float > > obserr_
 
ufo::Variables allvars_
 
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 height or 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 59 of file Gaussian_Thinning.h.

Member Typedef Documentation

◆ Parameters_

The type of parameters accepted by the constructor of this filter. This typedef is used by the FilterFactory.

Definition at line 64 of file Gaussian_Thinning.h.

Constructor & Destructor Documentation

◆ Gaussian_Thinning()

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

Definition at line 40 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 51 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 66 of file Gaussian_Thinning.h.

◆ createObsAccessor()

ObsAccessor ufo::Gaussian_Thinning::createObsAccessor ( ) const
private

Definition at line 84 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 ObsAccessor obsAccessor,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 111 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 ObsAccessor obsAccessor,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 261 of file Gaussian_Thinning.cc.

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

◆ groupObservationsByVerticalCoordinate()

void ufo::Gaussian_Thinning::groupObservationsByVerticalCoordinate ( const std::vector< size_t > &  validObsIds,
const DistanceCalculator distanceCalculator,
const ObsAccessor obsAccessor,
RecursiveSplitter splitter,
std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 198 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 ObsAccessor obsAccessor,
const RecursiveSplitter splitter,
const std::vector< float > &  distancesToBinCenter 
) const
private

Definition at line 347 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 95 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 ObsAccessor obsAccessor 
) const
private

Definition at line 372 of file Gaussian_Thinning.cc.

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

◆ makeSpatialBinSelector()

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

Definition at line 165 of file Gaussian_Thinning.cc.

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

◆ makeTimeBinSelector()

std::unique_ptr< EquispacedBinSelectorBase > ufo::Gaussian_Thinning::makeTimeBinSelector ( const GaussianThinningParameters options,
const util::DateTime &  windowStart,
const util::DateTime &  windowEnd,
util::DateTime &  timeOffset 
)
staticprivate

Definition at line 301 of file Gaussian_Thinning.cc.

Here is the caller graph for this function:

◆ makeVerticalBinSelector()

std::unique_ptr< EquispacedBinSelectorBase > ufo::Gaussian_Thinning::makeVerticalBinSelector ( const GaussianThinningParameters options)
staticprivate

Definition at line 235 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 401 of file Gaussian_Thinning.cc.

◆ qcFlag()

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

Implements ufo::FilterBase.

Definition at line 76 of file Gaussian_Thinning.h.

Member Data Documentation

◆ options_

GaussianThinningParameters ufo::Gaussian_Thinning::options_
private

Definition at line 125 of file Gaussian_Thinning.h.


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