| OpenMS 2.5.0

Public Member Functions | Private Member Functions | List of all members
FalseDiscoveryRate Class Reference
Analysis » Identification

Calculates false discovery rates (FDR) from identifications. More...

`#include <OpenMS/ANALYSIS/ID/FalseDiscoveryRate.h>`

Inheritance diagram for FalseDiscoveryRate:

## Public Member Functions

| FalseDiscoveryRate ()
| Default constructor. More...
void | apply (std::vector< PeptideIdentification > &fwd_ids, std::vector< PeptideIdentification > &rev_ids) const
| Calculates the FDR of two runs, a forward run and a decoy run on peptide level. More...
void | apply (std::vector< PeptideIdentification > &id) const
| Calculates the FDR of one run from a concatenated sequence DB search. More...
void | apply (std::vector< ProteinIdentification > &fwd_ids, std::vector< ProteinIdentification > &rev_ids) const
| Calculates the FDR of two runs, a forward run and decoy run on protein level. More...
void | apply (std::vector< ProteinIdentification > &ids) const
| Calculate the FDR of one run from a concatenated sequence db search. More...
void | applyEstimated (std::vector< ProteinIdentification > &ids) const
| Calculate the FDR based on PEPs or PPs (if present) and modifies the IDs inplace. More...
double | applyEvaluateProteinIDs (const std::vector< ProteinIdentification > &ids, double pepCutoff=1.0, UInt fpCutoff=50, double diffWeight=0.2)
| Calculate a linear combination of the area of the difference in estimated vs. empirical (TD) FDR and the ROC-N value (AUC up to first N false positives). More...
double | applyEvaluateProteinIDs (const ProteinIdentification &ids, double pepCutoff=1.0, UInt fpCutoff=50, double diffWeight=0.2)
void | applyBasic (std::vector< PeptideIdentification > &ids)
| simpler reimplemetation of the apply function above. More...
void | applyBasic (ConsensusMap &cmap, bool use_unassigned_peptides=true)
| simpler reimplemetation of the apply function above for peptides in ConsensusMaps. More...
void | applyBasic (ProteinIdentification &id, bool groups_too=true)
| simpler reimplemetation of the apply function above for proteins. More...
double | rocN (const std::vector< PeptideIdentification > &ids, Size fp_cutoff) const
double | rocN (const std::vector< PeptideIdentification > &ids, Size fp_cutoff, const String &identifier) const
double | rocN (const ConsensusMap &ids, Size fp_cutoff) const
double | rocN (const ConsensusMap &ids, Size fp_cutoff, const String &identifier) const
IdentificationData::ScoreTypeRef | applyToQueryMatches (IdentificationData &id_data, IdentificationData::ScoreTypeRef score_ref) const
| Calculate FDR on the level of molecule-query matches (e.g. peptide-spectrum matches) for "general" identification data. 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...
virtual DefaultParamHandler & | operator= (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 Param & | getParameters () const
| Non-mutable access to the parameters. More...
const Param & | getDefaults () const
| Non-mutable access to the default parameters. More...
const String & | getName () 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...

## Private Member Functions

| FalseDiscoveryRate (const FalseDiscoveryRate &)
| Not implemented. More...
FalseDiscoveryRate & | operator= (const FalseDiscoveryRate &)
| Not implemented. More...
void | calculateFDRs_ (std::map< double, double > &score_to_fdr, std::vector< double > &target_scores, std::vector< double > &decoy_scores, bool q_value, bool higher_score_better) const
| calculates the FDR, given two vectors of scores More...
void | handleQueryMatch_ (IdentificationData::QueryMatchRef match_ref, IdentificationData::ScoreTypeRef score_ref, std::vector< double > &target_scores, std::vector< double > &decoy_scores, std::map< IdentificationData::IdentifiedMoleculeRef, bool > &molecule_to_decoy, std::map< IdentificationData::QueryMatchRef, double > &match_to_score) const
| Helper function for applyToQueryMatches() More...
void | calculateEstimatedQVal_ (std::map< double, double > &scores_to_FDR, ScoreToTgtDecLabelPairs &scores_labels, bool higher_score_better) const
void | calculateFDRBasic_ (std::map< double, double > &scores_to_FDR, ScoreToTgtDecLabelPairs &scores_labels, bool qvalue, bool higher_score_better) const
double | diffEstimatedEmpirical_ (const ScoreToTgtDecLabelPairs &scores_labels, double pepCutoff=1.0) const
| calculates the area of the difference between estimated and empirical FDR on the fly. Does not store results. More...
double | rocN_ (const ScoreToTgtDecLabelPairs &scores_labels, Size fpCutoff=50) const
double | trapezoidal_area_xEqy (double exp1, double exp2, double act1, double act2) const
double | trapezoidal_area (double x1, double x2, double y1, double y2) const
| calculates the trapezoidal area for a trapezoid with a flat horizontal base e.g. for an AUC More...

## Additional Inherited Members

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. More...
void | defaultsToParam_ ()
| Updates the parameters after the defaults have been set in the constructor. 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< String > | subsections_
| 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

Calculates false discovery rates (FDR) from identifications.

Either two runs of forward and decoy database identification or one run containing both (with annotations) can be used to annotate each of the peptide hits with an FDR or q-value.

q-values are basically only adjusted p-values, also ranging from 0 to 1, with lower values being preferable. When looking at the list of hits ordered by q-values, then a specific q-value of x means that x*100 percent of hits with a q-value <= x are expected to be false positives.

Only simple target-decoy FDRs are supported with a formula depending on the "conservative" parameter:

- false: (D+1)/T.
- true: (D+1)/(T+D) [for comparison with protein level FDR in Fido mostly] For protein groups, a group is considered as a target when it contains at least one target protein. Group level FDRs assume the same score type as on protein level.

For peptide hits, a hit is considered target also if it maps to both a target and a decoy protein (i.e. "target+decoy") as value in the "target_decoy" metavalue e.g. annotated by PeptideIndexer

Note
  The parameter add_decoy_proteins currently does not affect groups

Parameters of this class are:

Name | Type | Default | Restrictions | Description
--- | --- | --- | --- | ---
no_qvalues | string | false | true, false | If 'true' strict FDRs will be calculated instead of q-values (the default)
use_all_hits | string | false | true, false | If 'true' not only the first hit, but all are used (peptides only)
split_charge_variants | string | false | true, false | If 'true' charge variants are treated separately (for peptides of combined target/decoy searches only).
treat_runs_separately | string | false | true, false | If 'true' different search runs are treated separately (for peptides of combined target/decoy searches only).
add_decoy_peptides | string | false | true, false | If 'true' decoy peptides will be written to output file, too. The q-value is set to the closest target score.
add_decoy_proteins | string | false | true, false | If 'true' decoy proteins will be written to output file, too. The q-value is set to the closest target score.
conservative | string | true | true, false | If 'true' (D+1)/T instead of (D+1)/(T+D) is used as a formula.

Note:

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

## Constructor & Destructor Documentation

## ◆ FalseDiscoveryRate() [1/2]

FalseDiscoveryRate | ( |  | ) |

Default constructor.

## ◆ FalseDiscoveryRate() [2/2]

FalseDiscoveryRate | ( | const FalseDiscoveryRate & |  | ) |

private

Not implemented.

## Member Function Documentation

## ◆ apply() [1/4]

void apply | ( | std::vector< PeptideIdentification > & | fwd_ids,
|  | std::vector< PeptideIdentification > & | rev_ids
| ) |  | const

Calculates the FDR of two runs, a forward run and a decoy run on peptide level.

Parameters

  fwd_ids | forward peptide identifications
  rev_ids | reverse peptide identifications

## ◆ apply() [2/4]

void apply | ( | std::vector< PeptideIdentification > & | id | ) | const

Calculates the FDR of one run from a concatenated sequence DB search.

Parameters

  id | peptide identifications, containing target and decoy hits

## ◆ apply() [3/4]

void apply | ( | std::vector< ProteinIdentification > & | fwd_ids,
|  | std::vector< ProteinIdentification > & | rev_ids
| ) |  | const

Calculates the FDR of two runs, a forward run and decoy run on protein level.

Parameters

  fwd_ids | forward protein identifications
  rev_ids | reverse protein identifications

## ◆ apply() [4/4]

void apply | ( | std::vector< ProteinIdentification > & | ids | ) | const

Calculate the FDR of one run from a concatenated sequence db search.

Parameters

  ids | protein identifications, containing target and decoy hits

## ◆ applyBasic() [1/3]

void applyBasic | ( | std::vector< PeptideIdentification > & | ids | ) |

simpler reimplemetation of the apply function above.

Referenced by Epifany::main_(), and UTILProteomicsLFQ::main_().

## ◆ applyBasic() [2/3]

void applyBasic | ( | ConsensusMap & | cmap,
|  | bool | use_unassigned_peptides = `true`
| ) |  |

simpler reimplemetation of the apply function above for peptides in ConsensusMaps.

## ◆ applyBasic() [3/3]

void applyBasic | ( | ProteinIdentification & | id,
|  | bool | groups_too = `true`
| ) |  |

simpler reimplemetation of the apply function above for proteins.

## ◆ applyEstimated()

void applyEstimated | ( | std::vector< ProteinIdentification > & | ids | ) | const

Calculate the FDR based on PEPs or PPs (if present) and modifies the IDs inplace.

Parameters

  ids | protein identifications, containing PEP scores (not necessarily) annotated with target decoy.

## ◆ applyEvaluateProteinIDs() [1/2]

double applyEvaluateProteinIDs | ( | const std::vector< ProteinIdentification > & | ids,
|  | double | pepCutoff = `1.0`,
|  | UInt | fpCutoff = `50`,
|  | double | diffWeight = `0.2`
| ) |  |

Calculate a linear combination of the area of the difference in estimated vs. empirical (TD) FDR and the ROC-N value (AUC up to first N false positives).

Parameters

  ids | protein identifications, containing PEP scores annotated with target decoy. If vector, only first will be evaluated-
  pepCutoff | up to which PEP should the differences between the two FDRs be calculated
  fpCutoff | up to which nr. of false positives should the target-decoy AUC be evaluated
  diffWeight | which weight should the difference get. The ROC-N value gets 1 - this weight.

## ◆ applyEvaluateProteinIDs() [2/2]

double applyEvaluateProteinIDs | ( | const ProteinIdentification & | ids,
|  | double | pepCutoff = `1.0`,
|  | UInt | fpCutoff = `50`,
|  | double | diffWeight = `0.2`
| ) |  |

## ◆ applyToQueryMatches()

IdentificationData::ScoreTypeRef applyToQueryMatches | ( | IdentificationData & | id_data,
|  | IdentificationData::ScoreTypeRef | score_ref
| ) |  | const

Calculate FDR on the level of molecule-query matches (e.g. peptide-spectrum matches) for "general" identification data.

Parameters

  id_data | Identification data
  score_key | Key of the score to use for FDR calculation

Returns
  Key of the FDR score

Referenced by NucleicAcidSearchEngine::calculateAndFilterFDR_().

## ◆ calculateEstimatedQVal_()

void calculateEstimatedQVal_ | ( | std::map< double, double > & | scores_to_FDR,
|  | ScoreToTgtDecLabelPairs & | scores_labels,
|  | bool | higher_score_better
| ) |  | const

private

calculates an estimated FDR (based on P(E)Ps) given a vector of score value pairs and fills a map for lookup in scores_to_FDR

## ◆ calculateFDRBasic_()

void calculateFDRBasic_ | ( | std::map< double, double > & | scores_to_FDR,
|  | ScoreToTgtDecLabelPairs & | scores_labels,
|  | bool | qvalue,
|  | bool | higher_score_better
| ) |  | const

private

calculates the FDR with a basic and faster algorithm Just goes through the sorted scores and counts the number of decoys and targets and annotates the FDR for this score as it goes. Q-values are optionally annotated by calculating the cumulative minimum in reversed order afterwards. Since I never understood our other algorithm, I can not explain the difference.

Note
  Formula used depends on Param "conservative": false -> (D+1)/T, true (e.g. used in Fido) -> (D+1)/(T+D)

## ◆ calculateFDRs_()

void calculateFDRs_ | ( | std::map< double, double > & | score_to_fdr,
|  | std::vector< double > & | target_scores,
|  | std::vector< double > & | decoy_scores,
|  | bool | q_value,
|  | bool | higher_score_better
| ) |  | const

private

calculates the FDR, given two vectors of scores

## ◆ diffEstimatedEmpirical_()

double diffEstimatedEmpirical_ | ( | const ScoreToTgtDecLabelPairs & | scores_labels,
|  | double | pepCutoff = `1.0`
| ) |  | const

private

calculates the area of the difference between estimated and empirical FDR on the fly. Does not store results.

## ◆ handleQueryMatch_()

void handleQueryMatch_ | ( | IdentificationData::QueryMatchRef | match_ref,
|  | IdentificationData::ScoreTypeRef | score_ref,
|  | std::vector< double > & | target_scores,
|  | std::vector< double > & | decoy_scores,
|  | std::map< IdentificationData::IdentifiedMoleculeRef, bool > & | molecule_to_decoy,
|  | std::map< IdentificationData::QueryMatchRef, double > & | match_to_score
| ) |  | const

private

Helper function for applyToQueryMatches()

## ◆ operator=()

FalseDiscoveryRate& operator= | ( | const FalseDiscoveryRate & |  | ) |

private

Not implemented.

## ◆ rocN() [1/4]

double rocN | ( | const std::vector< PeptideIdentification > & | ids,
|  | Size | fp_cutoff
| ) |  | const

calculates the AUC until the first fp_cutoff False positive pep IDs (currently only takes all runs together) if fp_cutoff = 0, it will calculate the full AUC

## ◆ rocN() [2/4]

double rocN | ( | const std::vector< PeptideIdentification > & | ids,
|  | Size | fp_cutoff,
|  | const String & | identifier
| ) |  | const

calculates the AUC until the first fp_cutoff False positive pep IDs (currently only takes all runs together) if fp_cutoff = 0, it will calculate the full AUC. Restricted to IDs from a specific ID run.

## ◆ rocN() [3/4]

double rocN | ( | const ConsensusMap & | ids,
|  | Size | fp_cutoff
| ) |  | const

calculates the AUC until the first fp_cutoff False positive pep IDs (currently only takes all runs together) if fp_cutoff = 0, it will calculate the full AUC

## ◆ rocN() [4/4]

double rocN | ( | const ConsensusMap & | ids,
|  | Size | fp_cutoff,
|  | const String & | identifier
| ) |  | const

calculates the AUC until the first fp_cutoff False positive pep IDs (currently only takes all runs together) if fp_cutoff = 0, it will calculate the full AUC. Restricted to IDs from a specific ID run.

## ◆ rocN_()

double rocN_ | ( | const ScoreToTgtDecLabelPairs & | scores_labels,
|  | Size | fpCutoff = `50`
| ) |  | const

private

calculates AUC of empirical FDR up to the first fpCutoff false positives on the fly. Does not store results. use e.g. fpCutoff = scores_labels.size() for complete AUC

## ◆ trapezoidal_area()

double trapezoidal_area | ( | double | x1,
|  | double | x2,
|  | double | y1,
|  | double | y2
| ) |  | const

private

calculates the trapezoidal area for a trapezoid with a flat horizontal base e.g. for an AUC

## ◆ trapezoidal_area_xEqy()

double trapezoidal_area_xEqy | ( | double | exp1,
|  | double | exp2,
|  | double | act1,
|  | double | act2
| ) |  | const

private

calculates the error area around the x=x line between two consecutive values of expected and actual i.e. it assumes exp2 > exp1