libpappsomspp
Library for mass spectrometry
peptidenaturalisotopeaverage.cpp
Go to the documentation of this file.
1 
2 /*******************************************************************************
3  * Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
4  *
5  * This file is part of the PAPPSOms++ library.
6  *
7  * PAPPSOms++ is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * PAPPSOms++ is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
19  *
20  * Contributors:
21  * Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
22  *implementation
23  ******************************************************************************/
24 
25 #include "../pappsoexception.h"
27 
29 
30 namespace pappso
31 {
33  const PeptideInterfaceSp &peptide,
34  unsigned int askedIsotopeRank,
35  unsigned int isotopeLevel,
36  unsigned int charge,
37  PrecisionPtr precision)
39  askedIsotopeRank,
40  isotopeLevel,
41  charge,
42  precision)
43 {
44 }
45 
47  const PeptideNaturalIsotopeList &isotopeList,
48  unsigned int askedIsotopeRank,
49  unsigned int isotope_number,
50  unsigned int charge,
51  PrecisionPtr precision)
52  : mcsp_peptideSp(isotopeList.getPeptideInterfaceSp()),
53  m_isotopeLevel(isotope_number),
54  m_isotopeRank(askedIsotopeRank),
55  m_z(charge),
56  mp_precision(precision)
57 { // get the askedIsotopeRank :
58  std::vector<PeptideNaturalIsotopeSp> v_isotope_list(
59  isotopeList.getByIsotopeNumber(isotope_number, m_z));
60 
61  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
62  // << "v_isotope_list.size()=" << v_isotope_list.size() << " "
63  // << isotope_number << " " << askedIsotopeRank;
64  m_abundanceRatio = 0;
65  m_averageMz = 0;
66  if(askedIsotopeRank > v_isotope_list.size())
67  {
68  // there is no isotope at this rank
69  return;
70  // throw PappsoException(QObject::tr("askedIsotopeRank greater than
71  // v_isotope_list.size() %1 vs
72  // %2").arg(askedIsotopeRank).arg(v_isotope_list.size()));
73  }
74  else if(askedIsotopeRank < 1)
75  {
76  throw PappsoException(
77  QObject::tr("askedIsotopeRank must be 1 or more and not %1")
78  .arg(askedIsotopeRank));
79  }
80 
81  unsigned int rank = 0;
82 
83  recursiveDepletion(v_isotope_list, rank);
84 
85  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
86 }
87 
88 
89 void
91  std::vector<PeptideNaturalIsotopeSp> &v_isotope_list, unsigned int rank)
92 {
93  rank++;
94 
95  m_abundanceRatio = 0;
96  m_averageMz = 0;
98  std::vector<PeptideNaturalIsotopeSp> peptide_list;
99  // select neighbors in the precision range :
100  MzRange mz_range(v_isotope_list[0].get()->getMz(m_z), mp_precision);
101 
102  for(auto &isotope_sp : v_isotope_list)
103  {
104  if(mz_range.contains(isotope_sp.get()->getMz(m_z)))
105  {
106  peptide_list.push_back(isotope_sp);
107  m_abundanceRatio += isotope_sp.get()->getIntensityRatio(m_z);
108  m_averageMz += (isotope_sp.get()->getMz(m_z) *
109  isotope_sp.get()->getIntensityRatio(m_z));
110  }
111  }
112 
113  if(peptide_list.size() > 0)
114  {
116 
117  // depletion
118  auto it_remove = std::remove_if(
119  v_isotope_list.begin(),
120  v_isotope_list.end(),
121  [peptide_list](const PeptideNaturalIsotopeSp &isotope_sp) {
122  auto it =
123  std::find(peptide_list.begin(), peptide_list.end(), isotope_sp);
124  return (it != peptide_list.end());
125  });
126  v_isotope_list.erase(it_remove, v_isotope_list.end());
127 
128  if(rank == m_isotopeRank)
129  {
130  m_peptideNaturalIsotopeSpList = peptide_list;
131  return;
132  }
133  else
134  {
135  unsigned int charge = m_z;
136  std::sort(v_isotope_list.begin(),
137  v_isotope_list.end(),
138  [charge](const PeptideNaturalIsotopeSp &m,
139  const PeptideNaturalIsotopeSp &n) {
140  return (m.get()->getIntensityRatio(charge) >
141  n.get()->getIntensityRatio(charge));
142  });
143  recursiveDepletion(v_isotope_list, rank);
144  }
145  }
146  else
147  {
148  m_abundanceRatio = 0;
149  m_averageMz = 0;
150  }
151 }
152 
155 {
156  return std::make_shared<PeptideNaturalIsotopeAverage>(*this);
157 }
158 
160  const PeptideNaturalIsotopeAverage &other)
161  : mcsp_peptideSp(other.mcsp_peptideSp), mp_precision(other.mp_precision)
162 {
163 
165 
166  m_averageMz = other.m_averageMz;
170  m_z = other.m_z;
171 }
172 
174 {
175 }
176 
179 {
180  return m_averageMz;
181 }
182 
185 {
186  return m_abundanceRatio;
187 }
188 
189 unsigned int
191 {
192  return m_z;
193 }
194 
195 unsigned int
197 {
198  return m_isotopeLevel;
199 }
200 
201 unsigned int
203 {
204  return m_isotopeRank;
205 }
206 
207 const std::vector<PeptideNaturalIsotopeSp> &
209 {
211 }
212 
213 const PeptideInterfaceSp &
215 {
216  return mcsp_peptideSp;
217 }
218 
221 {
222  return mp_precision;
223 }
224 
225 bool
227 {
228  // qDebug() << "PeptideNaturalIsotopeAverage::matchPeak";
229  // qDebug() << "PeptideNaturalIsotopeAverage::matchPeak precision " <<
230  // mp_precision.getDelta(200);
231  return (MzRange(getMz(), mp_precision).contains(peak_mz));
232 }
233 
234 bool
236 {
237  return (m_peptideNaturalIsotopeSpList.size() == 0);
238 }
239 
240 } // namespace pappso
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:48
pappso::PeptideNaturalIsotopeAverage::getMz
pappso_double getMz() const
Definition: peptidenaturalisotopeaverage.cpp:178
pappso::PeptideNaturalIsotopeAverage::getCharge
unsigned int getCharge() const
Definition: peptidenaturalisotopeaverage.cpp:190
pappso::PeptideNaturalIsotopeAverage::mp_precision
PrecisionPtr mp_precision
Definition: peptidenaturalisotopeaverage.h:85
pappso::PeptideNaturalIsotopeAverage::~PeptideNaturalIsotopeAverage
~PeptideNaturalIsotopeAverage()
Definition: peptidenaturalisotopeaverage.cpp:173
pappso::PeptideNaturalIsotopeAverage::m_peptideNaturalIsotopeSpList
std::vector< PeptideNaturalIsotopeSp > m_peptideNaturalIsotopeSpList
Definition: peptidenaturalisotopeaverage.h:78
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks
Definition: aa.cpp:39
pappso::PeptideNaturalIsotopeAverage::getIsotopeNumber
unsigned int getIsotopeNumber() const
Definition: peptidenaturalisotopeaverage.cpp:196
pappso::PeptideNaturalIsotopeAverage::recursiveDepletion
void recursiveDepletion(std::vector< PeptideNaturalIsotopeSp > &v_isotope_list, unsigned int rank)
Definition: peptidenaturalisotopeaverage.cpp:90
pappso::PeptideNaturalIsotopeAverage::getComponents
const std::vector< PeptideNaturalIsotopeSp > & getComponents() const
Definition: peptidenaturalisotopeaverage.cpp:208
pappso::PeptideNaturalIsotopeAverage
Definition: peptidenaturalisotopeaverage.h:43
pappso::MzRange::contains
bool contains(pappso_double) const
Definition: mzrange.cpp:103
pappso::PeptideNaturalIsotopeAverage::getIntensityRatio
pappso_double getIntensityRatio() const
Definition: peptidenaturalisotopeaverage.cpp:184
pappso::PeptideNaturalIsotopeAverage::m_isotopeRank
unsigned int m_isotopeRank
Definition: peptidenaturalisotopeaverage.h:83
peptidenaturalisotopeaverage.h
pappso::PeptideInterfaceSp
std::shared_ptr< const PeptideInterface > PeptideInterfaceSp
Definition: peptideinterface.h:38
pappso::PeptideNaturalIsotopeAverage::m_averageMz
pappso_double m_averageMz
Definition: peptidenaturalisotopeaverage.h:80
pappso::MzRange
Definition: mzrange.h:46
pappso::PeptideNaturalIsotopeAverage::PeptideNaturalIsotopeAverage
PeptideNaturalIsotopeAverage(const PeptideInterfaceSp &peptide, unsigned int askedIsotopeRank, unsigned int isotopeLevel, unsigned int charge, PrecisionPtr precision)
Definition: peptidenaturalisotopeaverage.cpp:32
pappso::PeptideNaturalIsotopeSp
std::shared_ptr< const PeptideNaturalIsotope > PeptideNaturalIsotopeSp
Definition: peptidenaturalisotope.h:41
pappso::PeptideNaturalIsotopeAverage::getPrecision
PrecisionPtr getPrecision() const
Definition: peptidenaturalisotopeaverage.cpp:220
pappso::PeptideNaturalIsotopeAverage::getIsotopeRank
unsigned int getIsotopeRank() const
Definition: peptidenaturalisotopeaverage.cpp:202
pappso::PrecisionBase
Definition: precision.h:44
pappso::PeptideNaturalIsotopeAverage::makePeptideNaturalIsotopeAverageSp
PeptideNaturalIsotopeAverageSp makePeptideNaturalIsotopeAverageSp() const
Definition: peptidenaturalisotopeaverage.cpp:154
pappso::PeptideNaturalIsotopeAverage::isEmpty
bool isEmpty() const
Definition: peptidenaturalisotopeaverage.cpp:235
pappso::PeptideNaturalIsotopeAverage::m_z
unsigned int m_z
Definition: peptidenaturalisotopeaverage.h:84
pappso::PeptideNaturalIsotopeAverage::matchPeak
virtual bool matchPeak(pappso_double peak_mz) const final
Definition: peptidenaturalisotopeaverage.cpp:226
pappso::PeptideNaturalIsotopeAverage::mcsp_peptideSp
const PeptideInterfaceSp mcsp_peptideSp
Definition: peptidenaturalisotopeaverage.h:77
pappso::PeptideNaturalIsotopeAverage::getPeptideInterfaceSp
const PeptideInterfaceSp & getPeptideInterfaceSp() const
Definition: peptidenaturalisotopeaverage.cpp:214
pappso::PeptideNaturalIsotopeList::getByIsotopeNumber
std::vector< PeptideNaturalIsotopeSp > getByIsotopeNumber(unsigned int isotopeLevel, unsigned int charge) const
Definition: peptidenaturalisotopelist.cpp:323
peptidenaturalisotopelist.h
peptide natural isotope model
pappso::PeptideNaturalIsotopeAverage::m_abundanceRatio
pappso_double m_abundanceRatio
Definition: peptidenaturalisotopeaverage.h:81
pappso::PeptideNaturalIsotopeAverageSp
std::shared_ptr< const PeptideNaturalIsotopeAverage > PeptideNaturalIsotopeAverageSp
Definition: peptidenaturalisotopeaverage.h:37
pappso::PeptideNaturalIsotopeList
Definition: peptidenaturalisotopelist.h:49
pappso::PeptideNaturalIsotopeAverage::m_isotopeLevel
unsigned int m_isotopeLevel
Definition: peptidenaturalisotopeaverage.h:82
pappso::PappsoException
Definition: pappsoexception.h:42