OpenMS
Loading...
Searching...
No Matches
FeatureFinderMultiplexAlgorithm Class Reference

Identification-free quantitative feature finder for SILAC / Dimethyl / ICPL-style label-pair experiments. More...

#include <OpenMS/FEATUREFINDER/FeatureFinderMultiplexAlgorithm.h>

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

Public Member Functions

 FeatureFinderMultiplexAlgorithm ()
 Construct with built-in defaults; parameter sections "algorithm" and "labels" are registered. Call setParameters to override before run.
 
void run (MSExperiment &exp, bool progress)
 Run the full detection pipeline on exp and populate the internal feature / consensus / blacklist maps.
 
FeatureMapgetFeatureMap ()
 Return the FeatureMap populated by the most recent run call (empty before run).
 
ConsensusMapgetConsensusMap ()
 Return the ConsensusMap of detected multiplets populated by the most recent run call (empty before run).
 
MSExperimentgetBlacklist ()
 Return the per-pattern blacklist MSExperiment produced during run (peak regions consumed by detected multiplets).
 
- Public Member Functions inherited from DefaultParamHandler
 DefaultParamHandler (const std::string &name)
 Constructor with name that is displayed in error messages.
 
 DefaultParamHandler (const DefaultParamHandler &rhs)
 Copy constructor.
 
virtual ~DefaultParamHandler ()
 Destructor.
 
DefaultParamHandleroperator= (const DefaultParamHandler &rhs)
 Assignment operator.
 
virtual bool operator== (const DefaultParamHandler &rhs) const
 Equality operator.
 
void setParameters (const Param &param)
 Sets the parameters.
 
const ParamgetParameters () const
 Non-mutable access to the parameters.
 
const ParamgetDefaults () const
 Non-mutable access to the default parameters.
 
const std::string & getName () const
 Non-mutable access to the name.
 
void setName (const std::string &name)
 Mutable access to the name.
 
const std::vector< std::string > & getSubsections () const
 Non-mutable access to the registered subsections.
 
- Public Member Functions inherited from ProgressLogger
 ProgressLogger ()
 Constructor.
 
virtual ~ProgressLogger ()
 Destructor.
 
 ProgressLogger (const ProgressLogger &other)
 Copy constructor.
 
ProgressLoggeroperator= (const ProgressLogger &other)
 Assignment Operator.
 
void setLogType (LogType type) const
 Sets the progress log that should be used. The default type is NONE!
 
LogType getLogType () const
 Returns the type of progress log being used.
 
void setLogger (ProgressLoggerImpl *logger)
 Sets the logger to be used for progress logging.
 
void startProgress (SignedSize begin, SignedSize end, const std::string &label) const
 Initializes the progress display.
 
void setProgress (SignedSize value) const
 Sets the current progress.
 
void endProgress (UInt64 bytes_processed=0) const
 
void nextProgress () const
 increment progress by 1 (according to range begin-end)
 

Protected Member Functions

std::vector< MultiplexIsotopicPeakPatterngeneratePeakPatterns_ (int charge_min, int charge_max, int peaks_per_peptide_max, const std::vector< MultiplexDeltaMasses > &mass_pattern_list)
 generate list of m/z shifts
 
void correctPeptideIntensities_ (const MultiplexIsotopicPeakPattern &pattern, std::map< size_t, SplinePackage > &spline_chromatograms, const std::vector< double > &rt_peptide, std::vector< double > &intensity_peptide) const
 determine ratios through linear regression and correct peptide intensities
 
std::vector< double > determinePeptideIntensitiesCentroided_ (const MultiplexIsotopicPeakPattern &pattern, const std::multimap< size_t, MultiplexSatelliteCentroided > &satellites)
 calculate peptide intensities
 
std::vector< double > determinePeptideIntensitiesProfile_ (const MultiplexIsotopicPeakPattern &pattern, const std::multimap< size_t, MultiplexSatelliteProfile > &satellites)
 calculate peptide intensities
 
void generateMapsCentroided_ (const std::vector< MultiplexIsotopicPeakPattern > &patterns, const std::vector< MultiplexFilteredMSExperiment > &filter_results, std::vector< std::map< int, GridBasedCluster > > &cluster_results)
 generates consensus and feature maps containing all peptide multiplets
 
void generateMapsProfile_ (const std::vector< MultiplexIsotopicPeakPattern > &patterns, const std::vector< MultiplexFilteredMSExperiment > &filter_results, const std::vector< std::map< int, GridBasedCluster > > &cluster_results)
 generates consensus and feature maps containing all peptide multiplets
 
- Protected Member Functions inherited from DefaultParamHandler
virtual void updateMembers_ ()
 This method is used to update extra member variables at the end of the setParameters() method.
 
void defaultsToParam_ ()
 Updates the parameters after the defaults have been set in the constructor.
 

Protected Attributes

MSExperiment exp_profile_
 
MSExperiment exp_centroid_
 
bool centroided_
 
ProgressLogger prog_log_
 
bool progress_
 
unsigned charge_min_
 
unsigned charge_max_
 
unsigned isotopes_per_peptide_min_
 
unsigned isotopes_per_peptide_max_
 
std::map< std::string, double > label_mass_shift_
 
FeatureMap feature_map_
 
ConsensusMap consensus_map_
 
MSExperiment exp_blacklist_
 
- Protected Attributes inherited from DefaultParamHandler
Param param_
 Container for current parameters.
 
Param defaults_
 Container for default parameters. This member should be filled in the constructor of derived classes!
 
std::vector< std::string > subsections_
 Container for registered subsections. This member should be filled in the constructor of derived classes!
 
std::string error_name_
 Name that is displayed in error messages during the parameter checking.
 
bool check_defaults_
 If this member is set to false no checking if parameters in done;.
 
bool warn_empty_defaults_
 If this member is set to false no warning is emitted when defaults are empty;.
 
- Protected Attributes inherited from ProgressLogger
LogType type_
 
time_t last_invoke_
 
ProgressLoggerImplcurrent_logger_
 

Additional Inherited Members

- Public Types inherited from ProgressLogger
enum  LogType { CMD , GUI , NONE }
 Possible log types. More...
 
- Static Public Member Functions inherited from DefaultParamHandler
static void writeParametersToMetaValues (const Param &write_this, MetaInfoInterface &write_here, const std::string &key_prefix="")
 Writes all parameters to meta values.
 
- Static Protected Attributes inherited from ProgressLogger
static int recursion_depth_
 

Detailed Description

Identification-free quantitative feature finder for SILAC / Dimethyl / ICPL-style label-pair experiments.

Detects pairs (or larger multiplets) of isotopic envelopes separated by fixed label-induced m/z shifts. Works on both profile and centroided MS1 spectra; no prior sequence identification is needed. Configurable via DefaultParamHandler (parameter sections "algorithm:*" and "labels:*"; defaults are set by the constructor).

Algorithm Three stages — filtering, clustering, and linear fitting:

  • Filtering retains data points where all isotope-pattern peaks (e.g. at m/z, m/z+0.5, m/z+1, m/z+3, m/z+3.5, m/z+4 for a doubly charged pair) clear an intensity threshold, show good profile correlation across the m/z range, and whose within-peptide intensity ratios match an averagine model within a per-call tolerance.
  • Clustering uses hierarchical methods on the surviving points in the t-m/z plane. Each cluster corresponds to the monoisotopic mass trace of the lightest peptide of a label pattern. The number of clusters is chosen by maximising the silhouette width.
  • Linear fitting on the in-cluster intensity pairs (e.g. [m/z, m/z+3], [m/z+0.5, m/z+3.5], [m/z+1, m/z+4] for a doubly charged pair) yields the relative amounts of labelled and unlabelled peptide.

Constructor & Destructor Documentation

◆ FeatureFinderMultiplexAlgorithm()

Construct with built-in defaults; parameter sections "algorithm" and "labels" are registered. Call setParameters to override before run.

Member Function Documentation

◆ correctPeptideIntensities_()

void correctPeptideIntensities_ ( const MultiplexIsotopicPeakPattern pattern,
std::map< size_t, SplinePackage > &  spline_chromatograms,
const std::vector< double > &  rt_peptide,
std::vector< double > &  intensity_peptide 
) const
protected

determine ratios through linear regression and correct peptide intensities

In most labelled mass spectrometry experiments, the fold change i.e. ratio and not the individual peptide intensities are of primary interest. For that reason, we determine the ratios from interpolated chromatogram data points directly, and then correct the current ones.

Parameters
[in]patternIsotopic peak pattern
[in,out]spline_chromatogramsSpline chromatograms to be used/modified
[in]rt_peptideRetention times of peptides
[out]intensity_peptideCorrected peptide intensities

◆ determinePeptideIntensitiesCentroided_()

std::vector< double > determinePeptideIntensitiesCentroided_ ( const MultiplexIsotopicPeakPattern pattern,
const std::multimap< size_t, MultiplexSatelliteCentroided > &  satellites 
)
protected

calculate peptide intensities

Parameters
[in]patternIsotopic peak pattern
[in]satellitesSatellite peaks
Returns
vector with intensities for each of the peptides

◆ determinePeptideIntensitiesProfile_()

std::vector< double > determinePeptideIntensitiesProfile_ ( const MultiplexIsotopicPeakPattern pattern,
const std::multimap< size_t, MultiplexSatelliteProfile > &  satellites 
)
protected

calculate peptide intensities

Parameters
[in]patternIsotopic peak pattern
[in]satellitesSatellite peaks
Returns
vector with intensities for each of the peptides

◆ generateMapsCentroided_()

void generateMapsCentroided_ ( const std::vector< MultiplexIsotopicPeakPattern > &  patterns,
const std::vector< MultiplexFilteredMSExperiment > &  filter_results,
std::vector< std::map< int, GridBasedCluster > > &  cluster_results 
)
protected

generates consensus and feature maps containing all peptide multiplets

Parameters
[in]patternspatterns of isotopic peaks we have been searching for
[in]filter_resultsfilter results for each of the patterns
[in,out]cluster_resultsclusters of filter results

◆ generateMapsProfile_()

void generateMapsProfile_ ( const std::vector< MultiplexIsotopicPeakPattern > &  patterns,
const std::vector< MultiplexFilteredMSExperiment > &  filter_results,
const std::vector< std::map< int, GridBasedCluster > > &  cluster_results 
)
protected

generates consensus and feature maps containing all peptide multiplets

Parameters
[in]patternspatterns of isotopic peaks we have been searching for
[in]filter_resultsfilter results for each of the patterns
[in]cluster_resultsclusters of filter results

◆ generatePeakPatterns_()

std::vector< MultiplexIsotopicPeakPattern > generatePeakPatterns_ ( int  charge_min,
int  charge_max,
int  peaks_per_peptide_max,
const std::vector< MultiplexDeltaMasses > &  mass_pattern_list 
)
protected

generate list of m/z shifts

Parameters
[in]charge_minminimum charge
[in]charge_maxmaximum charge
[in]peaks_per_peptide_maxmaximum number of isotopes in peptide
[in]mass_pattern_listmass shifts due to labelling
Returns
list of m/z shifts

◆ getBlacklist()

MSExperiment & getBlacklist ( )

Return the per-pattern blacklist MSExperiment produced during run (peak regions consumed by detected multiplets).

◆ getConsensusMap()

ConsensusMap & getConsensusMap ( )

Return the ConsensusMap of detected multiplets populated by the most recent run call (empty before run).

◆ getFeatureMap()

FeatureMap & getFeatureMap ( )

Return the FeatureMap populated by the most recent run call (empty before run).

◆ run()

void run ( MSExperiment exp,
bool  progress 
)

Run the full detection pipeline on exp and populate the internal feature / consensus / blacklist maps.

The pipeline:

  1. Parses the configured charge and isotopes-per-peptide ranges from the "algorithm:charge" and "algorithm:isotopes_per_peptide" Param values (formatted as "min:max"; swapped silently if the input is reversed).
  2. Loads the label mass shifts from the "labels:*" Param section into the in-class label_mass_shift_ map.
  3. Clears exp's chromatograms, calls updateRanges and sortSpectra on it, and then moves exp into either the internal centroided or profile working buffer via MSExperiment::swap — after this call returns, the caller's exp is left empty.
  4. Determines the spectrum type from "algorithm:spectrum_type": "automatic" reads exp[0].getType(true) and treats UNKNOWN as profile; "centroid" / "profile" force the choice.
  5. When the input is in profile mode, runs PeakPickerHiRes::pickExperiment on "MS1" only with signal_to_noise = 0 (S/N estimation disabled).
  6. Builds the label delta-mass list with MultiplexDeltaMassesGenerator, optionally extending it with knock-out delta masses when "algorithm:knock_out" is "true".
  7. Generates isotopic peak patterns, runs the filter / cluster / linear-fit stages described in the class brief, and populates feature_map_, consensus_map_, and exp_blacklist_ accessible through the get* methods.
Parameters
[in,out]expMS1 experiment to analyse. Chromatograms are cleared, ranges are recomputed, spectra sorted, and the container is moved into the internal working buffer — the caller's exp is empty on return.
[in]progressWhen true, progress is reported through the inherited ProgressLogger.
Exceptions
OpenMS::Exception::FileEmptywhen exp has no spectra.

Member Data Documentation

◆ centroided_

bool centroided_
protected

◆ charge_max_

unsigned charge_max_
protected

◆ charge_min_

unsigned charge_min_
protected

◆ consensus_map_

ConsensusMap consensus_map_
protected

◆ exp_blacklist_

MSExperiment exp_blacklist_
protected

◆ exp_centroid_

MSExperiment exp_centroid_
protected

◆ exp_profile_

MSExperiment exp_profile_
protected

◆ feature_map_

FeatureMap feature_map_
protected

◆ isotopes_per_peptide_max_

unsigned isotopes_per_peptide_max_
protected

◆ isotopes_per_peptide_min_

unsigned isotopes_per_peptide_min_
protected

◆ label_mass_shift_

std::map<std::string, double> label_mass_shift_
protected

◆ prog_log_

ProgressLogger prog_log_
protected

◆ progress_

bool progress_
protected