ProteoWizard
SpectrumList_Filter.hpp
Go to the documentation of this file.
1 //
2 // $Id: SpectrumList_Filter.hpp 4352 2013-02-20 09:36:33Z mwilhelm42 $
3 //
4 //
5 // Original author: Darren Kessner <darren@proteowizard.org>
6 //
7 // Copyright 2008 Spielberg Family Center for Applied Proteomics
8 // Cedars-Sinai Medical Center, Los Angeles, California 90048
9 //
10 // Licensed under the Apache License, Version 2.0 (the "License");
11 // you may not use this file except in compliance with the License.
12 // You may obtain a copy of the License at
13 //
14 // http://www.apache.org/licenses/LICENSE-2.0
15 //
16 // Unless required by applicable law or agreed to in writing, software
17 // distributed under the License is distributed on an "AS IS" BASIS,
18 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 // See the License for the specific language governing permissions and
20 // limitations under the License.
21 //
22 
23 
24 #ifndef _SPECTRUMLIST_FILTER_HPP_
25 #define _SPECTRUMLIST_FILTER_HPP_
26 
27 
33 #include "boost/logic/tribool.hpp"
34 
35 #include <set>
36 
37 namespace pwiz {
38 namespace analysis {
39 
40 
41 /// SpectrumList filter, for creating Spectrum sub-lists
43 {
44  public:
45 
46  /// client-implemented filter predicate -- called during construction of
47  /// SpectrumList_Filter to create the filtered list of spectra
49  {
50  /// can be overridden in subclasses that know they will need a certain detail level;
51  /// it must be overridden to return DetailLevel_FullData if binary data is needed
53 
54  /// return values:
55  /// true: accept the Spectrum
56  /// false: reject the Spectrum
57  /// indeterminate: need to see the full Spectrum object to decide
58  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const = 0;
59 
60  /// return true iff Spectrum is accepted
61  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const {return false;}
62 
63  /// return true iff done accepting spectra;
64  /// this allows early termination of the iteration through the original
65  /// SpectrumList, possibly using assumptions about the order of the
66  /// iteration (e.g. index is increasing, nativeID interpreted as scan number is
67  /// increasing, ...)
68  virtual bool done() const {return false;}
69 
70  virtual ~Predicate() {}
71  };
72 
73  SpectrumList_Filter(const msdata::SpectrumListPtr original, const Predicate& predicate);
74 
75  /// \name SpectrumList interface
76  //@{
77  virtual size_t size() const;
78  virtual const msdata::SpectrumIdentity& spectrumIdentity(size_t index) const;
79  virtual msdata::SpectrumPtr spectrum(size_t index, bool getBinaryData = false) const;
80  virtual msdata::SpectrumPtr spectrum(size_t index, msdata::DetailLevel detailLevel) const;
81  //@}
82 
83  private:
84  struct Impl;
85  boost::shared_ptr<Impl> impl_;
88 };
89 
90 
92 {
93  public:
95  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
96  virtual bool done() const;
97 
98  private:
100  mutable bool eos_;
101 };
102 
103 
105 {
106  public:
108  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
109  virtual bool done() const;
110 
111  private:
113  mutable bool eos_;
114 };
115 
116 
118 {
119  public:
121  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
122  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
123 
124  private:
126 };
127 
128 
130 {
131  public:
132  SpectrumList_FilterPredicate_ScanTimeRange(double scanTimeLow, double scanTimeHigh);
133  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
134  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
135 
136  private:
137  double scanTimeLow_;
139 };
140 
141 
143 {
144  public:
146  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
147  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
148 
149  private:
151 };
152 
153 
155 {
156  public:
158  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
159  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
160 
161  private:
163 };
164 
165 
167 {
168  public:
169  SpectrumList_FilterPredicate_PrecursorMzSet(const std::set<double>& precursorMzSet);
170  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
171  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
172 
173  private:
174  std::set<double> precursorMzSet_;
175 
176  double getPrecursorMz(const msdata::Spectrum& spectrum) const;
177 };
178 
179 
181 {
182  public:
184  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
185  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
186 
187  private:
189 };
190 
191 
193 {
194  public:
195  SpectrumList_FilterPredicate_ActivationType(const std::set<pwiz::cv::CVID> filterItem, bool hasNoneOf_ = false);
196  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
197  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
198 
199  private:
200  std::set<pwiz::cv::CVID> cvFilterItems;
201  bool hasNoneOf;
202 };
203 
204 
206 {
207  public:
208  SpectrumList_FilterPredicate_AnalyzerType(const std::set<pwiz::cv::CVID> filterItem);
209  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
210  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
211 
212  private:
213  std::set<pwiz::cv::CVID> cvFilterItems;
214 };
215 
216 
218 {
219  public:
220  SpectrumList_FilterPredicate_Polarity(pwiz::cv::CVID polarity);
221  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
222  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
223 
224  private:
225  pwiz::cv::CVID polarity;
226 
227 };
228 
229 
231 {
232  public:
233  SpectrumList_FilterPredicate_MzPresent(chemistry::MZTolerance mzt, std::set<double> mzSet, ThresholdFilter tf, bool inverse);
235  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
236  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
237 
238  private:
240  std::set<double> mzSet_;
242  bool inverse_;
243 };
244 
245 } // namespace analysis
246 } // namespace pwiz
247 
248 
249 #endif // _SPECTRUMLIST_FILTER_HPP_
250 
a virtual container of integers, accessible via an iterator interface, stored as union of intervals ...
Definition: IntegerSet.hpp:37
virtual msdata::DetailLevel suggestedDetailLevel() const
can be overridden in subclasses that know they will need a certain detail level; it must be overridde...
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
boost::shared_ptr< Spectrum > SpectrumPtr
Definition: MSData.hpp:569
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
virtual boost::logic::tribool accept(const msdata::Spectrum &spectrum) const
return true iff Spectrum is accepted
virtual msdata::DetailLevel suggestedDetailLevel() const
can be overridden in subclasses that know they will need a certain detail level; it must be overridde...
client-implemented filter predicate – called during construction of SpectrumList_Filter to create t...
Inheritable pass-through implementation for wrapping a SpectrumList.
boost::shared_ptr< SpectrumList > SpectrumListPtr
Definition: MSData.hpp:707
#define PWIZ_API_DECL
Definition: Export.hpp:32
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
Identifying information for a spectrum.
Definition: MSData.hpp:469
virtual bool done() const
return true iff done accepting spectra; this allows early termination of the iteration through the or...
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
struct for expressing m/z tolerance in either amu or ppm
Definition: MZTolerance.hpp:38
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...
SpectrumList filter, for creating Spectrum sub-lists.
The structure that captures the generation of a peak list (including the underlying acquisitions) ...
Definition: MSData.hpp:504
virtual boost::logic::tribool accept(const msdata::SpectrumIdentity &spectrumIdentity) const
return values: true: accept the Spectrum false: reject the Spectrum indeterminate: need to see the fu...