diff --git a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp index 521621d7d79b31fba3b890bfb3f78c55bd996920..7ebedd1b945fff0a65d896a5bdf9fb6001cdd32c 100644 --- a/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp +++ b/src/pappsomspp/widget/massspectrumwidget/massspectrumwidget.cpp @@ -456,20 +456,16 @@ MassSpectrumWidget::computeIsotopeMassList() } void -pappso::MassSpectrumWidget::highlightPrecursorPeaks(bool highlight_status) +pappso::MassSpectrumWidget::highlightPrecursorPeaks() { - if(highlight_status == true) + + if(_ms_level > 1) { - 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); - } + pappso_double precursor_mz_1 = _peptide_sp->getMz(1); + _custom_plot->highlightPrecursorPeaks( + precursor_mz_1, 1, _p_ms2_precision); + pappso_double precursor_mz_charge = _peptide_sp->getMz(_peptide_charge); + _custom_plot->highlightPrecursorPeaks( + precursor_mz_charge, _peptide_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 5704f114165a5e55b9d5ebd44d202a742c297799..29b6528ce3825b4ae128bf59fc467c3abdef3662 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(bool highlight_status); + void highlightPrecursorPeaks(); // 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 ff768164cc14d9d764c02df2346e57d24328a242..12c82a75005235736a92f788c41cd46badffb1d5 100644 --- a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp +++ b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.cpp @@ -250,6 +250,8 @@ QCPSpectrum::clearData() _p_peak_bars_isotope->setData(QVector<double>(), QVector<double>()); _p_peak_bars_isotope->data().clear(); qDebug(); + mp_peak_bars_precursor->setData(QVector<double>(), QVector<double>()); + mp_peak_bars_precursor->data().clear(); for(std::pair<PeptideIon, QCPBars *> pair_ion_bar : _map_ion_type_bars) { pair_ion_bar.second->setData(QVector<double>(), QVector<double>()); @@ -467,41 +469,28 @@ QCPSpectrum::addMs1IsotopePattern( void pappso::QCPSpectrum::highlightPrecursorPeaks(double precursor_mz, + int charge, PrecisionPtr ms2_precision) { - if(mp_precursorLabels.size() == 0) - { - MzRange range(precursor_mz, ms2_precision); + MzRange range(precursor_mz, ms2_precision); + double precursor_mz_c13 = precursor_mz + (DIFFC12C13 / charge); + MzRange range_c13(precursor_mz_c13, ms2_precision); - for(const DataPoint &peak : *_p_spectrum) + for(const DataPoint &peak : *_p_spectrum) + { + if(((peak.x > range.lower()) && (peak.x < range.upper())) || + ((peak.x > range_c13.lower()) && (peak.x < range_c13.upper()))) { - 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); - } + 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); } } } - -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 12fe237cf81d36ae035b8d25268f0797eaa04580..be5beca47122c2f503a840ec688646f6bdf742a2 100644 --- a/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h +++ b/src/pappsomspp/widget/massspectrumwidget/qcpspectrum.h @@ -60,8 +60,9 @@ class QCPSpectrum : public QCustomPlot &isotope_mass_list, pappso_double intensity); void addPeakIonIsotopeMatch(const PeakIonIsotopeMatch &peak_ion_match); - void highlightPrecursorPeaks(double precursor_mz, PrecisionPtr ms2_precision); - void setPrecursorHighlightVisibility(bool highlight_status); + void highlightPrecursorPeaks(double precursor_mz, + int charge, + PrecisionPtr ms2_precision); virtual void mouseMoveEvent(QMouseEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; @@ -86,7 +87,6 @@ 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;