diff --git a/src/gui/peptide_detail_view/peptidewindow.cpp b/src/gui/peptide_detail_view/peptidewindow.cpp index 0329c2b5ad9a998b78113d11f091db7ae1c2d13e..3ad3896667156a6aa4a6b0e1bb5fd0400472a18c 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 60168b5660f1d59b3a1f976cc33f98ddce7bc7c8..309a35dc0705d25550c1592ef1cd797f6c4fc73e 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 3fba0015823d580f69f774d0e4ae6a33058f0c6c..c29b982356757cf705f0b4bd92c8e925eb74f541 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 98bc2111665d7d6dde1c7e4dbdfe8e086fa4a7ae..9039b5eba78854cc9dff7c1d176911786dfe31f1 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 ec0428b4f40a98603a4a05c784e13863aac5ac2b..66081f2a3d21771bb9b35eafdbf4286baa4057d5 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 e9cc45faefdc21c4d27d141496544dd0f6bbb55e..d34368738e1a5130f6a14205393e8c6a760f7742 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;