40 qDebug() <<
"QCPSpectrum::QCPSpectrum begin";
42 setFocusPolicy(Qt::ClickFocus);
53 QCPMarginGroup *group =
new QCPMarginGroup(
this);
54 this->axisRect()->setMarginGroup(QCP::msLeft | QCP::msRight, group);
58 _p_peak_bars->setWidthType(QCPBars::WidthType::wtAbsolute);
78 SIGNAL(rangeChanged(QCPRange)),
83 std::vector<PeptideIon> all_ion_list = {
98 qDebug() <<
"SpectrumWidget::setVisibleMassDelta 5";
102 QCPBars *p_peak_bars =
new QCPBars(xAxis, yAxis);
103 p_peak_bars->setWidthType(QCPBars::WidthType::wtAbsolute);
108 p_peak_bars->setVisible(
true);
110 std::pair<PeptideIon, QCPBars *>(ion_type, p_peak_bars));
112 qDebug() <<
"SpectrumWidget::setVisibleMassDelta visible ?";
113 setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
123 this->plotLayout()->setRowSpacing(0);
127 this->setAutoAddPlottableToLegend(
false);
132 QCPScatterStyle(QCPScatterStyle::ssDisc, 4.0));
144 SIGNAL(rangeChanged(QCPRange)),
152 qDebug() <<
"QCPSpectrum::QCPSpectrum end";
165 if((spectrum !=
nullptr) && (spectrum->size() != 0))
175 _mz_range.lower = spectrum->front().x - 1;
176 _mz_range.upper = spectrum->back().x + 1;
221 qDebug() <<
"QCPSpectrum::setMzRangeChanged _mz_range.lower"
235 xAxis->setRange(range);
247 _p_peak_bars->setData(QVector<double>(), QVector<double>());
255 pair_ion_bar.second->setData(QVector<double>(), QVector<double>());
256 pair_ion_bar.second->data().clear();
277 if(event->key() == Qt::Key_Control)
281 qDebug() <<
"QCPSpectrum::keyPressEvent end";
287 if(event->key() == Qt::Key_Control)
291 qDebug() <<
"QCPSpectrum::keyReleaseEvent end";
302 _old_y = yAxis->pixelToCoord(event->y());
334 this->yAxis->scaleRange(
_old_y /
y, 0);
339 this->xAxis->moveRange(xAxis->pixelToCoord(
_old_x) -
340 xAxis->pixelToCoord(event->x()));
352 xAxis->pixelToCoord(10) - xAxis->pixelToCoord(8);
366 p_peak_match =
nullptr;
372 if((peak.x > min) && (peak.x <
max))
374 if(p_peak_match ==
nullptr)
376 p_peak_match = &peak;
380 if(fabs(
mz - peak.x) < fabs(
mz - p_peak_match->
x))
382 p_peak_match = &peak;
399 p_peak_match =
nullptr;
405 if((peak.x > min) && (peak.x <
max))
407 if(p_peak_match ==
nullptr)
409 p_peak_match = &peak;
413 if(p_peak_match->
y < peak.y)
415 p_peak_match = &peak;
454 const std::vector<pappso::PeptideNaturalIsotopeAverageSp> &isotope_mass_list,
458 ((
pappso_double)1.0 / isotope_mass_list.at(0).get()->getIntensityRatio()) *
463 peptide.get()->getIntensityRatio() *
472 MzRange range(precursor_mz, ms2_precision);
474 for(
const DataPoint &peak : *_p_spectrum)
476 if((peak.x > range.
lower()) && (peak.x < range.
upper()))
478 mp_peak_bars_precursor->addData(peak.x, peak.y);
479 QCPItemText *text_label =
new QCPItemText(
this);
480 text_label->setVisible(
true);
481 text_label->setPositionAlignment(Qt::AlignBottom | Qt::AlignHCenter);
482 text_label->position->setType(QCPItemPosition::ptPlotCoords);
483 text_label->position->setCoords(
486 text_label->setFont(QFont(font().family(), 8));
487 text_label->setText(
"precursor");
488 text_label->setColor(Qt::cyan);
Class to represent a mass spectrum.
pappso_double lower() const
pappso_double upper() const
virtual const PeptideNaturalIsotopeAverageSp & getPeptideNaturalIsotopeAverageSp() const
PeptideIon getPeptideIonType() const
const DataPoint & getPeak() const
static const QColor getPeptideIonColor(PeptideIon ion_type)
QCPGraph * _p_delta_graph
virtual void keyPressEvent(QKeyEvent *event) override
QCPAxisRect * _p_delta_axis_rect
MassSpectrumWidget * _parent
QCPRange _mass_delta_range
void addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match)
QCPSpectrum(MassSpectrumWidget *parent, bool visible)
virtual void mouseReleaseEvent(QMouseEvent *event) override
QCPRange _intensity_range
void addMassDelta(const PeakIonIsotopeMatch &peak_ion_match)
void getNearestPeakBetween(pappso_double mz, pappso_double mouse_mz_range) const
virtual void mouseMoveEvent(QMouseEvent *event) override
pappso::pappso_double _old_x
void getMostIntensePeakBetween(pappso_double mz, pappso_double mouse_mz_range) const
QCPBars * mp_peak_bars_precursor
void setSpectrumP(const MassSpectrum *spectrum)
void addMs1IsotopePattern(const std::vector< pappso::PeptideNaturalIsotopeAverageSp > &isotope_mass_list, pappso_double intensity)
std::map< PeptideIon, QCPBars * > _map_ion_type_bars
virtual void keyReleaseEvent(QKeyEvent *event) override
void highlightPrecursorPeaks(double precursor_mz, PrecisionPtr ms2_precision)
QCPBars * _p_peak_bars_isotope
const MassSpectrum * _p_spectrum
virtual void mousePressEvent(QMouseEvent *event) override
Q_SLOT void setMzRangeChanged(QCPRange range)
pappso::pappso_double _old_y
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)
@ astar
Nter aldimine ions + NH3 loss.
@ ystar
Cter amino ions + NH3 loss.
@ yo
Cter amino ions + H2O loss.
@ bstar
Nter acylium ions + NH3 loss.
@ bo
Nter acylium ions + H2O loss.
@ ao
Nter aldimine ions + H2O loss.
double pappso_double
A type definition for doubles.
std::shared_ptr< const PeptideNaturalIsotopeAverage > PeptideNaturalIsotopeAverageSp
@ max
maximum of intensities