From 9225e6b9d29cbe6081e75b06de685738ab56bb4d Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Sun, 9 Jun 2019 20:25:17 +0200
Subject: [PATCH] WIP: using msrunretention object

---
 src/core/msrun.cpp                            | 44 +++++++++++++++----
 src/core/msrun.h                              |  6 ++-
 .../exportmasschroqdialog.cpp                 | 21 +++++++--
 3 files changed, 58 insertions(+), 13 deletions(-)

diff --git a/src/core/msrun.cpp b/src/core/msrun.cpp
index 124e89dcc..6c3cb0fe0 100644
--- a/src/core/msrun.cpp
+++ b/src/core/msrun.cpp
@@ -309,18 +309,46 @@ MsRun::getMsRunXicExtractorInterfaceSp()
 }
 
 void
-MsRun::initializeMsRunRetentionTime(
+MsRun::buildMsRunRetentionTime(
   const PeptideEvidenceStore &peptide_evidence_store)
 {
   pappso::MsRunReaderSPtr reader = getMsRunReaderSPtr();
-  mpa_msrunRetentionTime =
-    new pappso::MsRunRetentionTime<const pappso::Peptide *>(reader);
-
+  if(mpa_msrunRetentionTime == nullptr)
+    {
+      mpa_msrunRetentionTime =
+        new pappso::MsRunRetentionTime<const pappso::Peptide *>(reader);
+    }
   for(auto &peptide_evidence : peptide_evidence_store.getPeptideEvidenceList())
     {
-      mpa_msrunRetentionTime->addPeptideAsSeamark(
-        peptide_evidence.get()->getPeptideXtpSp().get()->getNativePeptideP(),
-        reader.get()->scanNumber2SpectrumIndex(
-          peptide_evidence.get()->getScanNumber()));
+      if(peptide_evidence.get()->getMsRunP() == this)
+        {
+          mpa_msrunRetentionTime->addPeptideAsSeamark(
+            peptide_evidence.get()
+              ->getPeptideXtpSp()
+              .get()
+              ->getNativePeptideP(),
+            reader.get()->scanNumber2SpectrumIndex(
+              peptide_evidence.get()->getScanNumber()));
+        }
+    }
+  // mpa_msrunRetentionTime->computePeptideRetentionTimes();
+}
+
+void
+MsRun::computeMsRunRetentionTime()
+{
+  if(mpa_msrunRetentionTime == nullptr)
+    {
+      mpa_msrunRetentionTime->computePeptideRetentionTimes();
+    }
+}
+
+void
+MsRun::clearMsRunRetentionTime()
+{
+  if(mpa_msrunRetentionTime == nullptr)
+    {
+      delete mpa_msrunRetentionTime;
+      mpa_msrunRetentionTime = nullptr;
     }
 }
diff --git a/src/core/msrun.h b/src/core/msrun.h
index 4038311ee..2d1e1ed26 100644
--- a/src/core/msrun.h
+++ b/src/core/msrun.h
@@ -81,8 +81,10 @@ class MsRun : public pappso::MsRunId
 
   pappso::MsRunXicExtractorInterfaceSp getMsRunXicExtractorInterfaceSp();
 
-  void initializeMsRunRetentionTime(
-    const PeptideEvidenceStore &peptide_evidence_store);
+  void
+  buildMsRunRetentionTime(const PeptideEvidenceStore &peptide_evidence_store);
+  void computeMsRunRetentionTime();
+  void clearMsRunRetentionTime();
 
   private:
   std::map<MsRunStatistics, QVariant> _param_stats;
diff --git a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
index 4e2643b0f..6d615df0b 100644
--- a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
+++ b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
@@ -277,22 +277,22 @@ ExportMasschroqDialog::doFindBestMsrunForAlignment()
       // p_identification_group =
       // mp_project->getIdentificationGroupList()[0]->get
     }
-  std::vector<MsRunSp> msrun_list;
+  bool is_ok = true;
   for(IdentificationDataSourceSp p_ident_data_source :
       mp_project->getIdentificationDataSourceStore()
         .getIdentificationDataSourceList())
     {
       MsRunSp msrun_sp = p_ident_data_source->getMsRunSp();
-      msrun_list.push_back(msrun_sp);
 
       if(msrun_sp->findMsRunFile())
         {
           // msrun_sp->checkMsRunStatistics();
-          msrun_sp->initializeMsRunRetentionTime(
+          msrun_sp->buildMsRunRetentionTime(
             p_ident_data_source->getPeptideEvidenceStore());
         }
       else
         {
+          is_ok = false;
           ui->warningDirectoryLabel->setText(
             tr("%1 not found : Please choose the directory to look for this MS "
                "run file.")
@@ -301,4 +301,19 @@ ExportMasschroqDialog::doFindBestMsrunForAlignment()
           break;
         }
     }
+  if(is_ok)
+    {
+      for(auto &msrun_sp : mp_project->getMsRunStore().getMsRunList())
+        {
+          msrun_sp->computeMsRunRetentionTime();
+        }
+        //find the best reference
+    }
+  else
+    {
+      for(auto &msrun_sp : mp_project->getMsRunStore().getMsRunList())
+        {
+          msrun_sp->clearMsRunRetentionTime();
+        }
+    }
 }
-- 
GitLab