35 #ifndef OPENMS_FILTERING_DATAREDUCTION_DATAFILTERS_H 
   36 #define OPENMS_FILTERING_DATAREDUCTION_DATAFILTERS_H 
   46   class ConsensusFeature;
 
   91         value_is_numerical(false)
 
  118       void fromString(
const String & filter);
 
  123         return field == rhs.
field 
  125                && value == rhs.
value 
  134         return !operator==(rhs);
 
  147     const DataFilter & operator[](
Size index) 
const;
 
  150     void add(
const DataFilter & filter);
 
  157     void remove(
Size index);
 
  164     void replace(
Size index, 
const DataFilter & filter);
 
  170     void setActive(
bool is_active);
 
  184     bool passes(
const Feature & feature) 
const;
 
  190     template <
class PeakType>
 
  193       if (!is_active_) 
return true;
 
  195       for (
Size i = 0; i < filters_.size(); i++)
 
  198         if (filter.
field == INTENSITY)
 
  203             if (spectrum[peak_index].getIntensity() < filter.
value) 
return false;
 
  208             if (spectrum[peak_index].getIntensity() != filter.
value) 
return false;
 
  213             if (spectrum[peak_index].getIntensity() > filter.
value) 
return false;
 
  221         else if (filter.
field == META_DATA)
 
  226           for (
Size j = 0; j < f_arrays.size(); ++j)
 
  228             if (f_arrays[j].getName() == filter.
meta_name)
 
  237             if (filter.
op == EQUAL && f_arrays[f_index][peak_index] != filter.
value) 
return false;
 
  238             else if (filter.
op == LESS_EQUAL && f_arrays[f_index][peak_index] > filter.
value) 
return false;
 
  239             else if (filter.
op == GREATER_EQUAL && f_arrays[f_index][peak_index] < filter.
value) 
return false;
 
  246           for (
Size j = 0; j < i_arrays.size(); ++j)
 
  248             if (i_arrays[j].getName() == filter.
meta_name)
 
  257             if (filter.
op == EQUAL && i_arrays[i_index][peak_index] != filter.
value) 
return false;
 
  258             else if (filter.
op == LESS_EQUAL && i_arrays[i_index][peak_index] > filter.
value) 
return false;
 
  259             else if (filter.
op == GREATER_EQUAL && i_arrays[i_index][peak_index] < filter.
value) 
return false;
 
  263           if (f_index == -1 && i_index == -1) 
return false;
 
  282       else if (filter.
op != EXISTS)
 
  291             if (filter.
op != EQUAL) 
return false;
 
  300             if (filter.
op == EQUAL && (
double)data_value != filter.
value) 
return false;
 
  301             else if (filter.
op == LESS_EQUAL && (
double)data_value > filter.
value) 
return false;
 
  302             else if (filter.
op == GREATER_EQUAL && (
double)data_value < filter.
value) 
return false;
 
bool passes(const MSSpectrum< PeakType > &spectrum, Size peak_index) const 
Returns if the peak fulfills the current filter criteria. 
Definition: DataFilters.h:191
bool operator!=(const DataFilter &rhs) const 
Inequality operator. 
Definition: DataFilters.h:132
Filter the intensity value. 
Definition: DataFilters.h:66
A more convenient string class. 
Definition: String.h:56
DataFilters()
Definition: DataFilters.h:56
FilterOperation
Filter operation. 
Definition: DataFilters.h:73
bool operator==(const DataFilter &rhs) const 
Equality operator. 
Definition: DataFilters.h:121
String toString() const 
Conversion to String. 
DataFilter()
Default constructor. 
Definition: DataFilters.h:85
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference. 
Definition: Types.h:151
std::vector< Size > meta_indices_
Vector of meta indices acting as index cache. 
Definition: DataFilters.h:273
const IntegerDataArrays & getIntegerDataArrays() const 
Returns a const reference to the integer meta data arrays. 
Definition: MSSpectrum.h:294
DoubleReal value
Value for comparison. 
Definition: DataFilters.h:100
Class to hold strings, numeric values, lists of strings and lists of numeric values. 
Definition: DataValue.h:57
FilterType
Information to filter. 
Definition: DataFilters.h:64
Representation of a peak/feature filter combining FilterType, FilterOperation and a value...
Definition: DataFilters.h:82
Equal to the value. 
Definition: DataFilters.h:76
DataType valueType() const 
returns the type of value stored 
Definition: DataValue.h:330
bool metaPasses_(const MetaInfoInterface &meta_interface, const DataFilters::DataFilter &filter, Size index) const 
Returns if the meta value at index of meta_interface (a peak or feature) passes the filter...
Definition: DataFilters.h:279
FilterType field
Field to filter. 
Definition: DataFilters.h:96
std::vector< DataFilter > filters_
Array of DataFilters. 
Definition: DataFilters.h:271
string value 
Definition: DataValue.h:68
An LC-MS feature. 
Definition: Feature.h:66
Filter the charge value. 
Definition: DataFilters.h:68
bool isActive() const 
Returns if the filters are enabled. 
Definition: DataFilters.h:178
String value_string
String value for comparison (for meta data) 
Definition: DataFilters.h:102
FilterOperation op
Filter operation. 
Definition: DataFilters.h:98
String meta_name
Name of the considered meta information. 
Definition: DataFilters.h:104
Filter the overall quality value. 
Definition: DataFilters.h:67
size_t Size
Size type e.g. used as variable which can hold result of size() 
Definition: Types.h:144
DataFilter array providing some convenience functions. 
Definition: DataFilters.h:53
const FloatDataArrays & getFloatDataArrays() const 
Returns a const reference to the float meta data arrays. 
Definition: MSSpectrum.h:270
Greater than the value or equal to the value. 
Definition: DataFilters.h:75
bool value_is_numerical
Bool value that indicates if the specified value is numerical. 
Definition: DataFilters.h:106
bool is_active_
Determines if the filters are activated. 
Definition: DataFilters.h:276
Less than the value or equal to the value. 
Definition: DataFilters.h:77
A 2-dimensional consensus feature. 
Definition: ConsensusFeature.h:59
empty value 
Definition: DataValue.h:74
Filter the number of subordinates/elements. 
Definition: DataFilters.h:69