UFO
|
Group observations into grid cells and preserve only one observation in each cell. More...
#include <Gaussian_Thinning.h>
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 | |
![]() | |
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< SpatialBinSelector > | makeSpatialBinSelector (const GaussianThinningParameters &options) |
static boost::optional< EquispacedBinSelector > | makePressureBinSelector (const GaussianThinningParameters &options) |
static boost::optional< EquispacedBinSelector > | makeTimeBinSelector (const GaussianThinningParameters &options, util::DateTime &timeOffset) |
static std::unique_ptr< DistanceCalculator > | makeDistanceCalculator (const GaussianThinningParameters &options) |
Private Attributes | |
std::unique_ptr< GaussianThinningParameters > | options_ |
Additional Inherited Members | |
![]() | |
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_ |
Group observations into grid cells and preserve only one observation in each cell.
Cell assignment can be based on an arbitrary combination of:
Selection of the observation to preserve in each cell is based on
See GaussianThinningParameters for the documentation of the available options.
Definition at line 58 of file Gaussian_Thinning.h.
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.
|
override |
Definition at line 68 of file Gaussian_Thinning.cc.
|
overrideprivatevirtual |
Implements ufo::FilterBase.
Definition at line 73 of file Gaussian_Thinning.cc.
|
inlinestatic |
Definition at line 61 of file Gaussian_Thinning.h.
|
private |
Definition at line 424 of file Gaussian_Thinning.cc.
|
private |
Definition at line 103 of file Gaussian_Thinning.cc.
|
private |
Definition at line 216 of file Gaussian_Thinning.cc.
|
private |
Definition at line 235 of file Gaussian_Thinning.cc.
|
private |
Definition at line 130 of file Gaussian_Thinning.cc.
|
private |
Definition at line 294 of file Gaussian_Thinning.cc.
|
private |
Definition at line 369 of file Gaussian_Thinning.cc.
|
staticprivate |
|
private |
Definition at line 392 of file Gaussian_Thinning.cc.
|
staticprivate |
|
staticprivate |
Definition at line 188 of file Gaussian_Thinning.cc.
|
staticprivate |
|
overrideprivatevirtual |
Implements ufo::FilterBase.
Definition at line 442 of file Gaussian_Thinning.cc.
|
inlineoverrideprivatevirtual |
Implements ufo::FilterBase.
Definition at line 73 of file Gaussian_Thinning.h.
|
private |
Definition at line 128 of file Gaussian_Thinning.h.