Thins observations by iterating over them in random order and retaining each observation lying outside the exclusion volumes (ellipsoids or cylinders) surrounding observations that have already been retained.
More...
#include <PoissonDiskThinning.h>
|
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 |
|
ObsData | getObsData (int &numSpatialDims, int &numNonspatialDims) const |
| Collect all observation data components used for thinning. More...
|
|
template<typename ValueType > |
void | validateSpacings (const util::ScalarOrMap< int, ValueType > &spacingsByPriority, const std::string ¶meterName) const |
|
std::vector< size_t > | getValidObservationIds (const std::vector< bool > &apply) const |
|
void | groupObservationsByCategory (const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter) const |
|
void | groupObservationsByPriority (const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter) const |
|
void | flagThinnedObservations (const std::vector< bool > &isThinned, std::vector< std::vector< bool > > &flagged) const |
|
void | thinCategory (const ObsData &obsData, const std::vector< size_t > &obsIdsInCategory, const RecursiveSplitter &prioritySplitter, int numSpatialDims, int numNonspatialDims, std::vector< bool > &isThinned) const |
|
template<int numDims> |
void | thinCategory (const ObsData &obsData, const std::vector< size_t > &obsIdsInCategory, const RecursiveSplitter &prioritySplitter, int numSpatialDims, std::vector< bool > &isThinned) const |
| Thin observations belonging to a single category. More...
|
|
template<int numDims> |
std::array< float, numDims > | getObservationPosition (size_t obsId, const ObsData &obsData) const |
|
template<int numDims> |
std::array< float, numDims > | getExclusionVolumeSemiAxes (size_t obsId, const ObsData &obsData) const |
|
Thins observations by iterating over them in random order and retaining each observation lying outside the exclusion volumes (ellipsoids or cylinders) surrounding observations that have already been retained.
See PoissonDiskThinningParameters for the documentation of the available options.
Definition at line 51 of file src/ufo/filters/PoissonDiskThinning.h.
◆ PoissonDiskThinning()
ufo::PoissonDiskThinning::PoissonDiskThinning |
( |
ioda::ObsSpace & |
obsdb, |
|
|
const eckit::Configuration & |
config, |
|
|
std::shared_ptr< ioda::ObsDataVector< int > > |
flags, |
|
|
std::shared_ptr< ioda::ObsDataVector< float > > |
obserr |
|
) |
| |
◆ ~PoissonDiskThinning()
ufo::PoissonDiskThinning::~PoissonDiskThinning |
( |
| ) |
|
|
override |
◆ applyFilter()
void ufo::PoissonDiskThinning::applyFilter |
( |
const std::vector< bool > & |
apply, |
|
|
const Variables & |
filtervars, |
|
|
std::vector< std::vector< bool >> & |
flagged |
|
) |
| const |
|
overrideprivatevirtual |
◆ classname()
static const std::string ufo::PoissonDiskThinning::classname |
( |
| ) |
|
|
inlinestatic |
◆ flagThinnedObservations()
void ufo::PoissonDiskThinning::flagThinnedObservations |
( |
const std::vector< bool > & |
isThinned, |
|
|
std::vector< std::vector< bool > > & |
flagged |
|
) |
| const |
|
private |
◆ getExclusionVolumeSemiAxes()
template<int numDims>
std::array< float, numDims > ufo::PoissonDiskThinning::getExclusionVolumeSemiAxes |
( |
size_t |
obsId, |
|
|
const ObsData & |
obsData |
|
) |
| const |
|
private |
◆ getObsData()
Collect all observation data components used for thinning.
- Parameters
-
[out] | numSpatialDims | Number of spatial dimensions used for thinning (3 if thinning by latitude and longitude, 0 otherwise). |
[out] | numNonspatialDims | Number of non-spatial dimensions used for thinning. |
Definition at line 204 of file PoissonDiskThinning.cc.
◆ getObservationPosition()
template<int numDims>
std::array< float, numDims > ufo::PoissonDiskThinning::getObservationPosition |
( |
size_t |
obsId, |
|
|
const ObsData & |
obsData |
|
) |
| const |
|
private |
◆ getValidObservationIds()
std::vector< size_t > ufo::PoissonDiskThinning::getValidObservationIds |
( |
const std::vector< bool > & |
apply | ) |
const |
|
private |
◆ groupObservationsByCategory()
void ufo::PoissonDiskThinning::groupObservationsByCategory |
( |
const std::vector< size_t > & |
validObsIds, |
|
|
RecursiveSplitter & |
splitter |
|
) |
| const |
|
private |
◆ groupObservationsByPriority()
void ufo::PoissonDiskThinning::groupObservationsByPriority |
( |
const std::vector< size_t > & |
validObsIds, |
|
|
RecursiveSplitter & |
splitter |
|
) |
| const |
|
private |
◆ print()
void ufo::PoissonDiskThinning::print |
( |
std::ostream & |
os | ) |
const |
|
overrideprivatevirtual |
◆ qcFlag()
int ufo::PoissonDiskThinning::qcFlag |
( |
| ) |
const |
|
inlineoverrideprivatevirtual |
◆ thinCategory() [1/2]
void ufo::PoissonDiskThinning::thinCategory |
( |
const ObsData & |
obsData, |
|
|
const std::vector< size_t > & |
obsIdsInCategory, |
|
|
const RecursiveSplitter & |
prioritySplitter, |
|
|
int |
numSpatialDims, |
|
|
int |
numNonspatialDims, |
|
|
std::vector< bool > & |
isThinned |
|
) |
| const |
|
private |
◆ thinCategory() [2/2]
template<int numDims>
void ufo::PoissonDiskThinning::thinCategory |
( |
const ObsData & |
obsData, |
|
|
const std::vector< size_t > & |
obsIdsInCategory, |
|
|
const RecursiveSplitter & |
prioritySplitter, |
|
|
int |
numSpatialDims, |
|
|
std::vector< bool > & |
isThinned |
|
) |
| const |
|
private |
◆ validateSpacings()
template<typename ValueType >
void ufo::PoissonDiskThinning::validateSpacings |
( |
const util::ScalarOrMap< int, ValueType > & |
spacingsByPriority, |
|
|
const std::string & |
parameterName |
|
) |
| const |
|
private |
◆ options_
The documentation for this class was generated from the following files: