nidas v1.2.3
BadSampleFilter.h
Go to the documentation of this file.
1// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4; -*-
2// vim: set shiftwidth=4 softtabstop=4 expandtab:
3/*
4 ********************************************************************
5 Copyright 2016 UCAR, NCAR, All Rights Reserved
6 ********************************************************************
7*/
8#ifndef NIDAS_CORE_BADSAMPLEFILTER_H
9#define NIDAS_CORE_BADSAMPLEFILTER_H
10
11#include <iosfwd>
12
13#include "SampleTag.h"
14#include <nidas/util/UTime.h>
15#include "NidasApp.h"
16
17namespace nidas { namespace core {
18
23{
25
26public:
27
29
45 void setFilterBadSamples(bool val);
46
52 inline bool filterBadSamples() const
53 {
54 return _filterBadSamples;
55 }
56
61 void setMinDsmId(unsigned int val);
62
63 unsigned int minDsmId() const
64 {
65 return _minDsmId;
66 }
67
72 void setMaxDsmId(unsigned int val);
73
74 unsigned int maxDsmId() const
75 {
76 return _maxDsmId;
77 }
78
83 void setMinSampleLength(unsigned int val);
84
85 unsigned int minSampleLength() const
86 {
87 return _minSampleLength;
88 }
89
94 void setMaxSampleLength(unsigned int val);
95
96 unsigned int maxSampleLength() const
97 {
98 return _maxSampleLength;
99 }
100
105 void setMinSampleTime(const nidas::util::UTime& val);
106
108 {
109 return _minSampleTime;
110 }
111
116 void setMaxSampleTime(const nidas::util::UTime& val);
117
119 {
120 return _maxSampleTime;
121 }
122
129 void setSkipNidasHeader(bool enable);
130
131 bool
133 {
134 return _skipNidasHeader;
135 }
136
141 void
142 setDefaultTimeRange(const UTime& start, const UTime& end);
143
148 void
150
156 {
157 return _sampleType;
158 }
159
182 void
183 setRules(const std::string& rule);
184
189 bool
190 invalidSampleHeader(const SampleHeader& sheader);
191
192 bool
193 operator==(const BadSampleFilter& right) const;
194
195private:
196
204 void
205 setRule(const std::string& rule);
206
208
209 unsigned int _minDsmId;
210 unsigned int _maxDsmId;
211
214
217
219
220 // Set the acceptable sample type. Defaults to UNKNOWN_ST, meaning all
221 // valid sample types are accepted.
223};
224
225
229std::ostream&
230operator<<(std::ostream& out, const BadSampleFilter& bsf);
231
232
238{
239public:
241
244 {
245 return _bsf;
246 }
247
248 virtual bool
249 parse(const ArgVector& argv, int* argi = 0);
250
251private:
253
254};
255
256
257
258}} // namespace nidas namespace core
259
260#endif // NIDAS_CORE_BADSAMPLEFILTER_H
BadSampleFilterArg is a NidasAppArg for configuring a BadSampleFilter with filter rules pased to the ...
Definition BadSampleFilter.h:238
BadSampleFilter & getFilter()
Definition BadSampleFilter.h:243
BadSampleFilterArg()
Definition BadSampleFilter.cc:373
virtual bool parse(const ArgVector &argv, int *argi=0)
If argv[argi] matches this argument, then set the flag that was found and also the value if this argu...
Definition BadSampleFilter.cc:400
BadSampleFilter _bsf
Definition BadSampleFilter.h:252
Implement rules for filtering bad samples.
Definition BadSampleFilter.h:23
nidas::util::UTime UTime
Definition BadSampleFilter.h:24
void setMaxSampleLength(unsigned int val)
The default maximum sample length is 32768.
Definition BadSampleFilter.cc:63
nidas::core::sampleType _sampleType
Definition BadSampleFilter.h:222
void setMinSampleLength(unsigned int val)
The default minimum sample length is 1.
Definition BadSampleFilter.cc:55
void setMaxSampleTime(const nidas::util::UTime &val)
Set the maximum sample time for a valid sample.
Definition BadSampleFilter.cc:79
size_t _maxSampleLength
Definition BadSampleFilter.h:213
UTime minSampleTime() const
Definition BadSampleFilter.h:107
void setSkipNidasHeader(bool enable)
Set to true to allow the NIDAS header to be skipped if it cannot be found at the start of a file or s...
Definition BadSampleFilter.cc:87
bool _skipNidasHeader
Definition BadSampleFilter.h:218
dsm_time_t _minSampleTime
Definition BadSampleFilter.h:215
void setRule(const std::string &rule)
Set a single filter setting as a string in the form 'on', 'off', or <field>=.
Definition BadSampleFilter.cc:243
unsigned int _maxDsmId
Definition BadSampleFilter.h:210
void setMinSampleTime(const nidas::util::UTime &val)
Set the minimum sample time for a valid sample.
Definition BadSampleFilter.cc:71
bool skipNidasHeader() const
Definition BadSampleFilter.h:132
void setMinDsmId(unsigned int val)
The default minimum DSM ID for a valid sample is 1.
Definition BadSampleFilter.cc:39
void setSampleTypeLimit(nidas::core::sampleType stype)
Set the single acceptable sample type, all others will be filtered out as bad.
Definition BadSampleFilter.cc:94
bool invalidSampleHeader(const SampleHeader &sheader)
Return true if @sheader matches any of the criteria for an invalid sample.
Definition BadSampleFilter.cc:119
bool filterBadSamples() const
Return true if bad sample filtering has been enabled.
Definition BadSampleFilter.h:52
unsigned int minDsmId() const
Definition BadSampleFilter.h:63
BadSampleFilter()
Definition BadSampleFilter.cc:17
unsigned int minSampleLength() const
Definition BadSampleFilter.h:85
unsigned int maxDsmId() const
Definition BadSampleFilter.h:74
void setMaxDsmId(unsigned int val)
The default maximum DSM ID for a valid sample is 1024.
Definition BadSampleFilter.cc:47
bool _filterBadSamples
Definition BadSampleFilter.h:207
nidas::core::sampleType sampleTypeLimit() const
Return the current sampleType setting.
Definition BadSampleFilter.h:155
void setFilterBadSamples(bool val)
Enable filtering of bad samples.
Definition BadSampleFilter.cc:32
void setDefaultTimeRange(const UTime &start, const UTime &end)
Set start and end times as the filter times only if current filter times are unset,...
Definition BadSampleFilter.cc:102
bool operator==(const BadSampleFilter &right) const
Definition BadSampleFilter.cc:330
unsigned int _minDsmId
Definition BadSampleFilter.h:209
size_t _minSampleLength
Definition BadSampleFilter.h:212
void setRules(const std::string &rule)
Parse the filter rule string and throw NidasAppException if it does not parse.
Definition BadSampleFilter.cc:304
unsigned int maxSampleLength() const
Definition BadSampleFilter.h:96
dsm_time_t _maxSampleTime
Definition BadSampleFilter.h:216
UTime maxSampleTime() const
Definition BadSampleFilter.h:118
A NidasAppArg is command-line argument which can be handled by NidasApp.
Definition NidasApp.h:76
The gcc buildin atomic operations are not supported on arm, and one must use -march=i686 for them to ...
Definition Sample.h:107
A class for parsing, formatting and doing operations on time, based on Unix time conventions,...
Definition UTime.h:95
std::ostream & operator<<(std::ostream &out, const BadSampleFilter &bsf)
Stream the current rules for BadSampleFilter bsf to out.
Definition BadSampleFilter.cc:347
std::vector< std::string > ArgVector
Convenience typedef for handling the command-line argv as a vector of strings.
Definition NidasApp.h:55
sampleType
Definition sample_type_traits.h:30
long long dsm_time_t
Posix time in microseconds, the number of non-leap microseconds since 1970 Jan 1 00:00 UTC.
Definition Sample.h:62
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31