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>
|
| PoissonDiskThinning (ioda::ObsSpace &obsdb, const Parameters_ ¶meters, std::shared_ptr< ioda::ObsDataVector< int > > flags, std::shared_ptr< ioda::ObsDataVector< float > > obserr) |
|
| ~PoissonDiskThinning () override |
|
| FilterBase (ioda::ObsSpace &, const FilterParametersBaseWithAbstractAction ¶meters, 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 () |
|
| 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 |
|
|
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 |
|
ObsData | getObsData (const ObsAccessor &obsAccessor, 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 Variables &filtervars, const ObsAccessor &obsAccessor) const |
|
void | synchroniseRandomNumberGenerators (const eckit::mpi::Comm &comm) const |
|
void | groupObservationsByPriority (const std::vector< size_t > &validObsIds, const ObsAccessor &obsAccessor, RecursiveSplitter &splitter) 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 52 of file src/ufo/filters/PoissonDiskThinning.h.
◆ Parameters_
◆ PoissonDiskThinning()
◆ ~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 |
◆ createObsAccessor()
ObsAccessor ufo::PoissonDiskThinning::createObsAccessor |
( |
| ) |
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 222 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 Variables & |
filtervars, |
|
|
const ObsAccessor & |
obsAccessor |
|
) |
| const |
|
private |
◆ groupObservationsByPriority()
void ufo::PoissonDiskThinning::groupObservationsByPriority |
( |
const std::vector< size_t > & |
validObsIds, |
|
|
const ObsAccessor & |
obsAccessor, |
|
|
RecursiveSplitter & |
splitter |
|
) |
| const |
|
private |
◆ print()
void ufo::PoissonDiskThinning::print |
( |
std::ostream & |
os | ) |
const |
|
overrideprivatevirtual |
◆ qcFlag()
int ufo::PoissonDiskThinning::qcFlag |
( |
| ) |
const |
|
inlineoverrideprivatevirtual |
◆ synchroniseRandomNumberGenerators()
void ufo::PoissonDiskThinning::synchroniseRandomNumberGenerators |
( |
const eckit::mpi::Comm & |
comm | ) |
const |
|
private |
Initialise random number generators used for shuffling with the same seed on all processes belonging to the given communicator.
Definition at line 304 of file PoissonDiskThinning.cc.
◆ 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: