From 6d2a9bb6d48a7d6d062dd884b8bbae707f0f5952 Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Thu, 13 Jun 2019 13:44:48 +0200 Subject: [PATCH] first msrun reference finder --- src/core/msrun.cpp | 6 ++- src/core/project.cpp | 15 ++++--- .../export_masschroq_dialog.ui | 34 +++++++++++++--- .../exportmasschroqdialog.cpp | 40 +++++++++++++++++++ 4 files changed, 83 insertions(+), 12 deletions(-) diff --git a/src/core/msrun.cpp b/src/core/msrun.cpp index 1585259c3..b4cec6b36 100644 --- a/src/core/msrun.cpp +++ b/src/core/msrun.cpp @@ -340,8 +340,10 @@ MsRun::buildMsRunRetentionTime( void MsRun::computeMsRunRetentionTime() { - if(mpa_msrunRetentionTime == nullptr) + if(mpa_msrunRetentionTime != nullptr) { + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ + << " msrun id=" << getXmlId(); mpa_msrunRetentionTime->computePeptideRetentionTimes(); } } @@ -349,7 +351,7 @@ MsRun::computeMsRunRetentionTime() void MsRun::clearMsRunRetentionTime() { - if(mpa_msrunRetentionTime == nullptr) + if(mpa_msrunRetentionTime != nullptr) { delete mpa_msrunRetentionTime; mpa_msrunRetentionTime = nullptr; diff --git a/src/core/project.cpp b/src/core/project.cpp index 3f6a073ba..661aa6b9c 100644 --- a/src/core/project.cpp +++ b/src/core/project.cpp @@ -300,6 +300,7 @@ Project::prepareMsrunRetentionTimesForAlignment() const { qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; bool is_ok = true; + PeptideEvidenceStore empty_store; for(IdentificationDataSourceSp p_ident_data_source : this->getIdentificationDataSourceStore() .getIdentificationDataSourceList()) @@ -313,11 +314,15 @@ Project::prepareMsrunRetentionTimesForAlignment() const MsRun *p_msrun = peptide_evidence.get()->getMsRunPtr(); if(p_msrun->getMsRunRetentionTimePtr() == nullptr) { - throw pappso::PappsoException( - QObject::tr( - "Error preparing msrun retention time for %1 :\n " - "p_msrun->getMsRunRetentionTimePtr() == nullptr") - .arg(p_msrun->getXmlId())); + + p_msrun->buildMsRunRetentionTime(empty_store); + /* + throw pappso::PappsoException( + QObject::tr( + "Error preparing msrun retention time + for %1 :\n " "p_msrun->getMsRunRetentionTimePtr() == + nullptr") .arg(p_msrun->getXmlId())); + */ } p_msrun->getMsRunRetentionTimePtr()->addPeptideAsSeamark( peptide_evidence.get() 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 b128ffc4c..7d61d638e 100644 --- a/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui +++ b/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui @@ -17,7 +17,7 @@ <item> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> - <number>0</number> + <number>1</number> </property> <widget class="QWidget" name="resultTab"> <attribute name="title"> @@ -175,6 +175,13 @@ </layout> </widget> </item> + <item> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>Find best MS run reference for alignment</string> + </property> + </widget> + </item> <item> <spacer name="verticalSpacer_2"> <property name="orientation"> @@ -439,8 +446,8 @@ <slot>doCheckMsrunFilepath()</slot> <hints> <hint type="sourcelabel"> - <x>530</x> - <y>58</y> + <x>101</x> + <y>49</y> </hint> <hint type="destinationlabel"> <x>779</x> @@ -455,8 +462,8 @@ <slot>doBrowseMsrunDirectory()</slot> <hints> <hint type="sourcelabel"> - <x>557</x> - <y>137</y> + <x>119</x> + <y>84</y> </hint> <hint type="destinationlabel"> <x>787</x> @@ -464,11 +471,28 @@ </hint> </hints> </connection> + <connection> + <sender>pushButton</sender> + <signal>clicked()</signal> + <receiver>ExportMasschroqDialog</receiver> + <slot>doFindBestMsrunForAlignment()</slot> + <hints> + <hint type="sourcelabel"> + <x>399</x> + <y>296</y> + </hint> + <hint type="destinationlabel"> + <x>887</x> + <y>309</y> + </hint> + </hints> + </connection> </connections> <slots> <slot>reject()</slot> <slot>accept()</slot> <slot>doCheckMsrunFilepath()</slot> <slot>doBrowseMsrunDirectory()</slot> + <slot>doFindBestMsrunForAlignment()</slot> </slots> </ui> diff --git a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp index dd20c7972..beab656e4 100644 --- a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp +++ b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp @@ -289,6 +289,46 @@ ExportMasschroqDialog::doFindBestMsrunForAlignment() try { mp_project->prepareMsrunRetentionTimesForAlignment(); + + MsRunSp ms_run_best_reference; + std::size_t best_number = 0; + for(auto &msrun_ref_sp : mp_project->getMsRunStore().getMsRunList()) + { + if(ms_run_best_reference == nullptr) + { + ms_run_best_reference = msrun_ref_sp; + } + + std::size_t min_number = std::numeric_limits<std::size_t>::max(); + for(auto &msrun_sp : mp_project->getMsRunStore().getMsRunList()) + { + if(msrun_sp.get() != msrun_ref_sp.get()) + { + pappso::Trace trace; + trace = msrun_sp.get() + ->getMsRunRetentionTimePtr() + ->getCommonDeltaRt(msrun_ref_sp.get() + ->getMsRunRetentionTimePtr() + ->getSeamarks()); + if(trace.size() < min_number) + { + min_number = trace.size(); + } + } + } + + if(min_number > best_number) + { + best_number = min_number; + + ms_run_best_reference = msrun_ref_sp; + } + } + if(ms_run_best_reference != nullptr) + { + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " + << ms_run_best_reference.get()->getXmlId()<< " best_number=" << best_number; + } } catch(pappso::PappsoException &error) { -- GitLab