diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 963b3c0762f1d429f9004921af7a83e5b6cd5532..be9ef9b05802f364d47e6f4b1310b493a56a8292 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -200,6 +200,7 @@ SET(XTPCPP_SRCS ./gui/widgets/automatic_filter_widget/automaticfilterwidget.cpp ./gui/widgets/contaminant_widget/contaminantwidget.cpp ./gui/widgets/decoy_widget/decoywidget.cpp + ./gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp ./gui/widgets/massitemdelegate.cpp ./gui/xic_view/xic_box/xicbox.cpp ./gui/xic_view/xic_widgets/zivydialog.cpp diff --git a/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui b/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui index e2cd178ab2951b2e2da9e5b5c32775e6743f8e4f..b128ffc4cd3c9d2515f643c02ee459b8acc6f129 100644 --- a/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui +++ b/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui @@ -309,18 +309,7 @@ </widget> </item> <item> - <widget class="QComboBox" name="sumMaxComboBox"> - <item> - <property name="text"> - <string>max</string> - </property> - </item> - <item> - <property name="text"> - <string>sum</string> - </property> - </item> - </widget> + <widget class="XicExtractionMethodWidget" name="xic_extraction_method_widget" native="true"/> </item> </layout> </item> @@ -402,6 +391,12 @@ <header>pappsomspp/widget/precisionwidget/precisionwidget.h</header> <container>1</container> </customwidget> + <customwidget> + <class>XicExtractionMethodWidget</class> + <extends>QWidget</extends> + <header>gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h</header> + <container>1</container> + </customwidget> </customwidgets> <resources/> <connections> diff --git a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp index d45c1b9b80623b096aec0969b4b219dd694b806b..173012735187f985464a248b718edbd9546ace32 100644 --- a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp +++ b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp @@ -104,8 +104,6 @@ ExportMasschroqDialog::setMasschroqFileParameters( ui->ms1SmoothingSpinBox->setValue(params.ms1_smoothing_half_window); ui->xicRangeWidget->setPrecision(params.xic_extraction_range); - - ui->sumMaxComboBox->setCurrentText(params.xic_extraction_method); } @@ -139,7 +137,7 @@ ExportMasschroqDialog::getMasschroqFileParameters() const params.xic_extraction_range = ui->xicRangeWidget->getPrecision(); - params.xic_extraction_method = ui->sumMaxComboBox->currentText(); + params.xic_extraction_method = ui->xic_extraction_method_widget->getXicExtractionMethod(); return params; } diff --git a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp index e8e28f2f061ff031d49c6e469e9b2573cfd84532..44d8380c8c50f511cc446e3f207542e8e47a4dfc 100644 --- a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp +++ b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp @@ -67,7 +67,7 @@ MasschroqFileParameters::save() const xic_extraction_range->toString()); settings.setValue("export_masschroqml/xic_extraction_method", - xic_extraction_method); + QString("%1").arg((std::uint8_t)xic_extraction_method)); } void MasschroqFileParameters::load() @@ -124,7 +124,9 @@ MasschroqFileParameters::load() settings.value("export_masschroqml/xic_extraction_range", "10 ppm") .toString()); + /* xic_extraction_method = settings.value("export_masschroqml/xic_extraction_method", "max") .toString(); + */ } diff --git a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h index a4dda270b07ef9f8b5842a889fbc64e86a3cc2d6..4badb5b79650e60c2fdbecb594a0c8139d37fae8 100644 --- a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h +++ b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h @@ -58,5 +58,5 @@ struct MasschroqFileParameters pappso::PrecisionPtr xic_extraction_range; - QString xic_extraction_method; // sum or max + pappso::XicExtractMethod xic_extraction_method; // sum or max }; diff --git a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp index d5d38d803680ca454f3269e68646aa8849f1b4f0..dde03a391c127b4fa190a5d7358fb228dba56284 100644 --- a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp +++ b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp @@ -31,6 +31,7 @@ #include "xicextractionmethodwidget.h" #include <QDebug> #include <QHBoxLayout> +#include <QSettings> XicExtractionMethodWidget::XicExtractionMethodWidget(QWidget *parent) : QWidget(parent) @@ -47,6 +48,16 @@ XicExtractionMethodWidget::XicExtractionMethodWidget(QWidget *parent) mp_methodComboBox->addItem("max", QString("max")); mp_methodComboBox->addItem("sum", QString("sum")); + QSettings settings; + + m_oldMethod = + (pappso::XicExtractMethod)settings + .value("xic/xic_extraction_method", + QString("%1").arg((std::uint8_t)pappso::XicExtractMethod::max)) + .toUInt(); + + mp_methodComboBox->setCurrentIndex((std::uint8_t)m_oldMethod); + connect(mp_methodComboBox, SIGNAL(currentIndexChanged(int)), this, @@ -64,18 +75,21 @@ void XicExtractionMethodWidget::setCurrentIndex(int index) { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; + pappso::XicExtractMethod new_method = (pappso::XicExtractMethod)index; - if(m_oldIndex != index) + if(m_oldMethod != new_method) { - m_oldIndex = index; - - if(mp_methodComboBox->itemData(index) == "sum") - { - emit xicExtractionMethodChanged(pappso::XicExtractMethod::sum); - } - else - { - emit xicExtractionMethodChanged(pappso::XicExtractMethod::max); - } + m_oldMethod = new_method; + QSettings settings; + settings.setValue("xic/xic_extraction_method", + QString("%1").arg((std::uint8_t)new_method)); + emit xicExtractionMethodChanged(new_method); } } + + +pappso::XicExtractMethod +XicExtractionMethodWidget::getXicExtractionMethod() const +{ + return m_oldMethod; +} diff --git a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h index 3deb3496a55b5b5ccf0e2f7abdfe735b737a56e2..962543d9c2a4291d02e5ded2689c37a97640b9b7 100644 --- a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h +++ b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h @@ -40,7 +40,7 @@ class XicExtractionMethodWidget : public QWidget private: QComboBox *mp_methodComboBox; - int m_oldIndex = 0; + pappso::XicExtractMethod m_oldMethod = pappso::XicExtractMethod::max; private: Q_SLOT void setCurrentIndex(int); @@ -48,6 +48,8 @@ class XicExtractionMethodWidget : public QWidget public: XicExtractionMethodWidget(QWidget *parent = 0); ~XicExtractionMethodWidget(); + pappso::XicExtractMethod getXicExtractionMethod() const; + signals: void xicExtractionMethodChanged(pappso::XicExtractMethod method) const; }; diff --git a/src/gui/xic_view/xic_box/xicbox.cpp b/src/gui/xic_view/xic_box/xicbox.cpp index efd25ee93eb1659e0e898b0c66b6364e28693592..72086bc3f492b6cd7ed4a4d85503968ccbad9d7a 100644 --- a/src/gui/xic_view/xic_box/xicbox.cpp +++ b/src/gui/xic_view/xic_box/xicbox.cpp @@ -571,7 +571,7 @@ XicBox::reExtractXic() xic_isotope.peptide_natural_isotope_sp.get()->getMz()); } emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(), - pappso::XicExtractMethod::max); + _p_xic_window->getXicExtractionMethod()); qDebug() << "XicBox::reExtractXic end"; } diff --git a/src/gui/xic_view/xic_window.ui b/src/gui/xic_view/xic_window.ui index b1ae1e260294942ba1fa90f624408b2fc643d2bf..f1ffb29e6adc084ff8539d5298411424889f0434 100644 --- a/src/gui/xic_view/xic_window.ui +++ b/src/gui/xic_view/xic_window.ui @@ -43,6 +43,9 @@ <item> <widget class="pappso::PrecisionWidget" name="xic_precision" native="true"/> </item> + <item> + <widget class="XicExtractionMethodWidget" name="xic_extraction_method_widget" native="true"/> + </item> <item> <widget class="QRadioButton" name="rt_sec_radiobutton"> <property name="text"> @@ -131,6 +134,15 @@ <signal>precisionChanged(pappso::PrecisionPtr)</signal> </slots> </customwidget> + <customwidget> + <class>XicExtractionMethodWidget</class> + <extends>QWidget</extends> + <header>gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h</header> + <container>1</container> + <slots> + <signal>xicExtractionMethodChanged(pappso::XicExtractMethod)</signal> + </slots> + </customwidget> </customwidgets> <resources/> <connections> @@ -173,8 +185,8 @@ <slot>doEditZivyParams()</slot> <hints> <hint type="sourcelabel"> - <x>351</x> - <y>38</y> + <x>408</x> + <y>61</y> </hint> <hint type="destinationlabel"> <x>918</x> @@ -182,11 +194,28 @@ </hint> </hints> </connection> + <connection> + <sender>xic_extraction_method_widget</sender> + <signal>xicExtractionMethodChanged(pappso::XicExtractMethod)</signal> + <receiver>XicWindow</receiver> + <slot>doXicExtractionMethodChanged(pappso::XicExtractMethod)</slot> + <hints> + <hint type="sourcelabel"> + <x>100</x> + <y>44</y> + </hint> + <hint type="destinationlabel"> + <x>210</x> + <y>-25</y> + </hint> + </hints> + </connection> </connections> <slots> <slot>xicPrecisionChanged(pappso::PrecisionPtr)</slot> <slot>rtUnitChanged(QAbstractButton*)</slot> <slot>doEditZivyParams()</slot> + <slot>doXicExtractionMethodChanged(pappso::XicExtractMethod)</slot> </slots> <buttongroups> <buttongroup name="rt_unit_buttongroup"/> diff --git a/src/gui/xic_view/xicwindow.cpp b/src/gui/xic_view/xicwindow.cpp index 51cf71c93d8eac0263b6f46f10410aee5c677d24..165ae9fcc03b10de6d9b72a3fa4193c21896ec58 100644 --- a/src/gui/xic_view/xicwindow.cpp +++ b/src/gui/xic_view/xicwindow.cpp @@ -46,7 +46,6 @@ XicWindow::XicWindow(ProjectWindow *parent) ui->xic_precision->setPrecision( pappso::PrecisionFactory::fromString(precision_str)); - ZivyParams zivy_params; zivy_params.loadSettings(); @@ -57,7 +56,9 @@ XicWindow::XicWindow(ProjectWindow *parent) _p_zivy_dialog->setZivyParams(zivy_params); - connect(_p_zivy_dialog, &ZivyDialog::accepted, this, + connect(_p_zivy_dialog, + &ZivyDialog::accepted, + this, &XicWindow::doAcceptedZivyDialog); #if QT_VERSION >= 0x050000 @@ -128,6 +129,14 @@ XicWindow::getXicExtractPrecision() const return (ui->xic_precision->getPrecision()); } + +pappso::XicExtractMethod +XicWindow::getXicExtractionMethod() const +{ + return (ui->xic_extraction_method_widget->getXicExtractionMethod()); +} + + void XicWindow::xicPrecisionChanged(pappso::PrecisionPtr precision) { @@ -169,3 +178,10 @@ XicWindow::doAcceptedZivyDialog() _p_zivy_dialog->getZivyParams().saveSettings(); emit reExtractXicNeeded(); } + + +void +XicWindow::doXicExtractionMethodChanged(pappso::XicExtractMethod xic_method) +{ + emit reExtractXicNeeded(); +} diff --git a/src/gui/xic_view/xicwindow.h b/src/gui/xic_view/xicwindow.h index 22d49a1c2ca3cedb4b2e1d27c651d5326cb5500f..362d3913148fa9025b1beba183132c0b034854a6 100644 --- a/src/gui/xic_view/xicwindow.h +++ b/src/gui/xic_view/xicwindow.h @@ -43,7 +43,7 @@ class ProjectWindow; namespace Ui { - class XicWindow; +class XicWindow; } class XicBox; @@ -62,6 +62,7 @@ class XicWindow : public QMainWindow MsRunSp msrun_sp); pappso::PrecisionPtr getXicExtractPrecision() const; + pappso::XicExtractMethod getXicExtractionMethod() const; bool isRetentionTimeSeconds() const; @@ -73,6 +74,7 @@ class XicWindow : public QMainWindow protected slots: void doEditZivyParams(); void doAcceptedZivyDialog(); + void doXicExtractionMethodChanged(pappso::XicExtractMethod xic_method); signals: void reExtractXicNeeded(); diff --git a/src/output/masschroqml.cpp b/src/output/masschroqml.cpp index 1b0a9e404e1abd58b35c42d2977e8c293d6a0f4c..bf89e8d2ddac0f75605e12d0c196a31d8efe02fc 100644 --- a/src/output/masschroqml.cpp +++ b/src/output/masschroqml.cpp @@ -231,8 +231,9 @@ MassChroQml::writeQuantificationTraces() _output_stream->writeStartElement("quantification_traces"); //<peptide_traces peptide_ids="pep0 pep1" output_dir="pep_traces" // format="tsv" /> - _output_stream->writeComment("<peptide_traces peptide_ids=\"pep0 pep1\" " - "output_dir=\"pep_traces\" format=\"tsv\" />"); + _output_stream->writeComment( + "<peptide_traces peptide_ids=\"pep0 pep1\" " + "output_dir=\"pep_traces\" format=\"tsv\" />"); /* <all_xics_traces output_dir="all_xics_traces" format="tsv" /> <mz_traces mz_values="634.635 449.754 552.234" output_dir="mz_traces" @@ -277,8 +278,9 @@ MassChroQml::writeQuantify() } _output_stream->writeEndElement(); - _output_stream->writeComment("<mz_list>732.317 449.754 552.234 464.251 " - "381.577 569.771 575.256</mz_list>"); + _output_stream->writeComment( + "<mz_list>732.317 449.754 552.234 464.251 " + "381.577 569.771 575.256</mz_list>"); _output_stream->writeComment( "<mzrt_list>\n <mzrt mz=\"732.317\" rt=\"230.712\" />\n <mzrt " "mz=\"575.256\" rt=\"254.788\" />\n </mzrt_list>"); @@ -297,7 +299,14 @@ MassChroQml::writeQuantificationMethods() _output_stream->writeAttribute("id", "quant1"); //<xic_extraction xic_type="sum"> _output_stream->writeStartElement("xic_extraction"); - _output_stream->writeAttribute("xic_type", m_params.xic_extraction_method); + if(m_params.xic_extraction_method == pappso::XicExtractMethod::max) + { + _output_stream->writeAttribute("xic_type", "max"); + } + else + { + _output_stream->writeAttribute("xic_type", "sum"); + } _output_stream->writeComment("max : XIC on BasePeak; sum : XIC on TIC"); //<ppm_range min="10" max="10"/><!--For XIC extraction on Da use: mz_range--> @@ -503,7 +512,8 @@ MassChroQml::writePeptideListInGroup(const GroupingGroup *p_group) } // sort list - std::sort(mcq_peptide_list.begin(), mcq_peptide_list.end(), + std::sort(mcq_peptide_list.begin(), + mcq_peptide_list.end(), [](const McqPeptide &first, const McqPeptide &second) { return (first.id < second.id); }); @@ -589,7 +599,8 @@ MassChroQml::writePeptideListInGroup(const GroupingGroup *p_group) } //<observed_in data="samp0" scan="655" z="2" /> - std::sort(mcq_peptide.observed_in.begin(), mcq_peptide.observed_in.end(), + std::sort(mcq_peptide.observed_in.begin(), + mcq_peptide.observed_in.end(), [](const McqObserved &first, const McqObserved &second) { return std::tie(first.charge, first.scan, first.msrun) < std::tie(second.charge, second.scan, second.msrun);