Skip to content
Snippets Groups Projects
Commit cbd2c559 authored by Langella Olivier's avatar Langella Olivier
Browse files

beautifull histogram

parent 5c527b1f
No related branches found
No related tags found
No related merge requests found
......@@ -78,6 +78,7 @@ ProjectWindow::ProjectWindow(MainWindow *parent):
setFocusPolicy(Qt::ClickFocus);
_p_bars = new QCPBars(ui->mass_histogram_widget->xAxis, ui->mass_histogram_widget->yAxis);
ui->mass_histogram_widget->addGraph();
#if QT_VERSION >= 0x050000
......@@ -127,6 +128,94 @@ ProjectWindow::~ProjectWindow()
}
void ProjectWindow::computeMassPrecision() {
qDebug() << "ProjectWindow::computeMassPrecision begin";
try {
ValidationState state = ValidationState::validAndChecked;
std::vector< pappso::pappso_double> delta_list;
pappso::PrecisionUnit unit = pappso::PrecisionUnit::dalton;
if (ui->precision_unit_combobox->currentText() == "ppm") {
unit = pappso::PrecisionUnit::ppm;
}
for (IdentificationGroup * identification_group : _project_sp.get()->getIdentificationGroupList()) {
identification_group->collectMhDelta(delta_list, unit, state);
}
qDebug() << "ProjectWindow::computeMassPrecision accumulate";
pappso::pappso_double sum = std::accumulate(delta_list.begin(), delta_list.end(), 0);
qDebug() << "ProjectWindow::computeMassPrecision delta_list.size()=" << delta_list.size();
pappso::pappso_double mean = 0;
if (delta_list.size() > 0) {
mean = sum / ((pappso::pappso_double) delta_list.size());
}
else {
throw pappso::PappsoException(QObject::tr("division by zero : no valid peptide found. Please check your filter parameters (decoy regexp or database particularly)"));
}
std::sort(delta_list.begin(), delta_list.end());
pappso::pappso_double median = delta_list[(delta_list.size()/2)];
qDebug() << "ProjectWindow::computeMassPrecision sd";
pappso::pappso_double sd = 0;
for (pappso::pappso_double val : delta_list) {
//sd = sd + ((val - mean) * (val - mean));
sd += std::pow((val - mean), 2);
}
sd = sd / delta_list.size();
sd = std::sqrt(sd);
ui->mass_precision_mean_label->setText(QString::number(mean,'f',10));
ui->mass_precision_median_label->setText(QString::number(median,'f',10));
ui->mass_precision_sd_label->setText(QString::number(sd,'f',10));
std::vector< std::pair<pappso::pappso_double, size_t >> histogram = Utils::getHistogram(delta_list, 100);
// generate some data:
QVector<double> x, y;
for (std::pair<pappso::pappso_double, size_t > & mass_pair: histogram)
{
x.push_back(mass_pair.first);
y.push_back(mass_pair.second);
}
delete _p_bars;
_p_bars = new QCPBars(ui->mass_histogram_widget->xAxis, ui->mass_histogram_widget->yAxis);
_p_bars->clearData();
_p_bars->setWidth((x[0] - x[x.size()-1])/x.size());
_p_bars->setData(x, y);
_p_bars->rescaleAxes();
//ui->mass_histogram_widget->yAxis->setRange(0, *std::max(y.begin(), y.end()));
//ui->mass_histogram_widget->xAxis->setRange(x[0], x[x.size()-1]);
//QCPGraph * p_graph = ui->mass_histogram_widget->graph();
//p_graph->clearData();
//p_graph->setData(x,y);
ui->mass_histogram_widget->rescaleAxes();
//p_graph->rescaleAxes(true);
ui->mass_histogram_widget->replot();
}
catch (pappso::PappsoException exception_pappso) {
ui->mass_precision_mean_label->setText("0");
ui->mass_precision_median_label->setText("0");
ui->mass_precision_sd_label->setText("0");
QMessageBox::warning(this,
tr("Unable to compute mass precision :"), exception_pappso.qwhat());
}
catch (std::exception exception_std) {
ui->mass_precision_mean_label->setText("0");
ui->mass_precision_median_label->setText("0");
ui->mass_precision_sd_label->setText("0");
QMessageBox::warning(this,
tr("Unable to compute mass precision :"), exception_std.what());
}
qDebug() << "ProjectWindow::computeMassPrecision end";
}
Project * ProjectWindow::getProjectP() {
return _project_sp.get();
}
......@@ -248,90 +337,6 @@ void ProjectWindow::computeFdr() {
qDebug() << "ProjectWindow::computeFdr end";
}
void ProjectWindow::computeMassPrecision() {
qDebug() << "ProjectWindow::computeMassPrecision begin";
try {
ValidationState state = ValidationState::validAndChecked;
std::vector< pappso::pappso_double> delta_list;
pappso::PrecisionUnit unit = pappso::PrecisionUnit::dalton;
if (ui->precision_unit_combobox->currentText() == "ppm") {
unit = pappso::PrecisionUnit::ppm;
}
for (IdentificationGroup * identification_group : _project_sp.get()->getIdentificationGroupList()) {
identification_group->collectMhDelta(delta_list, unit, state);
}
qDebug() << "ProjectWindow::computeMassPrecision accumulate";
pappso::pappso_double sum = std::accumulate(delta_list.begin(), delta_list.end(), 0);
qDebug() << "ProjectWindow::computeMassPrecision delta_list.size()=" << delta_list.size();
pappso::pappso_double mean = 0;
if (delta_list.size() > 0) {
mean = sum / ((pappso::pappso_double) delta_list.size());
}
else {
throw pappso::PappsoException(QObject::tr("division by zero : no valid peptide found. Please check your filter parameters (decoy regexp or database particularly)"));
}
std::sort(delta_list.begin(), delta_list.end());
pappso::pappso_double median = delta_list[(delta_list.size()/2)];
qDebug() << "ProjectWindow::computeMassPrecision sd";
pappso::pappso_double sd = 0;
for (pappso::pappso_double val : delta_list) {
//sd = sd + ((val - mean) * (val - mean));
sd += std::pow((val - mean), 2);
}
sd = sd / delta_list.size();
sd = std::sqrt(sd);
ui->mass_precision_mean_label->setText(QString::number(mean,'f',10));
ui->mass_precision_median_label->setText(QString::number(median,'f',10));
ui->mass_precision_sd_label->setText(QString::number(sd,'f',10));
std::vector< std::pair<pappso::pappso_double, size_t >> histogram = Utils::getHistogram(delta_list, 100);
// generate some data:
QVector<double> x, y;
for (std::pair<pappso::pappso_double, size_t > & mass_pair: histogram)
{
x.push_back(mass_pair.first);
y.push_back(mass_pair.second);
}
//delete _p_bars;
//_p_bars = new QCPBars(ui->mass_histogram_widget->xAxis, ui->mass_histogram_widget->yAxis);
_p_bars->clearData();
_p_bars->setWidth((x[0] - x[x.size()-1])/x.size());
_p_bars->setData(x, y);
_p_bars->rescaleAxes(true);
ui->mass_histogram_widget->yAxis->setRange(0, *std::max(y.begin(), y.end()));
ui->mass_histogram_widget->xAxis->setRange(x[0], x[x.size()-1]);
//QCPGraph * p_graph = ui->mass_histogram_widget->graph();
//p_graph->setData(x,y);
//ui->mass_histogram_widget->rescaleAxes();
ui->mass_histogram_widget->replot();
}
catch (pappso::PappsoException exception_pappso) {
ui->mass_precision_mean_label->setText("0");
ui->mass_precision_median_label->setText("0");
ui->mass_precision_sd_label->setText("0");
QMessageBox::warning(this,
tr("Unable to compute mass precision :"), exception_pappso.qwhat());
}
catch (std::exception exception_std) {
ui->mass_precision_mean_label->setText("0");
ui->mass_precision_median_label->setText("0");
ui->mass_precision_sd_label->setText("0");
QMessageBox::warning(this,
tr("Unable to compute mass precision :"), exception_std.what());
}
qDebug() << "ProjectWindow::computeMassPrecision end";
}
void ProjectWindow::doFdrChanged() {
qDebug() << "ProjectWindow::doFdrChanged begin ";
try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment