13 #include "ioda/ObsDataVector.h"
14 #include "oops/base/Variables.h"
15 #include "oops/util/missingValues.h"
28 const eckit::Configuration &config) {
29 oops::Parameters::deserialize(path, config);
35 throw eckit::UserError(path.path() +
36 ": Exactly one of the 'error parameter' and 'error function' "
37 "options must be present");
43 : allvars_(), parameters_(parameters) {
52 const std::vector<std::vector<bool>> &,
62 for (
size_t jv = 0; jv < vars.
nvars(); ++jv) {
65 for (
size_t jobs = 0; jobs < obserr.nlocs(); ++jobs) {
66 if (flags[kv][jobs] ==
QCflags::pass) obserr[iv][jobs] = error;
72 ASSERT(errorvar.
size() == 1 || errorvar.
size() == vars.
nvars());
74 errorvar.
group(),
false);
75 data.
get(errorvar, errors);
79 std::vector<size_t> error_jv(vars.
nvars(), 0);
84 std::iota(error_jv.begin(), error_jv.end(), 0);
88 for (
size_t jv = 0; jv < vars.
nvars(); ++jv) {
92 for (
size_t jobs = 0; jobs < obserr.nlocs(); ++jobs) {
94 obserr[iv][jobs] = errors[error_jv[jv]][jobs];
void apply(const Variables &, const std::vector< std::vector< bool >> &, const ObsFilterData &, int, ioda::ObsDataVector< int > &, ioda::ObsDataVector< float > &) const override
const Parameters_ parameters_
AssignError(const Parameters_ &)
oops::OptionalParameter< Variable > errorFunction
void deserialize(util::CompositePath &path, const eckit::Configuration &config) override
oops::OptionalParameter< float > errorParameter
ObsFilterData provides access to all data related to an ObsFilter.
ioda::ObsSpace & obsspace() const
Returns reference to ObsSpace associated with ObsFilterData.
void get(const Variable &varname, std::vector< float > &values) const
Fills a std::vector with values of the specified variable.
const std::string & variable() const
const std::string & group() const
oops::Variables toOopsVariables() const
size_t nvars() const
Return the number of constituent "primitive" (single-channel) variables.
Variable variable(const size_t) const
Return a given constituent "primitive" (single-channel) variable.
static FilterActionMaker< AssignError > makerAssignErr_("assign error")