Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
MRMFeatureAccessOpenMS.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2017.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Hannes Roest $
32 // $Authors: Hannes Roest $
33 // --------------------------------------------------------------------------
34 
35 #ifndef OPENMS_ANALYSIS_OPENSWATH_DATAACCESS_MRMFEATUREACCESSOPENMS_H
36 #define OPENMS_ANALYSIS_OPENSWATH_DATAACCESS_MRMFEATUREACCESSOPENMS_H
37 
39 
40 #include <OpenMS/KERNEL/Feature.h>
44 
45 #include <boost/shared_ptr.hpp>
46 
47 // These classes are minimal implementations of the interfaces defined in ITransition:
48 // - IFeature
49 // - IMRMFeature
50 // - ITransitionGroup
51 // - ISignalToNoise
52 
53 namespace OpenMS
54 {
59  class OPENMS_DLLAPI FeatureOpenMS :
60  public OpenSwath::IFeature
61  {
62 public:
63 
64  explicit FeatureOpenMS(Feature& feature);
65 
66  ~FeatureOpenMS();
67 
68  void getRT(std::vector<double>& rt);
69 
70  void getIntensity(std::vector<double>& intens);
71 
72  float getIntensity();
73 
74  double getRT();
75 
76 private:
78  };
79 
84  class OPENMS_DLLAPI MRMFeatureOpenMS :
86  {
87 public:
88 
89  explicit MRMFeatureOpenMS(MRMFeature& mrmfeature);
90 
92 
93  boost::shared_ptr<OpenSwath::IFeature> getFeature(std::string nativeID);
94 
95  boost::shared_ptr<OpenSwath::IFeature> getPrecursorFeature(std::string nativeID);
96 
97  std::vector<std::string> getNativeIDs() const;
98 
99  std::vector<std::string> getPrecursorIDs() const;
100 
101  float getIntensity();
102 
103  double getRT();
104 
105  size_t size();
106 
107 private:
109  std::map<std::string, boost::shared_ptr<FeatureOpenMS> > features_;
110  std::map<std::string, boost::shared_ptr<FeatureOpenMS> > precursor_features_;
111  };
112 
117  template <typename SpectrumT, typename TransitionT>
120  {
121 public:
122 
124  trgroup_(trgroup)
125  {
126  }
127 
129  {
130  }
131 
132  std::size_t size()
133  {
134  return trgroup_.size();
135  }
136 
137  std::vector<std::string> getNativeIDs()
138  {
139  std::vector<std::string> result;
140  for (std::size_t i = 0; i < this->size(); i++)
141  {
142  result.push_back(trgroup_.getChromatograms()[i].getNativeID());
143  }
144  return result;
145  }
146 
147  void getLibraryIntensities(std::vector<double>& intensities)
148  {
149  trgroup_.getLibraryIntensity(intensities);
150  }
151 
152 private:
154  };
155 
160  template <typename ContainerT>
163  {
164 public:
165 
166  SignalToNoiseOpenMS(ContainerT& chromat,
167  double sn_win_len_, unsigned int sn_bin_count_, bool write_log_messages) :
168  chromatogram_(chromat), sn_()
169  {
170  OpenMS::Param snt_parameters = sn_.getParameters();
171  snt_parameters.setValue("win_len", sn_win_len_);
172  snt_parameters.setValue("bin_count", sn_bin_count_);
173 
174  if (write_log_messages)
175  {
176  snt_parameters.setValue("write_log_messages", "true");
177  }
178  else
179  {
180  snt_parameters.setValue("write_log_messages", "false");
181  }
182 
183  sn_.setParameters(snt_parameters);
184  sn_.init(chromatogram_);
185  }
186 
187  double getValueAtRT(double RT)
188  {
189  if (chromatogram_.empty()) {return -1;}
190 
191  // Note that MZBegin does not seem to return the same iterator on
192  // different setups, see https://github.com/OpenMS/OpenMS/issues/1163
193  typename ContainerT::const_iterator iter = chromatogram_.MZEnd(RT);
194 
195  // ensure that iter is valid
196  if (iter == chromatogram_.end())
197  {
198  iter--;
199  }
200 
201  typename ContainerT::const_iterator prev = iter;
202  if (prev != chromatogram_.begin() )
203  {
204  prev--;
205  }
206 
207  if (std::fabs(prev->getMZ() - RT) < std::fabs(iter->getMZ() - RT) )
208  {
209  // prev is closer to the apex
210  return sn_.getSignalToNoise(*prev);
211  }
212  else
213  {
214  // iter is closer to the apex
215  return sn_.getSignalToNoise(*iter);
216  }
217  }
218 
219 private:
220 
221  const ContainerT& chromatogram_;
223 
224  };
225 
226 }
227 
228 #endif // OPENMS_ANALYSIS_OPENSWATH_DATAACCESS_MRMFEATUREACCESSOPENMS_H
229 
TransitionGroupOpenMS(MRMTransitionGroup< SpectrumT, TransitionT > &trgroup)
Definition: MRMFeatureAccessOpenMS.h:123
An implementation of the OpenSWATH Feature Access interface using OpenMS.
Definition: MRMFeatureAccessOpenMS.h:59
void setValue(const String &key, const DataValue &value, const String &description="", const StringList &tags=StringList())
Sets a value.
Feature * feature_
Definition: MRMFeatureAccessOpenMS.h:77
std::vector< std::string > getNativeIDs()
Definition: MRMFeatureAccessOpenMS.h:137
const MRMTransitionGroup< SpectrumT, TransitionT > & trgroup_
Definition: MRMFeatureAccessOpenMS.h:153
SignalToNoiseOpenMS(ContainerT &chromat, double sn_win_len_, unsigned int sn_bin_count_, bool write_log_messages)
Definition: MRMFeatureAccessOpenMS.h:166
An implementation of the OpenSWATH Transition Group Access interface using OpenMS.
Definition: MRMFeatureAccessOpenMS.h:118
OpenMS::SignalToNoiseEstimatorMedian< ContainerT > sn_
Definition: MRMFeatureAccessOpenMS.h:222
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
Definition: ITransition.h:69
std::map< std::string, boost::shared_ptr< FeatureOpenMS > > features_
Definition: MRMFeatureAccessOpenMS.h:109
std::size_t size()
Definition: MRMFeatureAccessOpenMS.h:132
Definition: ITransition.h:46
An implementation of the OpenSWATH SignalToNoise Access interface using OpenMS.
Definition: MRMFeatureAccessOpenMS.h:161
void getLibraryIntensities(std::vector< double > &intensities)
Definition: MRMFeatureAccessOpenMS.h:147
An LC-MS feature.
Definition: Feature.h:70
std::map< std::string, boost::shared_ptr< FeatureOpenMS > > precursor_features_
Definition: MRMFeatureAccessOpenMS.h:110
Management and storage of parameters / INI files.
Definition: Param.h:75
Definition: ITransition.h:56
const MRMFeature & mrmfeature_
Definition: MRMFeatureAccessOpenMS.h:108
~TransitionGroupOpenMS()
Definition: MRMFeatureAccessOpenMS.h:128
const ContainerT & chromatogram_
Definition: MRMFeatureAccessOpenMS.h:221
A multi-chromatogram MRM feature.
Definition: MRMFeature.h:50
double getValueAtRT(double RT)
Definition: MRMFeatureAccessOpenMS.h:187
Definition: ITransition.h:77
An implementation of the OpenSWATH MRM Feature Access interface using OpenMS.
Definition: MRMFeatureAccessOpenMS.h:84

OpenMS / TOPP release 2.3.0 Documentation generated on Tue Jan 9 2018 18:22:02 using doxygen 1.8.13