35 #ifndef OPENMS_KERNEL_MSCHROMATOGRAM_H
36 #define OPENMS_KERNEL_MSCHROMATOGRAM_H
52 template <
typename PeakT = ChromatogramPeak>
54 public std::vector<PeakT>,
65 public std::vector<Real>
71 public std::vector<String>
77 public std::vector<Int>
82 public std::binary_function<MSChromatogram, MSChromatogram, bool>
109 typedef typename ContainerType::iterator
Iterator;
151 if (&source ==
this)
return *
this;
153 ContainerType::operator=(source);
170 return std::operator==(*
this, rhs) &&
287 std::vector<std::pair<typename PeakType::IntensityType, Size> > sorted_indices;
288 sorted_indices.reserve(ContainerType::size());
289 for (
Size i = 0; i < ContainerType::size(); ++i)
291 sorted_indices.push_back(std::make_pair(ContainerType::operator[](i).getIntensity(), i));
305 for (
Size i = 0; i < sorted_indices.size(); ++i)
307 tmp.push_back(*(ContainerType::begin() + (sorted_indices[i].second)));
309 ContainerType::swap(tmp);
313 std::vector<Real> mda_tmp;
323 std::vector<String> mda_tmp;
333 std::vector<Int> mda_tmp;
358 std::vector<std::pair<typename PeakType::PositionType, Size> > sorted_indices;
359 sorted_indices.reserve(ContainerType::size());
360 for (
Size i = 0; i < ContainerType::size(); ++i)
362 sorted_indices.push_back(std::make_pair(ContainerType::operator[](i).getPosition(), i));
368 for (
Size i = 0; i < sorted_indices.size(); ++i)
370 tmp.push_back(*(ContainerType::begin() + (sorted_indices[i].second)));
372 ContainerType::swap(tmp);
376 std::vector<Real> mda_tmp;
386 std::vector<String> mda_tmp;
396 std::vector<Int> mda_tmp;
409 for (
Size i = 1; i < this->size(); ++i)
411 if (this->
operator[](i - 1).getRT() > this->operator[](i).getRT())
return false;
433 if (ContainerType::size() == 0)
throw Exception::Precondition(__FILE__, __LINE__, __PRETTY_FUNCTION__,
"There must be at least one peak to determine the nearest peak!");
438 if (it == ContainerType::begin())
return 0;
440 if (it == ContainerType::end())
return ContainerType::size() - 1;
445 if (std::fabs(it->getRT() - rt) < std::fabs(it2->getRT() - rt))
447 return Size(it - ContainerType::begin());
451 return Size(it2 - ContainerType::begin());
566 ContainerType::clear();
601 template <
typename PeakT>
602 std::ostream & operator<<(std::ostream & os, const MSChromatogram<PeakT> & spec)
604 os <<
"-- MSSPECTRUM BEGIN --" << std::endl;
607 os << static_cast<const ChromatogramSettings &>(spec);
610 os << static_cast<const typename MSChromatogram<PeakT>::ContainerType &>(spec);
612 os <<
"-- MSSPECTRUM END --" << std::endl;
619 #endif // OPENMS_KERNEL_MSCHROMATOGRAM_H
Iterator RTBegin(CoordinateType rt)
Binary search for peak range begin.
Definition: MSChromatogram.h:461
Iterator RTEnd(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range end (returns the past-the-end iterator)
Definition: MSChromatogram.h:500
FloatDataArrays & getFloatDataArrays()
Returns a mutable reference to the float meta data arrays.
Definition: MSChromatogram.h:233
FloatDataArrays float_data_arrays_
Float data arrays.
Definition: MSChromatogram.h:591
A more convenient string class.
Definition: String.h:56
const String & getName() const
Definition: MSChromatogram.h:194
bool operator==(const MSChromatogram &rhs) const
Equality operator.
Definition: MSChromatogram.h:167
Size findNearest(CoordinateType rt) const
Binary search for the peak nearest to a specific RT.
Definition: MSChromatogram.h:430
std::vector< IntegerDataArray > IntegerDataArrays
Integer data array vector type.
Definition: MSChromatogram.h:104
The representation of a chromatogram.
Definition: MSChromatogram.h:53
ContainerType::iterator Iterator
Mutable iterator.
Definition: MSChromatogram.h:110
std::vector< PeakType > ContainerType
Chromatogram base type.
Definition: MSChromatogram.h:98
ConstIterator RTEnd(CoordinateType rt) const
Binary search for peak range end (returns the past-the-end iterator)
Definition: MSChromatogram.h:539
Iterator RTBegin(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range begin.
Definition: MSChromatogram.h:474
bool operator()(const MSChromatogram &a, const MSChromatogram &b) const
Definition: MSChromatogram.h:84
Float data array class.
Definition: MSChromatogram.h:75
const StringDataArrays & getStringDataArrays() const
Returns a const reference to the string meta data arrays.
Definition: MSChromatogram.h:239
ReverseComparator< Cmp > reverseComparator(Cmp const &cmp)
Make-function to create a ReverseComparator from another comparator without the need to specify the t...
Definition: ComparatorUtils.h:261
ConstIterator RTBegin(CoordinateType rt) const
Binary search for peak range begin.
Definition: MSChromatogram.h:513
PeakType::CoordinateType CoordinateType
Coordinate (RT) type.
Definition: MSChromatogram.h:96
bool operator==(const RangeManager &rhs) const
Equality operator.
Definition: RangeManager.h:88
Precondition failed exception.
Definition: Exception.h:167
ContainerType::const_iterator ConstIterator
Non-mutable iterator.
Definition: MSChromatogram.h:112
void setName(const String &name)
Sets the name.
Definition: MSChromatogram.h:200
Iterator RTEnd(CoordinateType rt)
Binary search for peak range end (returns the past-the-end iterator)
Definition: MSChromatogram.h:487
virtual void updateRanges()
Updates minimum and maximum position/intensity.
Definition: MSChromatogram.h:185
StringDataArrays & getStringDataArrays()
Returns a mutable reference to the string meta data arrays.
Definition: MSChromatogram.h:245
MSChromatogram()
Constructor.
Definition: MSChromatogram.h:121
Comparator by position. Lexicographical comparison (first RT then m/z) is done.
Definition: Peak2D.h:324
ConstIterator RTBegin(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range begin.
Definition: MSChromatogram.h:526
void sortByIntensity(bool reverse=false)
Lexicographically sorts the peaks by their intensity.
Definition: MSChromatogram.h:271
MSChromatogram(const MSChromatogram &source)
Copy constructor.
Definition: MSChromatogram.h:133
virtual ~MSChromatogram()
Destructor.
Definition: MSChromatogram.h:145
std::vector< StringDataArray > StringDataArrays
String data array vector type.
Definition: MSChromatogram.h:102
Float data array class.
Definition: MSChromatogram.h:63
MSChromatogram & operator=(const MSChromatogram &source)
Assignment operator.
Definition: MSChromatogram.h:149
DoubleReal getMZ() const
returns the target m/z
Comparator for the retention time.
Definition: MSChromatogram.h:81
Base class for all persistent objects.
Definition: PersistentObject.h:52
RangeManager & operator=(const RangeManager &rhs)
Assignment operator.
Definition: RangeManager.h:77
PersistentObject & operator=(const PersistentObject &rhs)
Assignment operator.
void clearRanges()
Resets the ranges.
Definition: RangeManager.h:140
DoubleReal getMZ() const
returns the mz of the product entry, makes sense especially for MRM scans
Definition: MSChromatogram.h:208
std::vector< FloatDataArray > FloatDataArrays
Float data array vector type.
Definition: MSChromatogram.h:100
const Product & getProduct() const
returns a const reference to the products
PeakT PeakType
Definition: MSChromatogram.h:94
void clearId(bool deep=true)
Clears the persistence id.
Representation of chromatogram settings, e.g. SRM/MRM chromatograms.
Definition: ChromatogramSettings.h:59
const IntegerDataArrays & getIntegerDataArrays() const
Returns a const reference to the integer meta data arrays.
Definition: MSChromatogram.h:251
StringDataArrays string_data_arrays_
String data arrays.
Definition: MSChromatogram.h:594
ContainerType::reverse_iterator ReverseIterator
Mutable reverse iterator.
Definition: MSChromatogram.h:114
bool operator!=(const MSChromatogram &rhs) const
Equality operator.
Definition: MSChromatogram.h:179
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:144
void sortByPosition()
Lexicographically sorts the peaks by their position.
Definition: MSChromatogram.h:349
IntegerDataArrays integer_data_arrays_
Intager data arrays.
Definition: MSChromatogram.h:597
ConstIterator RTEnd(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range end (returns the past-the-end iterator)
Definition: MSChromatogram.h:552
ContainerType::const_reverse_iterator ConstReverseIterator
Non-mutable reverse iterator.
Definition: MSChromatogram.h:116
String name_
Name.
Definition: MSChromatogram.h:588
bool isSorted() const
Checks if all peaks are sorted with respect to ascending RT.
Definition: MSChromatogram.h:407
void updateRanges_(const PeakIteratorType &begin, const PeakIteratorType &end)
Updates the range using data points in the iterator range.
Definition: RangeManager.h:155
const FloatDataArrays & getFloatDataArrays() const
Definition: MSChromatogram.h:227
virtual void clearChildIds_()
Clears the persistence id of all sub-objects.
Definition: MSChromatogram.h:584
Handles the managment of a position and intensity range.
Definition: RangeManager.h:48
Class for comparison of std::pair using first ONLY e.g. for use with std::sort.
Definition: ComparatorUtils.h:326
void clear(bool clear_meta_data)
Clears all data and meta data.
Definition: MSChromatogram.h:564
ChromatogramSettings & operator=(const ChromatogramSettings &source)
IntegerDataArrays & getIntegerDataArrays()
Returns a mutable reference to the integer meta data arrays.
Definition: MSChromatogram.h:257
String data array class.
Definition: MSChromatogram.h:69
bool operator==(const ChromatogramSettings &rhs) const
Equality operator.
ChromatogramSettings()
Constructor.