libpappsomspp
Library for mass spectrometry
massspectrumwidget.cpp
Go to the documentation of this file.
1 /**
2  * \file pappsomspp/widget/spectrumwidget/massspectrumwidget.cpp
3  * \date 22/12/2017
4  * \author Olivier Langella
5  * \brief plot a sectrum and annotate with peptide
6  */
7 
8 
9 /*******************************************************************************
10  * Copyright (c) 2017 Olivier Langella <Olivier.Langella@u-psud.fr>.
11  *
12  * This file is part of the PAPPSOms++ library.
13  *
14  * PAPPSOms++ is free software: you can redistribute it and/or modify
15  * it under the terms of the GNU General Public License as published by
16  * the Free Software Foundation, either version 3 of the License, or
17  * (at your option) any later version.
18  *
19  * PAPPSOms++ is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
26  *
27  * Contributors:
28  * Olivier Langella <Olivier.Langella@u-psud.fr> - initial API and
29  *implementation
30  ******************************************************************************/
31 #include "massspectrumwidget.h"
32 #include "../../pappsoexception.h"
33 #include "../../peptide/peptidenaturalisotopelist.h"
34 #include <QDebug>
35 #include <QWidget>
36 
37 
38 using namespace pappso;
39 
41  : GraphicDeviceWidget(parent)
42 {
43  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
44 
45  _ms_level = 1;
47  _custom_plot = nullptr;
48 
49  this->setLayout(new QHBoxLayout(this));
50 
51  this->layout()->setMargin(0);
52  setVisibleMassDelta(false);
53  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
54 }
56 {
57 }
58 
59 bool
60 MassSpectrumWidget::savePdf(const QString &fileName, int width, int height)
61 {
62 
63  if(_custom_plot != nullptr)
64  {
65  return _custom_plot->savePdf(fileName, width, height);
66  }
67  else
68  {
69  return false;
70  }
71 }
72 
73 
74 void
75 MassSpectrumWidget::toQPaintDevice(QPaintDevice *device, const QSize &size)
76 {
77 
78  if(_custom_plot != nullptr)
79  {
80  QCPPainter painter;
81  painter.begin(device);
82  _custom_plot->toPainter(&painter, size.width(), size.height());
83  painter.end();
84  }
85 }
86 void
88 {
89  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
90  if(_custom_plot != nullptr)
91  {
92  if(visible == _is_visible_mass_delta)
93  return;
94  delete _custom_plot;
95  }
96  _is_visible_mass_delta = visible;
97  while(auto item = this->layout()->takeAt(0))
98  {
99  delete item->widget();
100  }
101  qDebug() << "SpectrumWidget::setVisibleMassDelta new";
102  _custom_plot = new QCPSpectrum(this, visible);
103  this->layout()->addWidget(_custom_plot);
104  qDebug() << "SpectrumWidget::setVisibleMassDelta clear";
105  _custom_plot->xAxis->setLabel("m/z");
106  _custom_plot->yAxis->setLabel("intensity");
107  qDebug() << "SpectrumWidget::setVisibleMassDelta 2";
108  _custom_plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
109  _custom_plot->axisRect()->setRangeDrag(Qt::Horizontal);
110  _custom_plot->axisRect()->setRangeZoom(Qt::Horizontal);
111  qDebug() << "SpectrumWidget::setVisibleMassDelta 3";
112  // legend->setVisible(false);
113  // legend->setFont(QFont("Helvetica",9));
114  // set locale to english, so we get english decimal separator:
115  // setLocale(QLocale(QLocale::English, QLocale::UnitedKingdom));
116  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
117 }
118 void
120 {
121  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
123  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
124  _custom_plot->clearItems();
126  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
127 }
128 
129 void
130 MassSpectrumWidget::setPeptideCharge(unsigned int parent_ion_charge)
131 {
132  _peptide_charge = parent_ion_charge;
133 }
134 void
135 MassSpectrumWidget::setIonList(const std::list<PeptideIon> &ion_list)
136 {
137  _ion_list = ion_list;
138 }
139 
140 void
141 MassSpectrumWidget::setMsLevel(unsigned int ms_level)
142 {
143  qDebug() << "SpectrumWidget::setMsLevel begin " << ms_level;
144  _ms_level = ms_level;
145 
146 
147  if(_ms_level == 1)
148  {
149  setVisibleMassDelta(false);
150  }
151  else
152  {
153  setVisibleMassDelta(true);
154  }
155 
156  //_precision._precision = precision._precision;
157 }
158 void
160 {
161  qDebug() << "SpectrumWidget::setMs1Precision begin " << precision->toString();
162  _p_ms1_precision = precision;
163  //_precision._precision = precision._precision;
164 }
165 void
167 {
168  qDebug() << "SpectrumWidget::setMs2Precision begin " << precision->toString();
169  _p_ms2_precision = precision;
170  //_precision._precision = precision._precision;
171 }
172 
173 void
174 MassSpectrumWidget::setMaximumIsotopeNumber(unsigned int max_isotope_number)
175 {
176  _max_isotope_number = max_isotope_number;
177 }
178 
179 void
180 MassSpectrumWidget::setMaximumIsotopeRank(unsigned int max_isotope_rank)
181 {
182  _max_isotope_rank = max_isotope_rank;
183 }
184 void
186 {
187  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
188  << " _max_isotope_number=" << _max_isotope_number;
189  clearData();
190  if((_spectrum_sp == nullptr) || (_peptide_sp == nullptr))
191  {
193  }
194  else
195  {
196  if(_ms_level > 1)
197  {
198  PeptideIsotopeSpectrumMatch psm_match(*(_spectrum_sp.get()),
199  _peptide_sp,
202  _ion_list,
205 
207  }
208  else
209  {
211  }
213  }
214  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
215 }
216 
217 void
219 {
220  qDebug() << "SpectrumWidget::setPeptideSp begin";
221  _peptide_sp = peptide_sp;
222  qDebug() << "SpectrumWidget::setPeptideSp end";
223 }
224 
225 void
227 {
228  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
229  _spectrum_sp = spectrum;
230 
231  clearData();
232  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
233 }
234 
235 void
237 {
238  qDebug() << "SpectrumWidget::rescale begin";
239 
241 
242  /*
243  if (_p_delta_axis_rect != nullptr) {
244  _p_delta_axis_rect->axis(QCPAxis::AxisType::atLeft)->rescale();
245  }
246  */
247  _custom_plot->replot();
248  qDebug() << "SpectrumWidget::rescale end";
249 }
250 
251 void
253  const QualifiedMassSpectrum &spectrum)
254 {
255  qDebug() << "SpectrumWidget::setQualifiedMassSpectrum begin "
256  << spectrum.getPrecursorCharge();
257 
258  setMsLevel(spectrum.getMsLevel());
260 
261  qDebug() << "SpectrumWidget::setQualifiedMassSpectrum end";
262 }
263 
264 void
266 {
267 
268  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
269  peptideAnnotate();
270  if(_ms_level == 1)
271  {
272  if(_spectrum_sp != nullptr)
273  {
274  if(_isotope_mass_list.size() > 0)
275  {
276 
277  qDebug() << "SpectrumWidget::plot begin _isotope_mass_list "
278  << _isotope_mass_list.size();
279  std::sort(_isotope_mass_list.begin(),
280  _isotope_mass_list.end(),
283  return a.get()->getMz() < b.get()->getMz();
284  });
285 
286  if(_isotope_mass_list.size() > 0)
287  {
288  PeptideNaturalIsotopeAverageSp precursor_peptide =
289  _isotope_mass_list.at(0);
290  qDebug() << "SpectrumWidget::plot precursor_peptide "
291  << precursor_peptide.get()->getMz();
292  MzRange precursor_mass(precursor_peptide.get()->getMz(),
294  DataPoint monoisotope_peak;
295  monoisotope_peak.y = 0;
296 
297  for(const DataPoint &peak : *(_spectrum_sp.get()))
298  {
299  if(precursor_mass.contains(peak.x))
300  {
301  if(peak.y > monoisotope_peak.y)
302  {
303  qDebug() << "SpectrumWidget::plot "
304  "(peak.intensity > "
305  "monoisotope_peak.intensity) ";
306  monoisotope_peak = peak;
307  }
308  }
309  }
310  if(monoisotope_peak.y > 0)
311  {
312  qDebug() << "SpectrumWidget::plot addData ";
314  monoisotope_peak.y);
315  }
316  }
317  }
318  }
319  }
320  else
321  {
322 
324  [](const PeakIonIsotopeMatch &a, const PeakIonIsotopeMatch &b) {
325  return a.getPeak().y > b.getPeak().y;
326  });
327  unsigned int i = 0;
328  for(const PeakIonIsotopeMatch &peak_ion_match :
330  {
331  _custom_plot->addPeakIonIsotopeMatch(peak_ion_match);
332 
333  _custom_plot->addMassDelta(peak_ion_match);
334  //_p_delta_graph->addData(peak_ion_match.getPeak().x,
335  // peak_ion_match.getPeak().y);
336  if(i < _tag_nmost_intense)
337  {
338  QString plusstr = "+";
339  plusstr = plusstr.repeated(peak_ion_match.getCharge());
340  QCPItemText *text_label = new QCPItemText(_custom_plot);
341  text_label->setVisible(true);
342  //_custom_plot->addItem(text_label);
343  text_label->setPositionAlignment(Qt::AlignBottom |
344  Qt::AlignHCenter);
345  text_label->position->setType(QCPItemPosition::ptPlotCoords);
346  text_label->position->setCoords(
347  peak_ion_match.getPeak().x,
348  peak_ion_match.getPeak()
349  .y); // place position at center/top of axis rect
350  text_label->setFont(QFont(font().family(), 8));
351  text_label->setText(
352  QString("%1%2%3")
353  .arg(peak_ion_match.getPeptideFragmentIonSp()
354  .get()
355  ->getPeptideIonName())
356  .arg(peak_ion_match.getPeptideFragmentIonSp().get()->size())
357  .arg(plusstr));
358  // text_label->setPen(QPen(PeptideFragmentIon::getPeptideIonColor(peak_ion_match.getPeptideIonType()),
359  // 1)); // show black border around text
360  text_label->setColor(
362  peak_ion_match.getPeptideIonType())));
363  }
364  i++;
365  }
366  }
367 
368  _custom_plot->replot();
369  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
370 }
371 void
373 {
374  emit mzChanged(mz);
375 }
376 
377 void
379 {
380  qDebug() << "SpectrumWidget::peakChangeEvent begin " << p_peak_match;
381  if(_p_mouse_peak != p_peak_match)
382  {
383  _p_mouse_peak = p_peak_match;
384  DataPointCstSPtr peak_shp;
385  // emit peakChanged(peak_shp);
386  if(_p_mouse_peak != nullptr)
387  {
388  qDebug() << "SpectrumWidget::peakChangeEvent _p_mouse_peak->x"
389  << _p_mouse_peak->x;
390  peak_shp = _p_mouse_peak->makeDataPointCstSPtr();
391  emit peakChanged(peak_shp);
392  // try to find matched ion (if it exists)
393  for(const PeakIonIsotopeMatch &peak_ion_match :
395  {
396  if(peak_ion_match.getPeak().x == _p_mouse_peak->x)
397  {
398  // found
399  emit ionChanged(std::make_shared<const PeakIonIsotopeMatch>(
400  PeakIonIsotopeMatch(peak_ion_match)));
401  }
402  }
403  }
404  else
405  {
406  qDebug() << "SpectrumWidget::peakChangeEvent no peak";
407  emit peakChanged(peak_shp);
408  }
409  }
410 }
411 
412 void
414 {
415  qDebug() << "SpectrumWidget::computeIsotopeMassList "
416  << _p_ms1_precision->toString();
417  _isotope_mass_list.resize(0);
418  // compute isotope masses :
419  if(_peptide_sp != nullptr)
420  {
422  std::map<unsigned int, pappso::pappso_double> map_isotope_number =
423  isotope_list.getIntensityRatioPerIsotopeNumber();
424 
425  for(unsigned int i = 0; i < map_isotope_number.size(); i++)
426  {
427 
428  unsigned int asked_rank = 0;
429  unsigned int given_rank = 0;
430  bool more_rank = true;
431  while(more_rank)
432  {
433  asked_rank++;
434  pappso::PeptideNaturalIsotopeAverage isotopeAverageMono(
435  isotope_list, asked_rank, i, _peptide_charge, _p_ms1_precision);
436  given_rank = isotopeAverageMono.getIsotopeRank();
437  if(given_rank < asked_rank)
438  {
439  more_rank = false;
440  }
441  else if(isotopeAverageMono.getIntensityRatio() == 0)
442  {
443  more_rank = false;
444  }
445  else
446  {
447  // isotopeAverageMono.makePeptideNaturalIsotopeAverageSp();
448  _isotope_mass_list.push_back(
449  isotopeAverageMono.makePeptideNaturalIsotopeAverageSp());
450  }
451  }
452  }
453  }
454 }
pappso::QualifiedMassSpectrum::getMsLevel
uint getMsLevel() const
Get the mass spectrum level.
Definition: qualifiedmassspectrum.cpp:232
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:69
pappso::QCPSpectrum::setSpectrumP
void setSpectrumP(const MassSpectrum *spectrum)
Definition: qcpspectrum.cpp:153
pappso::MassSpectrumCstSPtr
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
Definition: massspectrum.h:76
massspectrumwidget.h
pappso::MassSpectrumWidget::mzChangeEvent
void mzChangeEvent(pappso_double mz) const
Definition: massspectrumwidget.cpp:372
pappso::PeptideIsotopeSpectrumMatch
Definition: peptideisotopespectrummatch.h:39
pappso::MassSpectrumWidget::~MassSpectrumWidget
~MassSpectrumWidget()
Definition: massspectrumwidget.cpp:55
pappso::MassSpectrumWidget::ionChanged
void ionChanged(pappso::PeakIonIsotopeMatchCstSPtr ion) const
pappso::DataPoint::y
pappso_double y
Definition: datapoint.h:23
pappso::PeptideNaturalIsotopeList::getIntensityRatioPerIsotopeNumber
const std::map< unsigned int, pappso_double > getIntensityRatioPerIsotopeNumber() const
Definition: peptidenaturalisotopelist.cpp:314
pappso::MassSpectrumWidget::_isotope_mass_list
std::vector< pappso::PeptideNaturalIsotopeAverageSp > _isotope_mass_list
list of isotope precursors
Definition: massspectrumwidget.h:149
pappso::MassSpectrumWidget::plot
void plot()
Definition: massspectrumwidget.cpp:265
pappso
Definition: aa.cpp:38
pappso::QCPSpectrum::clearData
void clearData()
Definition: qcpspectrum.cpp:238
pappso::MassSpectrumWidget::QCPSpectrum
friend class QCPSpectrum
Definition: massspectrumwidget.h:123
pappso::MassSpectrumWidget::_is_visible_mass_delta
bool _is_visible_mass_delta
Definition: massspectrumwidget.h:152
pappso::PeptideNaturalIsotopeAverage
Definition: peptidenaturalisotopeaverage.h:63
pappso::PeptideIonNter::a
@ a
pappso::MzRange::contains
bool contains(pappso_double) const
Definition: mzrange.cpp:124
pappso::MassSpectrumWidget::setVisibleMassDelta
void setVisibleMassDelta(bool visible)
Definition: massspectrumwidget.cpp:87
pappso::MassSpectrumWidget::_max_isotope_number
unsigned int _max_isotope_number
Definition: massspectrumwidget.h:135
pappso::DataPoint
Definition: datapoint.h:20
pappso::PeptideIonCter::y
@ y
pappso::PeptideNaturalIsotopeAverage::getIntensityRatio
pappso_double getIntensityRatio() const
Definition: peptidenaturalisotopeaverage.cpp:205
pappso::MassSpectrumWidget::MassSpectrumWidget
MassSpectrumWidget(QWidget *parent=0)
Definition: massspectrumwidget.cpp:40
pappso::MassSpectrumWidget::setMs1Precision
void setMs1Precision(PrecisionPtr precision)
Definition: massspectrumwidget.cpp:159
pappso::DataPoint::makeDataPointCstSPtr
DataPointCstSPtr makeDataPointCstSPtr() const
Definition: datapoint.cpp:55
pappso::MassSpectrumWidget::setIonList
void setIonList(const std::list< PeptideIon > &ion_list)
Definition: massspectrumwidget.cpp:135
pappso::MassSpectrumWidget::toQPaintDevice
void toQPaintDevice(QPaintDevice *device, const QSize &size) override
Definition: massspectrumwidget.cpp:75
pappso::DataPointCstSPtr
std::shared_ptr< const DataPoint > DataPointCstSPtr
Definition: datapoint.h:16
pappso::MassSpectrumWidget::setPeptideSp
void setPeptideSp(const PeptideSp &peptide_sp)
Definition: massspectrumwidget.cpp:218
pappso::MzRange
Definition: mzrange.h:66
pappso::MassSpectrumWidget::_ion_list
std::list< PeptideIon > _ion_list
Definition: massspectrumwidget.h:143
pappso::MassSpectrumWidget::rescale
void rescale()
Definition: massspectrumwidget.cpp:236
pappso::QualifiedMassSpectrum
Class representing a fully specified mass spectrum.
Definition: qualifiedmassspectrum.h:85
pappso::MassSpectrumWidget::clearData
void clearData()
Definition: massspectrumwidget.cpp:119
pappso::MassSpectrumWidget::setMassSpectrumCstSPtr
void setMassSpectrumCstSPtr(const MassSpectrumCstSPtr &spectrum)
Definition: massspectrumwidget.cpp:226
pappso::PeptideIsotopeSpectrumMatch::getPeakIonIsotopeMatchList
const std::list< PeakIonIsotopeMatch > & getPeakIonIsotopeMatchList() const
Definition: peptideisotopespectrummatch.cpp:195
pappso::QCPSpectrum::addMs1IsotopePattern
void addMs1IsotopePattern(const std::vector< pappso::PeptideNaturalIsotopeAverageSp > &isotope_mass_list, pappso_double intensity)
Definition: qcpspectrum.cpp:410
GraphicDeviceWidget
Definition: graphicdevicewidget.h:36
pappso::MassSpectrumWidget::_peptide_charge
unsigned int _peptide_charge
Definition: massspectrumwidget.h:140
pappso::MassSpectrumWidget::setPeptideCharge
void setPeptideCharge(unsigned int parent_ion_charge)
Definition: massspectrumwidget.cpp:130
pappso::MassSpectrumWidget::setQualifiedMassSpectrum
void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)
Definition: massspectrumwidget.cpp:252
pappso::DataPoint::x
pappso_double x
Definition: datapoint.h:22
pappso::MassSpectrumWidget::_p_ms1_precision
PrecisionPtr _p_ms1_precision
Definition: massspectrumwidget.h:138
pappso::QualifiedMassSpectrum::getPrecursorCharge
uint getPrecursorCharge() const
Get the precursor charge.
Definition: qualifiedmassspectrum.cpp:200
pappso::PrecisionPtr
const typedef PrecisionBase * PrecisionPtr
Definition: precision.h:143
pappso::PeptideNaturalIsotopeAverage::getIsotopeRank
unsigned int getIsotopeRank() const
Definition: peptidenaturalisotopeaverage.cpp:223
pappso::MassSpectrumWidget::peakChangeEvent
void peakChangeEvent(const DataPoint *p_peak_match)
Definition: massspectrumwidget.cpp:378
pappso::MassSpectrumWidget::setMaximumIsotopeRank
void setMaximumIsotopeRank(unsigned int max_isotope_rank)
Definition: massspectrumwidget.cpp:180
pappso::MassSpectrumWidget::_ms_level
unsigned int _ms_level
Definition: massspectrumwidget.h:141
pappso::PeptideNaturalIsotopeAverage::makePeptideNaturalIsotopeAverageSp
PeptideNaturalIsotopeAverageSp makePeptideNaturalIsotopeAverageSp() const
Definition: peptidenaturalisotopeaverage.cpp:175
pappso::PeptideFragmentIon::getPeptideIonColor
static const QColor getPeptideIonColor(PeptideIon ion_type)
Definition: peptidefragmention.cpp:194
pappso::QualifiedMassSpectrum::getMassSpectrumCstSPtr
MassSpectrumCstSPtr getMassSpectrumCstSPtr() const
Get the MassSpectrumCstSPtr.
Definition: qualifiedmassspectrum.cpp:170
pappso::MassSpectrumWidget::computeIsotopeMassList
void computeIsotopeMassList()
Definition: massspectrumwidget.cpp:413
pappso::QCPSpectrum::addPeakIonIsotopeMatch
void addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match)
Definition: qcpspectrum.cpp:403
pappso::MassSpectrumWidget::_spectrum_sp
MassSpectrumCstSPtr _spectrum_sp
Definition: massspectrumwidget.h:137
pappso::PeptideIonNter::b
@ b
pappso::PrecisionUnit::mz
@ mz
pappso::MassSpectrumWidget::_tag_nmost_intense
unsigned int _tag_nmost_intense
Definition: massspectrumwidget.h:134
pappso::MassSpectrumWidget::_custom_plot
QCPSpectrum * _custom_plot
Definition: massspectrumwidget.h:151
pappso::MassSpectrumWidget::peptideAnnotate
void peptideAnnotate()
Definition: massspectrumwidget.cpp:185
pappso::PeptideFragmentIonListBase::getCIDionList
static std::list< PeptideIon > getCIDionList()
Definition: peptidefragmentionlistbase.cpp:62
pappso::QCPSpectrum::addMassDelta
void addMassDelta(const PeakIonIsotopeMatch &peak_ion_match)
Definition: qcpspectrum.cpp:382
pappso::MassSpectrumWidget::mzChanged
void mzChanged(double mz) const
pappso::PeakIonIsotopeMatch
Definition: peakionisotopematch.h:36
pappso::MassSpectrumWidget::setMs2Precision
void setMs2Precision(PrecisionPtr precision)
Definition: massspectrumwidget.cpp:166
pappso::MassSpectrumWidget::_p_mouse_peak
const DataPoint * _p_mouse_peak
Definition: massspectrumwidget.h:154
pappso::MassSpectrumWidget::peakChanged
void peakChanged(pappso::DataPointCstSPtr peak_match) const
pappso::MassSpectrumWidget::setMsLevel
void setMsLevel(unsigned int ms_level)
Definition: massspectrumwidget.cpp:141
pappso::MassSpectrumWidget::_peptide_sp
PeptideSp _peptide_sp
Definition: massspectrumwidget.h:142
pappso::MassSpectrumWidget::setMaximumIsotopeNumber
void setMaximumIsotopeNumber(unsigned int max_isotope_number)
Definition: massspectrumwidget.cpp:174
pappso::PeptideSp
std::shared_ptr< const Peptide > PeptideSp
Definition: aamodification.h:68
pappso::QCPSpectrum::rescale
void rescale()
Definition: qcpspectrum.cpp:184
pappso::MassSpectrumWidget::_peak_ion_isotope_match_list
std::list< PeakIonIsotopeMatch > _peak_ion_isotope_match_list
Definition: massspectrumwidget.h:145
pappso::MassSpectrumWidget::_p_ms2_precision
PrecisionPtr _p_ms2_precision
Definition: massspectrumwidget.h:139
pappso::PeptideNaturalIsotopeAverageSp
std::shared_ptr< const PeptideNaturalIsotopeAverage > PeptideNaturalIsotopeAverageSp
Definition: peptidenaturalisotopeaverage.h:58
pappso::PeptideNaturalIsotopeList
Definition: peptidenaturalisotopelist.h:69
pappso::MassSpectrumWidget::savePdf
bool savePdf(const QString &fileName, int width=0, int height=0)
Definition: massspectrumwidget.cpp:60
pappso::MassSpectrumWidget::_max_isotope_rank
unsigned int _max_isotope_rank
Definition: massspectrumwidget.h:136