diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4db3e0c05c1d6c3cb5981168dddd7e820cc112af..f91d1eecf7a2a6d80d96b076cdea8fbeed9ea971 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,11 +28,11 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5 #sudo apt-get install libpappsomspp-dev FIND_PACKAGE( Pappsomspp REQUIRED ) -#SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") +SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") # SET (PAPPSOMSPP_DIR "/home/langella/developpement/git/pappsomspp") -# SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src") -# SET (PAPPSOMSPP_QT5_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt5.so") -# SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so") + SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src") + SET (PAPPSOMSPP_QT5_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt5.so") + SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so") set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_modules) diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp index a8f9efebc7f54f5434d3d67a54e25b3465719994..2403b432b69c08e6250936f8dc2f3b0455db40ea 100644 --- a/src/core/identificationgroup.cpp +++ b/src/core/identificationgroup.cpp @@ -205,12 +205,12 @@ void IdentificationGroup::collectMhDelta(std::vector< pappso::pappso_double> & d } } } -void IdentificationGroup::startGrouping (const GroupingType & grouping_type) { +void IdentificationGroup::startGrouping (const GroupingType & grouping_type, WorkMonitorInterface * p_work_monitor) { qDebug() << "IdentificationGroup::startGrouping begin "; if (_p_grp_experiment != nullptr) { delete _p_grp_experiment; } - _p_grp_experiment = GroupingExperiment::newInstance(grouping_type); + _p_grp_experiment = GroupingExperiment::newInstance(grouping_type, p_work_monitor); for (ProteinMatch * p_protein_match : _protein_match_list) { p_protein_match->setGroupingExperiment(_p_grp_experiment); } diff --git a/src/core/identificationgroup.h b/src/core/identificationgroup.h index 055785bbe85309ffa4d6a9b1f4f5fd1001b719af..01dbafba4159aa9d22ce0fc55ffb07deb85a827e 100644 --- a/src/core/identificationgroup.h +++ b/src/core/identificationgroup.h @@ -28,6 +28,7 @@ #include "grouping/groupingexperiment.h" #include "grouping/ptm/ptmgroupingexperiment.h" #include "../utils/types.h" +#include "../utils/workmonitor.h" #ifndef IDENTIFICATIONGROUP_H #define IDENTIFICATIONGROUP_H @@ -102,7 +103,7 @@ public: * */ void updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters); - void startGrouping (const GroupingType & grouping_type); + void startGrouping (const GroupingType & grouping_type, WorkMonitorInterface * p_work_monitor); /** @brief creates a new PTM grouping experiment * */ void startPtmGrouping (); diff --git a/src/core/project.cpp b/src/core/project.cpp index d5c84e7bbb3270b23bf102f27e5f5d4f6f182011..743a3ceb576aca19f4b0e1a75afcb7b5a034ba80 100644 --- a/src/core/project.cpp +++ b/src/core/project.cpp @@ -143,9 +143,9 @@ void Project::readXpipFile(WorkMonitorInterface * p_monitor, QFileInfo xpip_file } -void Project::startGrouping() { +void Project::startGrouping(WorkMonitorInterface * p_work_monitor) { for (IdentificationGroup * p_id_group : _identification_goup_list) { - p_id_group->startGrouping(_grouping_type); + p_id_group->startGrouping(_grouping_type, p_work_monitor); } } void Project::setLabelingMethodSp(LabelingMethodSp labeling_method_sp) { diff --git a/src/core/project.h b/src/core/project.h index a591edc7c4a648bc993f9ba05a1aee70ac5e84fd..52c8077bee15737ad16aabd2a904d274bd2ca714 100644 --- a/src/core/project.h +++ b/src/core/project.h @@ -61,7 +61,7 @@ public: * */ void updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters); const AutomaticFilterParameters & getAutomaticFilterParameters() const; - void startGrouping(); + void startGrouping(WorkMonitorInterface * p_work_monitor); const GroupingType getGroupingType() const; diff --git a/src/grouping/groupingexperiment.cpp b/src/grouping/groupingexperiment.cpp index 8183207f7880891cf7a4ee78edfa9f81919cd919..25509c7ea4dc53a3bcf0ee074aa01c0bfa8d3996 100644 --- a/src/grouping/groupingexperiment.cpp +++ b/src/grouping/groupingexperiment.cpp @@ -25,9 +25,9 @@ #include <pappsomspp/exception/exceptionnotimplemented.h> #include "groupingpeptidemass.h" -GroupingExperiment::GroupingExperiment() +GroupingExperiment::GroupingExperiment(WorkMonitorInterface * p_work_monitor) { - + _p_work_monitor = p_work_monitor; } GroupingExperiment::~GroupingExperiment() @@ -35,9 +35,9 @@ GroupingExperiment::~GroupingExperiment() } -GroupingExperiment * GroupingExperiment::newInstance(const GroupingType & grouping_type) { +GroupingExperiment * GroupingExperiment::newInstance(const GroupingType & grouping_type, WorkMonitorInterface * p_work_monitor) { if (grouping_type == GroupingType::PeptideMass) { - return new GroupingPeptideMass(); + return new GroupingPeptideMass(p_work_monitor); } else { throw pappso::ExceptionNotImplemented(QObject::tr("Grouping algorithm not yet implemented")); diff --git a/src/grouping/groupingexperiment.h b/src/grouping/groupingexperiment.h index af56449df7b6e11b8b2d1e62063d771f6c4521bb..bd974b4a7f3aed15296d849d2d401feea33af763 100644 --- a/src/grouping/groupingexperiment.h +++ b/src/grouping/groupingexperiment.h @@ -23,6 +23,7 @@ #include "../utils/types.h" +#include "../utils/workmonitor.h" #include <pappsomspp/grouping/grpexperiment.h> #ifndef GROUPINGEXPERIMENT_H @@ -34,15 +35,18 @@ class PeptideMatch; class GroupingExperiment { public: - GroupingExperiment(); + GroupingExperiment(WorkMonitorInterface * p_work_monitor); ~GroupingExperiment(); - static GroupingExperiment * newInstance(const GroupingType & grouping_type); + static GroupingExperiment * newInstance(const GroupingType & grouping_type, WorkMonitorInterface * p_work_monitor); virtual pappso::GrpProteinSp & getGrpProteinSp(ProteinMatch* p_protein_match) = 0; virtual pappso::GrpPeptideSp & setGrpPeptide(pappso::GrpProteinSp proteinSp, PeptideMatch* p_peptide_match) = 0; virtual void addPostGroupingGrpProteinSpRemoval(pappso::GrpProteinSp sp_protein) = 0; virtual void startGrouping()= 0; + +protected: + WorkMonitorInterface * _p_work_monitor; }; diff --git a/src/grouping/groupingpeptidemass.cpp b/src/grouping/groupingpeptidemass.cpp index 0e2d0078b1492c6b8423c5b506fbf2b1bf663293..a1b47b2ffd6679f9a6756a0eeaebf4d6dadc0ff2 100644 --- a/src/grouping/groupingpeptidemass.cpp +++ b/src/grouping/groupingpeptidemass.cpp @@ -25,11 +25,46 @@ #include "../core/proteinmatch.h" #include "../core/peptidematch.h" #include <QDebug> +#include <pappsomspp/grouping/grpgroupingmonitor.h> -GroupingPeptideMass::GroupingPeptideMass() + +class GrpGroupingMonitor: public pappso::GrpGroupingMonitorInterface +{ +public: + GrpGroupingMonitor(WorkMonitorInterface * p_work_monitor) { + _p_work_monitor = p_work_monitor; + }; + ~GrpGroupingMonitor() { + }; + virtual void startGrouping(std::size_t total_number_protein) override { + _p_work_monitor->message(QObject::tr("grouping %1 proteins").arg(total_number_protein)); + _total_number_proteins = total_number_protein; + }; + virtual void groupingProtein() override {}; + virtual void startRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)override{ + _total_number_group = total_number_group; + }; + virtual void stopRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)override{ + _total_number_group = total_number_group; + }; + virtual void removingNonInformativeSubGroupsInGroup()override{ + _p_work_monitor->message(QObject::tr("removing non informative subgroups in %1 groups representing %2 proteins").arg(_total_number_group).arg(_total_number_proteins)); + }; + virtual void startNumberingAllGroups(std::size_t total_number_group)override{ + _p_work_monitor->message(QObject::tr("numbering in %1 groups representing %2 proteins").arg(_total_number_group).arg(_total_number_proteins)); + }; + virtual void stopGrouping()override{}; +private: + WorkMonitorInterface * _p_work_monitor; + std::size_t _total_number_proteins; + std::size_t _total_number_group; +}; + +GroupingPeptideMass::GroupingPeptideMass(WorkMonitorInterface * p_work_monitor): GroupingExperiment(p_work_monitor) { //_p_monitor = new pappso::GrpGroupingMonitor(); + _p_monitor = new GrpGroupingMonitor(_p_work_monitor); _p_grp_experiment = new pappso::GrpExperiment(_p_monitor); } diff --git a/src/grouping/groupingpeptidemass.h b/src/grouping/groupingpeptidemass.h index 2391bba35f91c1b37a2f14e45d2926a3b9489fe1..5f64a54c9548dbbd4e67fca04f87a624f07f7008 100644 --- a/src/grouping/groupingpeptidemass.h +++ b/src/grouping/groupingpeptidemass.h @@ -25,6 +25,8 @@ #ifndef GROUPINGPEPTIDEMASS_H #define GROUPINGPEPTIDEMASS_H +class GrpGroupingMonitor; + class GroupingPeptideMass: public GroupingExperiment { friend class GroupingExperiment; @@ -39,10 +41,10 @@ public: virtual void startGrouping() override; protected : - GroupingPeptideMass(); + GroupingPeptideMass(WorkMonitorInterface * p_work_monitor); private : - pappso::GrpGroupingMonitor * _p_monitor = nullptr; + GrpGroupingMonitor * _p_monitor = nullptr; pappso::GrpExperiment * _p_grp_experiment; }; diff --git a/src/gui/waiting_message_dialog/waiting_message_dialog.ui b/src/gui/waiting_message_dialog/waiting_message_dialog.ui index d0ac9f0831a5528629f8f1e6b37f402a31be32eb..7f643a6055c21652eab7ece373771537e41f9ff7 100644 --- a/src/gui/waiting_message_dialog/waiting_message_dialog.ui +++ b/src/gui/waiting_message_dialog/waiting_message_dialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>746</width> - <height>150</height> + <height>186</height> </rect> </property> <property name="windowTitle"> @@ -22,6 +22,12 @@ <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="movie_label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string>movie</string> </property> @@ -32,6 +38,9 @@ <property name="text"> <string>TextLabel</string> </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> </widget> </item> </layout> diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp index ff9cb5c7b749f1459e5a25db540dac0c9f5e2006..d5ada7b4c68a7e120bdea5ddec4140f67caf7a56 100644 --- a/src/gui/workerthread.cpp +++ b/src/gui/workerthread.cpp @@ -219,7 +219,7 @@ void WorkerThread::doGroupingOnIdentification(IdentificationGroup * p_identifica try { emit loadingMessage(tr("grouping proteins")); try { - p_identification_group->startGrouping(grouping_type); + p_identification_group->startGrouping(grouping_type, _p_work_monitor); } catch (pappso::PappsoException exception_pappso) { @@ -241,7 +241,7 @@ void WorkerThread::doGrouping(ProjectSp project_sp) { try { emit loadingMessage(tr("grouping proteins")); try { - project_sp.get()->startGrouping(); + project_sp.get()->startGrouping(_p_work_monitor); } catch (pappso::PappsoException exception_pappso) {