OpenMS  2.5.0
FeatureMap.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-2020.
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: Chris Bielow $
32 // $Authors: Marc Sturm, Chris Bielow, Clemens Groepl $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
37 #include <OpenMS/KERNEL/Feature.h>
40 
43 
44 #include <OpenMS/CONCEPT/Types.h>
48 #include <OpenMS/OpenMSConfig.h>
49 
50 #include <algorithm>
51 #include <exception>
52 #include <vector>
53 
54 namespace OpenMS
55 {
56  class ProteinIdentification;
57  class PeptideIdentification;
58  class DataProcessing;
59 
62  struct OPENMS_DLLAPI AnnotationStatistics
63  {
64  std::vector<Size> states;
65 
67 
69 
70  AnnotationStatistics& operator=(const AnnotationStatistics& rhs);
71 
72  bool operator==(const AnnotationStatistics& rhs) const;
73 
75  };
76 
77 
79  OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const AnnotationStatistics& ann);
80 
95  class FeatureMap :
96  private std::vector<Feature>,
97  public MetaInfoInterface,
98  public RangeManager<2>,
99  public DocumentIdentifier,
100  public UniqueIdInterface,
101  public UniqueIdIndexer<FeatureMap>
102  {
103 public:
107  typedef std::vector<Feature> privvec;
108 
109  // types
110  using privvec::value_type;
111  using privvec::iterator;
112  using privvec::const_iterator;
113  using privvec::size_type;
114  using privvec::pointer; // ConstRefVector
115  using privvec::reference; // ConstRefVector
116  using privvec::const_reference; // ConstRefVector
117  using privvec::difference_type; // ConstRefVector
118 
119  // functions
120  using privvec::begin;
121  using privvec::end;
122 
123  using privvec::size;
124  using privvec::resize; // ConsensusMap, FeatureXMLFile
125  using privvec::empty;
126  using privvec::reserve;
127  using privvec::operator[];
128  using privvec::at; // UniqueIdIndexer
129  using privvec::back; // FeatureXMLFile
130 
131  using privvec::push_back;
132  using privvec::pop_back; // FeatureXMLFile
133  using privvec::erase; // source/VISUAL/Spectrum2DCanvas.cpp 2871, FeatureMap_test 599
134 
138  typedef std::vector<FeatureType> Base;
139  typedef Base::iterator Iterator;
140  typedef Base::const_iterator ConstIterator;
141  typedef Base::reverse_iterator ReverseIterator;
142  typedef Base::const_reverse_iterator ConstReverseIterator;
144  typedef const FeatureType& ConstReference;
146 
151 
153  OPENMS_DLLAPI FeatureMap();
154 
156  OPENMS_DLLAPI FeatureMap(const FeatureMap& source);
157 
159  OPENMS_DLLAPI ~FeatureMap() override;
161 
163  OPENMS_DLLAPI FeatureMap& operator=(const FeatureMap& rhs);
164 
166  OPENMS_DLLAPI bool operator==(const FeatureMap& rhs) const;
167 
169  OPENMS_DLLAPI bool operator!=(const FeatureMap& rhs) const;
170 
176  OPENMS_DLLAPI FeatureMap operator+(const FeatureMap& rhs) const;
177 
190  OPENMS_DLLAPI FeatureMap& operator+=(const FeatureMap& rhs);
191 
198  OPENMS_DLLAPI void sortByIntensity(bool reverse = false);
200 
202  OPENMS_DLLAPI void sortByPosition();
203 
205  OPENMS_DLLAPI void sortByRT();
206 
208  OPENMS_DLLAPI void sortByMZ();
209 
211  OPENMS_DLLAPI void sortByOverallQuality(bool reverse = false);
212 
214 
215  // Docu in base class
216  OPENMS_DLLAPI void updateRanges() override;
217 
219  OPENMS_DLLAPI void swapFeaturesOnly(FeatureMap& from);
220 
221  OPENMS_DLLAPI void swap(FeatureMap& from);
222 
224  OPENMS_DLLAPI const std::vector<ProteinIdentification>& getProteinIdentifications() const;
225 
227  OPENMS_DLLAPI std::vector<ProteinIdentification>& getProteinIdentifications();
228 
230  OPENMS_DLLAPI void setProteinIdentifications(const std::vector<ProteinIdentification>& protein_identifications);
231 
233  OPENMS_DLLAPI const std::vector<PeptideIdentification>& getUnassignedPeptideIdentifications() const;
234 
236  OPENMS_DLLAPI std::vector<PeptideIdentification>& getUnassignedPeptideIdentifications();
237 
239  OPENMS_DLLAPI void setUnassignedPeptideIdentifications(const std::vector<PeptideIdentification>& unassigned_peptide_identifications);
240 
242  OPENMS_DLLAPI const std::vector<DataProcessing>& getDataProcessing() const;
243 
245  OPENMS_DLLAPI std::vector<DataProcessing>& getDataProcessing();
246 
248  OPENMS_DLLAPI void setDataProcessing(const std::vector<DataProcessing>& processing_method);
249 
251  OPENMS_DLLAPI void setPrimaryMSRunPath(const StringList& s);
252 
255  OPENMS_DLLAPI void setPrimaryMSRunPath(const StringList& s, MSExperiment & e);
256 
258  OPENMS_DLLAPI void getPrimaryMSRunPath(StringList& toFill) const;
259 
265  OPENMS_DLLAPI void clear(bool clear_meta_data = true);
266 
279  template <typename Type>
280  Size applyMemberFunction(Size (Type::* member_function)())
281  {
282  Size assignments = 0;
283  assignments += ((*this).*member_function)();
284  for (Iterator iter = this->begin(); iter != this->end(); ++iter)
285  {
286  assignments += iter->applyMemberFunction(member_function);
287  }
288  return assignments;
289  }
290 
292  template <typename Type>
293  Size applyMemberFunction(Size (Type::* member_function)() const) const
294  {
295  Size assignments = 0;
296  assignments += ((*this).*member_function)();
297  for (ConstIterator iter = this->begin(); iter != this->end(); ++iter)
298  {
299  assignments += iter->applyMemberFunction(member_function);
300  }
301  return assignments;
302  }
303 
304  OPENMS_DLLAPI AnnotationStatistics getAnnotationStatistics() const;
305 
306 protected:
307 
309  std::vector<ProteinIdentification> protein_identifications_;
310 
312  std::vector<PeptideIdentification> unassigned_peptide_identifications_;
313 
315  std::vector<DataProcessing> data_processing_;
316  };
317 
318  OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const FeatureMap& map);
319 
320 } // namespace OpenMS
321 
DefaultParamHandler.h
OpenMS::FeatureGroupingAlgorithmLabeled
A map feature grouping algorithm for labeling techniques with two labels.
Definition: FeatureGroupingAlgorithmLabeled.h:50
ConsensusXMLFile.h
OpenMS::FeatureMap::RangeManagerType
RangeManager< 2 > RangeManagerType
Definition: FeatureMap.h:137
OpenMS::FeatureGroupingAlgorithm
Base class for all feature grouping algorithms.
Definition: FeatureGroupingAlgorithm.h:49
UniqueIdInterface.h
OpenMS::TOPPBase
Base class for TOPP applications.
Definition: TOPPBase.h:144
OpenMS::ConsensusMap::applyMemberFunction
Size applyMemberFunction(Size(Type::*member_function)())
Applies a member function of Type to the container itself and all consensus features....
Definition: ConsensusMap.h:337
OpenMS::ExperimentalDesign
Representation of the Experimental Design in OpenMS. Instances can be loaded via the ExperimentalDesi...
Definition: ExperimentalDesign.h:85
OpenMS::Param::copy
Param copy(const String &prefix, bool remove_prefix=false) const
Returns a new Param object containing all entries that start with prefix.
OpenMS::ExperimentalDesignFile::load
static ExperimentalDesign load(const String &tsv_file, bool require_spectra_files)
Loads an experimental design from a tabular separated file.
FileHandler.h
FileTypes.h
OpenMS::FeatureMap::operator+=
FeatureMap & operator+=(const FeatureMap &rhs)
Add one feature map to another.
OpenMS::FeatureGroupingAlgorithmQT
A feature grouping algorithm for unlabeled data.
Definition: FeatureGroupingAlgorithmQT.h:52
ConversionHelper.h
OpenMS::UInt64
OPENMS_UINT64_TYPE UInt64
Unsigned integer type (64bit)
Definition: Types.h:77
OpenMS::FeatureMap::swapFeaturesOnly
void swapFeaturesOnly(FeatureMap &from)
Swaps the feature content (plus its range information) of this map with the content of from.
OpenMS::FeatureFileOptions
Options for loading files containing features.
Definition: FeatureFileOptions.h:46
FeatureGroupingAlgorithmKD.h
OpenMS::ConsensusXMLFile::store
void store(const String &filename, const ConsensusMap &consensus_map)
Stores a consensus map to file.
OpenMS::BaseFeature::AnnotationState
AnnotationState
state of identification, use getIDState() to query it
Definition: BaseFeature.h:70
OpenMS::FeatureMap::protein_identifications_
std::vector< ProteinIdentification > protein_identifications_
protein identifications
Definition: FeatureMap.h:309
Types.h
ExperimentalDesignFile.h
OpenMS::ConsensusMap::updateRanges
void updateRanges() override
Updates minimum and maximum position/intensity.
DocumentIdentifier.h
OpenMS::FeatureMap::Iterator
Base::iterator Iterator
Definition: FeatureMap.h:139
OpenMS::FeatureMap::sortByIntensity
void sortByIntensity(bool reverse=false)
Sorts the peaks according to ascending intensity.
OpenMS::ExperimentalDesign::getFractionToMSFilesMapping
std::map< unsigned int, std::vector< String > > getFractionToMSFilesMapping() const
return fraction index to file paths (ordered by fraction_group)
OpenMS::String
A more convenient string class.
Definition: String.h:58
Feature.h
OpenMS::MSExperiment
In-Memory representation of a mass spectrometry experiment.
Definition: MSExperiment.h:77
OpenMS::FileTypes::CONSENSUSXML
OpenMS consensus map format (.consensusXML)
Definition: FileTypes.h:67
OpenMS::UniqueIdInterface
A base class defining a common interface for all classes having a unique id.
Definition: UniqueIdInterface.h:51
OpenMS::Size
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
FeatureGroupingAlgorithmUnlabeled.h
FeatureXMLFile.h
OpenMS::FeatureMap::FeatureType
Feature FeatureType
Definition: FeatureMap.h:136
FeatureGroupingAlgorithmLabeled.h
OpenMS::FeatureMap::getPrimaryMSRunPath
void getPrimaryMSRunPath(StringList &toFill) const
get the file path to the first MS run
OpenMS::FeatureMap::setPrimaryMSRunPath
void setPrimaryMSRunPath(const StringList &s)
set the file path to the primary MS run (usually the mzML file obtained after data conversion from ra...
OpenMS::FeatureMap::sortByMZ
void sortByMZ()
Sort features by m/z position.
OpenMS::FeatureMap::setUnassignedPeptideIdentifications
void setUnassignedPeptideIdentifications(const std::vector< PeptideIdentification > &unassigned_peptide_identifications)
sets the unassigned peptide identifications
OPENMS_LOG_WARN
#define OPENMS_LOG_WARN
Macro if a warning, a piece of information which should be read by the user, should be logged.
Definition: LogStream.h:460
OpenMS::FeatureMap::applyMemberFunction
Size applyMemberFunction(Size(Type::*member_function)() const) const
The "const" variant.
Definition: FeatureMap.h:293
ListUtils.h
OpenMS::FeatureMap::data_processing_
std::vector< DataProcessing > data_processing_
applied data processing
Definition: FeatureMap.h:315
OpenMS::FeatureMap::getAnnotationStatistics
AnnotationStatistics getAnnotationStatistics() const
FeatureLinkerBase.cpp
OpenMS::ConsensusMap::sortPeptideIdentificationsByMapIndex
void sortPeptideIdentificationsByMapIndex()
Sorts PeptideIdentifications of consensus features with respect to their map index.
OpenMS
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
OpenMS::FeatureMap::updateRanges
void updateRanges() override
Updates minimum and maximum position/intensity.
OpenMS::RangeManager
Handles the management of a position and intensity range.
Definition: RangeManager.h:47
Exception.h
OpenMS::FeatureMap::~FeatureMap
~FeatureMap() override
Destructor.
OpenMS::FileTypes::FEATUREXML
OpenMS feature file (.featureXML)
Definition: FileTypes.h:65
OpenMS::ProgressLogger
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:54
ProgressLogger.h
OpenMS::FeatureMap::swap
void swap(FeatureMap &from)
OpenMS::UniqueIdIndexer
A base class for random access containers for classes derived from UniqueIdInterface that adds functi...
Definition: UniqueIdIndexer.h:63
OpenMS::FeatureGroupingAlgorithm::transferSubelements
void transferSubelements(const std::vector< ConsensusMap > &maps, ConsensusMap &out) const
Transfers subelements (grouped features) from input consensus maps to the result consensus map.
OpenMS::AnnotationStatistics
Definition: FeatureMap.h:62
OpenMS::MetaInfoInterface
Interface for classes that can store arbitrary meta information (Type-Name-Value tuples).
Definition: MetaInfoInterface.h:60
OpenMS::DocumentIdentifier
Manage source document information.
Definition: DocumentIdentifier.h:55
OpenMS::ConsensusMap::getProteinIdentifications
const std::vector< ProteinIdentification > & getProteinIdentifications() const
non-mutable access to the protein identifications
OpenMS::FeatureMap::setDataProcessing
void setDataProcessing(const std::vector< DataProcessing > &processing_method)
sets the description of the applied data processing
OpenMS::FeatureXMLFile::loadSize
Size loadSize(const String &filename)
OpenMS::ConsensusMap::setColumnHeaders
void setColumnHeaders(const ColumnHeaders &column_description)
Mutable access to the file descriptions.
BaseFeature.h
OpenMS::FeatureMap::ConstReverseIterator
Base::const_reverse_iterator ConstReverseIterator
Definition: FeatureMap.h:142
OpenMS::FeatureXMLFile::load
void load(const String &filename, FeatureMap &feature_map)
loads the file with name filename into map and calls updateRanges().
UniqueIdIndexer.h
OpenMS::FileTypes::Type
Type
Actual file types enum.
Definition: FileTypes.h:58
OpenMS::FeatureMap::ReverseIterator
Base::reverse_iterator ReverseIterator
Definition: FeatureMap.h:141
OpenMS::FileHandler::getType
static FileTypes::Type getType(const String &filename)
Tries to determine the file type (by name or content)
OpenMS::UniqueIdInterface::setUniqueId
Size setUniqueId()
Assigns a new, valid unique id. Always returns 1.
Definition: UniqueIdInterface.h:146
OpenMS::ConsensusMap::getUnassignedPeptideIdentifications
const std::vector< PeptideIdentification > & getUnassignedPeptideIdentifications() const
non-mutable access to the unassigned peptide identifications
OpenMS::FeatureGroupingAlgorithmUnlabeled::setReference
void setReference(int map_id, const MapType &map)
Sets the reference map for the algorithm.
Definition: FeatureGroupingAlgorithmUnlabeled.h:79
OpenMS::DefaultParamHandler::setParameters
void setParameters(const Param &param)
Sets the parameters.
OpenMS::FeatureMap::applyMemberFunction
Size applyMemberFunction(Size(Type::*member_function)())
Applies a member function of Type to the container itself and all features (including subordinates)....
Definition: FeatureMap.h:280
OpenMS::DefaultParamHandler::getParameters
const Param & getParameters() const
Non-mutable access to the parameters.
OpenMS::DataProcessing::FEATURE_GROUPING
Feature grouping
Definition: DataProcessing.h:73
RangeManager.h
OpenMS::FeatureMap::Base
std::vector< FeatureType > Base
Definition: FeatureMap.h:138
OpenMS::operator<<
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
OpenMS::ConsensusMap
A container for consensus elements.
Definition: ConsensusMap.h:79
OpenMS::FeatureMap::getUnassignedPeptideIdentifications
const std::vector< PeptideIdentification > & getUnassignedPeptideIdentifications() const
non-mutable access to the unassigned peptide identifications
OpenMS::StringList
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:70
OpenMS::FeatureMap::privvec
std::vector< Feature > privvec
Definition: FeatureMap.h:107
OpenMS::ExperimentalDesign::getNumberOfFractions
unsigned getNumberOfFractions() const
FeatureGroupingAlgorithm.h
OpenMS::FeatureMap::ConstReference
const typedef FeatureType & ConstReference
Definition: FeatureMap.h:144
OpenMS::FeatureMap::setProteinIdentifications
void setProteinIdentifications(const std::vector< ProteinIdentification > &protein_identifications)
sets the protein identifications
main
int main(int argc, const char **argv)
Definition: INIFileEditor.cpp:73
ExperimentalDesign.h
OpenMS::FeatureGroupingAlgorithm::group
virtual void group(const std::vector< FeatureMap > &maps, ConsensusMap &out)=0
Applies the algorithm. The features in the input maps are grouped and the output is written to the co...
OpenMS::FeatureMap::Reference
FeatureType & Reference
Definition: FeatureMap.h:143
MSExperiment.h
OpenMS::ConsensusMap::getColumnHeaders
const ColumnHeaders & getColumnHeaders() const
Non-mutable access to the file descriptions.
KDTree::operator==
bool operator==(_Iterator< _Val, _Ref, _Ptr > const &, _Iterator< _Val, _Ref, _Ptr > const &)
Definition: KDTree.h:806
OpenMS::FeatureFileOptions::setLoadSubordinates
void setLoadSubordinates(bool sub)
OpenMS::FeatureMap
A container for features.
Definition: FeatureMap.h:95
OpenMS::PeptideIdentification
Represents the peptide hits for a spectrum.
Definition: PeptideIdentification.h:62
OpenMS::Feature
An LC-MS feature.
Definition: Feature.h:70
FeatureGroupingAlgorithmQT.h
OpenMS::FeatureMap::sortByRT
void sortByRT()
Sort features by RT position.
OpenMS::FeatureXMLFile
This class provides Input/Output functionality for feature maps.
Definition: FeatureXMLFile.h:68
MetaInfoInterface.h
OpenMS::ConsensusMap::sortByMZ
void sortByMZ()
Sorts the peaks to m/z position.
OpenMS::FeatureMap::FeatureMap
FeatureMap()
Default constructor.
OpenMS::FeatureMap::unassigned_peptide_identifications_
std::vector< PeptideIdentification > unassigned_peptide_identifications_
peptide identifications not matched to a specific feature
Definition: FeatureMap.h:312
OpenMS::FeatureMap::sortByOverallQuality
void sortByOverallQuality(bool reverse=false)
Sort features by ascending overall quality.
OpenMS::Param
Management and storage of parameters / INI files.
Definition: Param.h:73
OpenMS::FeatureMap::operator+
FeatureMap operator+(const FeatureMap &rhs) const
Joins two feature maps.
OpenMS::FeatureMap::operator==
bool operator==(const FeatureMap &rhs) const
Equality operator.
OPENMS_LOG_INFO
#define OPENMS_LOG_INFO
Macro if a information, e.g. a status should be reported.
Definition: LogStream.h:465
OpenMS::FeatureMap::ConstIterator
Base::const_iterator ConstIterator
Definition: FeatureMap.h:140
OpenMS::FeatureFileOptions::setLoadConvexHull
void setLoadConvexHull(bool convex)
OpenMS::FeatureMap::operator!=
bool operator!=(const FeatureMap &rhs) const
Equality operator.
OpenMS::FeatureGroupingAlgorithmUnlabeled::addToGroup
void addToGroup(int map_id, const FeatureMap &feature_map)
Adds one map to the group.
OpenMS::FeatureGroupingAlgorithmKD
A feature grouping algorithm for unlabeled data.
Definition: FeatureGroupingAlgorithmKD.h:178
OpenMS::FeatureMap::getDataProcessing
const std::vector< DataProcessing > & getDataProcessing() const
returns a const reference to the description of the applied data processing
OpenMS::FeatureMap::sortByPosition
void sortByPosition()
Sort features by position. Lexicographical comparison (first RT then m/z) is done.
OpenMS::UniqueIdInterface::getUniqueId
UInt64 getUniqueId() const
Non-mutable access to unique id - returns the unique id.
Definition: UniqueIdInterface.h:105
OpenMS::FeatureMap::operator=
FeatureMap & operator=(const FeatureMap &rhs)
Assignment operator.
OpenMS::FeatureXMLFile::getOptions
FeatureFileOptions & getOptions()
Mutable access to the options for loading/storing.
TOPPBase.h
OpenMS::ConsensusMap::setPrimaryMSRunPath
void setPrimaryMSRunPath(const StringList &s)
set the file paths to the primary MS run (stored in ColumnHeaders)
OpenMS::FeatureMap::clear
void clear(bool clear_meta_data=true)
Clears all data and meta data.
OpenMS::ExperimentalDesign::sameNrOfMSFilesPerFraction
bool sameNrOfMSFilesPerFraction() const
OpenMS::FeatureMap::getProteinIdentifications
const std::vector< ProteinIdentification > & getProteinIdentifications() const
non-mutable access to the protein identifications
OpenMS::ConsensusXMLFile
This class provides Input functionality for ConsensusMaps and Output functionality for alignments and...
Definition: ConsensusXMLFile.h:61
OpenMS::FeatureGroupingAlgorithmUnlabeled
A map feature grouping algorithm for unlabeled data.
Definition: FeatureGroupingAlgorithmUnlabeled.h:61
OpenMS::FeatureGroupingAlgorithmUnlabeled::getResultMap
ConsensusMap & getResultMap()
Returns the computed consensus map (after calling addToGroup with all maps)
Definition: FeatureGroupingAlgorithmUnlabeled.h:87
OpenMS::ProgressLogger::CMD
Command line progress.
Definition: ProgressLogger.h:72
OpenMS::AnnotationStatistics::states
std::vector< Size > states
count each state, indexing by BaseFeature::AnnotationState
Definition: FeatureMap.h:64