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-2013.
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.
30
// --------------------------------------------------------------------------
31
// $Maintainer: Hannes Roest $
32
// $Authors: Hannes Roest $
33
// --------------------------------------------------------------------------
35
#ifndef OPENMS_ANALYSIS_OPENSWATH_DATAACCESS_MRMFEATUREACCESSOPENMS_H
36
#define OPENMS_ANALYSIS_OPENSWATH_DATAACCESS_MRMFEATUREACCESSOPENMS_H
38
#include <OpenMS/ANALYSIS/OPENSWATH/OPENSWATHALGO/DATAACCESS/ITransition.h>
40
#include <OpenMS/KERNEL/Feature.h>
41
#include <OpenMS/KERNEL/MRMFeature.h>
42
#include <OpenMS/KERNEL/MRMTransitionGroup.h>
43
#include <OpenMS/FILTERING/NOISEESTIMATION/SignalToNoiseEstimatorMedian.h>
45
#include <boost/shared_ptr.hpp>
47
// These classes are minimal implementations of the interfaces defined in ITransition:
56
@brief An implementation of the OpenSWATH Feature Access interface using OpenMS
59
class OPENMS_DLLAPI FeatureOpenMS :
60
public OpenSwath::IFeature
64
explicit FeatureOpenMS(Feature& feature);
68
void getRT(std::vector<double>& rt);
70
void getIntensity(std::vector<double>& intens);
81
@brief An implementation of the OpenSWATH MRM Feature Access interface using OpenMS
84
class OPENMS_DLLAPI MRMFeatureOpenMS :
85
public OpenSwath::IMRMFeature
89
explicit MRMFeatureOpenMS(MRMFeature& mrmfeature);
93
boost::shared_ptr<OpenSwath::IFeature> getFeature(std::string nativeID);
100
const MRMFeature& mrmfeature_;
101
std::map<std::string, boost::shared_ptr<FeatureOpenMS> > features_;
105
@brief An implementation of the OpenSWATH Transition Group Access interface using OpenMS
108
template <typename SpectrumT, typename TransitionT>
109
class OPENMS_DLLAPI TransitionGroupOpenMS :
110
public OpenSwath::ITransitionGroup
114
TransitionGroupOpenMS(MRMTransitionGroup<SpectrumT, TransitionT>& trgroup) :
119
~TransitionGroupOpenMS()
125
return trgroup_.size();
128
std::vector<std::string> getNativeIDs()
130
std::vector<std::string> result;
131
for (std::size_t i = 0; i < this->size(); i++)
133
result.push_back(trgroup_.getChromatograms()[i].getNativeID());
138
void getLibraryIntensities(std::vector<double>& intensities)
140
trgroup_.getLibraryIntensity(intensities);
144
const MRMTransitionGroup<SpectrumT, TransitionT>& trgroup_;
148
@brief An implementation of the OpenSWATH SignalToNoise Access interface using OpenMS
151
template <typename PeakT>
152
class OPENMS_DLLAPI SignalToNoiseOpenMS :
153
public OpenSwath::ISignalToNoise
157
SignalToNoiseOpenMS(OpenMS::MSSpectrum<PeakT>& chromat,
158
double sn_win_len_, unsigned int sn_bin_count_) :
159
chromatogram_(chromat), sn_()
161
OpenMS::Param snt_parameters = sn_.getParameters();
162
snt_parameters.setValue("win_len", sn_win_len_);
163
snt_parameters.setValue("bin_count", sn_bin_count_);
164
sn_.setParameters(snt_parameters);
165
sn_.init(chromatogram_);
168
double getValueAtRT(double RT)
170
typename OpenMS::MSSpectrum<PeakT>::const_iterator it = chromatogram_.MZBegin(RT);
171
return sn_.getSignalToNoise(*it);
175
const OpenMS::MSSpectrum<PeakT>& chromatogram_;
176
OpenMS::SignalToNoiseEstimatorMedian<OpenMS::MSSpectrum<PeakT> > sn_;