pappsomspp
Library for mass spectrometry
xtandempresetsaxhandler.cpp
Go to the documentation of this file.
1 /**
2  * \file pappsomspp/processing/tandemwrapper/xtandempresetsaxhandler.cpp
3  * \date 06/02/2020
4  * \author Olivier Langella
5  * \brief read tandem preset file to get centroid parameters and number of
6  * threads
7  */
8 
9 /*******************************************************************************
10  * Copyright (c) 2020 Olivier Langella <Olivier.Langella@u-psud.fr>.
11  *
12  * This file is part of PAPPSOms-tools.
13  *
14  * PAPPSOms-tools is free software: you can redistribute it and/or modify
15  * it under the terms of the GNU General Public License as published by
16  * the Free Software Foundation, either version 3 of the License, or
17  * (at your option) any later version.
18  *
19  * PAPPSOms-tools is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with PAPPSOms-tools. If not, see <http://www.gnu.org/licenses/>.
26  *
27  ******************************************************************************/
28 
30 #include "../../pappsoexception.h"
31 
32 namespace pappso
33 {
35 {
36 }
37 
39 {
40 }
41 
42 
43 bool
44 XtandemPresetSaxHandler::startElement(const QString &namespaceURI,
45  const QString &localName,
46  const QString &qName,
47  const QXmlAttributes &attributes)
48 {
49  m_tagStack.push_back(qName);
50  bool is_ok = true;
51 
52  try
53  {
54  m_currentText.clear();
55  //<bioml label="example api document">
56  if(m_tagStack.size() == 1)
57  {
58  if(qName != "bioml")
59  {
61  QObject::tr(
62  "ERROR in XtandemPresetSaxHandler::startElement "
63  "root tag %1 is not <bioml>")
64  .arg(qName);
65  m_isTandemParameter = false;
66  return false;
67  }
68  else
69  {
70 
71  m_isTandemParameter = true;
72  }
73  }
74  // startElement_group
75 
76  if(qName == "note")
77  {
78  is_ok = startElement_note(attributes);
79  }
80  }
81  catch(pappso::PappsoException exception_pappso)
82  {
83  m_errorString = QObject::tr(
84  "ERROR in XtandemPresetSaxHandler::startElement "
85  "tag %1, PAPPSO exception:\n%2")
86  .arg(qName)
87  .arg(exception_pappso.qwhat());
88  return false;
89  }
90  catch(std::exception exception_std)
91  {
92  m_errorString = QObject::tr(
93  "ERROR in XtandemPresetSaxHandler::startElement "
94  "tag %1, std exception:\n%2")
95  .arg(qName)
96  .arg(exception_std.what());
97  return false;
98  }
99  return is_ok;
100 }
101 
102 bool
103 XtandemPresetSaxHandler::endElement(const QString &namespaceURI,
104  const QString &localName,
105  const QString &qName)
106 {
107 
108  bool is_ok = true;
109  // endElement_peptide_list
110  try
111  {
112 
113  if(qName == "note")
114  {
115  is_ok = endElement_note();
116  }
117  else
118  {
119  }
120  }
121  catch(pappso::PappsoException exception_pappso)
122  {
123  m_errorString = QObject::tr(
124  "ERROR in XtandemPresetSaxHandler::endElement tag "
125  "%1, PAPPSO exception:\n%2")
126  .arg(qName)
127  .arg(exception_pappso.qwhat());
128  return false;
129  }
130  catch(std::exception exception_std)
131  {
132  m_errorString = QObject::tr(
133  "ERROR in XtandemPresetSaxHandler::endElement tag "
134  "%1, std exception:\n%2")
135  .arg(qName)
136  .arg(exception_std.what());
137  return false;
138  }
139 
140  m_currentText.clear();
141  m_tagStack.pop_back();
142 
143  return is_ok;
144 }
145 
146 bool
148 {
149  return true;
150 }
151 
152 bool
154 {
155  return true;
156 }
157 
158 bool
159 XtandemPresetSaxHandler::characters(const QString &str)
160 {
161  m_currentText += str;
162  return true;
163 }
164 
165 
166 bool
167 XtandemPresetSaxHandler::error(const QXmlParseException &exception)
168 {
169  m_errorString = QObject::tr(
170  "Parse error at line %1, column %2 :\n"
171  "%3")
172  .arg(exception.lineNumber())
173  .arg(exception.columnNumber())
174  .arg(exception.message());
175  qDebug() << m_errorString;
176  return false;
177 }
178 
179 
180 bool
181 XtandemPresetSaxHandler::fatalError(const QXmlParseException &exception)
182 {
183  m_errorString = QObject::tr(
184  "Parse error at line %1, column %2 :\n"
185  "%3")
186  .arg(exception.lineNumber())
187  .arg(exception.columnNumber())
188  .arg(exception.message());
189  qDebug() << m_errorString;
190  return false;
191 }
192 
193 QString
195 {
196  return m_errorString;
197 }
198 
199 
200 bool
201 XtandemPresetSaxHandler::startElement_note(QXmlAttributes attributes)
202 {
203  // qDebug() << "XtandemParamSaxHandler::startElement_note begin " <<
204  // <note type="input"
205  // label="output,path">/gorgone/pappso/jouy/users/Celine/2019_Lumos/20191222_107_Juste_APD/metapappso_condor/test_run/20191222_18_EF1_third_step_test_condor_22janv.xml</note>
206 
207  m_currentLabel = "";
208 
209  if(attributes.value("type") == "input")
210  {
211  m_currentLabel = attributes.value("label");
212  }
213 
214  // qDebug() << "XtandemParamSaxHandler::startElement_note _current_label " <<
215  // _current_label;
216  return true;
217 }
218 
219 bool
221 {
222  // qDebug() << "XtandemParamSaxHandler::endElement_note begin " <<
223  // _current_label << " " << _current_text.simplified();
224  if(m_currentLabel == "spectrum, timstof MS2 centroid parameters")
225  {
227  }
228  else if(m_currentLabel == "spectrum, threads")
229  {
230  m_threads = m_currentText.toInt();
231  }
232  else
233  {
234  }
235  return true;
236 }
237 
238 
239 int
241 {
242  return m_threads;
243 }
244 
245 
246 const QString &
248 {
249  return m_centroidOptions;
250 }
251 } // namespace pappso
pappso::XtandemPresetSaxHandler::m_isTandemParameter
bool m_isTandemParameter
Definition: xtandempresetsaxhandler.h:116
pappso::XtandemPresetSaxHandler::m_centroidOptions
QString m_centroidOptions
Definition: xtandempresetsaxhandler.h:118
pappso::XtandemPresetSaxHandler::endDocument
bool endDocument() override
Definition: xtandempresetsaxhandler.cpp:169
pappso
Definition: aa.cpp:38
pappso::XtandemPresetSaxHandler::getCentroidOptions
const QString & getCentroidOptions() const
Definition: xtandempresetsaxhandler.cpp:263
xtandempresetsaxhandler.h
read tandem preset file to get centroid parameters and number of threads
pappso::XtandemPresetSaxHandler::m_currentLabel
QString m_currentLabel
Definition: xtandempresetsaxhandler.h:117
pappso::XtandemPresetSaxHandler::~XtandemPresetSaxHandler
~XtandemPresetSaxHandler()
Definition: xtandempresetsaxhandler.cpp:54
pappso::XtandemPresetSaxHandler::startDocument
bool startDocument() override
Definition: xtandempresetsaxhandler.cpp:163
pappso::XtandemPresetSaxHandler::errorString
QString errorString() const
Definition: xtandempresetsaxhandler.cpp:210
pappso::XtandemPresetSaxHandler::getNumberOfThreads
int getNumberOfThreads() const
Definition: xtandempresetsaxhandler.cpp:256
pappso::XtandemPresetSaxHandler::XtandemPresetSaxHandler
XtandemPresetSaxHandler()
Definition: xtandempresetsaxhandler.cpp:50
pappso::XtandemPresetSaxHandler::characters
bool characters(const QString &str) override
Definition: xtandempresetsaxhandler.cpp:175
pappso::XtandemPresetSaxHandler::endElement_note
bool endElement_note()
Definition: xtandempresetsaxhandler.cpp:236
pappso::XtandemPresetSaxHandler::m_threads
int m_threads
Definition: xtandempresetsaxhandler.h:119
pappso::XtandemPresetSaxHandler::error
bool error(const QXmlParseException &exception) override
Definition: xtandempresetsaxhandler.cpp:183
pappso::XtandemPresetSaxHandler::endElement
bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) override
Definition: xtandempresetsaxhandler.cpp:119
pappso::XtandemPresetSaxHandler::m_currentText
QString m_currentText
Definition: xtandempresetsaxhandler.h:115
pappso::PappsoException::qwhat
virtual const QString & qwhat() const
Definition: pappsoexception.h:105
pappso::XtandemPresetSaxHandler::startElement_note
bool startElement_note(QXmlAttributes attributes)
Definition: xtandempresetsaxhandler.cpp:217
pappso::XtandemPresetSaxHandler::m_errorString
QString m_errorString
Definition: xtandempresetsaxhandler.h:113
pappso::XtandemPresetSaxHandler::m_tagStack
std::vector< QString > m_tagStack
Definition: xtandempresetsaxhandler.h:114
pappso::XtandemPresetSaxHandler::startElement
bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes) override
Definition: xtandempresetsaxhandler.cpp:60
pappso::XtandemPresetSaxHandler::fatalError
bool fatalError(const QXmlParseException &exception) override
Definition: xtandempresetsaxhandler.cpp:197
pappso::PappsoException
Definition: pappsoexception.h:60