ProteoWizard
SpectrumList_Filter.hpp
Go to the documentation of this file.
1 //
2 // $Id: SpectrumList_Filter.hpp 10650 2017-03-27 21:23:14Z chambm $
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  /// controls whether spectra that pass the predicate are included or excluded from the result
52  {
54  FilterMode_Exclude
55  };
56 
57  /// can be overridden in subclasses that know they will need a certain detail level;
58  /// it must be overridden to return DetailLevel_FullData if binary data is needed
60 
61  /// return values:
62  /// true: accept the Spectrum
63  /// false: reject the Spectrum
64  /// indeterminate: need to see the full Spectrum object to decide
65  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const = 0;
66 
67  /// return true iff Spectrum is accepted
68  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const {return false;}
69 
70  /// return true iff done accepting spectra;
71  /// this allows early termination of the iteration through the original
72  /// SpectrumList, possibly using assumptions about the order of the
73  /// iteration (e.g. index is increasing, nativeID interpreted as scan number is
74  /// increasing, ...)
75  virtual bool done() const {return false;}
76 
77  virtual ~Predicate() {}
78  };
79 
80  SpectrumList_Filter(const msdata::SpectrumListPtr original, const Predicate& predicate);
81 
82  /// \name SpectrumList interface
83  //@{
84  virtual size_t size() const;
85  virtual const msdata::SpectrumIdentity& spectrumIdentity(size_t index) const;
86  virtual msdata::SpectrumPtr spectrum(size_t index, bool getBinaryData = false) const;
87  virtual msdata::SpectrumPtr spectrum(size_t index, msdata::DetailLevel detailLevel) const;
88  //@}
89 
90  private:
91  struct Impl;
92  boost::shared_ptr<Impl> impl_;
95 };
96 
97 
98 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const SpectrumList_Filter::Predicate::FilterMode& mode);
99 PWIZ_API_DECL std::istream& operator>>(std::istream& is, SpectrumList_Filter::Predicate::FilterMode& mode);
100 
101 
103 {
104  public:
106  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
107  virtual bool done() const;
108 
109  private:
111  mutable bool eos_;
112 };
113 
114 
116 {
117  public:
119  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
120  virtual bool done() const;
121 
122  private:
124  mutable bool eos_;
125 };
126 
127 
129 {
130  public:
132  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
133  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
134 
135  private:
137 };
138 
139 
141 {
142  public:
143  SpectrumList_FilterPredicate_ScanTimeRange(double scanTimeLow, double scanTimeHigh);
144  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const;
145  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
146 
147  private:
148  double scanTimeLow_;
150 };
151 
152 
154 {
155  public:
157  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
158  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
159 
160  private:
162 };
163 
164 
166 {
167  public:
169  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
170  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
171 
172  private:
174 };
175 
176 
178 {
179  public:
180  SpectrumList_FilterPredicate_PrecursorMzSet(const std::set<double>& precursorMzSet, chemistry::MZTolerance tolerance, FilterMode mode);
181  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
182  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
183 
184  private:
185  std::set<double> precursorMzSet_;
187  FilterMode mode_;
188 
189  double getPrecursorMz(const msdata::Spectrum& spectrum) const;
190 };
191 
192 
194 {
195  public:
197  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
198  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
199 
200  private:
202 };
203 
204 
206 {
207  public:
208  SpectrumList_FilterPredicate_ActivationType(const std::set<pwiz::cv::CVID> filterItem, bool hasNoneOf_ = false);
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  bool hasNoneOf;
215 };
216 
217 
219 {
220  public:
221  SpectrumList_FilterPredicate_AnalyzerType(const std::set<pwiz::cv::CVID> filterItem);
222  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
223  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
224 
225  private:
226  std::set<pwiz::cv::CVID> cvFilterItems;
227 };
228 
229 
231 {
232  public:
233  SpectrumList_FilterPredicate_Polarity(pwiz::cv::CVID polarity);
234  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
235  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
236 
237  private:
238  pwiz::cv::CVID polarity;
239 
240 };
241 
242 
244 {
245  public:
246  SpectrumList_FilterPredicate_MzPresent(chemistry::MZTolerance mzt, std::set<double> mzSet, ThresholdFilter tf, FilterMode mode);
248  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
249  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
250 
251  private:
253  std::set<double> mzSet_;
255  FilterMode mode_;
256 };
257 
259 {
260  public:
261  SpectrumList_FilterPredicate_ThermoScanFilter(const std::string& matchString, bool matchExact, bool inverse);
262  virtual boost::logic::tribool accept(const msdata::SpectrumIdentity& spectrumIdentity) const {return boost::logic::indeterminate;}
263  virtual boost::logic::tribool accept(const msdata::Spectrum& spectrum) const;
264 
265  private:
266  std::string matchString_;
268  bool inverse_;
269 };
270 
271 } // namespace analysis
272 } // namespace pwiz
273 
274 
275 #endif // _SPECTRUMLIST_FILTER_HPP_
276 
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 th...
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
PWIZ_API_DECL std::ostream & operator<<(std::ostream &os, PepxmlRecordReader &prr)
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
PWIZ_API_DECL std::istream & operator>>(std::istream &is, SpectrumList_Filter::Predicate::FilterMode &mode)
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...
FilterMode
controls whether spectra that pass the predicate are included or excluded from the result ...
SpectrumList filter, for creating Spectrum sub-lists.
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...
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...