OpenMS
XFDRAlgorithm.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Eugen Netz $
6 // $Authors: Lukas Zimmermann, Eugen Netz $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
18 
19 namespace OpenMS
20 {
21 
22  //-------------------------------------------------------------
23  // Doxygen docu
24  //-------------------------------------------------------------
25 
39  class OPENMS_DLLAPI XFDRAlgorithm :
40  public DefaultParamHandler, public ProgressLogger
41  {
42 
43  public:
44 
46  enum ExitCodes
47  {
50  UNEXPECTED_RESULT
51  };
52 
55 
57  ~XFDRAlgorithm() override;
58 
65  ExitCodes run(std::vector<PeptideIdentification>& peptide_ids, ProteinIdentification& protein_id);
66 
72 
73 private:
74  void updateMembers_() override;
75 
85  void initDataStructures_(std::vector<PeptideIdentification>& peptide_ids, ProteinIdentification& protein_id);
86 
92  static void assignTypes_(PeptideHit& pep_id, StringList& types);
93 
99  void fdr_xprophet_(std::map< String, Math::Histogram<> >& cum_histograms,
100  const String& targetclass, const String& decoyclass, const String& fulldecoyclass,
101  std::vector< double >& fdr, bool mono) const;
102 
108  static void calc_qfdr_(const std::vector< double >& fdr, std::vector< double >& qfdr);
109 
110  void findTopUniqueHits_(std::vector<PeptideIdentification>& peptide_ids);
111 
112  void writeArgumentsLog_() const;
113 
114  String getId_(const PeptideHit& ph) const;
115 
117  {
118  Size alpha_ions = Size(ph.getMetaValue("matched_linear_alpha")) + Size(ph.getMetaValue("matched_xlink_alpha"));
119  Size beta_ions = Size(ph.getMetaValue("matched_linear_beta")) + Size(ph.getMetaValue("matched_xlink_beta"));
120  return std::min(alpha_ions, beta_ions);
121  }
122 
123  inline static void setIntraProtein_(PeptideHit& ph, const bool value)
124  {
125  ph.setMetaValue("XFDR:is_intraprotein", DataValue(value ? "true" : "false"));
126  }
127 
128  inline static void setInterProtein_(PeptideHit& ph, const bool value)
129  {
130  ph.setMetaValue("XFDR:is_interprotein", DataValue(value ? "true" : "false"));
131  }
132 
136  static bool isSameProtein_(
137  String prot1,
138  String prot2,
139  const String &decoy_string)
140  {
141  prot1.substitute(decoy_string, "");
142  prot2.substitute(decoy_string, "");
143  assert( ! prot1.hasSubstring(decoy_string));
144  assert( ! prot2.hasSubstring(decoy_string));
145  return prot1 == prot2;
146  }
147 
148  // Score range for this of the tool
151 
152  // unique top hits
153  std::vector<String> unique_ids_;
154  std::vector<double> unique_id_scores_;
155 
156  // maps index of peptide id all_pep_ids_ to vector of cross link class
157  std::map<String, std::vector<String>> cross_link_classes_;
158 
159  // Program arguments
168  double arg_binsize_;
169 
170  // Names of the class parameters
172  static const String param_minborder_;
173  static const String param_maxborder_;
174  static const String param_mindeltas_;
176  static const String param_uniquexl_;
177  static const String param_no_qvalues_;
178  static const String param_minscore_;
179  static const String param_binsize_;
180 
181  // Constants related to particular crosslink classes
194  };
195 }
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:33
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:66
Representation of a histogram.
Definition: Histogram.h:38
void setMetaValue(const String &name, const DataValue &value)
Sets the DataValue corresponding to a name.
const DataValue & getMetaValue(const String &name) const
Returns the value corresponding to a string, or DataValue::EMPTY if not found.
Representation of a peptide hit.
Definition: PeptideHit.h:31
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:27
Representation of a protein identification run.
Definition: ProteinIdentification.h:50
A more convenient string class.
Definition: String.h:34
bool hasSubstring(const String &string) const
true if String contains the string, false otherwise
String & substitute(char from, char to)
Replaces all occurrences of the character from by the character to.
Calculates false discovery rate estimates on crosslink identifications.
Definition: XFDRAlgorithm.h:41
static const String crosslink_class_intralinks_
Definition: XFDRAlgorithm.h:187
ExitCodes validateClassArguments() const
Checks whether the parameters of the object are valid.
bool arg_no_qvalues_
Definition: XFDRAlgorithm.h:167
static const String param_binsize_
Definition: XFDRAlgorithm.h:179
static const String crosslink_class_intradecoys_
Definition: XFDRAlgorithm.h:182
static const String crosslink_class_decoys_
Definition: XFDRAlgorithm.h:190
ExitCodes run(std::vector< PeptideIdentification > &peptide_ids, ProteinIdentification &protein_id)
Performs the main function of this class, the FDR estimation for cross-linked peptide experiments.
std::map< String, std::vector< String > > cross_link_classes_
Definition: XFDRAlgorithm.h:157
static void setIntraProtein_(PeptideHit &ph, const bool value)
Definition: XFDRAlgorithm.h:123
static const String crosslink_class_interdecoys_
Definition: XFDRAlgorithm.h:184
static void calc_qfdr_(const std::vector< double > &fdr, std::vector< double > &qfdr)
Calculates the qFDR values for the provided FDR values, assuming that the FDRs are sorted by score in...
static const String param_no_qvalues_
Definition: XFDRAlgorithm.h:177
String decoy_string_
Definition: XFDRAlgorithm.h:160
static const String crosslink_class_targets_
Definition: XFDRAlgorithm.h:191
bool arg_uniquex_
Definition: XFDRAlgorithm.h:166
void fdr_xprophet_(std::map< String, Math::Histogram<> > &cum_histograms, const String &targetclass, const String &decoyclass, const String &fulldecoyclass, std::vector< double > &fdr, bool mono) const
xprophet method for target hits counting as implemented in xProphet
double arg_minscore_
Definition: XFDRAlgorithm.h:165
XFDRAlgorithm()
Default constructor.
static bool isSameProtein_(String prot1, String prot2, const String &decoy_string)
Determines whether the Peptide Evidences belong to the same protein, modulo decoy.
Definition: XFDRAlgorithm.h:136
double arg_mindeltas_
Definition: XFDRAlgorithm.h:161
static const String crosslink_class_fulldecoysinterlinks_
Definition: XFDRAlgorithm.h:185
static const String crosslink_class_hybriddecoysinterlinks_
Definition: XFDRAlgorithm.h:193
static const String param_mindeltas_
Definition: XFDRAlgorithm.h:174
String getId_(const PeptideHit &ph) const
void initDataStructures_(std::vector< PeptideIdentification > &peptide_ids, ProteinIdentification &protein_id)
Prepares vector of PeptideIdentification such that it can be processed downstream....
Int min_score_
Definition: XFDRAlgorithm.h:149
void findTopUniqueHits_(std::vector< PeptideIdentification > &peptide_ids)
static const String crosslink_class_monolinks_
Definition: XFDRAlgorithm.h:189
static const String crosslink_class_hybriddecoysintralinks_
Definition: XFDRAlgorithm.h:192
std::vector< double > unique_id_scores_
Definition: XFDRAlgorithm.h:154
void writeArgumentsLog_() const
std::vector< String > unique_ids_
Definition: XFDRAlgorithm.h:153
static const String param_decoy_string_
Definition: XFDRAlgorithm.h:171
static Size getMinIonsMatched_(const PeptideHit &ph)
Definition: XFDRAlgorithm.h:116
static const String param_maxborder_
Definition: XFDRAlgorithm.h:173
static const String param_uniquexl_
Definition: XFDRAlgorithm.h:176
Int max_score_
Definition: XFDRAlgorithm.h:150
static void setInterProtein_(PeptideHit &ph, const bool value)
Definition: XFDRAlgorithm.h:128
static const String param_minborder_
Definition: XFDRAlgorithm.h:172
static const String param_minscore_
Definition: XFDRAlgorithm.h:178
void updateMembers_() override
This method is used to update extra member variables at the end of the setParameters() method.
static const String crosslink_class_fulldecoysintralinks_
Definition: XFDRAlgorithm.h:183
ExitCodes
Exit codes.
Definition: XFDRAlgorithm.h:47
@ ILLEGAL_PARAMETERS
Definition: XFDRAlgorithm.h:49
@ EXECUTION_OK
Definition: XFDRAlgorithm.h:48
static void assignTypes_(PeptideHit &pep_id, StringList &types)
Inspects a PeptideIdentification and assigns all cross-link types that this identification belongs to...
static const String crosslink_class_monodecoys_
Definition: XFDRAlgorithm.h:186
double arg_minborder_
Definition: XFDRAlgorithm.h:162
double arg_maxborder_
Definition: XFDRAlgorithm.h:163
Int arg_minionsmatched_
Definition: XFDRAlgorithm.h:164
static const String crosslink_class_interlinks_
Definition: XFDRAlgorithm.h:188
double arg_binsize_
Definition: XFDRAlgorithm.h:168
~XFDRAlgorithm() override
Default destructor.
static const String param_minionsmatched_
Definition: XFDRAlgorithm.h:175
int Int
Signed integer type.
Definition: Types.h:76
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:101
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22