From 750411176ba98d12c6457b37223304e15b44c752 Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Wed, 24 Jan 2018 22:31:52 +0100
Subject: [PATCH] ptm island peptide evidence viewer bug fixed

---
 src/core/peptidematch.cpp                       |  1 -
 src/grouping/ptm/ptmsamplescan.cpp              |  2 +-
 src/grouping/ptm/ptmsamplescan.h                |  2 +-
 src/gui/peptide_detail_view/peptidewindow.cpp   | 17 +++++++++++------
 src/gui/project_view/projectwindow.cpp          |  2 +-
 .../ptmpeptidelistwindow.cpp                    |  8 +++++---
 .../ptmpeptidelistwindow.h                      |  2 +-
 .../ptmpeptidetablemodel.cpp                    |  2 +-
 .../ptmpeptidetableproxymodel.cpp               | 13 ++++++++-----
 .../ptmpeptidetableproxymodel.h                 |  4 ++--
 10 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/src/core/peptidematch.cpp b/src/core/peptidematch.cpp
index 5498b269e..911e1b711 100644
--- a/src/core/peptidematch.cpp
+++ b/src/core/peptidematch.cpp
@@ -31,7 +31,6 @@ PeptideMatch::PeptideMatch() {
 PeptideMatch::PeptideMatch(const PeptideMatch & other) {
     _start=other._start;
     _p_peptide_evidence = other._p_peptide_evidence;
-
 }
 bool PeptideMatch::operator==(const PeptideMatch & other) const {
     if ((_p_peptide_evidence == other._p_peptide_evidence) && (_start == other._start)) {
diff --git a/src/grouping/ptm/ptmsamplescan.cpp b/src/grouping/ptm/ptmsamplescan.cpp
index 71a1abb57..328bbe4c5 100644
--- a/src/grouping/ptm/ptmsamplescan.cpp
+++ b/src/grouping/ptm/ptmsamplescan.cpp
@@ -136,6 +136,6 @@ const QString PtmSampleScan::getHtmlSequence(const PtmGroupingExperiment * p_ptm
     return sequence_html;
 }
 
-const std::vector<PeptideMatch> & PtmSampleScan::getPeptideMatchList() const {
+std::vector<PeptideMatch> & PtmSampleScan::getPeptideMatchList() {
     return _peptide_match_list;
 }
diff --git a/src/grouping/ptm/ptmsamplescan.h b/src/grouping/ptm/ptmsamplescan.h
index 3ff57ed59..78d07c167 100644
--- a/src/grouping/ptm/ptmsamplescan.h
+++ b/src/grouping/ptm/ptmsamplescan.h
@@ -53,7 +53,7 @@ public:
     std::vector<unsigned int> getBestPtmPositionList(const PtmGroupingExperiment * p_ptm_grouping_experiment) const;
     std::vector<unsigned int> getObservedPtmPositionList(const PtmGroupingExperiment * p_ptm_grouping_experiment) const;
     const QString getHtmlSequence(const PtmGroupingExperiment * p_ptm_grouping_experiment) const;
-    const std::vector<PeptideMatch> & getPeptideMatchList() const;
+    std::vector<PeptideMatch> & getPeptideMatchList();
     
 private:
     std::vector<PeptideMatch> _peptide_match_list;
diff --git a/src/gui/peptide_detail_view/peptidewindow.cpp b/src/gui/peptide_detail_view/peptidewindow.cpp
index 6a7aae175..54680bf48 100644
--- a/src/gui/peptide_detail_view/peptidewindow.cpp
+++ b/src/gui/peptide_detail_view/peptidewindow.cpp
@@ -84,7 +84,7 @@ PeptideWindow::PeptideWindow(ProjectWindow *parent):
 
     ui->file_not_found->setVisible(false);
 
-    
+
     _mz_label = new QLabel("");
     ui->statusbar->addWidget(_mz_label);
     QWidget * p_spacer = new QWidget();
@@ -130,8 +130,8 @@ void PeptideWindow::setIon(pappso::PeakIonIsotopeMatch ion) {
     QString plusstr = "+";
     plusstr = plusstr.repeated(ion.getCharge());
     _ion_label->setText(QString("%1%2%3 (+%4) - th. isotope ratio %5%").arg(ion.getPeptideFragmentIonSp().get()->getPeptideIonName()).arg(ion.getPeptideFragmentIonSp().get()->size()).arg(plusstr).arg(ion.getPeptideNaturalIsotopeAverageSp().get()->getIsotopeNumber()).arg((int)(ion.getPeptideNaturalIsotopeAverageSp().get()->getIntensityRatio()*100)));
-    
-    
+
+
 }
 
 void PeptideWindow::setPeak(const pappso::Peak * p_peak_match) {
@@ -206,7 +206,7 @@ void PeptideWindow::chooseDefaultMzDataDir() {
 
     qDebug() << "PeptideWindow::chooseDefaultMzDataDir begin";
     ui->file_not_found->setVisible(false);
-        ui->xic_button->setEnabled(true);
+    ui->xic_button->setEnabled(true);
     ui->spectrum_widget->setVisible(true);
     emit loadSpectrumSp(_p_peptide_evidence);
     ui->statusbar->showMessage(tr("loading spectrum"));
@@ -280,23 +280,28 @@ void PeptideWindow::doSpectrumSpReady(pappso::SpectrumSp spectrum_sp, QString er
 }
 
 void PeptideWindow::setPeptideEvidence(PeptideEvidence * p_peptide_evidence) {
-    qDebug() << "PeptideWindow::setPeptideEvidence begin";
+    qDebug() << "PeptideWindow::setPeptideEvidence begin " << p_peptide_evidence;
     _p_peptide_evidence = p_peptide_evidence;
     _spectrum_is_ready = false;
 
-    qDebug() << "PeptideWindow::setPeptideEvidence emit loadSpectrumSp(_p_peptide_match)";
+    qDebug() << "PeptideWindow::setPeptideEvidence 1";
 
     ui->file_not_found->setVisible(false);
     ui->spectrum_widget->setVisible(true);
     ui->statusbar->showMessage(tr("loading spectrum"));
 
+    qDebug() << "PeptideWindow::setPeptideEvidence 2";
     pappso::PeptideSp peptide = _p_peptide_evidence->getPeptideXtpSp();
+    qDebug() << "PeptideWindow::setPeptideEvidence 3";
     ui->spectrum_widget->setMs2Precision(_p_precision);
     ui->spectrum_widget->setPeptideCharge(_p_peptide_evidence->getCharge());
     ui->spectrum_widget->setPeptideSp(peptide);
+    
+    qDebug() << "PeptideWindow::setPeptideEvidence 4";
     //ui->spectrum_widget->plot();
 
     updateDisplay();
+    qDebug() << "PeptideWindow::setPeptideEvidence emit loadSpectrumSp(_p_peptide_match)";
     emit loadSpectrumSp(_p_peptide_evidence);
     qDebug() << "PeptideWindow::setPeptideEvidence end";
 }
diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index ae2680806..804241d0f 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -487,7 +487,7 @@ void ProjectWindow::doViewPeptideList(IdentificationGroup * p_ident_group, Prote
 
 void ProjectWindow::doViewPeptideDetail(PeptideEvidence * peptide_evidence) {
 
-    qDebug() << "ProjectWindow::doViewPeptideDetail begin";
+    qDebug() << "ProjectWindow::doViewPeptideDetail begin " << peptide_evidence;
     if (_peptide_detail_window_collection.size() == 0) {
         connectNewPeptideDetailWindow();
     }
diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp
index bae3597fd..7babd9b4b 100644
--- a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp
+++ b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp
@@ -81,9 +81,11 @@ void PtmPeptideListWindow::setPtmIsland(PtmIsland * p_ptm_island) {
     _ptm_table_model_p->setPtmIsland(_p_ptm_island_list_window->getIdentificationGroup()->getPtmGroupingExperiment(), _p_ptm_island);
 }
 
-void PtmPeptideListWindow::askPeptideDetailView(PeptideMatch p_peptide_match) {
-    qDebug() << "PtmPeptideListWindow::askPeptideDetailView begin";
-    emit requestPeptideDetailView(p_peptide_match.getPeptideEvidence());
+void PtmPeptideListWindow::askPeptideDetailView(PeptideEvidence * p_peptide_evidence) {
+    qDebug() << "PtmPeptideListWindow::askPeptideDetailView begin " << p_peptide_evidence;
+    //PeptideMatch peptide_match(* p_peptide_match);
+    //qDebug() << "PtmPeptideListWindow::askPeptideDetailView begin " << peptide_match.getPeptideEvidence();
+    emit requestPeptideDetailView(p_peptide_evidence);
     qDebug() << "PtmPeptideListWindow::askPeptideDetailView end";
     //updateStatusBar();
 }
diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.h b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.h
index de7c6288d..b467c3aea 100644
--- a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.h
+++ b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.h
@@ -49,7 +49,7 @@ public:
     explicit PtmPeptideListWindow(PtmIslandListWindow * parent = 0);
     ~PtmPeptideListWindow();
     void setPtmIsland(PtmIsland * p_ptm_island);
-    void askPeptideDetailView(PeptideMatch p_peptide_match);
+    void askPeptideDetailView(PeptideEvidence * p_peptide_evidence);
     
 signals:
     void requestPeptideDetailView(PeptideEvidence * p_peptide_evidence);
diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp
index 94f7d00a9..20a4f59fa 100644
--- a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp
+++ b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp
@@ -143,7 +143,7 @@ const QString PtmPeptideTableModel::getDescription(std::int8_t column) {
         return "peptide theoretical MH+";
         break;
     case (std::int8_t) PtmPeptideListColumn::delta_mhplus:
-        return "peptide mass difference betwenn observed mass and theoretical mass";
+        return "peptide mass difference between observed mass and theoretical mass";
         break;
     case (std::int8_t) PtmPeptideListColumn::besthyperscore:
         return "best X!Tandem hyperscore";
diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp b/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp
index f049f03c3..2110b9288 100644
--- a/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp
+++ b/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp
@@ -32,9 +32,8 @@
 #include "../../grouping/ptm/ptmgroupingexperiment.h"
 #include <QTextDocument>
 
-PtmPeptideMenuQicon::PtmPeptideMenuQicon(const PtmGroupingExperiment * p_ptm_grouping_experiment, const PtmSampleScan * p_ptm_sample, const PeptideMatch * p_peptide_match):QIcon() {
+PtmPeptideMenuQicon::PtmPeptideMenuQicon(const PtmGroupingExperiment * p_ptm_grouping_experiment, const PtmSampleScan * p_ptm_sample, const PeptideMatch * p_peptide_match):QIcon(), _peptide_match(*p_peptide_match) {
     _p_ptm_sample_scan = p_ptm_sample;
-    _p_peptide_match = p_peptide_match;
     _p_ptm_grouping_experiment = p_ptm_grouping_experiment;
 }
 PtmPeptideMenuQicon::~PtmPeptideMenuQicon( ) {
@@ -60,7 +59,7 @@ void PtmPeptideMenuQicon::paint(QPainter *painter, const QRect &rect, Qt::Alignm
 PtmPeptideMenuQaction::PtmPeptideMenuQaction(PtmPeptideTableProxyModel * parent, const PtmGroupingExperiment * p_ptm_grouping_experiment, const PtmSampleScan * p_ptm_sample, PeptideMatch * p_peptide_match):QAction(parent) {
 
     _p_ptm_peptide_table_proxy_model = parent;
-    _p_peptide_match = p_peptide_match;
+    _peptide_match = *p_peptide_match;
     this->setIcon(PtmPeptideMenuQicon(p_ptm_grouping_experiment, p_ptm_sample, p_peptide_match));
     //this->setText(p_peptide_match->getPeptideXtpSp().get()->getSequence());
 
@@ -81,7 +80,11 @@ PtmPeptideMenuQaction::PtmPeptideMenuQaction(PtmPeptideTableProxyModel * parent,
 #endif
 }
 void PtmPeptideMenuQaction::doTriggered(bool triggered) {
-    _p_ptm_peptide_table_proxy_model->getPtmPeptideListWindowP()->askPeptideDetailView(*_p_peptide_match);
+    PeptideEvidence * p_peptide_evidence = _peptide_match.getPeptideEvidence();
+    qDebug() << "PtmPeptideMenuQaction::doTriggered begin" << _peptide_match.getPeptideEvidence();
+    qDebug() << "PtmPeptideMenuQaction::doTriggered begin 2 " << p_peptide_evidence;
+    qDebug() << "PtmPeptideMenuQaction::doTriggered begin 3 " << p_peptide_evidence->getPeptideXtpSp().get()->toString();
+    _p_ptm_peptide_table_proxy_model->getPtmPeptideListWindowP()->askPeptideDetailView(p_peptide_evidence);
 }
 
 PtmPeptideMenuQaction::~PtmPeptideMenuQaction()
@@ -153,7 +156,7 @@ void PtmPeptideTableProxyModel::onTableClicked(const QModelIndex &index)
     PtmSampleScanSp sp_ptm_sample_scan = _p_ptm_table_model->getPtmSampleScanSpList().at(row);
 
     if (sp_ptm_sample_scan.get()->getPeptideMatchList().size() == 1) {
-        _p_ptm_peptide_list_window->askPeptideDetailView(sp_ptm_sample_scan.get()->getPeptideMatchList().at(0));
+        _p_ptm_peptide_list_window->askPeptideDetailView(sp_ptm_sample_scan.get()->getPeptideMatchList().at(0).getPeptideEvidence());
     }
     else {
         this->showContextMenu(index);
diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.h b/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.h
index a375082bb..373ca4d30 100644
--- a/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.h
+++ b/src/gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.h
@@ -50,7 +50,7 @@ public:
 
 private:
     const PtmSampleScan * _p_ptm_sample_scan;
-    const PeptideMatch * _p_peptide_match;
+    const PeptideMatch _peptide_match;
     const PtmGroupingExperiment * _p_ptm_grouping_experiment;
 };
 
@@ -65,7 +65,7 @@ public slots:
     void doTriggered(bool triggered);
 
 private:
-    PeptideMatch * _p_peptide_match;
+    PeptideMatch _peptide_match;
     PtmPeptideTableProxyModel * _p_ptm_peptide_table_proxy_model;
 };
 
-- 
GitLab