Newer
Older
/**
* \file gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
* \date 30/9/2017
* \author Olivier Langella
* \brief edit tandem preset dialog
*/
/*******************************************************************************
* Copyright (c) 2017 Olivier Langella <olivier.langella@u-psud.fr>.
*
* This file is part of XTPcpp.
*
* XTPcpp is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* XTPcpp is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XTPcpp. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Olivier Langella <olivier.langella@u-psud.fr> - initial API and implementation
******************************************************************************/
#include "edittandempresetdialog.h"
#include <QDebug>
#include "ui_edit_tandem_preset_dialog.h"
EditTandemPresetDialog::EditTandemPresetDialog(QWidget * parent):
QDialog(parent),
ui(new Ui::EditTandemPresetView)
{
qDebug() << "EditTandemPresetDialog::EditTandemPresetDialog begin";
ui->setupUi(this);
this->setModal(true);
#if QT_VERSION >= 0x050000
// Qt5 code
#else
// Qt4 code
#endif
qDebug() << "EditTandemPresetDialog::EditTandemPresetDialog end";
}
EditTandemPresetDialog::~EditTandemPresetDialog()
{
delete ui;
if (_p_tandem_preset_file != nullptr) {
delete _p_tandem_preset_file;
}
}
void EditTandemPresetDialog::setTandemParametersFile(const TandemParametersFile & tandem_preset_file) {
if (tandem_preset_file.exists()) {
_p_tandem_preset_file = new TandemParametersFile( tandem_preset_file);
_preset_directory = _p_tandem_preset_file->getAbsoluteDir().absolutePath();
_p_tandem_preset_file = new TandemParametersFile(":/tandem/ressources/model/QExactive_analysis_FDR_nosemi.xml");
QSettings settings;
_preset_directory = settings.value("path/tandemrun_preset_directory", "").toString();
_tandem_params = _p_tandem_preset_file->getTandemParameters();
void EditTandemPresetDialog::doCopy() {
ui->method_name_line_edit->setText("untitled");
readUi();
if (_p_tandem_preset_file == nullptr) {
throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
}
else {
delete _p_tandem_preset_file;
}
_p_tandem_preset_file = new TandemParametersFile(QString("%1/untitled.xml").arg(_preset_directory));
void EditTandemPresetDialog::doSelectDir() {
try {
QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),_preset_directory );
if (!directory.isEmpty() && ! directory.isNull()) {
fillPresetComboBox();
}
}
catch (pappso::PappsoException & error) {
//QMessageBox::warning(this,
// tr("Error choosing identification result files : %1").arg(error.qwhat()), error);
}
}
void EditTandemPresetDialog::doSave() {
readUi();
if (_p_tandem_preset_file == nullptr) {
throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
}
_p_tandem_preset_file->setTandemParameters(_tandem_params);
}
void EditTandemPresetDialog::doLoad() {
int index = ui->preset_combo_box->currentIndex();
if (_p_tandem_preset_file == nullptr) {
throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
}
else {
delete _p_tandem_preset_file;
}
_p_tandem_preset_file = new TandemParametersFile(
ui->preset_combo_box->itemData(index).value<QString>());
_tandem_params = _p_tandem_preset_file->getTandemParameters();
populate();
const TandemParametersFile & EditTandemPresetDialog::getTandemParametersFile() const {
if (_p_tandem_preset_file == nullptr) {
throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
}
if (!_p_tandem_preset_file->exists()) {
throw pappso::PappsoException(QObject::tr("preset file %1 does not exists").arg(_p_tandem_preset_file->getAbsoluteFilePath()));
}
return *_p_tandem_preset_file;
}
void EditTandemPresetDialog::fillPresetComboBox() {
ui->preset_combo_box->clear();
QString default_preset_name = _tandem_params.getMethodName();
QStringList filters;
filters << "*.xml";
preset_dir.setNameFilters(filters);
for (QFileInfo file_info: preset_dir.entryInfoList() ) {
ui->preset_combo_box->addItem(file_info.baseName(), QVariant(file_info.absoluteFilePath()));
}
int index = ui->preset_combo_box->findText(default_preset_name);
if ( index != -1 ) { // -1 for not found
ui->preset_combo_box->setCurrentIndex(index);
}
}
void EditTandemPresetDialog::doEdit(QString value) {
QObject *senderObj = sender();
QString senderObjName = senderObj->objectName();
qDebug() << "EditTandemPresetDialog::doEdit begin " << senderObjName << " " << value;
qDebug() << "EditTandemPresetDialog::doEdit end " << senderObjName;
}
void EditTandemPresetDialog::doHelp() {
QObject *senderObj = sender();
QString senderObjName = senderObj->objectName();
qDebug() << "EditTandemPresetDialog::doHelp begin " << senderObjName;
if(senderObjName == "parent_ion_window_unit_push_button")
{
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
html_doc.setFileName(":/tandem/resources/html_doc/spmmeu.html");
}
if(senderObjName == "smpc_push_button")
{
//spmmeu.html
html_doc.setFileName(":/tandem/resources/html_doc/smpc.html");
}
if(senderObjName == "spmmem_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/spmmem.html");
}
if(senderObjName == "spmmep_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/spmmep.html");
}
if(senderObjName == "spmmie_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/spmmie.html");
}
if(senderObjName == "sfmt_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/sfmt.html");
}
if(senderObjName == "sfmmeu_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/sfmmeu.html");
}
if(senderObjName == "sfmme_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/sfmme.html");
}
if(senderObjName == "sunlw_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/sunlw.html");
}
if(senderObjName == "sdr_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/sdr.html");
}
if(senderObjName == "stp_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/stp.html");
}
if(senderObjName == "smp_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/smp.html");
}
if(senderObjName == "smfmz_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/smfmz.html");
}
if(senderObjName == "smpmh_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/smpmh.html");
}
if(senderObjName == "spsbs_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/spsbs.html");
}
if(senderObjName == "suca_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/suca.html");
}
if(senderObjName == "st_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/st.html");
}
if(senderObjName == "pcs_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pcs.html");
}
if(senderObjName == "pcsemi_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pcsemi.html");
}
if(senderObjName == "pcctmc_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pcctmc.html");
}
if(senderObjName == "pcntmc_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pcntmc.html");
}
if(senderObjName == "pctrmm_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pctrmm.html");
}
if(senderObjName == "pntrmm_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pntrmm.html");
}
if(senderObjName == "pqa_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pqa.html");
}
if(senderObjName == "pqp_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pqp.html");
}
if(senderObjName == "pstpb_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pstpb.html");
}
if(senderObjName == "pmrmf_push_button")
{
html_doc.setFileName(":/tandem/resources/html_doc/pmrmf.html");
}
if (html_doc.open(QFile::ReadOnly | QFile::Text)) {
QTextStream in(&html_doc);
ui->doc_plain_text_edit->setHtml(in.readAll());
qDebug() << "EditTandemPresetDialog::doHelp doc " << in.readAll();
}
else {
qDebug() << "EditTandemPresetDialog::doHelp doc not found";
}
qDebug() << "EditTandemPresetDialog::doHelp end " << senderObjName;
}
void EditTandemPresetDialog::readUi() {
try {
_tandem_params.setMethodName(ui->method_name_line_edit->text());
_tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass error units", ui->parent_ion_window_unit_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass error minus", ui->parent_ion_lower_window_edit->text());
_tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass error plus", ui->parent_ion_upper_window_edit->text());
_tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass isotope error", ui->anticipate_carbon_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, maximum parent charge", ui->smpc_edit->text());
_tandem_params.setParamLabelValue("spectrum, fragment mass type", ui->sfmt_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, fragment monoisotopic mass error units", ui->sfmmeu_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, fragment monoisotopic mass error", ui->sfmme_edit->text());
_tandem_params.setParamLabelValue("spectrum, use neutral loss window", ui->sunlw_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, dynamic range", ui->sdr_edit->text());
_tandem_params.setParamLabelValue("spectrum, total peaks", ui->stp_edit->text());
_tandem_params.setParamLabelValue("spectrum, minimum peaks", ui->smp_edit->text());
_tandem_params.setParamLabelValue("spectrum, minimum fragment mz", ui->smfmz_edit->text());
_tandem_params.setParamLabelValue("spectrum, minimum parent m+h", ui->smpmh_edit->text());
_tandem_params.setParamLabelValue("spectrum, sequence batch size", ui->spsbs_edit->text());
_tandem_params.setParamLabelValue("spectrum, use contrast angle", ui->suca_combo_box->currentText());
_tandem_params.setParamLabelValue("spectrum, threads", ui->st_edit->text());
_tandem_params.setParamLabelValue("protein, cleavage site", ui->pcs_edit->text());
_tandem_params.setParamLabelValue("protein, cleavage semi", ui->pcsemi_combo_box->currentText());
_tandem_params.setParamLabelValue("protein, cleavage C-terminal mass change", ui->pcctmc_edit->text());
_tandem_params.setParamLabelValue("protein, cleavage N-terminal mass change", ui->pcntmc_edit->text());
_tandem_params.setParamLabelValue("protein, quick acetyl", ui->pqa_combo_box->currentText());
_tandem_params.setParamLabelValue("protein, quick pyrolidone", ui->pqp_combo_box->currentText());
_tandem_params.setParamLabelValue("protein, stP bias", ui->pstpb_combo_box->currentText());
_tandem_params.setParamLabelValue("protein, modified residue mass file", ui->pmrmf_edit->text());
}
catch (pappso::PappsoException & error) {
QMessageBox::warning(this,tr("Error in parameters :"), error.qwhat());
}
}
void EditTandemPresetDialog::populate() {
ui->method_name_line_edit->setText(_tandem_params.getMethodName());
/*
* <note type="input" label="spectrum, parent monoisotopic mass error units">ppm</note>
* */
int index = ui->parent_ion_window_unit_combo_box->findText(_tandem_params.getValue("spectrum, parent monoisotopic mass error units"));
if ( index != -1 ) { // -1 for not found
ui->parent_ion_window_unit_combo_box->setCurrentIndex(index);
}
else {
qDebug() << "EditTandemPresetDialog::populate " << index;
}
//<note type="input" label="spectrum, parent monoisotopic mass error minus">10</note>
ui->parent_ion_lower_window_edit->setText(_tandem_params.getValue("spectrum, parent monoisotopic mass error minus"));
//<note type="input" label="spectrum, parent monoisotopic mass error plus">10</note>
ui->parent_ion_upper_window_edit->setText(_tandem_params.getValue("spectrum, parent monoisotopic mass error plus"));
//<note type="input" label="spectrum, parent monoisotopic mass isotope error">yes</note>
index = ui->anticipate_carbon_combo_box->findText(_tandem_params.getValue("spectrum, parent monoisotopic mass isotope error"));
if ( index != -1 ) { // -1 for not found
ui->anticipate_carbon_combo_box->setCurrentIndex(index);
}
//<note type="input" label="spectrum, maximum parent charge">4</note>
ui->smpc_edit->setText(_tandem_params.getValue("spectrum, maximum parent charge"));
//<note type="input" label="spectrum, fragment mass type">monoisotopic</note>
index = ui->sfmt_combo_box->findText("monoisotopic");
if ( index != -1 ) { // -1 for not found
ui->sfmt_combo_box->setCurrentIndex(index);
}
//<note type="input" label="spectrum, fragment monoisotopic mass error units">Daltons</note>
index = ui->sfmmeu_combo_box->findText(_tandem_params.getValue("spectrum, fragment monoisotopic mass error units"));
if ( index != -1 ) { // -1 for not found
ui->sfmmeu_combo_box->setCurrentIndex(index);
}
//<note type="input" label="spectrum, fragment monoisotopic mass error">0.02</note>
ui->sfmme_edit->setText(_tandem_params.getValue("spectrum, fragment monoisotopic mass error"));
//<note type="input" label="spectrum, use neutral loss window">yes</note>
index = ui->sunlw_combo_box->findText(_tandem_params.getValue("spectrum, use neutral loss window"));
if ( index != -1 ) { // -1 for not found
ui->sunlw_combo_box->setCurrentIndex(index);
}
//<note type="input" label="spectrum, dynamic range">100.0</note>
ui->sdr_edit->setText(_tandem_params.getValue("spectrum, dynamic range"));
//<note type="input" label="spectrum, total peaks">100</note>
ui->stp_edit->setText(_tandem_params.getValue("spectrum, total peaks"));
ui->smp_edit->setText(_tandem_params.getValue("spectrum, minimum peaks"));
//<note type="input" label="spectrum, minimum fragment mz">150.0</note>
ui->smfmz_edit->setText(_tandem_params.getValue("spectrum, minimum fragment mz"));
//<note type="input" label="spectrum, minimum parent m+h">500.0</note>
ui->smpmh_edit->setText(_tandem_params.getValue("spectrum, minimum parent m+h"));
//<note type="input" label="spectrum, sequence batch size">1000</note>
ui->spsbs_edit->setText(_tandem_params.getValue("spectrum, sequence batch size"));
//<note type="input" label="spectrum, use contrast angle">no</note>
index = ui->suca_combo_box->findText(_tandem_params.getValue("spectrum, use contrast angle"));
if ( index != -1 ) { // -1 for not found
ui->suca_combo_box->setCurrentIndex(index);
}
//<note type="input" label="spectrum, threads">1</note>
ui->st_edit->setText(_tandem_params.getValue("spectrum, threads"));
//<note type="input" label="protein, cleavage site">[RK]|{P}</note>
ui->pcs_edit->setText(_tandem_params.getValue("protein, cleavage site"));
//<note type="input" label="protein, cleavage semi">no</note>
index = ui->pcsemi_combo_box->findText(_tandem_params.getValue("protein, cleavage semi"));
if ( index != -1 ) { // -1 for not found
ui->pcsemi_combo_box->setCurrentIndex(index);
}
//<note type="input" label="protein, cleavage C-terminal mass change">+17.00305</note>
ui->pcctmc_edit->setText(_tandem_params.getValue("protein, cleavage C-terminal mass change"));
//<note type="input" label="protein, cleavage N-terminal mass change">+1.00794</note>
ui->pcntmc_edit->setText(_tandem_params.getValue("protein, cleavage N-terminal mass change"));
//<note type="input" label="protein, C-terminal residue modification mass">0.0</note>
ui->pctrmm_edit->setText(_tandem_params.getValue("protein, C-terminal residue modification mass"));
//<note type="input" label="protein, N-terminal residue modification mass">0.0</note>
ui->pntrmm_edit->setText(_tandem_params.getValue("protein, N-terminal residue modification mass"));
//<note type="input" label="protein, quick acetyl">yes</note>
index = ui->pqa_combo_box->findText(_tandem_params.getValue("protein, quick acetyl"));
if ( index != -1 ) { // -1 for not found
ui->pqa_combo_box->setCurrentIndex(index);
}
//<note type="input" label="protein, quick pyrolidone">yes</note>
index = ui->pqp_combo_box->findText(_tandem_params.getValue("protein, quick pyrolidone"));
if ( index != -1 ) { // -1 for not found
ui->pqp_combo_box->setCurrentIndex(index);
}
//<note type="input" label="protein, stP bias">yes</note>
index = ui->pstpb_combo_box->findText(_tandem_params.getValue("protein, stP bias"));
if ( index != -1 ) { // -1 for not found
ui->pstpb_combo_box->setCurrentIndex(index);
}
//<note type="input" label="protein, modified residue mass file"></note>
ui->pmrmf_edit->setText(_tandem_params.getValue("protein, modified residue mass file"));
void EditTandemPresetDialog::done(int r)
{
if(QDialog::Accepted == r) // ok was pressed
{
readUi();
TandemParameters ref_params = _p_tandem_preset_file->getTandemParameters();
if(ref_params.equals(_tandem_params)) // validate the data somehow
{
QDialog::done(r);
return;
}
else
{
QMessageBox::warning(this,
tr("Save parameters"), tr("Parameters modified but not saved.\nPlease save it before pressing ok or cancel edition"));
return;
}
}
else // cancel, close or exc was pressed
{
QDialog::done(r);
return;
}
}