From 8271f8f9d858591c75d2e6f9f3df84f1894e03f8 Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Wed, 12 Jun 2019 17:00:40 +0200
Subject: [PATCH] wip: accept weak tandem parameter files

---
 src/core/tandem_run/tandemparameters.cpp      |  9 ++-
 .../edittandempresetdialog.cpp                | 68 +++++++++++++++----
 2 files changed, 60 insertions(+), 17 deletions(-)

diff --git a/src/core/tandem_run/tandemparameters.cpp b/src/core/tandem_run/tandemparameters.cpp
index e558e51b3..0a64767d3 100644
--- a/src/core/tandem_run/tandemparameters.cpp
+++ b/src/core/tandem_run/tandemparameters.cpp
@@ -120,7 +120,7 @@ TandemParameters::setParamLabelValue(const QString &label, const QString &value)
   if((label == "spectrum, parent monoisotopic mass error units") ||
      (label == "spectrum, fragment monoisotopic mass error units"))
     {
-      if((value != "Daltons") && (value != "ppm"))
+      if((value != "Da") && (value != "Daltons") && (value != "ppm"))
         {
           throw pappso::ExceptionNotPossible(
             QObject::tr("%1 value must be Daltons or ppm (not %2)")
@@ -168,7 +168,12 @@ TandemParameters::setParamLabelValue(const QString &label, const QString &value)
      (label == "refine, maximum valid expectation value"))
     {
       bool ok;
-      value.toDouble(&ok);
+      QString value_bis = value.simplified();
+      if(value_bis.isEmpty())
+        {
+          value_bis = "0.0";
+        }
+      value_bis.toDouble(&ok);
       if(!ok)
         { // not an integer
           throw pappso::ExceptionNotPossible(
diff --git a/src/gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp
index 598e3a75e..e9128c4b9 100644
--- a/src/gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp
+++ b/src/gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp
@@ -140,7 +140,8 @@ EditTandemPresetDialog::doSelectDir()
   catch(pappso::PappsoException &error)
     {
       QMessageBox::warning(
-        this, tr("Error :"),
+        this,
+        tr("Error :"),
         tr("Error choosing preset directory : %1").arg(error.qwhat()));
     }
 }
@@ -187,7 +188,8 @@ EditTandemPresetDialog::doLoad()
       else
         {
           QMessageBox::warning(
-            this, tr("Error :"),
+            this,
+            tr("Error :"),
             tr("%1 is not an X!Tandem parameter file")
               .arg(p_tandem_preset_file->getAbsoluteFilePath()));
         }
@@ -897,19 +899,44 @@ EditTandemPresetDialog::populate()
       //<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);
-      if(_tandem_params.getValue("spectrum, use neutral loss window") == "no")
-        { // -1 for not found
+      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"));
-      //<note type="input" label="spectrum, neutral loss window">0.02</note>
-      ui->snlw_edit->setText(
-        _tandem_params.getValue("spectrum, neutral loss window"));
+      try
+        {
+          //<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");
+        }
+
+      try
+        {
+          //<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);
@@ -941,13 +968,22 @@ EditTandemPresetDialog::populate()
       //<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
+
+      try
+        {
+          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"));
 
@@ -1290,7 +1326,8 @@ EditTandemPresetDialog::done(int r)
       if(!_p_tandem_preset_file->exists())
         {
           QMessageBox::warning(
-            this, tr("Save parameters"),
+            this,
+            tr("Save parameters"),
             tr("Parameters file does not exists.\nPlease save it before "
                "pressing ok or cancel edition"));
           return;
@@ -1305,7 +1342,8 @@ EditTandemPresetDialog::done(int r)
       else
         {
           QMessageBox::warning(
-            this, tr("Save parameters"),
+            this,
+            tr("Save parameters"),
             tr("Parameters modified but not saved.\nPlease save it before "
                "pressing ok or cancel edition"));
           return;
-- 
GitLab