OpenMS
Loading...
Searching...
No Matches
NuXLFDR.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg $
7// --------------------------------------------------------------------------
8
9#pragma once
10
16#include "NuXLReport.h"
17#include <string>
18#include <vector>
19
20namespace OpenMS
21{
22
23class FalseDiscoveryRate;
24
40{
41 public:
50 enum class XLGroups
51 {
52 OFF,
53 ON,
54 AUTO
55 };
56
57 static constexpr Size SHORT_XL_MAX_LENGTH = 9;
58 static constexpr Size SHORT_XL_MIN_NA_LENGTH = 2;
59 static constexpr Size AUTO_MIN_DECOYS = 10;
60 static constexpr double AUTO_FDR = 0.1;
61
73 explicit NuXLFDR(size_t report_top_hits, XLGroups xl_groups = XLGroups::OFF);
74
76 static XLGroups xlGroupsFromString(const std::string& s);
77
79 static bool isShortXL(const PeptideHit& hit);
80
93 bool useShortXLGroup(const PeptideIdentificationList& xl_pi, Size& short_decoys) const;
94
117 PeptideIdentificationList& xl_pi) const;
118
141 const PeptideIdentificationList& xl_pi,
142 PeptideIdentificationList& peptide_ids) const;
143
155 void QValueAtPSMLevel(PeptideIdentificationList& peptide_ids) const;
156
173 PeptideIdentificationList& xl_pi) const;
174
229 const std::vector<ProteinIdentification>& protein_ids,
230 const PeptideIdentificationList& peptide_ids,
232 double peptide_PSM_qvalue_threshold,
233 double peptide_peptide_qvalue_threshold,
235 std::vector<double> xl_PSM_qvalue_thresholds,
236 std::vector<double> xl_peptidelevel_qvalue_thresholds,
237 const std::string& out_idxml,
238 int decoy_factor) const;
239
240 private:
242 void setUpFDR_(FalseDiscoveryRate& fdr) const;
243
246};
247
248}
249
250
Calculates false discovery rates (FDR) from identifications.
Definition FalseDiscoveryRate.h:54
Class-separated FDR calculation for nucleic-acid cross-links (NuXL).
Definition NuXLFDR.h:40
void splitIntoPeptidesAndXLs(const PeptideIdentificationList &peptide_ids, PeptideIdentificationList &pep_pi, PeptideIdentificationList &xl_pi) const
Partition peptide_ids into plain-peptide and cross-link PSM lists by their single top hit.
Definition NuXLFDR.cpp:95
bool useShortXLGroup(const PeptideIdentificationList &xl_pi, Size &short_decoys) const
Whether the short cross-links of xl_pi get their own FDR group.
Definition NuXLFDR.cpp:52
void QValueAtPSMLevel(PeptideIdentificationList &peptide_ids) const
Compute PSM-level q-values across peptide_ids without splitting by class.
Definition NuXLFDR.cpp:88
static bool isShortXL(const PeptideHit &hit)
Whether hit is a short cross-link: NuXL:isXL, at most SHORT_XL_MAX_LENGTH residues and at least SHORT...
Definition NuXLFDR.cpp:33
XLGroups
Separate FDR group for short cross-links.
Definition NuXLFDR.h:51
@ OFF
one FDR over all cross-links
@ ON
short cross-links form their own FDR group
@ AUTO
as ON if the short cross-links have enough decoys to estimate their own FDR (see useShortXLGroup()),...
static constexpr double AUTO_FDR
... among the cross-links at this FDR over all cross-links
Definition NuXLFDR.h:60
static constexpr Size SHORT_XL_MAX_LENGTH
short cross-link: at most this many residues ...
Definition NuXLFDR.h:57
static constexpr Size SHORT_XL_MIN_NA_LENGTH
... and at least this many nucleotides in the adduct
Definition NuXLFDR.h:58
void calculatePeptideAndXLQValueAtPSMLevel(const PeptideIdentificationList &peptide_ids, PeptideIdentificationList &pep_pi, PeptideIdentificationList &xl_pi) const
Compute PSM- and peptide-level q-values separately for plain and cross-linked PSMs.
Definition NuXLFDR.cpp:150
static XLGroups xlGroupsFromString(const std::string &s)
Parse "auto", "on" or "off" (the values of the NuXL:fdr_groups option)
Definition NuXLFDR.cpp:25
static constexpr Size AUTO_MIN_DECOYS
XLGroups::AUTO: decoys the short cross-links need ...
Definition NuXLFDR.h:59
void setUpFDR_(FalseDiscoveryRate &fdr) const
Set the parameters described at QValueAtPSMLevel() on fdr.
Definition NuXLFDR.cpp:40
size_t report_top_hits_
Top-hit cap consulted by the FDR-applying methods to toggle use_all_hits.
Definition NuXLFDR.h:244
XLGroups xl_groups_
Whether short cross-links form their own FDR group.
Definition NuXLFDR.h:245
void calculatePeptideAndXLQValueAndFilterAtPSMLevel(const std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids, PeptideIdentificationList &pep, double peptide_PSM_qvalue_threshold, double peptide_peptide_qvalue_threshold, PeptideIdentificationList &xl_pi, std::vector< double > xl_PSM_qvalue_thresholds, std::vector< double > xl_peptidelevel_qvalue_thresholds, const std::string &out_idxml, int decoy_factor) const
Compute separated FDRs, apply class-specific filters, and write per-threshold idXML / TSV reports.
Definition NuXLFDR.cpp:199
void mergePeptidesAndXLs(const PeptideIdentificationList &pep_pi, const PeptideIdentificationList &xl_pi, PeptideIdentificationList &peptide_ids) const
Re-merge a previously split (splitIntoPeptidesAndXLs) pair of lists into one PSM list.
Definition NuXLFDR.cpp:118
Represents a single spectrum match (candidate) for a specific tandem mass spectrum (MS/MS).
Definition PeptideHit.h:52
Container for peptide identifications from multiple spectra.
Definition PeptideIdentificationList.h:66
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19