8 #ifndef UFO_VARIABLETRANSFORMS_TRANSFORMBASE_H_
9 #define UFO_VARIABLETRANSFORMS_TRANSFORMBASE_H_
20 #include "eckit/exception/Exceptions.h"
21 #include "eckit/types/FloatCompare.h"
23 #include "ioda/ObsDataVector.h"
25 #include "oops/util/CompareNVectors.h"
26 #include "oops/util/Logger.h"
27 #include "oops/util/missingValues.h"
28 #include "oops/util/ObjectCounter.h"
29 #include "oops/util/PropertiesOfNVectors.h"
39 template <
typename DATATYPE>
46 class VariableTransformsParameters;
69 std::vector<T> &obsVector)
const {
70 if (
flags_.has(variableName)) {
71 const T
missing = util::missingValue(T());
72 const std::vector<int> *varFlags = &
flags_[variableName];
74 std::transform(obsVector.begin(), obsVector.end(),
78 { return flag == QCflags::missing || flag == QCflags::bounds
79 ? missing : obsvalue; });
94 void getObservation(
const std::string &originalTag,
const std::string &varName,
95 std::vector<T> &obsVector,
bool require =
false)
const {
96 if (!
obsdb_.has(originalTag, varName)) {
98 throw eckit::BadValue(
"The parameter `" + varName +
"@" + originalTag +
99 "` does not exist in the ObsSpace ", Here());
104 obsVector.resize(
obsdb_.nlocs());
105 obsdb_.get_db(originalTag, varName, obsVector);
119 template <
typename T>
120 void putObservation(
const std::string &varName,
const std::vector<T> &obsVector) {
122 if (
flags_.has(varName)) {
123 std::vector<int> &varFlags =
flags_[varName];
124 ASSERT(varFlags.size() == obsVector.size());
126 const T
missing = util::missingValue(T());
127 for (
size_t iloc = 0; iloc < obsVector.size(); ++iloc) {
163 static std::unique_ptr<TransformBase>
create(
173 virtual std::unique_ptr<TransformBase>
make(
177 static std::map<std::string, TransformFactory *> &
getMakers() {
178 static std::map<std::string, TransformFactory *> makers_;
186 virtual std::unique_ptr<TransformBase>
make(
190 return std::unique_ptr<TransformBase>(
new T(options, data, flags));
ObsFilterData provides access to all data related to an ObsFilter.
ioda::ObsSpace & obsspace() const
Returns reference to ObsSpace associated with ObsFilterData.