OpenMS
Loading...
Searching...
No Matches
NeighborSeq.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: Chris Bielow, Philipp Wang $
6// $Authors: Chris Bielow, Philipp Wang $
7// --------------------------------------------------------------------------
8
9#pragma once
10
13
14#include <vector>
15#include <map>
16
17
18
19namespace OpenMS
20{
41 class OPENMS_DLLAPI NeighborSeq
42 {
43
44 public:
61 NeighborSeq(std::vector<AASequence>&& digested_relevant_peptides);
62
71 MSSpectrum generateSpectrum(const AASequence& peptide_sequence);
72
95 static bool isNeighborSpectrum(const MSSpectrum& spec1, const MSSpectrum& spec2, const double min_shared_ion_fraction, const double mz_bin_size);
106 static int computeSharedIonCount(const MSSpectrum& spec1, const MSSpectrum& spec2, const double& mz_bin_size);
107
144 bool isNeighborPeptide(const AASequence& neighbor_candidate,
145 const double mass_tolerance_pc,
146 const bool mass_tolerance_pc_ppm,
147 const double min_shared_ion_fraction,
148 const double mz_bin_size);
149
152 {
157 int unfindable_peptides = 0;
158 int findable_no_neighbors = 0;
159 int findable_one_neighbor = 0;
160 int findable_multiple_neighbors = 0;
162
164 int total() const
165 {
166 return unfindable_peptides + findable_no_neighbors + findable_one_neighbor + findable_multiple_neighbors;
167 }
168
170 int percentOfTotal_(int count) const
171 {
172 const int t = total();
173 return (t == 0) ? 0 : count * 100 / t;
174 }
175
177 std::string unfindable() const
178 {
179 return StringUtils::toStr(unfindable_peptides) + " (" + StringUtils::toStr(percentOfTotal_(unfindable_peptides)) + "%)";
180 }
181
183 std::string noNB() const
184 {
185 return StringUtils::toStr(findable_no_neighbors) + " (" + StringUtils::toStr(percentOfTotal_(findable_no_neighbors)) + "%)";
186 }
187
189 std::string oneNB() const
190 {
191 return StringUtils::toStr(findable_one_neighbor) + " (" + StringUtils::toStr(percentOfTotal_(findable_one_neighbor)) + "%)";
192 }
193
195 std::string multiNB() const
196 {
197 return StringUtils::toStr(findable_multiple_neighbors) + " (" + StringUtils::toStr(percentOfTotal_(findable_multiple_neighbors)) + "%)";
198 }
199 };
200
203
204 protected:
209 std::map<double, std::vector<int>> createMassLookup_();
210
218 auto findCandidatePositions_(const double mono_weight, double mass_tolerance, const bool mass_tolerance_pc_ppm);
219
220
221 private:
222 std::vector<AASequence> digested_relevant_peptides_;
223 std::map<double, std::vector<int>> mass_position_map_;
224
227
228 std::vector<int> neighbor_stats_;
229
230 }; // class NeighborSeq
231
232} // namespace OpenMS
Representation of a peptide/protein sequence.
Definition AASequence.h:88
The representation of a 1D spectrum.
Definition MSSpectrum.h:44
Subset-neighbor peptide search: find peptides from a wider pool (typically a FASTA digest) that are s...
Definition NeighborSeq.h:42
TheoreticalSpectrumGenerator spec_gen_
for b/y ions with charge 1
Definition NeighborSeq.h:225
MSSpectrum generateSpectrum(const AASequence &peptide_sequence)
Generates a theoretical spectrum for a given peptide sequence with b/y ions at charge 1.
std::vector< int > neighbor_stats_
how many neighbors per reference peptide searched using isNeighborPeptide()?
Definition NeighborSeq.h:228
auto findCandidatePositions_(const double mono_weight, double mass_tolerance, const bool mass_tolerance_pc_ppm)
Finds candidate positions based on a given mono-isotopic weight and mass tolerance.
std::map< double, std::vector< int > > createMassLookup_()
Creates a map of masses to positions from the internal relevant peptides.
static bool isNeighborSpectrum(const MSSpectrum &spec1, const MSSpectrum &spec2, const double min_shared_ion_fraction, const double mz_bin_size)
Whether two spectra share enough peaks (in mz_bin_size m/z bins) to be considered neighbors.
std::vector< AASequence > digested_relevant_peptides_
digested relevant peptides (owned: moved in at construction)
Definition NeighborSeq.h:222
NeighborStats getNeighborStats() const
after calling isNeighborPeptide() multiple times, this function returns the statistics of how many ne...
static int computeSharedIonCount(const MSSpectrum &spec1, const MSSpectrum &spec2, const double &mz_bin_size)
Compute the number of shared ions between two spectra.
std::map< double, std::vector< int > > mass_position_map_
map of masses to positions in digested_relevant_peptides_
Definition NeighborSeq.h:223
bool isNeighborPeptide(const AASequence &neighbor_candidate, const double mass_tolerance_pc, const bool mass_tolerance_pc_ppm, const double min_shared_ion_fraction, const double mz_bin_size)
Whether neighbor_candidate is a spectral neighbor of any of the relevant peptides.
const Residue * x_residue_
residue for unknown amino acid
Definition NeighborSeq.h:226
NeighborSeq(std::vector< AASequence > &&digested_relevant_peptides)
Construct from a vector of "relevant" digested peptides.
Representation of an amino acid residue.
Definition Residue.h:41
Generates theoretical spectra for peptides with various options.
Definition TheoreticalSpectrumGenerator.h:45
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Statistics of how many neighbors were found per reference peptide.
Definition NeighborSeq.h:152
std::string oneNB() const
findable_one_neighbor formatted as "X (Y%)"; returns "X (0%)" when total is 0.
Definition NeighborSeq.h:189
std::string multiNB() const
findable_multiple_neighbors formatted as "X (Y%)"; returns "X (0%)" when total is 0.
Definition NeighborSeq.h:195
int percentOfTotal_(int count) const
percentage (0..100) of count relative to total; returns 0 when total is 0 (avoids integer division by...
Definition NeighborSeq.h:170
std::string unfindable() const
unfindable_peptides formatted as "X (Y%)"; returns "X (0%)" when total is 0.
Definition NeighborSeq.h:177
std::string noNB() const
findable_no_neighbors formatted as "X (Y%)"; returns "X (0%)" when total is 0.
Definition NeighborSeq.h:183
int total() const
Sum of all four categories (i.e. the number of relevant peptides registered at construction time).
Definition NeighborSeq.h:164