Skip to content
Snippets Groups Projects
edittandempresetdialog.cpp 54.2 KiB
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>
Langella Olivier's avatar
Langella Olivier committed
#include <pappsomspp/pappsoexception.h>
#include <pappsomspp/exception/exceptionnotfound.h>

#include "ui_edit_tandem_preset_dialog.h"
Langella Olivier's avatar
Langella Olivier committed
#include <QSettings>
Langella Olivier's avatar
Langella Olivier committed
#include <QDir>
Langella Olivier's avatar
Langella Olivier committed
#include <QFileDialog>
Langella Olivier's avatar
Langella Olivier committed
#include <QMessageBox>
EditTandemPresetDialog::EditTandemPresetDialog(QWidget *parent)
    : QDialog(parent), ui(new Ui::EditTandemPresetView)
    qDebug() << "EditTandemPresetDialog::EditTandemPresetDialog begin";
    ui->setupUi(this);
    this->setModal(true);
    ui->splitter->setStretchFactor(0, 1);
#if QT_VERSION >= 0x050000
    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)
Langella Olivier's avatar
Langella Olivier committed

        if(tandem_preset_file.exists())
            _p_tandem_preset_file = new TandemParametersFile(tandem_preset_file);
            _preset_directory =
                _p_tandem_preset_file->getAbsoluteDir().absolutePath();
            _tandem_params = _p_tandem_preset_file->getTandemParameters();
            _p_tandem_preset_file = new TandemParametersFile(
                ":/tandem/resources/model/QExactive_analysis_FDR_nosemi.xml");
            _tandem_params = _p_tandem_preset_file->getTandemParameters();
            QSettings settings;
            _preset_directory =
                settings.value("path/tandemrun_preset_directory", "").toString();
            _p_tandem_preset_file->setDirectory(QDir(_preset_directory));
    catch(pappso::PappsoException &error)
        qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
        QMessageBox::warning(
            this, tr("Error"), tr("Error :\n %1").arg(error.qwhat()));
    fillPresetComboBox();
    populate();
void
EditTandemPresetDialog::doCopy()
{
    ui->method_name_line_edit->setText("untitled");
    readUi();
    if(_p_tandem_preset_file == nullptr)
Langella Olivier's avatar
Langella Olivier committed

        throw pappso::PappsoException(
            QObject::tr("_p_tandem_preset_file == nullptr"));
        delete _p_tandem_preset_file;
    _p_tandem_preset_file =
        new TandemParametersFile(QString("%1/untitled.xml").arg(_preset_directory));
void
EditTandemPresetDialog::doSelectDir()
{
        QString directory = QFileDialog::getExistingDirectory(
                                this, tr("Choose preset directory"), _preset_directory);
        QFileInfo my_dir(directory);
        if(!directory.isEmpty() && !directory.isNull())
            if(!my_dir.isWritable())
                throw pappso::PappsoException(
                    QObject::tr(
                        "this directory is not writable, check permissions (%1)")
                    .arg(my_dir.absoluteFilePath()));
            _preset_directory = directory;
            fillPresetComboBox();
    catch(pappso::PappsoException &error)
        QMessageBox::warning(
            this,
            tr("Error :"),
            tr("Error choosing preset directory : %1").arg(error.qwhat()));
void
EditTandemPresetDialog::doSave()
{
    readUi();
    if(_p_tandem_preset_file == nullptr)
        throw pappso::PappsoException(
            QObject::tr("_p_tandem_preset_file == nullptr"));
    _p_tandem_preset_file->setDirectory(QDir(_preset_directory));
    _p_tandem_preset_file->setTandemParameters(_tandem_params);
    fillPresetComboBox();
    populate();
void
EditTandemPresetDialog::doLoad()
{
    int index = ui->preset_combo_box->currentIndex();
    if(index != -1)
    {   // -1 for not found
        qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
        TandemParametersFile *p_tandem_preset_file = new TandemParametersFile(
            ui->preset_combo_box->itemData(index).value<QString>());
        if(p_tandem_preset_file->isTandemPresetFile())
        {
            if(_p_tandem_preset_file == nullptr)
                throw pappso::PappsoException(
                    QObject::tr("_p_tandem_preset_file == nullptr"));
                delete _p_tandem_preset_file;
            _p_tandem_preset_file = p_tandem_preset_file;
            try
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                _tandem_params = _p_tandem_preset_file->getTandemParameters();
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                populate();
            catch(pappso::PappsoException &error)
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                QMessageBox::warning(
                    this,
                    tr("Error :"),
                    tr("Error reading %1 X!Tandem parameter file:\n %2")
                    .arg(p_tandem_preset_file->getAbsoluteFilePath())
                    .arg(error.qwhat()));
Langella Olivier's avatar
Langella Olivier committed
        }
            QMessageBox::warning(
                this,
                tr("Error :"),
                tr("%1 is not an X!Tandem parameter file")
                .arg(p_tandem_preset_file->getAbsoluteFilePath()));
Langella Olivier's avatar
Langella Olivier committed
        }
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();
    QDir preset_dir(_preset_directory);
    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;
    QFile html_doc;
    if(senderObjName == "spmmeu_push_button")
        // spmmeu.html
        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 == "snlm_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/snlm.html");
    if(senderObjName == "snlw_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/snlw.html");
    if(senderObjName == "suns_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/suns.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((senderObjName == "rmm_push_button") ||
            (senderObjName == "rmm1_push_button") ||
            (senderObjName == "rmm2_push_button"))
        html_doc.setFileName(":/tandem/resources/html_doc/rmm.html");
    if(senderObjName == "rpmm_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rpmm.html");
    if(senderObjName == "rpmmotif_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rpmmotif.html");
    if(senderObjName == "smic_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/smic.html");
    if(senderObjName == "smmcs_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/smmcs.html");
    if(senderObjName == "scp_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/scp.html");
    if(senderObjName == "sir_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sir.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "syi_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/syi.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "sbi_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sbi.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "sci_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sci.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "szi_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/szi.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "sai_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sai.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "sxi_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sxi.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "refine_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refine.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "rmvev_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rmvev.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "refpntm_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpntm.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if(senderObjName == "refpctm_push_button")
Langella Olivier's avatar
Langella Olivier committed
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpctm.html");
Langella Olivier's avatar
Langella Olivier committed
    }
    if((senderObjName == "refmm_push_button") ||
            (senderObjName == "refmm1_push_button") ||
            (senderObjName == "refmm2_push_button"))
        html_doc.setFileName(":/tandem/resources/html_doc/refmm.html");
    if((senderObjName == "refpmm_push_button") ||
            (senderObjName == "refpmm1_push_button") ||
            (senderObjName == "refpmm2_push_button"))
        html_doc.setFileName(":/tandem/resources/html_doc/refpmm.html");
    if((senderObjName == "refpmmotif_push_button") ||
            (senderObjName == "refpmmotif1_push_button") ||
            (senderObjName == "refpmmotif2_push_button"))
        html_doc.setFileName(":/tandem/resources/html_doc/refpmmotif.html");
    if(senderObjName == "rupmffr_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rupmffr.html");
    if(senderObjName == "rcsemi_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rcsemi.html");
    if(senderObjName == "ruc_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/ruc.html");
    if(senderObjName == "rss_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rss.html");
    if(senderObjName == "rpm_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/rpm.html");
    if((senderObjName == "omvev_push_button") ||
            (senderObjName == "omvpev_push_button"))
        html_doc.setFileName(":/tandem/resources/html_doc/omvev.html");
    if(senderObjName == "oresu_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oresu.html");
    if(senderObjName == "osrb_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/osrb.html");
    if(senderObjName == "oprot_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oprot.html");
    if(senderObjName == "oseq_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oseq.html");
    if(senderObjName == "oosc_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oosc.html");
    if(senderObjName == "ospec_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/ospec.html");
    if(senderObjName == "opara_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/opara.html");
    if(senderObjName == "ohist_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/ohist.html");
    if(senderObjName == "ohcw_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/ohcw.html");
    if(senderObjName == "oph_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oph.html");
    if(senderObjName == "oxp_push_button")
        html_doc.setFileName(":/tandem/resources/html_doc/oxp.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();
        qDebug() << "EditTandemPresetDialog::doHelp doc not found";
    qDebug() << "EditTandemPresetDialog::doHelp end " << senderObjName;
void
EditTandemPresetDialog::readUi()
{
        _tandem_params.setMethodName(ui->method_name_line_edit->text());
        _tandem_params.setParamLabelValue(
            "spectrum, parent monoisotopic mass error units", "Daltons");
        if(ui->spmmeu_ppm_radio_button->isChecked())
            _tandem_params.setParamLabelValue(
                "spectrum, parent monoisotopic mass error units", "ppm");
        _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", "no");
        if(ui->spmmie_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue(
                "spectrum, parent monoisotopic mass isotope error", "yes");
Langella Olivier's avatar
Langella Olivier committed

        _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", "Daltons");
        if(ui->sfmmeu_ppm_radio_button->isChecked())
            _tandem_params.setParamLabelValue(
                "spectrum, fragment monoisotopic mass error units", "ppm");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue(
            "spectrum, fragment monoisotopic mass error", ui->sfmme_edit->text());
        _tandem_params.setParamLabelValue("spectrum, use neutral loss window",
                                          "no");
        if(ui->sunlw_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("spectrum, use neutral loss window",
                                              "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("spectrum, neutral loss mass",
                                          ui->snlm_edit->text());
        _tandem_params.setParamLabelValue("spectrum, neutral loss window",
                                          ui->snlw_edit->text());
        _tandem_params.setParamLabelValue("spectrum, use noise suppression",
                                          "no");
        if(ui->suns_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("spectrum, use noise suppression",
                                              "yes");
        _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", "no");
        if(ui->suca_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("spectrum, use contrast angle",
                                              "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _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", "no");
        if(ui->pcsemi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("protein, cleavage semi", "yes");
        _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", "no");
        if(ui->pqa_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("protein, quick acetyl", "yes");
        _tandem_params.setParamLabelValue("protein, quick pyrolidone", "no");
        if(ui->pqp_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("protein, quick pyrolidone", "yes");
        _tandem_params.setParamLabelValue("protein, stP bias", "no");
        if(ui->pstpb_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("protein, stP bias", "yes");
        _tandem_params.setParamLabelValue("protein, modified residue mass file",
                                          ui->pmrmf_edit->text());

        _tandem_params.setParamLabelValue("residue, modification mass",
                                          ui->rmm_edit->text());
        _tandem_params.setParamLabelValue("residue, modification mass 1",
                                          ui->rmm1_edit->text());
        _tandem_params.setParamLabelValue("residue, modification mass 2",
                                          ui->rmm2_edit->text());
        _tandem_params.setParamLabelValue("residue, potential modification mass",
                                          ui->rpmm_edit->text());
        _tandem_params.setParamLabelValue("residue, potential modification motif",
                                          ui->rpmmotif_edit->text());
        _tandem_params.setParamLabelValue(
            "scoring, maximum missed cleavage sites", ui->smmcs_edit->text());
        _tandem_params.setParamLabelValue("scoring, cyclic permutation", "no");
        if(ui->scp_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, cyclic permutation",
                                              "yes");
        _tandem_params.setParamLabelValue("scoring, include reverse", "no");
        if(ui->sir_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, include reverse", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, minimum ion count",
                                          ui->smic_edit->text());
        _tandem_params.setParamLabelValue("scoring, y ions", "no");
        if(ui->syi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, y ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, b ions", "no");
        if(ui->sbi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, b ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, c ions", "no");
        if(ui->sci_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, c ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, z ions", "no");
        if(ui->szi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, z ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, a ions", "no");
        if(ui->sai_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, a ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("scoring, x ions", "no");
        if(ui->sxi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("scoring, x ions", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue("refine", "no");
        if(ui->refine_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("refine", "yes");
Langella Olivier's avatar
Langella Olivier committed
        }
        _tandem_params.setParamLabelValue(
            "refine, maximum valid expectation value", ui->rmvev_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential N-terminus modifications", ui->refpntm_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential C-terminus modifications", ui->refpctm_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass",
                                          ui->refmm_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass 1",
                                          ui->refmm1_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass 2",
                                          ui->refmm2_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass",
                                          ui->refpmm_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass 1",
                                          ui->refpmm1_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass 2",
                                          ui->refpmm2_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification motif",
                                          ui->refpmmotif_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential modification motif 1", ui->refpmmotif1_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential modification motif 2", ui->refpmmotif2_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, use potential modifications for full refinement", "no");
        if(ui->rupmffr_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue(
                "refine, use potential modifications for full refinement", "yes");
        _tandem_params.setParamLabelValue("refine, cleavage semi", "no");
        if(ui->rcsemi_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("refine, cleavage semi", "yes");
        _tandem_params.setParamLabelValue("refine, unanticipated cleavage", "no");
        if(ui->ruc_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("refine, unanticipated cleavage",
                                              "yes");
        _tandem_params.setParamLabelValue("refine, spectrum synthesis", "no");
        if(ui->rss_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("refine, spectrum synthesis",
                                              "yes");
        _tandem_params.setParamLabelValue("refine, point mutations", "no");
        if(ui->rpm_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("refine, point mutations", "yes");
        _tandem_params.setParamLabelValue(
            "output, maximum valid expectation value", ui->omvev_edit->text());
        _tandem_params.setParamLabelValue(
            "output, maximum valid protein expectation value",
            ui->omvpev_edit->text());
        _tandem_params.setParamLabelValue("output, results", "valid");
        if(ui->oresu_all_radio_button->isChecked())
            _tandem_params.setParamLabelValue("output, results", "all");
        if(ui->oresu_stochastic_radio_button->isChecked())
            _tandem_params.setParamLabelValue("output, results", "stochastic");
        _tandem_params.setParamLabelValue("output, spectra", "no");
        if(ui->ospec_yes_radio_button->isChecked())
            _tandem_params.setParamLabelValue("output, spectra", "yes");
        _tandem_params.setParamLabelValue("output, histogram column width", "30");

        _tandem_params.setParamLabelValue("output, xsl path",
                                          ui->oxp_edit->text());
Langella Olivier's avatar
Langella Olivier committed
    }
    catch(pappso::PappsoException &error)
        QMessageBox::warning(this, tr("Error in parameters :"), error.qwhat());
Langella Olivier's avatar
Langella Olivier committed
    }
void
EditTandemPresetDialog::populate()
{
    qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
    try
    {
        ui->method_name_line_edit->setText(_tandem_params.getMethodName());
        /*
         * <note type="input" label="spectrum, parent monoisotopic mass error
         * units">ppm</note>
         * */
        ui->spmmeu_daltons_radio_button->setChecked(true);
        ui->spmmeu_ppm_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass error units") == "ppm")
        {   // -1 for not found
            ui->spmmeu_daltons_radio_button->setChecked(false);
            ui->spmmeu_ppm_radio_button->setChecked(true);
        }
        //<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>
        ui->spmmie_yes_radio_button->setChecked(true);
        ui->spmmie_no_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass isotope error") == "no")
        {   // -1 for not found
            ui->spmmie_yes_radio_button->setChecked(false);
            ui->spmmie_no_radio_button->setChecked(true);
        }
        //<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>
        auto 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>
        ui->sfmmeu_daltons_radio_button->setChecked(true);
        ui->sfmmeu_ppm_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, fragment monoisotopic mass error units") == "ppm")
        {   // -1 for not found
            ui->sfmmeu_daltons_radio_button->setChecked(false);
            ui->sfmmeu_ppm_radio_button->setChecked(true);
        }

        //<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>
        ui->sunlw_yes_radio_button->setChecked(true);
        ui->sunlw_no_radio_button->setChecked(false);
        try
        {
            if(_tandem_params.getValue("spectrum, use neutral loss window") ==
                    "no")
            {   // -1 for not found
                ui->sunlw_yes_radio_button->setChecked(false);
                ui->sunlw_no_radio_button->setChecked(true);
        catch(pappso::ExceptionNotFound &error)
            ui->sunlw_yes_radio_button->setChecked(false);
            ui->sunlw_no_radio_button->setChecked(true);
            //<note type="input" label="spectrum, neutral loss
            // mass">18.01057</note>
            ui->snlm_edit->setText(
                _tandem_params.getValue("spectrum, neutral loss mass"));
        catch(pappso::ExceptionNotFound &error)
            ui->snlm_edit->setText("18.01057");
            //<note type="input" label="spectrum, neutral loss window">0.02</note>
            ui->snlw_edit->setText(
                _tandem_params.getValue("spectrum, neutral loss window"));
        catch(pappso::ExceptionNotFound &error)
            ui->snlm_edit->setText("0.02");
        //<note type="input" label="spectrum, use noise suppression">yes</note>
        ui->suns_yes_radio_button->setChecked(true);
        ui->suns_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("spectrum, use noise suppression") == "no")
        {   // -1 for not found
            ui->suns_yes_radio_button->setChecked(false);
            ui->suns_no_radio_button->setChecked(true);
        //<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>
        ui->suca_yes_radio_button->setChecked(true);
        ui->suca_no_radio_button->setChecked(false);
            if(_tandem_params.getValue("spectrum, use contrast angle") == "no")
            {   // -1 for not found
                ui->suca_yes_radio_button->setChecked(false);
                ui->suca_no_radio_button->setChecked(true);
        catch(pappso::ExceptionNotFound &error)
            ui->suca_yes_radio_button->setChecked(false);
            ui->suca_no_radio_button->setChecked(true);
        //<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>
        ui->pcsemi_yes_radio_button->setChecked(true);