From f4f1fdad687e6e859733d5633a9c96bdc89f3595 Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Wed, 7 Feb 2018 22:27:55 +0100 Subject: [PATCH] new ui to select decoy proteins --- src/gui/project_view/project_view.ui | 91 ++++++++++++++++++++++++-- src/gui/project_view/projectwindow.cpp | 46 +++++++++---- src/gui/project_view/projectwindow.h | 1 + 3 files changed, 118 insertions(+), 20 deletions(-) diff --git a/src/gui/project_view/project_view.ui b/src/gui/project_view/project_view.ui index b6425a66a..358663a03 100644 --- a/src/gui/project_view/project_view.ui +++ b/src/gui/project_view/project_view.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>465</width> - <height>493</height> + <height>533</height> </rect> </property> <property name="windowTitle"> @@ -24,7 +24,7 @@ <string/> </property> <property name="currentIndex"> - <number>0</number> + <number>2</number> </property> <widget class="QWidget" name="identifications"> <attribute name="title"> @@ -133,9 +133,39 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QRadioButton" name="decoy_database_files_radiobutton"> + <property name="toolTip"> + <string>select decoy sequences from fasta files</string> + </property> + <property name="text"> + <string>database files</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">decoy_source_buttongroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="decoy_regexp_radiobutton"> + <property name="toolTip"> + <string>select decoy sequences based on a regular expression</string> + </property> + <property name="text"> + <string>regular expression</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">decoy_source_buttongroup</string> + </attribute> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="decoy_database_groupbox"> <property name="title"> - <string>Decoy database files</string> + <string>Choose decoy database files</string> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> @@ -169,9 +199,9 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_2"> + <widget class="QGroupBox" name="decoy_regexp_groupbox"> <property name="title"> - <string>Decoy protein regular expression</string> + <string>Set regular expression to select decoy proteins</string> </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> @@ -181,6 +211,19 @@ </property> </widget> </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </item> @@ -388,10 +431,46 @@ </hint> </hints> </connection> + <connection> + <sender>decoy_database_files_radiobutton</sender> + <signal>clicked()</signal> + <receiver>ProjectView</receiver> + <slot>doSelectDecoySource()</slot> + <hints> + <hint type="sourcelabel"> + <x>110</x> + <y>184</y> + </hint> + <hint type="destinationlabel"> + <x>682</x> + <y>256</y> + </hint> + </hints> + </connection> + <connection> + <sender>decoy_regexp_radiobutton</sender> + <signal>clicked()</signal> + <receiver>ProjectView</receiver> + <slot>doSelectDecoySource()</slot> + <hints> + <hint type="sourcelabel"> + <x>326</x> + <y>192</y> + </hint> + <hint type="destinationlabel"> + <x>693</x> + <y>239</y> + </hint> + </hints> + </connection> </connections> <slots> <slot>doFdrChanged()</slot> <slot>doMassPrecisionUnitChanged(QString)</slot> <slot>doIdentificationsComboboxChanged(int)</slot> + <slot>doSelectDecoySource()</slot> </slots> + <buttongroups> + <buttongroup name="decoy_source_buttongroup"/> + </buttongroups> </ui> diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp index 804241d0f..06ddc310a 100644 --- a/src/gui/project_view/projectwindow.cpp +++ b/src/gui/project_view/projectwindow.cpp @@ -155,7 +155,7 @@ void ProjectWindow::connectNewPtmIslandListWindow() { void ProjectWindow::connectNewProteinListWindow() { qDebug() << "ProjectWindow::connectNewProteinListWindow begin"; _p_current_protein_list_window = new ProteinListWindow(this); - + _protein_list_window_collection.push_back(_p_current_protein_list_window); qDebug() << "ProjectWindow::connectNewProteinListWindow end"; @@ -341,23 +341,25 @@ void ProjectWindow::doFdrChanged() { try { showWaitingMessage(tr("FDR modifications")); doDisplayLoadingMessage(tr("tagging decoy proteins")); - QModelIndexList index_list = ui->decoy_database_listview->selectionModel()->selectedIndexes(); - if (index_list.size() > 0) { - qDebug() << "ProjectWindow::doFdrChanged index_list.size()=" << index_list.size(); + if (ui->decoy_regexp_radiobutton->isChecked()) { + _project_sp.get()->getProteinStore().setRegexpDecoyPattern(ui->decoy_protein_regexp_line_edit->text()); + } + else { _project_sp.get()->getProteinStore().clearDecoys(); - for (QModelIndex index :index_list) { - if (index.data(Qt::UserRole).canConvert<FastaFile *>()) { - FastaFile * p_fasta_file = index.data(Qt::UserRole).value<FastaFile *>(); - p_fasta_file->setDecoys(_project_sp.get()->getProteinStore()); - } - else { - throw pappso::PappsoException(QObject::tr("can not convert to FastaFile index.data().canConvert<FastaFile *>()")); + QModelIndexList index_list = ui->decoy_database_listview->selectionModel()->selectedIndexes(); + if (index_list.size() > 0) { + qDebug() << "ProjectWindow::doFdrChanged index_list.size()=" << index_list.size(); + for (QModelIndex index :index_list) { + if (index.data(Qt::UserRole).canConvert<FastaFile *>()) { + FastaFile * p_fasta_file = index.data(Qt::UserRole).value<FastaFile *>(); + p_fasta_file->setDecoys(_project_sp.get()->getProteinStore()); + } + else { + throw pappso::PappsoException(QObject::tr("can not convert to FastaFile index.data().canConvert<FastaFile *>()")); + } } } } - else { - _project_sp.get()->getProteinStore().setRegexpDecoyPattern(ui->decoy_protein_regexp_line_edit->text()); - } doDisplayLoadingMessage(tr("updating filters")); _project_sp.get()->updateAutomaticFilters(_project_sp.get()->getAutomaticFilterParameters()); @@ -587,6 +589,8 @@ void ProjectWindow::setProjectSp(ProjectSp project_sp) { qDebug() << "ProjectWindow::setProjectSp begin" ; _project_sp = project_sp; + ui->decoy_regexp_radiobutton->setChecked(true); + ui->decoy_database_groupbox->setVisible(false); qDebug() << "ProjectWindow::setProjectSp begin " << _project_sp.get()->getFastaFileStore().getFastaFileList().size() ; _fastafile_list = _project_sp.get()->getFastaFileStore().getFastaFileList(); @@ -782,3 +786,17 @@ void ProjectWindow::openInXicViewer(const PeptideEvidence * p_peptide_evidence) _p_xic_window->addXic(p_peptide_evidence); qDebug() << "ProjectWindow::openInXicViewer end"; } + + +void ProjectWindow::doSelectDecoySource() { + qDebug() << "ProjectWindow::doSelectDecoySource begin"; + ui->decoy_database_groupbox->setVisible(false); + ui->decoy_regexp_groupbox->setVisible(false); + if (ui->decoy_database_files_radiobutton->isChecked()) { + ui->decoy_database_groupbox->setVisible(true); + } + else { + ui->decoy_regexp_groupbox->setVisible(true); + } + qDebug() << "ProjectWindow::doSelectDecoySource end"; +} diff --git a/src/gui/project_view/projectwindow.h b/src/gui/project_view/projectwindow.h index a9439ef4f..a0701fd86 100644 --- a/src/gui/project_view/projectwindow.h +++ b/src/gui/project_view/projectwindow.h @@ -69,6 +69,7 @@ public slots: void setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window); void doAutomaticFilterParametersChanged(AutomaticFilterParameters parameters); void doFdrChanged(); + void doSelectDecoySource(); void doMassPrecisionUnitChanged(QString combo_value); void doOperationFailed(QString); void doOperationFinished(); -- GitLab