36#include "../pappsoexception.h"
37#include "../peptide/peptidefragment.h"
38#include "../peptide/peptidefragmentionlistbase.h"
47 unsigned int max_charge,
48 const std::list<PeptideIon> &ion_type_list_in)
53 std::list<DataPoint> peak_list(spectrum.begin(), spectrum.end());
56 std::list<PeptideIon> ion_type_list(ion_type_list_in);
69 for(
auto ion_type : ion_type_list)
74 for(
unsigned int charge = 1; charge <= max_charge; charge++)
76 for(
auto &&ion : ion_list)
80 if(it_peak != peak_list.end())
88 peak_list.erase(it_peak);
97 std::vector<PeptideFragmentIonSp> &v_peptide_fragment_ion,
98 std::vector<unsigned int> &v_peptide_fragment_ion_charge,
100 : _precision(precision)
102 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__;
106 if(v_peptide_fragment_ion.size() != v_peptide_fragment_ion_charge.size())
109 "v_peptide_fragment_ion_charge.size() %2")
110 .arg(v_peptide_fragment_ion.size())
111 .arg(v_peptide_fragment_ion_charge.size()));
115 auto ionIt = v_peptide_fragment_ion.begin();
116 auto chargeIt = v_peptide_fragment_ion_charge.begin();
117 std::list<DataPoint> peak_list(spectrum.begin(), spectrum.end());
119 while(ionIt != v_peptide_fragment_ion.end())
121 std::list<DataPoint>::iterator it_peak =
getBestPeakIterator(peak_list, *ionIt, *chargeIt);
122 if(it_peak != peak_list.end())
126 peak_list.erase(it_peak);
132 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__
139 unsigned int max_charge,
141 const std::list<PeptideIon> &ion_type_list)
142 : _precision(precision)
145 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__
151 unsigned int parent_charge,
153 const std::list<PeptideIon> &ion_type_list)
154 : _precision(precision)
158 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__
164 : _precision(other._precision), _peak_ion_match_list(other._peak_ion_match_list)
168std::list<DataPoint>::iterator
171 unsigned int charge)
const
175 std::list<DataPoint>::iterator itpeak = peak_list.begin();
176 std::list<DataPoint>::iterator itend = peak_list.end();
177 std::list<DataPoint>::iterator itselect = peak_list.end();
181 while(itpeak != itend)
186 if(ion.get()->matchPeak(
_precision, itpeak->x, charge))
190 if(itpeak->y > best_intensity)
192 best_intensity = itpeak->y;
230const std::array<unsigned int, PEPTIDE_ION_TYPE_COUNT> &
Class to represent a mass spectrum.
virtual const PeptideFragmentIonSp & getPeptideFragmentIonSp() const
unsigned int getCharge() const
const std::list< PeptideFragmentIonSp > getPeptideFragmentIonSp(PeptideIon ion_type) const
virtual std::list< DataPoint >::iterator getBestPeakIterator(std::list< DataPoint > &peak_list, const PeptideFragmentIonSp &ion, unsigned int charge) const
void privMatchIonList(const MassSpectrum &spectrum, const PeptideFragmentIonListBase &fragmentIonList, unsigned int max_charge, const std::list< PeptideIon > &ion_type_list)
bool contains(const PeptideFragmentIon *peptideFragmentIonSp, unsigned int z) const
std::array< unsigned int, PEPTIDE_ION_TYPE_COUNT > _ion_type_count
unsigned int countTotalMatchedIons() const
const_iterator end() const
unsigned int size() const
virtual ~PeptideSpectrumMatch()
std::list< PeakIonMatch > _peak_ion_match_list
PeptideSpectrumMatch(const MassSpectrum &spectrum, const pappso::PeptideSp &peptideSp, unsigned int parent_charge, PrecisionPtr precision, const std::list< PeptideIon > &ion_type_list)
const std::array< unsigned int, PEPTIDE_ION_TYPE_COUNT > & getIonTypeCountArray() const
std::list< PeakIonMatch >::const_iterator const_iterator
const_iterator begin() const
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
PeptideIon
PeptideIon enum defines all types of ions (Nter or Cter)
std::shared_ptr< const PeptideFragmentIon > PeptideFragmentIonSp
std::shared_ptr< const Peptide > PeptideSp
double pappso_double
A type definition for doubles.
associate a peak and a peptide + charge
find peaks matching between ions and spectrum