From 2c853d69d146994688b1bb856bd5c66a1c8fc329 Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Fri, 7 Dec 2018 10:42:41 +0100 Subject: [PATCH] wait for spectrum loader thread --- src/gui/peptide_detail_view/peptidewindow.cpp | 3 ++ src/gui/workerthread.h | 2 +- src/gui/xic_view/xic_box/xicbox.cpp | 46 +++++++++++++------ src/gui/xic_view/xicworkerthread.cpp | 12 ++++- src/gui/xic_view/xicworkerthread.h | 4 +- src/input/mascot/mascotdatparser.h | 2 +- 6 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/gui/peptide_detail_view/peptidewindow.cpp b/src/gui/peptide_detail_view/peptidewindow.cpp index 0329c2b5..3ad38966 100644 --- a/src/gui/peptide_detail_view/peptidewindow.cpp +++ b/src/gui/peptide_detail_view/peptidewindow.cpp @@ -165,6 +165,9 @@ PeptideWindow::PeptideWindow(ProjectWindow *parent) PeptideWindow::~PeptideWindow() { + + _spectrum_loader_thread.quit(); + _spectrum_loader_thread.wait(); delete ui; } diff --git a/src/gui/workerthread.h b/src/gui/workerthread.h index 60168b56..309a35dc 100644 --- a/src/gui/workerthread.h +++ b/src/gui/workerthread.h @@ -48,7 +48,7 @@ class WorkerThread : public QObject public: WorkerThread(MainWindow *parent); WorkerThread(ProjectWindow *parent); - ~WorkerThread(); + virtual ~WorkerThread(); protected: diff --git a/src/gui/xic_view/xic_box/xicbox.cpp b/src/gui/xic_view/xic_box/xicbox.cpp index 3fba0015..c29b9823 100644 --- a/src/gui/xic_view/xic_box/xicbox.cpp +++ b/src/gui/xic_view/xic_box/xicbox.cpp @@ -114,7 +114,7 @@ XicBox::XicBox(XicWindow *parent) : QWidget(parent), ui(new Ui::XicBox) _p_xic_window = parent; ui->setupUi(this); - XicWorkerThread *p_worker = new XicWorkerThread(); + XicWorkerThread *p_worker = new XicWorkerThread(this); p_worker->moveToThread(&_xic_thread); _xic_thread.start(); @@ -139,19 +139,29 @@ XicBox::XicBox(XicWindow *parent) : QWidget(parent), ui(new Ui::XicBox) connect(p_worker, &XicWorkerThread::operationFailed, this, &XicBox::error); - connect(this, &XicBox::computeIsotopeMassList, p_worker, + connect(this, + &XicBox::computeIsotopeMassList, + p_worker, &XicWorkerThread::doComputeIsotopeMassList); - connect(p_worker, &XicWorkerThread::isotopeMassListComputed, this, + connect(p_worker, + &XicWorkerThread::isotopeMassListComputed, + this, &XicBox::setIsotopeMassList); - connect(_p_xic_window, &XicWindow::reExtractXicNeeded, this, - &XicBox::reExtractXic); - connect(ui->xic_widget, &pappso::XicWidget::xicPeakListChanged, this, + connect( + _p_xic_window, &XicWindow::reExtractXicNeeded, this, &XicBox::reExtractXic); + connect(ui->xic_widget, + &pappso::XicWidget::xicPeakListChanged, + this, &XicBox::setXicPeakList); - connect(ui->xic_widget, &pappso::XicWidget::clicked, this, + connect(ui->xic_widget, + &pappso::XicWidget::clicked, + this, &XicBox::onXicWidgetClick); - connect(_p_xic_window, &XicWindow::rtUnitChangeNeeded, this, + connect(_p_xic_window, + &XicWindow::rtUnitChangeNeeded, + this, &XicBox::onRtUnitChanged); #else // Qt4 code @@ -259,13 +269,15 @@ XicBox::setPeptideEvidence(const PeptideEvidence *p_peptide_evidence) _p_xic_window->getProjectWindow() ->getProjectP() ->getSameXicPeptideEvidenceList( - _peptide_evidence_list, _msrun_sp.get(), + _peptide_evidence_list, + _msrun_sp.get(), _p_peptide_evidence->getPeptideXtpSp().get(), _p_peptide_evidence->getCharge()); emit computeIsotopeMassList(_p_peptide_evidence->getPeptideXtpSp(), _p_peptide_evidence->getCharge(), - _p_xic_window->getXicExtractPrecision(), 0.8); + _p_xic_window->getXicExtractPrecision(), + 0.8); } void @@ -290,7 +302,8 @@ XicBox::setPeptideEvidenceInMsRun(const PeptideEvidence *p_peptide_evidence, _p_xic_window->getProjectWindow() ->getProjectP() ->getSameXicPeptideEvidenceList( - _peptide_evidence_list, _msrun_sp.get(), + _peptide_evidence_list, + _msrun_sp.get(), _p_peptide_evidence->getPeptideXtpSp().get(), _p_peptide_evidence->getCharge()); //_p_xic_window->getProjectWindow()->getProjectP()->getSameXicPeptideEvidenceList(p_peptide_evidence, @@ -298,7 +311,8 @@ XicBox::setPeptideEvidenceInMsRun(const PeptideEvidence *p_peptide_evidence, emit computeIsotopeMassList(_p_peptide_evidence->getPeptideXtpSp(), _p_peptide_evidence->getCharge(), - _p_xic_window->getXicExtractPrecision(), 0.8); + _p_xic_window->getXicExtractPrecision(), + 0.8); } void @@ -491,7 +505,9 @@ XicBox::setIsotopeMassList( {nullptr, natural_isotope_average, nullptr, nullptr}); } - emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(), + emit loadXic(_msrun_sp, + mass_list, + _p_xic_window->getXicExtractPrecision(), pappso::XicExtractMethod::max); // histogram @@ -565,7 +581,9 @@ XicBox::reExtractXic() mass_list.push_back( xic_isotope.peptide_natural_isotope_sp.get()->getMz()); } - emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(), + emit loadXic(_msrun_sp, + mass_list, + _p_xic_window->getXicExtractPrecision(), pappso::XicExtractMethod::max); qDebug() << "XicBox::reExtractXic end"; } diff --git a/src/gui/xic_view/xicworkerthread.cpp b/src/gui/xic_view/xicworkerthread.cpp index 98bc2111..9039b5eb 100644 --- a/src/gui/xic_view/xicworkerthread.cpp +++ b/src/gui/xic_view/xicworkerthread.cpp @@ -34,8 +34,15 @@ #include <pappsomspp/exception/exceptionnotfound.h> #include <QDebug> +XicWorkerThread::XicWorkerThread(XicBox *parent) +{ +} +XicWorkerThread::~XicWorkerThread() +{ +} void -XicWorkerThread::doXicLoad(MsRunSp p_msrun, std::vector<pappso::mz> mz_list, +XicWorkerThread::doXicLoad(MsRunSp p_msrun, + std::vector<pappso::mz> mz_list, pappso::PrecisionP precision, pappso::XicExtractMethod method) { @@ -91,7 +98,8 @@ XicWorkerThread::doComputeIsotopeMassList(pappso::PeptideSp peptide_sp, isotope_mass_list = isotope_list.getByIntensityRatio( charge, precision, minimum_isotope_pattern_ratio); - std::sort(isotope_mass_list.begin(), isotope_mass_list.end(), + std::sort(isotope_mass_list.begin(), + isotope_mass_list.end(), [](const pappso::PeptideNaturalIsotopeAverageSp &m, const pappso::PeptideNaturalIsotopeAverageSp &n) -> bool { unsigned int mn(m.get()->getIsotopeNumber()), diff --git a/src/gui/xic_view/xicworkerthread.h b/src/gui/xic_view/xicworkerthread.h index ec0428b4..66081f2a 100644 --- a/src/gui/xic_view/xicworkerthread.h +++ b/src/gui/xic_view/xicworkerthread.h @@ -35,11 +35,13 @@ #include "../../core/msrun.h" #include <pappsomspp/xic/xic.h> #include <pappsomspp/xicextractor/msrunxicextractor.h> - +#include "xic_box/xicbox.h" class XicWorkerThread : public QObject { Q_OBJECT public: + XicWorkerThread(XicBox *parent); + virtual ~XicWorkerThread(); public slots: void doXicLoad(MsRunSp p_msrun, std::vector<pappso::mz> mz_list, pappso::PrecisionP precision, pappso::XicExtractMethod method); diff --git a/src/input/mascot/mascotdatparser.h b/src/input/mascot/mascotdatparser.h index e9cc45fa..d3436873 100644 --- a/src/input/mascot/mascotdatparser.h +++ b/src/input/mascot/mascotdatparser.h @@ -113,7 +113,7 @@ class MascotDatParser unsigned int _number_of_residues = 0; QString _error_str; bool _is_decoy_section = false; - bool _take_only_first_peptide_rank = true; + bool _take_only_first_peptide_rank = false; PeptideLine _current_peptide; QueryLine _current_query; -- GitLab