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>());
257 pair_ion_bar.second->setData(QVector<double>(), QVector<double>());
258 pair_ion_bar.second->data().clear();
279 if(event->key() == Qt::Key_Control)
283 qDebug() <<
"QCPSpectrum::keyPressEvent end";
289 if(event->key() == Qt::Key_Control)
293 qDebug() <<
"QCPSpectrum::keyReleaseEvent end";
304 #if QT_VERSION < 0x060000
306 _old_y = yAxis->pixelToCoord(event->y());
308 _old_x =
event->position().x();
309 _old_y = yAxis->pixelToCoord(event->position().y());
328 #if QT_VERSION < 0x060000
339 #if QT_VERSION < 0x060000
352 this->yAxis->scaleRange(
_old_y /
y, 0);
358 #if QT_VERSION < 0x060000
359 this->xAxis->moveRange(xAxis->pixelToCoord(
_old_x) -
360 xAxis->pixelToCoord(event->x()));
362 this->xAxis->moveRange(xAxis->pixelToCoord(
_old_x) -
363 xAxis->pixelToCoord(event->position().x()));
367 #if QT_VERSION < 0x060000
370 _old_x =
event->position().x();
381 xAxis->pixelToCoord(10) - xAxis->pixelToCoord(8);
395 p_peak_match =
nullptr;
401 if((peak.x > min) && (peak.x <
max))
403 if(p_peak_match ==
nullptr)
405 p_peak_match = &peak;
409 if(fabs(
mz - peak.x) < fabs(
mz - p_peak_match->
x))
411 p_peak_match = &peak;
428 p_peak_match =
nullptr;
434 if((peak.x > min) && (peak.x <
max))
436 if(p_peak_match ==
nullptr)
438 p_peak_match = &peak;
442 if(p_peak_match->
y < peak.y)
444 p_peak_match = &peak;
483 const std::vector<pappso::PeptideNaturalIsotopeAverageSp> &isotope_mass_list,
487 ((
pappso_double)1.0 / isotope_mass_list.at(0).get()->getIntensityRatio()) *
492 peptide.get()->getIntensityRatio() *
502 MzRange range(precursor_mz, ms2_precision);
503 double precursor_mz_c13 = precursor_mz + (
DIFFC12C13 / charge);
504 MzRange range_c13(precursor_mz_c13, ms2_precision);
506 for(
const DataPoint &peak : *_p_spectrum)
508 if(((peak.x > range.
lower()) && (peak.x < range.
upper())) ||
509 ((peak.x > range_c13.lower()) && (peak.x < range_c13.upper())))
511 mp_peak_bars_precursor->addData(peak.x, peak.y);
512 QCPItemText *text_label =
new QCPItemText(
this);
513 text_label->setVisible(
true);
514 text_label->setPositionAlignment(Qt::AlignBottom | Qt::AlignHCenter);
515 text_label->position->setType(QCPItemPosition::ptPlotCoords);
516 text_label->position->setCoords(peak.x, peak.y);
518 text_label->setFont(QFont(font().family(), 8));
519 text_label->setText(
"precursor");
520 text_label->setColor(Qt::cyan);
Class to represent a mass spectrum.
pappso_double lower() const
pappso_double upper() const
virtual const PeptideNaturalIsotopeAverageSp & getPeptideNaturalIsotopeAverageSp() const
const DataPoint & getPeak() const
PeptideIon getPeptideIonType() const
static const QColor getPeptideIonColor(PeptideIon ion_type)
QCPGraph * _p_delta_graph
void highlightPrecursorPeaks(double precursor_mz, int charge, PrecisionPtr ms2_precision)
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
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
const pappso_double DIFFC12C13(1.0033548378)