libpappsomspp
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  [[maybe_unused]],
46  const QString &localName [[maybe_unused]],
47  const QString &qName,
48  const QXmlAttributes &attributes)
49 {
50  m_tagStack.push_back(qName);
51  bool is_ok = true;
52 
53  try
54  {
55  m_currentText.clear();
56  //<bioml label="example api document">
57  if(m_tagStack.size() == 1)
58  {
59  if(qName != "bioml")
60  {
62  QObject::tr(
63  "ERROR in XtandemPresetSaxHandler::startElement "
64  "root tag %1 is not <bioml>")
65  .arg(qName);
66  m_isTandemParameter = false;
67  return false;
68  }
69  else
70  {
71 
72  m_isTandemParameter = true;
73  }
74  }
75  // startElement_group
76 
77  if(qName == "note")
78  {
79  is_ok = startElement_note(attributes);
80  }
81  }
82  catch(const pappso::PappsoException &exception_pappso)
83  {
84  m_errorString = QObject::tr(
85  "ERROR in XtandemPresetSaxHandler::startElement "
86  "tag %1, PAPPSO exception:\n%2")
87  .arg(qName)
88  .arg(exception_pappso.qwhat());
89  return false;
90  }
91  catch(const std::exception &exception_std)
92  {
93  m_errorString = QObject::tr(
94  "ERROR in XtandemPresetSaxHandler::startElement "
95  "tag %1, std exception:\n%2")
96  .arg(qName)
97  .arg(exception_std.what());
98  return false;
99  }
100  return is_ok;
101 }
102 
103 bool
104 XtandemPresetSaxHandler::endElement(const QString &namespaceURI
105  [[maybe_unused]],
106  const QString &localName [[maybe_unused]],
107  const QString &qName)
108 {
109 
110  bool is_ok = true;
111  // endElement_peptide_list
112  try
113  {
114 
115  if(qName == "note")
116  {
117  is_ok = endElement_note();
118  }
119  else
120  {
121  }
122  }
123  catch(const pappso::PappsoException &exception_pappso)
124  {
125  m_errorString = QObject::tr(
126  "ERROR in XtandemPresetSaxHandler::endElement tag "
127  "%1, PAPPSO exception:\n%2")
128  .arg(qName)
129  .arg(exception_pappso.qwhat());
130  return false;
131  }
132  catch(const std::exception &exception_std)
133  {
134  m_errorString = QObject::tr(
135  "ERROR in XtandemPresetSaxHandler::endElement tag "
136  "%1, std exception:\n%2")
137  .arg(qName)
138  .arg(exception_std.what());
139  return false;
140  }
141 
142  m_currentText.clear();
143  m_tagStack.pop_back();
144 
145  return is_ok;
146 }
147 
148 bool
150 {
151  return true;
152 }
153 
154 bool
156 {
157  return true;
158 }
159 
160 bool
162 {
163  m_currentText += str;
164  return true;
165 }
166 
167 
168 bool
169 XtandemPresetSaxHandler::error(const QXmlParseException &exception)
170 {
171  m_errorString = QObject::tr(
172  "Parse error at line %1, column %2 :\n"
173  "%3")
174  .arg(exception.lineNumber())
175  .arg(exception.columnNumber())
176  .arg(exception.message());
177  qDebug() << m_errorString;
178  return false;
179 }
180 
181 
182 bool
183 XtandemPresetSaxHandler::fatalError(const QXmlParseException &exception)
184 {
185  m_errorString = QObject::tr(
186  "Parse error at line %1, column %2 :\n"
187  "%3")
188  .arg(exception.lineNumber())
189  .arg(exception.columnNumber())
190  .arg(exception.message());
191  qDebug() << m_errorString;
192  return false;
193 }
194 
195 QString
197 {
198  return m_errorString;
199 }
200 
201 
202 bool
204 {
205  // qDebug() << "XtandemParamSaxHandler::startElement_note begin " <<
206  // <note type="input"
207  // 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>
208 
209  m_currentLabel = "";
210 
211  if(attributes.value("type") == "input")
212  {
213  m_currentLabel = attributes.value("label");
214  }
215 
216  // qDebug() << "XtandemParamSaxHandler::startElement_note _current_label " <<
217  // _current_label;
218  return true;
219 }
220 
221 bool
223 {
224  // qDebug() << "XtandemParamSaxHandler::endElement_note begin " <<
225  // _current_label << " " << _current_text.simplified();
226  if(m_currentLabel == "spectrum, timstof MS2 centroid parameters")
227  {
229  }
230  else if(m_currentLabel == "spectrum, threads")
231  {
232  m_threads = m_currentText.toInt();
233  }
234  else
235  {
236  }
237  return true;
238 }
239 
240 
241 int
243 {
244  return m_threads;
245 }
246 
247 
248 const QString &
250 {
251  return m_centroidOptions;
252 }
253 } // namespace pappso
pappso::XtandemPresetSaxHandler::m_isTandemParameter
bool m_isTandemParameter
Definition: xtandempresetsaxhandler.h:83
pappso::XtandemPresetSaxHandler::m_centroidOptions
QString m_centroidOptions
Definition: xtandempresetsaxhandler.h:85
pappso::XtandemPresetSaxHandler::endDocument
bool endDocument() override
Definition: xtandempresetsaxhandler.cpp:155
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
pappso::XtandemPresetSaxHandler::getCentroidOptions
const QString & getCentroidOptions() const
Definition: xtandempresetsaxhandler.cpp:249
xtandempresetsaxhandler.h
read tandem preset file to get centroid parameters and number of threads
pappso::XtandemPresetSaxHandler::m_currentLabel
QString m_currentLabel
Definition: xtandempresetsaxhandler.h:84
pappso::XtandemPresetSaxHandler::~XtandemPresetSaxHandler
~XtandemPresetSaxHandler()
Definition: xtandempresetsaxhandler.cpp:38
pappso::XtandemPresetSaxHandler::startDocument
bool startDocument() override
Definition: xtandempresetsaxhandler.cpp:149
pappso::XtandemPresetSaxHandler::errorString
QString errorString() const
Definition: xtandempresetsaxhandler.cpp:196
pappso::XtandemPresetSaxHandler::getNumberOfThreads
int getNumberOfThreads() const
Definition: xtandempresetsaxhandler.cpp:242
pappso::XtandemPresetSaxHandler::XtandemPresetSaxHandler
XtandemPresetSaxHandler()
Definition: xtandempresetsaxhandler.cpp:34
pappso::XtandemPresetSaxHandler::characters
bool characters(const QString &str) override
Definition: xtandempresetsaxhandler.cpp:161
pappso::XtandemPresetSaxHandler::endElement_note
bool endElement_note()
Definition: xtandempresetsaxhandler.cpp:222
pappso::XtandemPresetSaxHandler::m_threads
int m_threads
Definition: xtandempresetsaxhandler.h:86
pappso::XtandemPresetSaxHandler::error
bool error(const QXmlParseException &exception) override
Definition: xtandempresetsaxhandler.cpp:169
pappso::XtandemPresetSaxHandler::endElement
bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) override
Definition: xtandempresetsaxhandler.cpp:104
pappso::XtandemPresetSaxHandler::m_currentText
QString m_currentText
Definition: xtandempresetsaxhandler.h:82
pappso::PappsoException::qwhat
virtual const QString & qwhat() const
Definition: pappsoexception.h:66
pappso::XtandemPresetSaxHandler::startElement_note
bool startElement_note(QXmlAttributes attributes)
Definition: xtandempresetsaxhandler.cpp:203
pappso::XtandemPresetSaxHandler::m_errorString
QString m_errorString
Definition: xtandempresetsaxhandler.h:80
pappso::XtandemPresetSaxHandler::m_tagStack
std::vector< QString > m_tagStack
Definition: xtandempresetsaxhandler.h:81
pappso::XtandemPresetSaxHandler::startElement
bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes) override
Definition: xtandempresetsaxhandler.cpp:44
pappso::XtandemPresetSaxHandler::fatalError
bool fatalError(const QXmlParseException &exception) override
Definition: xtandempresetsaxhandler.cpp:183
pappso::PappsoException
Definition: pappsoexception.h:42