OpenMS
MRMTransitionGroupPicker Class Reference

The MRMTransitionGroupPicker finds peaks in chromatograms that belong to the same precursors. More...

#include <OpenMS/ANALYSIS/OPENSWATH/MRMTransitionGroupPicker.h>

Inheritance diagram for MRMTransitionGroupPicker:
[legend]
Collaboration diagram for MRMTransitionGroupPicker:
[legend]

Public Member Functions

 MRMTransitionGroupPicker ()
 Constructor. More...
 
 ~MRMTransitionGroupPicker () override
 Destructor. More...
 
template<typename SpectrumT , typename TransitionT >
void pickTransitionGroup (MRMTransitionGroup< SpectrumT, TransitionT > &transition_group)
 Pick a group of chromatograms belonging to the same peptide. More...
 
template<typename SpectrumT , typename TransitionT >
MRMFeature createMRMFeature (const MRMTransitionGroup< SpectrumT, TransitionT > &transition_group, std::vector< SpectrumT > &picked_chroms, const std::vector< SpectrumT > &smoothed_chroms, const int chr_idx, const int peak_idx)
 Create feature from a vector of chromatograms and a specified peak. More...
 
template<typename SpectrumT >
void pickApex (std::vector< SpectrumT > &picked_chroms, const double best_left, const double best_right, const double peak_apex, double &min_left, double &max_right, std::vector< double > &left_edges, std::vector< double > &right_edges)
 Apex-based peak picking. More...
 
template<typename SpectrumT , typename TransitionT >
void pickFragmentChromatograms (const MRMTransitionGroup< SpectrumT, TransitionT > &transition_group, const std::vector< SpectrumT > &picked_chroms, MRMFeature &mrmFeature, const std::vector< SpectrumT > &smoothed_chroms, const double best_left, const double best_right, const bool use_consensus_, double &total_intensity, double &total_xic, double &total_mi, double &total_peak_apices, const SpectrumT &master_peak_container, const std::vector< double > &left_edges, const std::vector< double > &right_edges, const int chr_idx, const int peak_idx)
 
template<typename SpectrumT , typename TransitionT >
void pickPrecursorChromatograms (const MRMTransitionGroup< SpectrumT, TransitionT > &transition_group, const std::vector< SpectrumT > &picked_chroms, MRMFeature &mrmFeature, const std::vector< SpectrumT > &smoothed_chroms, const double best_left, const double best_right, const bool use_consensus_, double &total_intensity, const SpectrumT &master_peak_container, const std::vector< double > &left_edges, const std::vector< double > &right_edges, const int chr_idx, const int peak_idx)
 
template<typename SpectrumT >
void remove_overlapping_features (std::vector< SpectrumT > &picked_chroms, double best_left, double best_right)
 Remove overlapping features. More...
 
void findLargestPeak (const std::vector< MSChromatogram > &picked_chroms, int &chr_idx, int &peak_idx)
 Find largest peak in a vector of chromatograms. More...
 
void findWidestPeakIndices (const std::vector< MSChromatogram > &picked_chroms, Int &chrom_idx, Int &point_idx) const
 Given a vector of chromatograms, find the indices of the chromatogram containing the widest peak and of the position of highest intensity. More...
 
- Public Member Functions inherited from DefaultParamHandler
 DefaultParamHandler (const String &name)
 Constructor with name that is displayed in error messages. More...
 
 DefaultParamHandler (const DefaultParamHandler &rhs)
 Copy constructor. More...
 
virtual ~DefaultParamHandler ()
 Destructor. More...
 
DefaultParamHandleroperator= (const DefaultParamHandler &rhs)
 Assignment operator. More...
 
virtual bool operator== (const DefaultParamHandler &rhs) const
 Equality operator. More...
 
void setParameters (const Param &param)
 Sets the parameters. More...
 
const ParamgetParameters () const
 Non-mutable access to the parameters. More...
 
const ParamgetDefaults () const
 Non-mutable access to the default parameters. More...
 
const StringgetName () const
 Non-mutable access to the name. More...
 
void setName (const String &name)
 Mutable access to the name. More...
 
const std::vector< String > & getSubsections () const
 Non-mutable access to the registered subsections. More...
 

Protected Member Functions

void updateMembers_ () override
 Synchronize members with param class. More...
 
MRMTransitionGroupPickeroperator= (const MRMTransitionGroupPicker &rhs)
 Assignment operator is protected for algorithm. More...
 
template<typename SpectrumT , typename TransitionT >
const SpectrumT & selectChromHelper_ (const MRMTransitionGroup< SpectrumT, TransitionT > &transition_group, const String &native_id)
 Select matching precursor or fragment ion chromatogram. More...
 
template<typename SpectrumT , typename TransitionT >
double computeQuality_ (const MRMTransitionGroup< SpectrumT, TransitionT > &transition_group, const std::vector< SpectrumT > &picked_chroms, const int chr_idx, const double best_left, const double best_right, String &outlier)
 Compute transition group quality (higher score is better) More...
 
template<typename SpectrumT >
void recalculatePeakBorders_ (const std::vector< SpectrumT > &picked_chroms, double &best_left, double &best_right, double max_z)
 Recalculate the borders of the peak. More...
 
- Protected Member Functions inherited from DefaultParamHandler
void defaultsToParam_ ()
 Updates the parameters after the defaults have been set in the constructor. More...
 

Resampling methods

String peak_integration_
 
String background_subtraction_
 
bool recalculate_peaks_
 
bool use_precursors_
 
bool use_consensus_
 
bool compute_peak_quality_
 
bool compute_peak_shape_metrics_
 
bool compute_total_mi_
 
double min_qual_
 
int stop_after_feature_
 
double stop_after_intensity_ratio_
 
double min_peak_width_
 
double recalculate_peaks_max_z_
 
double resample_boundary_
 
String boundary_selection_method_
 Which method to use for selecting peaks' boundaries. More...
 
PeakPickerChromatogram picker_
 
PeakIntegrator pi_
 
template<typename PeakContainerT >
void prepareMasterContainer_ (const PeakContainerT &ref_chromatogram, PeakContainerT &master_peak_container, double left_boundary, double right_boundary)
 Create an empty master peak container that has the correct mz / RT values set. More...
 
template<typename PeakContainerT >
PeakContainerT resampleChromatogram_ (const PeakContainerT &chromatogram, const PeakContainerT &master_peak_container, double left_boundary, double right_boundary)
 Resample a container at the positions indicated by the master peak container. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from DefaultParamHandler
static void writeParametersToMetaValues (const Param &write_this, MetaInfoInterface &write_here, const String &key_prefix="")
 Writes all parameters to meta values. More...
 
- Protected Attributes inherited from DefaultParamHandler
Param param_
 Container for current parameters. More...
 
Param defaults_
 Container for default parameters. This member should be filled in the constructor of derived classes! More...
 
std::vector< Stringsubsections_
 Container for registered subsections. This member should be filled in the constructor of derived classes! More...
 
String error_name_
 Name that is displayed in error messages during the parameter checking. More...
 
bool check_defaults_
 If this member is set to false no checking if parameters in done;. More...
 
bool warn_empty_defaults_
 If this member is set to false no warning is emitted when defaults are empty;. More...
 

Detailed Description

The MRMTransitionGroupPicker finds peaks in chromatograms that belong to the same precursors.

Parameters of this class are:

NameTypeDefaultRestrictionsDescription
stop_after_feature int-1  Stop finding after feature (ordered by intensity; -1 means do not stop).
stop_after_intensity_ratio float1.0e-04  Stop after reaching intensity ratio
min_peak_width float1.0e-03  Minimal peak width (s), discard all peaks below this value (-1 means no action).
peak_integration stringoriginal original, smoothedCalculate the peak area and height either the smoothed or the raw chromatogram data.
background_subtraction stringnone none, original, exactRemove background from peak signal using estimated noise levels. The 'original' method is only provided for historical purposes, please use the 'exact' method and set parameters using the PeakIntegrator: settings. The same original or smoothed chromatogram specified by peak_integration will be used for background estimation.
recalculate_peaks stringfalse true, falseTries to get better peak picking by looking at peak consistency of all picked peaks. Tries to use the consensus (median) peak border if the variation within the picked peaks is too large.
use_precursors stringfalse true, falseUse precursor chromatogram for peak picking (note that this may lead to precursor signal driving the peak picking)
use_consensus stringtrue true, falseUse consensus peak boundaries when computing transition group picking (if false, compute independent peak boundaries for each transition)
recalculate_peaks_max_z float1.0  Determines the maximal Z-Score (difference measured in standard deviations) that is considered too large for peak boundaries. If the Z-Score is above this value, the median is used for peak boundaries (default value 1.0).
minimal_quality float-1.0e04  Only if compute_peak_quality is set, this parameter will not consider peaks below this quality threshold
resample_boundary float15.0  For computing peak quality, how many extra seconds should be sample left and right of the actual peak
compute_peak_quality stringfalse true, falseTries to compute a quality value for each peakgroup and detect outlier transitions. The resulting score is centered around zero and values above 0 are generally good and below -1 or -2 are usually bad.
compute_peak_shape_metrics stringfalse true, falseCalculates various peak shape metrics (e.g., tailing) that can be used for downstream QC/QA.
compute_total_mi stringfalse true, falseCompute mutual information metrics for individual transitions that can be used for OpenSWATH/IPF scoring.
boundary_selection_method stringlargest largest, widestMethod to use when selecting the best boundaries for peaks.
PeakPickerChromatogram:sgolay_frame_length int15  The number of subsequent data points used for smoothing.
This number has to be uneven. If it is not, 1 will be added.
PeakPickerChromatogram:sgolay_polynomial_order int3  Order of the polynomial that is fitted.
PeakPickerChromatogram:gauss_width float50.0  Gaussian width in seconds, estimated peak size.
PeakPickerChromatogram:use_gauss stringtrue false, trueUse Gaussian filter for smoothing (alternative is Savitzky-Golay filter)
PeakPickerChromatogram:peak_width float-1.0  Force a certain minimal peak_width on the data (e.g. extend the peak at least by this amount on both sides) in seconds. -1 turns this feature off.
PeakPickerChromatogram:signal_to_noise float1.0 min: 0.0Signal-to-noise threshold at which a peak will not be extended any more. Note that setting this too high (e.g. 1.0) can lead to peaks whose flanks are not fully captured.
PeakPickerChromatogram:sn_win_len float1000.0  Signal to noise window length.
PeakPickerChromatogram:sn_bin_count int30  Signal to noise bin count.
PeakPickerChromatogram:write_sn_log_messages stringfalse true, falseWrite out log messages of the signal-to-noise estimator in case of sparse windows or median in rightmost histogram bin
PeakPickerChromatogram:remove_overlapping_peaks stringfalse false, trueTry to remove overlapping peaks during peak picking
PeakPickerChromatogram:method stringcorrected legacy, corrected, crawdadWhich method to choose for chromatographic peak-picking (OpenSWATH legacy on raw data, corrected picking on smoothed chromatogram or Crawdad on smoothed chromatogram).
PeakIntegrator:integration_type stringintensity_sum intensity_sum, simpson, trapezoidThe integration technique to use in integratePeak() and estimateBackground() which uses either the summed intensity, integration by Simpson's rule or trapezoidal integration.
PeakIntegrator:baseline_type stringbase_to_base base_to_base, vertical_division, vertical_division_min, vertical_division_maxThe baseline type to use in estimateBackground() based on the peak boundaries. A rectangular baseline shape is computed based either on the minimal intensity of the peak boundaries, the maximum intensity or the average intensity (base_to_base).
PeakIntegrator:fit_EMG stringfalse false, trueFit the chromatogram/spectrum to the EMG peak model.

Note:
  • If a section name is documented, the documentation is displayed as tooltip.
  • Advanced parameter names are italic.

It is called through pickTransitionGroup which will accept an MRMTransitionGroup filled with n chromatograms and perform the following steps:

  • Step 1: find features (peaks) in individual chromatograms
  • Step 2: merge these features to consensus features that span multiple chromatograms

Step 1 is performed by smoothing the individual chromatogram and applying the PeakPickerHiRes.

Step 2 is performed by finding the largest peak overall and use this to create a feature, propagating this through all chromatograms.

Constructor & Destructor Documentation

◆ MRMTransitionGroupPicker()

Constructor.

◆ ~MRMTransitionGroupPicker()

~MRMTransitionGroupPicker ( )
override

Destructor.

Member Function Documentation

◆ computeQuality_()

double computeQuality_ ( const MRMTransitionGroup< SpectrumT, TransitionT > &  transition_group,
const std::vector< SpectrumT > &  picked_chroms,
const int  chr_idx,
const double  best_left,
const double  best_right,
String outlier 
)
inlineprotected

Compute transition group quality (higher score is better)

This is only based on the co-elution of the chromatograms and internal consistency without any library information.

For the final score (larger is better), consider these scores:

  • missing_peaks (the more peaks are missing, the worse)
  • multiple_peaks
  • mean of the shapes (1 is very good, 0 is bad)
  • mean of the coelutions (0 is good, 1 is ok, above 1 is pretty bad)

These scores are similar to the ones computed by MRMFeatureFinderScoring and a simple sum of these scores is returned.

left_borders / right_borders might not have the same length since we might have peaks missing!!

References PeakPickerChromatogram::IDX_LEFTBORDER, PeakPickerChromatogram::IDX_RIGHTBORDER, OpenMS::Constants::k, mean_and_stddev::mean(), OpenSwath::Scoring::normalizedCrossCorrelation(), OPENMS_LOG_DEBUG, and OpenSwath::Scoring::xcorrArrayGetMaxPeak().

◆ createMRMFeature()

◆ findLargestPeak()

void findLargestPeak ( const std::vector< MSChromatogram > &  picked_chroms,
int &  chr_idx,
int &  peak_idx 
)

Find largest peak in a vector of chromatograms.

◆ findWidestPeakIndices()

void findWidestPeakIndices ( const std::vector< MSChromatogram > &  picked_chroms,
Int chrom_idx,
Int point_idx 
) const

Given a vector of chromatograms, find the indices of the chromatogram containing the widest peak and of the position of highest intensity.

Parameters
[in]picked_chromsThe vector of chromatograms
[out]chrom_idxThe index of the chromatogram containing the widest peak
[out]point_idxThe index of the point with highest intensity

◆ operator=()

MRMTransitionGroupPicker& operator= ( const MRMTransitionGroupPicker rhs)
protected

Assignment operator is protected for algorithm.

◆ pickApex()

void pickApex ( std::vector< SpectrumT > &  picked_chroms,
const double  best_left,
const double  best_right,
const double  peak_apex,
double &  min_left,
double &  max_right,
std::vector< double > &  left_edges,
std::vector< double > &  right_edges 
)
inline

Apex-based peak picking.

Pick the peak with the closest apex to the consensus apex for each chromatogram. Use the closest peak for the current peak.

Note that we will only set the closest peak per chromatogram to zero, so if there are two peaks for some transitions, we will have to get to them later. If there is no peak, then we transfer transition boundaries from "master" peak.

References PeakIntegrator::PeakArea::apex_pos, PeakPickerChromatogram::IDX_LEFTBORDER, PeakPickerChromatogram::IDX_RIGHTBORDER, and OpenMS::Constants::k.

◆ pickFragmentChromatograms()

void pickFragmentChromatograms ( const MRMTransitionGroup< SpectrumT, TransitionT > &  transition_group,
const std::vector< SpectrumT > &  picked_chroms,
MRMFeature mrmFeature,
const std::vector< SpectrumT > &  smoothed_chroms,
const double  best_left,
const double  best_right,
const bool  use_consensus_,
double &  total_intensity,
double &  total_xic,
double &  total_mi,
double &  total_peak_apices,
const SpectrumT &  master_peak_container,
const std::vector< double > &  left_edges,
const std::vector< double > &  right_edges,
const int  chr_idx,
const int  peak_idx 
)
inline

◆ pickPrecursorChromatograms()

void pickPrecursorChromatograms ( const MRMTransitionGroup< SpectrumT, TransitionT > &  transition_group,
const std::vector< SpectrumT > &  picked_chroms,
MRMFeature mrmFeature,
const std::vector< SpectrumT > &  smoothed_chroms,
const double  best_left,
const double  best_right,
const bool  use_consensus_,
double &  total_intensity,
const SpectrumT &  master_peak_container,
const std::vector< double > &  left_edges,
const std::vector< double > &  right_edges,
const int  chr_idx,
const int  peak_idx 
)
inline

◆ pickTransitionGroup()

void pickTransitionGroup ( MRMTransitionGroup< SpectrumT, TransitionT > &  transition_group)
inline

Pick a group of chromatograms belonging to the same peptide.

Will identify peaks in a set of chromatograms that belong to the same peptide. The chromatograms are given in the MRMTransitionGroup container which also contains the mapping of the chromatograms to their metadata. Only chromatograms from detecting transitions are used for peak picking. Identifying transitions will be processed alongside but do not contribute to the meta-data, e.g. total_xic or peak_apices_sum.

The resulting features are added to the MRMTransitionGroup. Each feature contains the following meta-data:

  • PeptideRef
  • leftWidth
  • rightWidth
  • total_xic (fragment trace XIC sum)
  • peak_apices_sum

References MRMTransitionGroup< ChromatogramType, TransitionType >::addFeature(), MRMTransitionGroup< ChromatogramType, TransitionType >::chromatogramIdsMatch(), MRMTransitionGroup< ChromatogramType, TransitionType >::getChromatograms(), Peak2D::getIntensity(), MetaInfoInterface::getMetaValue(), ChromatogramSettings::getNativeID(), MRMTransitionGroup< ChromatogramType, TransitionType >::getPrecursorChromatograms(), MRMTransitionGroup< ChromatogramType, TransitionType >::getTransition(), MRMTransitionGroup< ChromatogramType, TransitionType >::getTransitions(), MRMTransitionGroup< ChromatogramType, TransitionType >::hasTransition(), MRMTransitionGroup< ChromatogramType, TransitionType >::isInternallyConsistent(), OpenMS::Constants::k, OPENMS_LOG_DEBUG, OPENMS_PRECONDITION, ChromatogramSettings::setNativeID(), and MSChromatogram::sortByIntensity().

◆ prepareMasterContainer_()

void prepareMasterContainer_ ( const PeakContainerT &  ref_chromatogram,
PeakContainerT &  master_peak_container,
double  left_boundary,
double  right_boundary 
)
inlineprotected

Create an empty master peak container that has the correct mz / RT values set.

The empty master peak container fill be filled with mz / RT values at the positions where the reference chromatogram has values. The container will only be populated between the boundaries given. The output container will contain peaks with mz / RT values but all intensity values will be zero.

Parameters
ref_chromatogramReference chromatogram containing mz / RT values (possibly beyond the desired range)
master_peak_containerOutput container to be populated
left_boundaryLeft boundary of values the container should be populated with
right_boundaryRight boundary of values the container should be populated with

References OPENMS_PRECONDITION.

◆ recalculatePeakBorders_()

void recalculatePeakBorders_ ( const std::vector< SpectrumT > &  picked_chroms,
double &  best_left,
double &  best_right,
double  max_z 
)
inlineprotected

Recalculate the borders of the peak.

By collecting all left and right borders of contained peaks, a consensus peak is computed. By looking at the means and standard deviations of all the peak borders it is estimated whether the proposed peak border deviates too much from the consensus one. If the deviation is too high (in this case), then we fall back to the "consensus" (a median here).

References PeakPickerChromatogram::IDX_ABUNDANCE, PeakPickerChromatogram::IDX_LEFTBORDER, PeakPickerChromatogram::IDX_RIGHTBORDER, OpenMS::Constants::k, OpenMS::Math::mean(), and OPENMS_LOG_DEBUG.

◆ remove_overlapping_features()

void remove_overlapping_features ( std::vector< SpectrumT > &  picked_chroms,
double  best_left,
double  best_right 
)
inline

Remove overlapping features.

Remove features that are within the current seed (between best_left and best_right) or overlap with it. An overlapping feature is defined as a feature that has either of its borders within the border of the current peak

Directly adjacent features are allowed, e.g. they can share one border.

References PeakPickerChromatogram::IDX_LEFTBORDER, PeakPickerChromatogram::IDX_RIGHTBORDER, OpenMS::Constants::k, and OPENMS_LOG_DEBUG.

◆ resampleChromatogram_()

PeakContainerT resampleChromatogram_ ( const PeakContainerT &  chromatogram,
const PeakContainerT &  master_peak_container,
double  left_boundary,
double  right_boundary 
)
inlineprotected

Resample a container at the positions indicated by the master peak container.

Parameters
chromatogramContainer with the input data
master_peak_containerContainer with the mz / RT values at which to resample
left_boundaryLeft boundary of values the container should be resampled
right_boundaryRight boundary of values the container should be resampled
Returns
A container which contains the data from the input chromatogram resampled at the positions of the master container

References LinearResamplerAlign::raster().

◆ selectChromHelper_()

◆ updateMembers_()

void updateMembers_ ( )
overrideprotectedvirtual

Synchronize members with param class.

Reimplemented from DefaultParamHandler.

Member Data Documentation

◆ background_subtraction_

String background_subtraction_
protected

◆ boundary_selection_method_

String boundary_selection_method_
protected

Which method to use for selecting peaks' boundaries.

Valid values are: "largest", "widest"

◆ compute_peak_quality_

bool compute_peak_quality_
protected

◆ compute_peak_shape_metrics_

bool compute_peak_shape_metrics_
protected

◆ compute_total_mi_

bool compute_total_mi_
protected

◆ min_peak_width_

double min_peak_width_
protected

◆ min_qual_

double min_qual_
protected

◆ peak_integration_

String peak_integration_
protected

◆ pi_

PeakIntegrator pi_
protected

◆ picker_

PeakPickerChromatogram picker_
protected

◆ recalculate_peaks_

bool recalculate_peaks_
protected

◆ recalculate_peaks_max_z_

double recalculate_peaks_max_z_
protected

◆ resample_boundary_

double resample_boundary_
protected

◆ stop_after_feature_

int stop_after_feature_
protected

◆ stop_after_intensity_ratio_

double stop_after_intensity_ratio_
protected

◆ use_consensus_

bool use_consensus_
protected

◆ use_precursors_

bool use_precursors_
protected