OpenMS
Loading...
Searching...
No Matches
OPXLHelper.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Eugen Netz $
6// $Authors: Eugen Netz $
7// --------------------------------------------------------------------------
8
9#pragma once
10
18#include <numeric>
19
20namespace OpenMS
21{
25 class OPENMS_DLLAPI OPXLHelper
26 {
27 public:
28
34 {
35 bool operator() (const PeptideIdentification& a, const PeptideIdentification& b) const
36 {
37 if (!a.getHits().empty() && !b.getHits().empty())
38 {
39 return a.getHits()[0].getScore() < b.getHits()[0].getScore();
40 }
41 else
42 {
43 return false;
44 }
45 }
46 bool operator() (const PeptideIdentification& a, const double& b) const
47 {
48 if (!a.getHits().empty())
49 {
50 return a.getHits()[0].getScore() < b;
51 }
52 else
53 {
54 return false;
55 }
56 }
57 bool operator() (const double& a, const PeptideIdentification& b) const
58 {
59 if (!b.getHits().empty())
60 {
61 return a < b.getHits()[0].getScore();
62 }
63 else
64 {
65 return false;
66 }
67 }
68 };
69
87 static std::vector<OPXLDataStructs::XLPrecursor> enumerateCrossLinksAndMasses(const std::vector<OPXLDataStructs::AASeqWithMass>& peptides, double cross_link_mass_light, const DoubleList& cross_link_mass_mono_link, const StringList& cross_link_residue1, const StringList& cross_link_residue2, const std::vector< double >& spectrum_precursors, std::vector< int >& precursor_correction_positions, double precursor_mass_tolerance, bool precursor_mass_tolerance_unit_ppm);
88
105 static std::vector<OPXLDataStructs::AASeqWithMass> digestDatabase(std::vector<FASTAFile::FASTAEntry> fasta_db,
106 const EnzymaticDigestion& digestor, Size min_peptide_length, const StringList& cross_link_residue1, const StringList& cross_link_residue2,
107 const ModifiedPeptideGenerator::MapToResidueType& fixed_modifications,
108 const ModifiedPeptideGenerator::MapToResidueType& variable_modifications,
109 Size max_variable_mods_per_peptide);
110
126 static std::vector <OPXLDataStructs::ProteinProteinCrossLink> buildCandidates(const std::vector< OPXLDataStructs::XLPrecursor > & candidates,
127 const std::vector< int > & precursor_corrections,
128 const std::vector< int > & precursor_correction_positions,
129 const std::vector<OPXLDataStructs::AASeqWithMass> & peptide_masses,
130 const StringList & cross_link_residue1,
131 const StringList & cross_link_residue2,
132 double cross_link_mass,
133 const DoubleList & cross_link_mass_mono_link,
134 const std::vector< double >& spectrum_precursor_vector,
135 const std::vector< double >& allowed_error_vector,
136 const String& cross_link_name);
137
150 static void buildFragmentAnnotations(std::vector<PeptideHit::PeakAnnotation> & frag_annotations, const std::vector< std::pair< Size, Size > > & matching, const PeakSpectrum & theoretical_spectrum, const PeakSpectrum & experiment_spectrum);
151
162 static void buildPeptideIDs(PeptideIdentificationList & peptide_ids, const std::vector< OPXLDataStructs::CrossLinkSpectrumMatch > & top_csms_spectrum, std::vector< std::vector< OPXLDataStructs::CrossLinkSpectrumMatch > > & all_top_csms, Size all_top_csms_current_index, const PeakMap & spectra, Size scan_index, Size scan_index_heavy);
163
168 static void addProteinPositionMetaValues(std::vector< PeptideIdentification > & peptide_ids);
169
172
177 static void addXLTargetDecoyMV(std::vector< PeptideIdentification > & peptide_ids);
178
181
186 static void addBetaAccessions(std::vector< PeptideIdentification > & peptide_ids);
187
190
195 static void removeBetaPeptideHits(std::vector< PeptideIdentification > & peptide_ids);
196
199
205
210 static void computeDeltaScores(std::vector< PeptideIdentification >& peptide_ids);
211
214
225 static std::vector< PeptideIdentification > combineTopRanksFromPairs(std::vector< PeptideIdentification > & peptide_ids, Size number_top_hits);
226
228 static std::vector< PeptideIdentification > combineTopRanksFromPairs(PeptideIdentificationList & peptide_ids, Size number_top_hits);
229
249 static std::vector <OPXLDataStructs::ProteinProteinCrossLink> collectPrecursorCandidates(const IntList& precursor_correction_steps,
250 double precursor_mass,
251 double precursor_mass_tolerance,
252 bool precursor_mass_tolerance_unit_ppm,
253 const std::vector<OPXLDataStructs::AASeqWithMass>& filtered_peptide_masses,
254 double cross_link_mass,
255 const DoubleList& cross_link_mass_mono_link,
256 const StringList& cross_link_residue1,
257 const StringList& cross_link_residue2,
258 String cross_link_name,
259 bool use_sequence_tags = false,
260 const std::vector<std::string>& tags = std::vector<std::string>());
261
269 static double computePrecursorError(const OPXLDataStructs::CrossLinkSpectrumMatch& csm, double precursor_mz, int precursor_charge);
270
275 const DataArrays::IntegerDataArray& num_iso_peaks_array,
276 const std::vector< std::pair< Size, Size > >& matched_spec_linear_alpha,
277 const std::vector< std::pair< Size, Size > >& matched_spec_linear_beta,
278 const std::vector< std::pair< Size, Size > >& matched_spec_xlinks_alpha,
279 const std::vector< std::pair< Size, Size > >& matched_spec_xlinks_beta);
280
288 static void filterPrecursorsByTags(std::vector <OPXLDataStructs::XLPrecursor>& candidates, std::vector< int >& precursor_correction_positions, const std::vector<std::string>& tags);
289 };
290}
Integer data array class.
Definition DataArrays.h:75
Class for the enzymatic digestion of sequences.
Definition EnzymaticDigestion.h:38
In-Memory representation of a mass spectrometry run.
Definition MSExperiment.h:49
The representation of a 1D spectrum.
Definition MSSpectrum.h:44
Definition ModifiedPeptideGenerator.h:31
The CrossLinkSpectrumMatch struct represents a PSM between a ProteinProteinCrossLink and a spectrum i...
Definition OPXLDataStructs.h:89
The OPXLHelper class contains functions needed by OpenPepXL to reduce duplicated code.
Definition OPXLHelper.h:26
static std::vector< OPXLDataStructs::ProteinProteinCrossLink > collectPrecursorCandidates(const IntList &precursor_correction_steps, double precursor_mass, double precursor_mass_tolerance, bool precursor_mass_tolerance_unit_ppm, const std::vector< OPXLDataStructs::AASeqWithMass > &filtered_peptide_masses, double cross_link_mass, const DoubleList &cross_link_mass_mono_link, const StringList &cross_link_residue1, const StringList &cross_link_residue2, String cross_link_name, bool use_sequence_tags=false, const std::vector< std::string > &tags=std::vector< std::string >())
Searches for cross-link candidates for a MS/MS spectrum.
static void addXLTargetDecoyMV(PeptideIdentificationList &peptide_ids)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static void filterPrecursorsByTags(std::vector< OPXLDataStructs::XLPrecursor > &candidates, std::vector< int > &precursor_correction_positions, const std::vector< std::string > &tags)
Filters the list of candidates for cases that include at least one of the tags in at least one of the...
static void buildPeptideIDs(PeptideIdentificationList &peptide_ids, const std::vector< OPXLDataStructs::CrossLinkSpectrumMatch > &top_csms_spectrum, std::vector< std::vector< OPXLDataStructs::CrossLinkSpectrumMatch > > &all_top_csms, Size all_top_csms_current_index, const PeakMap &spectra, Size scan_index, Size scan_index_heavy)
Builds PeptideIdentifications and PeptideHits.
static std::vector< PeptideIdentification > combineTopRanksFromPairs(std::vector< PeptideIdentification > &peptide_ids, Size number_top_hits)
combines all hits to spectrum pairs with the same light spectrum into one ranked list
static void addBetaAccessions(std::vector< PeptideIdentification > &peptide_ids)
adds accessions_beta MetaValue to alpha peptides for TOPPView visualization and CSV table output
static void computeDeltaScores(std::vector< PeptideIdentification > &peptide_ids)
sorts PeptideHits for each PeptideIdentification by score and adds the delta score as a MetaValue
static void buildFragmentAnnotations(std::vector< PeptideHit::PeakAnnotation > &frag_annotations, const std::vector< std::pair< Size, Size > > &matching, const PeakSpectrum &theoretical_spectrum, const PeakSpectrum &experiment_spectrum)
Fills up the given FragmentAnnotation vector with annotations from a theoretical spectrum.
static void addProteinPositionMetaValues(std::vector< PeptideIdentification > &peptide_ids)
adds MetaValues for cross-link positions to PeptideHits
static void addBetaAccessions(PeptideIdentificationList &peptide_ids)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static void addPercolatorFeatureList(ProteinIdentification &prot_id)
Adds the list of features that percolator should use for OpenPepXL.
static std::vector< OPXLDataStructs::ProteinProteinCrossLink > buildCandidates(const std::vector< OPXLDataStructs::XLPrecursor > &candidates, const std::vector< int > &precursor_corrections, const std::vector< int > &precursor_correction_positions, const std::vector< OPXLDataStructs::AASeqWithMass > &peptide_masses, const StringList &cross_link_residue1, const StringList &cross_link_residue2, double cross_link_mass, const DoubleList &cross_link_mass_mono_link, const std::vector< double > &spectrum_precursor_vector, const std::vector< double > &allowed_error_vector, const String &cross_link_name)
Builds specific cross-link candidates with all possible combinations of linked positions from peptide...
static void removeBetaPeptideHits(PeptideIdentificationList &peptide_ids)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static void isoPeakMeans(OPXLDataStructs::CrossLinkSpectrumMatch &csm, const DataArrays::IntegerDataArray &num_iso_peaks_array, const std::vector< std::pair< Size, Size > > &matched_spec_linear_alpha, const std::vector< std::pair< Size, Size > > &matched_spec_linear_beta, const std::vector< std::pair< Size, Size > > &matched_spec_xlinks_alpha, const std::vector< std::pair< Size, Size > > &matched_spec_xlinks_beta)
Computes the mean of alpha, beta, xlinks-alpha and xlinks-beta respectively and store means in csm.
static std::vector< OPXLDataStructs::AASeqWithMass > digestDatabase(std::vector< FASTAFile::FASTAEntry > fasta_db, const EnzymaticDigestion &digestor, Size min_peptide_length, const StringList &cross_link_residue1, const StringList &cross_link_residue2, const ModifiedPeptideGenerator::MapToResidueType &fixed_modifications, const ModifiedPeptideGenerator::MapToResidueType &variable_modifications, Size max_variable_mods_per_peptide)
Digests a database with the given EnzymaticDigestion settings and precomputes masses for all peptides...
static void addProteinPositionMetaValues(PeptideIdentificationList &peptide_ids)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static void addXLTargetDecoyMV(std::vector< PeptideIdentification > &peptide_ids)
adds xl_target_decoy MetaValue that combines alpha and beta target_decoy info
static void removeBetaPeptideHits(std::vector< PeptideIdentification > &peptide_ids)
removes beta peptides from cross-link IDs, since all info is already contained in the alpha peptide h...
static void computeDeltaScores(PeptideIdentificationList &peptide_ids)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static double computePrecursorError(const OPXLDataStructs::CrossLinkSpectrumMatch &csm, double precursor_mz, int precursor_charge)
Computes the mass error of a precursor mass to a hit.
static std::vector< PeptideIdentification > combineTopRanksFromPairs(PeptideIdentificationList &peptide_ids, Size number_top_hits)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static std::vector< OPXLDataStructs::XLPrecursor > enumerateCrossLinksAndMasses(const std::vector< OPXLDataStructs::AASeqWithMass > &peptides, double cross_link_mass_light, const DoubleList &cross_link_mass_mono_link, const StringList &cross_link_residue1, const StringList &cross_link_residue2, const std::vector< double > &spectrum_precursors, std::vector< int > &precursor_correction_positions, double precursor_mass_tolerance, bool precursor_mass_tolerance_unit_ppm)
Enumerates precursor masses for all candidates in an XL-MS search.
Container for peptide identifications from multiple spectra.
Definition PeptideIdentificationList.h:66
Represents the set of candidates (SpectrumMatches) identified for a single precursor spectrum.
Definition PeptideIdentification.h:64
const std::vector< PeptideHit > & getHits() const
returns the peptide hits as const
Representation of a protein identification run.
Definition ProteinIdentification.h:54
A more convenient string class.
Definition String.h:34
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
std::vector< Int > IntList
Vector of signed integers.
Definition ListUtils.h:29
std::vector< String > StringList
Vector of String.
Definition ListUtils.h:44
std::vector< double > DoubleList
Vector of double precision real types.
Definition ListUtils.h:36
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
A comparator for PeptideIdentifications that compares the scores in the first PeptideHit.
Definition OPXLHelper.h:34