diff --git a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp index c2a79237dc9df6ea6a480211b7a613b3fed82467..521621d7d79b31fba3b890bfb3f78c55bd996920 100644 --- a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp +++ b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp @@ -456,10 +456,20 @@ MassSpectrumWidget::computeIsotopeMassList() } void -pappso::MassSpectrumWidget::highlightPrecursorPeaks(double precursor_mz) +pappso::MassSpectrumWidget::highlightPrecursorPeaks(bool highlight_status) { - if(_ms_level > 1) + if(highlight_status == true) { - _custom_plot->highlightPrecursorPeaks(precursor_mz, _p_ms2_precision); + if(_ms_level > 1) + { + pappso_double precursor_mz_1 = _peptide_sp->getMz(1); + _custom_plot->highlightPrecursorPeaks(precursor_mz_1, + _p_ms2_precision); + pappso_double precursor_mz_charge = + _peptide_sp->getMz(_peptide_charge); + _custom_plot->highlightPrecursorPeaks(precursor_mz_charge, + _p_ms2_precision); + } } + _custom_plot->setPrecursorHighlightVisibility(highlight_status); } diff --git a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h index ca240734b2e47ea2eb735b40d942303d064c4e29..5704f114165a5e55b9d5ebd44d202a742c297799 100644 --- a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h +++ b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.h @@ -68,7 +68,7 @@ class PMSPP_LIB_DECL MassSpectrumWidget : public GraphicDeviceWidget bool savePdf(const QString &fileName, int width = 0, int height = 0); void toQPaintDevice(QPaintDevice *device, const QSize &size) override; - void highlightPrecursorPeaks(double precursor_mz); + void highlightPrecursorPeaks(bool highlight_status); // void setIsotopeMassList(std::vector<pappso::PeptideNaturalIsotopeAverageSp> // & isotope_mass_list); diff --git a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp index 117c801607d3e90d3ceea37aebccfc09425bb09f..ff768164cc14d9d764c02df2346e57d24328a242 100644 --- a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp +++ b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp @@ -469,23 +469,39 @@ void pappso::QCPSpectrum::highlightPrecursorPeaks(double precursor_mz, PrecisionPtr ms2_precision) { - MzRange range(precursor_mz, ms2_precision); - - for(const DataPoint &peak : *_p_spectrum) + if(mp_precursorLabels.size() == 0) { - if((peak.x > range.lower()) && (peak.x < range.upper())) + MzRange range(precursor_mz, ms2_precision); + + for(const DataPoint &peak : *_p_spectrum) { - mp_peak_bars_precursor->addData(peak.x, peak.y); - QCPItemText *text_label = new QCPItemText(this); - text_label->setVisible(true); - text_label->setPositionAlignment(Qt::AlignBottom | Qt::AlignHCenter); - text_label->position->setType(QCPItemPosition::ptPlotCoords); - text_label->position->setCoords( - peak.x, - peak.y); // place position at center/top of axis rect - text_label->setFont(QFont(font().family(), 8)); - text_label->setText("precursor"); - text_label->setColor(Qt::cyan); + if((peak.x > range.lower()) && (peak.x < range.upper())) + { + mp_peak_bars_precursor->addData(peak.x, peak.y); + QCPItemText *text_label = new QCPItemText(this); + text_label->setVisible(true); + text_label->setPositionAlignment(Qt::AlignBottom | + Qt::AlignHCenter); + text_label->position->setType(QCPItemPosition::ptPlotCoords); + text_label->position->setCoords( + peak.x, + peak.y); // place position at center/top of axis rect + text_label->setFont(QFont(font().family(), 8)); + text_label->setText("precursor"); + text_label->setColor(Qt::cyan); + mp_precursorLabels.push_back(text_label); + } } } } + +void +pappso::QCPSpectrum::setPrecursorHighlightVisibility(bool highlight_status) +{ + mp_peak_bars_precursor->setVisible(highlight_status); + for(QCPItemText *text_label : mp_precursorLabels) + { + text_label->setVisible(highlight_status); + } + replot(); +} diff --git a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h index 199886df76708fb5876c4a56312d8554723bfe29..12fe237cf81d36ae035b8d25268f0797eaa04580 100644 --- a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h +++ b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h @@ -61,6 +61,7 @@ class QCPSpectrum : public QCustomPlot pappso_double intensity); void addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match); void highlightPrecursorPeaks(double precursor_mz, PrecisionPtr ms2_precision); + void setPrecursorHighlightVisibility(bool highlight_status); virtual void mouseMoveEvent(QMouseEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; @@ -85,6 +86,7 @@ class QCPSpectrum : public QCustomPlot QCPBars *_p_peak_bars; QCPBars *_p_peak_bars_isotope; QCPBars *mp_peak_bars_precursor; + std::vector<QCPItemText *> mp_precursorLabels; std::map<PeptideIon, QCPBars *> _map_ion_type_bars; QCPAxisRect *_p_delta_axis_rect; QCPGraph *_p_delta_graph;