From 9060c2b51902fb35dee73945ed60196f171328e1 Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Tue, 19 Dec 2017 16:58:22 +0100 Subject: [PATCH] beautifull mass delta histogram --- src/gui/project_view/project_view.ui | 149 ++++++++++++++----------- src/gui/project_view/projectwindow.cpp | 29 +++-- src/utils/utils.cpp | 7 +- 3 files changed, 109 insertions(+), 76 deletions(-) diff --git a/src/gui/project_view/project_view.ui b/src/gui/project_view/project_view.ui index 92edffd52..b50818ffe 100644 --- a/src/gui/project_view/project_view.ui +++ b/src/gui/project_view/project_view.ui @@ -24,7 +24,7 @@ <string/> </property> <property name="currentIndex"> - <number>0</number> + <number>3</number> </property> <widget class="QWidget" name="identifications"> <attribute name="title"> @@ -270,73 +270,92 @@ <item row="0" column="0"> <layout class="QVBoxLayout" name="verticalLayout_5"> <item> - <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0"> - <layout class="QFormLayout" name="formLayout_3"/> - </item> - <item row="0" column="1"> - <widget class="QComboBox" name="precision_unit_combobox"> - <item> - <property name="text"> - <string>ppm</string> - </property> - </item> - <item> - <property name="text"> - <string>dalton</string> + <widget class="QWidget" name="widget" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <layout class="QFormLayout" name="formLayout_2"> + <property name="sizeConstraint"> + <enum>QLayout::SetMinimumSize</enum> </property> - </item> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>mean</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="mass_precision_mean_label"> - <property name="text"> - <string>0</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>median</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="mass_precision_median_label"> - <property name="text"> - <string>0</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_5"> - <property name="text"> - <string>standard deviation</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLabel" name="mass_precision_sd_label"> - <property name="toolTip"> - <string>Mass deviation is computed on all valid and checked proteins but not decoy</string> - </property> - <property name="text"> - <string>0</string> - </property> - </widget> - </item> - </layout> + <item row="0" column="1"> + <widget class="QComboBox" name="precision_unit_combobox"> + <item> + <property name="text"> + <string>ppm</string> + </property> + </item> + <item> + <property name="text"> + <string>dalton</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>mean</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="mass_precision_mean_label"> + <property name="text"> + <string>0</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>median</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLabel" name="mass_precision_median_label"> + <property name="text"> + <string>0</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>standard deviation</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLabel" name="mass_precision_sd_label"> + <property name="toolTip"> + <string>Mass deviation is computed on all valid and checked proteins but not decoy</string> + </property> + <property name="text"> + <string>0</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> </item> <item> - <widget class="QCustomPlot" name="mass_histogram_widget" native="true"/> + <widget class="QCustomPlot" name="mass_histogram_widget" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> </item> </layout> </item> diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp index 76dd32d65..bc914c275 100644 --- a/src/gui/project_view/projectwindow.cpp +++ b/src/gui/project_view/projectwindow.cpp @@ -67,6 +67,26 @@ ProjectWindow::ProjectWindow(MainWindow *parent): _p_waiting_message_dialog = new WaitingMessageDialog(this); + ui->mass_histogram_widget->xAxis->setLabel("mass delta"); + ui->mass_histogram_widget->yAxis->setLabel("count"); + ui->mass_histogram_widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom ); + ui->mass_histogram_widget->axisRects().at(0)->setRangeDrag(Qt::Horizontal); + ui->mass_histogram_widget->axisRects().at(0)->setRangeZoom(Qt::Horizontal); + //legend->setVisible(false); + ui->mass_histogram_widget->legend->setFont(QFont("Helvetica",9)); +// set locale to english, so we get english decimal separator: +//setLocale(QLocale(QLocale::English, QLocale::UnitedKingdom)); + setFocusPolicy(Qt::ClickFocus); + + QCPGraph * p_graph = ui->mass_histogram_widget->addGraph(); + //p_graph->setName("raw xic"); + //QPen pen; + //pen.setColor(getNewColors()); + //graph()->setPen(pen); + //graph()->setName(lineNames.at(i-QCPGraph::lsNone)); + p_graph->setLineStyle(QCPGraph::LineStyle::lsStepCenter); + //p_graph->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 2.0)); + #if QT_VERSION >= 0x050000 // Qt5 code @@ -294,14 +314,7 @@ void ProjectWindow::computeMassPrecision() { y.push_back(mass_pair.second); } - QCPGraph * p_graph = ui->mass_histogram_widget->addGraph(); - //p_graph->setName("raw xic"); - //QPen pen; - //pen.setColor(getNewColors()); - //graph()->setPen(pen); - //graph()->setName(lineNames.at(i-QCPGraph::lsNone)); - p_graph->setLineStyle(QCPGraph::LineStyle::lsStepCenter); - //p_graph->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 2.0)); + QCPGraph * p_graph = ui->mass_histogram_widget->graph(); p_graph->setData(x,y); p_graph->rescaleAxes(true); ui->mass_histogram_widget->rescaleAxes(); diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp index 32aaeb9df..0b9292d37 100644 --- a/src/utils/utils.cpp +++ b/src/utils/utils.cpp @@ -39,7 +39,7 @@ const QString Utils::getDatabaseName(ExternalDatabase database) { std::vector<std::pair<pappso::pappso_double, size_t>> Utils::getHistogram(std::vector<pappso::pappso_double> data_values, unsigned int number_of_class) { - std::vector<std::pair<pappso::pappso_double, size_t>> histogram(number_of_class); + std::vector<std::pair<pappso::pappso_double, size_t>> histogram(number_of_class+1); try { qDebug() << "Utils::getHistogram begin"; @@ -51,11 +51,12 @@ std::vector<std::pair<pappso::pappso_double, size_t>> Utils::getHistogram(std::v qDebug() << "Utils::getHistogram number_of_class offset=" << offset; for (unsigned int i= 0; i < histogram.size(); i++) { histogram[i] = std::pair<pappso::pappso_double, size_t> {(min + (offset * i) + (offset/2)), 0}; + qDebug() << "Utils::getHistogram x=" << histogram[i].first; } qDebug() << "Utils::getHistogram data_values"; for (pappso::pappso_double value :data_values) { - qDebug() << "Utils::getHistogram value=" << value; - unsigned int i = std::abs((min+(min-value))/offset ); + //qDebug() << "Utils::getHistogram value=" << value; + unsigned int i = std::abs((value-min)/offset ); qDebug() << "Utils::getHistogram i=" << i << " size=" << histogram.size(); histogram.at(i).second++; } -- GitLab