nidas  v1.2-1520
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 
17 namespace nidas { namespace core {
18 
23 {
25 
26 public:
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 
195 private:
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 
229 std::ostream&
230 operator<<(std::ostream& out, const BadSampleFilter& bsf);
231 
232 
238 {
239 public:
241 
244  {
245  return _bsf;
246  }
247 
248  virtual bool
249  parse(const ArgVector& argv, int* argi = 0);
250 
251 private:
253 
254 };
255 
256 
257 
258 }} // namespace nidas namespace core
259 
260 #endif // NIDAS_CORE_BADSAMPLEFILTER_H
void setMaxSampleTime(const nidas::util::UTime &val)
Set the maximum sample time for a valid sample.
Definition: BadSampleFilter.cc:80
void setRules(const std::string &rule)
Parse the filter rule string and throw NidasAppException if it does not parse.
Definition: BadSampleFilter.cc:305
sampleType
Definition: sample_type_traits.h:30
A class for parsing, formatting and doing operations on time, based on Unix time conventions, where leap seconds are ignored, so that there are always 60 seconds in a minute, 3600 seconds in an hour and 86400 seconds in a day.
Definition: UTime.h:76
void setMaxSampleLength(unsigned int val)
The default maximum sample length is 32768.
Definition: BadSampleFilter.cc:64
bool _skipNidasHeader
Definition: BadSampleFilter.h:218
unsigned int minSampleLength() const
Definition: BadSampleFilter.h:85
void setMinSampleLength(unsigned int val)
The default minimum sample length is 1.
Definition: BadSampleFilter.cc:56
The gcc buildin atomic operations are not supported on arm, and one must use -march=i686 for them to ...
Definition: Sample.h:106
bool invalidSampleHeader(const SampleHeader &sheader)
Return true if matches any of the criteria for an invalid sample.
Definition: BadSampleFilter.cc:120
void setMinDsmId(unsigned int val)
The default minimum DSM ID for a valid sample is 1.
Definition: BadSampleFilter.cc:40
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:61
void setMaxDsmId(unsigned int val)
The default maximum DSM ID for a valid sample is 1024.
Definition: BadSampleFilter.cc:48
bool skipNidasHeader() const
Definition: BadSampleFilter.h:132
unsigned int _maxDsmId
Definition: BadSampleFilter.h:210
nidas::core::sampleType sampleTypeLimit() const
Return the current sampleType setting.
Definition: BadSampleFilter.h:155
UTime minSampleTime() const
Definition: BadSampleFilter.h:107
bool _filterBadSamples
Definition: BadSampleFilter.h:207
void setSampleTypeLimit(nidas::core::sampleType stype)
Set the single acceptable sample type, all others will be filtered out as bad.
Definition: BadSampleFilter.cc:95
void setRule(const std::string &rule)
Set a single filter setting as a string in the form &#39;on&#39;, &#39;off&#39;, or &lt;field&gt;=.
Definition: BadSampleFilter.cc:244
size_t _maxSampleLength
Definition: BadSampleFilter.h:213
unsigned int maxDsmId() const
Definition: BadSampleFilter.h:74
unsigned int maxSampleLength() const
Definition: BadSampleFilter.h:96
Implement rules for filtering bad samples.
Definition: BadSampleFilter.h:22
void setFilterBadSamples(bool val)
Enable filtering of bad samples.
Definition: BadSampleFilter.cc:33
BadSampleFilterArg()
Definition: BadSampleFilter.cc:374
nidas::core::sampleType _sampleType
Definition: BadSampleFilter.h:222
UTime maxSampleTime() const
Definition: BadSampleFilter.h:118
A NidasAppArg is command-line argument which can be handled by NidasApp.
Definition: NidasApp.h:73
void setMinSampleTime(const nidas::util::UTime &val)
Set the minimum sample time for a valid sample.
Definition: BadSampleFilter.cc:72
dsm_time_t _minSampleTime
Definition: BadSampleFilter.h:215
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:88
std::ostream & operator<<(std::ostream &out, const BadSampleFilter &bsf)
Stream the current rules for BadSampleFilter bsf to out.
Definition: BadSampleFilter.cc:348
BadSampleFilter & getFilter()
Definition: BadSampleFilter.h:243
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:401
BadSampleFilter()
Definition: BadSampleFilter.cc:18
void setDefaultTimeRange(const UTime &start, const UTime &end)
Set start and end times as the filter times only if current filter times are unset, and do not change whether the filter is enabled.
Definition: BadSampleFilter.cc:103
unsigned int minDsmId() const
Definition: BadSampleFilter.h:63
std::vector< std::string > ArgVector
Convenience typedef for handling the command-line argv as a vector of strings.
Definition: NidasApp.h:53
bool operator==(const BadSampleFilter &right) const
Definition: BadSampleFilter.cc:331
BadSampleFilter _bsf
Definition: BadSampleFilter.h:252
unsigned int _minDsmId
Definition: BadSampleFilter.h:209
bool filterBadSamples() const
Return true if bad sample filtering has been enabled.
Definition: BadSampleFilter.h:52
dsm_time_t _maxSampleTime
Definition: BadSampleFilter.h:216
BadSampleFilterArg is a NidasAppArg for configuring a BadSampleFilter with filter rules pased to the ...
Definition: BadSampleFilter.h:237
nidas::util::UTime UTime
Definition: BadSampleFilter.h:24
size_t _minSampleLength
Definition: BadSampleFilter.h:212