libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
wraptandemresults.cpp
Go to the documentation of this file.
1
/**
2
* \file pappsomspp/processing/tandemwrapper/wraptandemresults.cpp
3
* \date 13/11/2021
4
* \author Olivier Langella
5
* \brief rewrites tandem xml output file with temporary files
6
*/
7
8
/*******************************************************************************
9
* Copyright (c) 2021 Olivier Langella <Olivier.Langella@u-psud.fr>.
10
*
11
* This file is part of PAPPSOms-tools.
12
*
13
* PAPPSOms-tools is free software: you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation, either version 3 of the License, or
16
* (at your option) any later version.
17
*
18
* PAPPSOms-tools is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with PAPPSOms-tools. If not, see <http://www.gnu.org/licenses/>.
25
*
26
******************************************************************************/
27
28
#include "
wraptandemresults.h
"
29
#include <QFileInfo>
30
#include "
pappsomspp/core/pappsoexception.h
"
31
32
33
namespace
pappso
34
{
35
36
WrapTandemResults::WrapTandemResults
(
const
QString &final_tandem_output,
37
const
QString &original_msdata_file_name)
38
:
m_destinationTandemOutputFile
(final_tandem_output)
39
{
40
qDebug() << final_tandem_output;
41
m_originalMsDataFileName
= QFileInfo(original_msdata_file_name).absoluteFilePath();
42
if
(!
m_destinationTandemOutputFile
.open(QIODevice::WriteOnly))
43
{
44
throw
pappso::PappsoException
(
45
QObject::tr(
"ERROR: unable to open %1 to write XML output"
).arg(final_tandem_output));
46
}
47
m_writerXmlTandemOutput
.setDevice(&
m_destinationTandemOutputFile
);
48
m_writerXmlTandemOutput
.writeStartDocument(
"1.0"
);
49
m_writerXmlTandemOutput
.setAutoFormatting(
true
);
50
}
51
52
WrapTandemResults::~WrapTandemResults
()
53
{
54
}
55
56
void
57
WrapTandemResults::setInputParameters
(
const
QString &label_name_attribute,
58
const
QString &input_value)
59
{
60
m_mapTandemInputParameters
.insert(std::pair<QString, QString>(label_name_attribute, input_value));
61
}
62
63
void
64
WrapTandemResults::process_group_note
()
65
{
66
cloneStartElement
(
m_writerXmlTandemOutput
);
67
while
(
m_qxmlStreamReader
.readNext() && !
m_qxmlStreamReader
.isEndElement())
68
{
69
if
(
m_qxmlStreamReader
.isStartElement())
70
{
71
QString type =
m_qxmlStreamReader
.attributes().value(
"type"
).toString();
72
QString label =
m_qxmlStreamReader
.attributes().value(
"label"
).toString();
73
qDebug() <<
"type="
<< type <<
" label="
<< label;
74
// qDebug() << "XtandemParamSaxHandler::endElement_note begin " <<
75
// <note type="input" label="spectrum,
76
// path">/tmp/tandemwrapper-IehrEL/msdata.mzxml</note>
77
78
if
(label ==
"spectrum, path"
)
79
{
80
//<note type="input"
81
// label="spectrum,path">/gorgone/pappso/jouy/raw/2019_Lumos/20191222_107_Juste/20191222_18_EF1.mzXML</note>
82
// m_originMzDataFileName = m_currentText;
83
// p_writeXmlTandemOutput->writeCharacters(m_destinationMzXmlFileName);
84
85
m_writerXmlTandemOutput
.writeStartElement(
"note"
);
86
m_writerXmlTandemOutput
.writeAttributes(
m_qxmlStreamReader
.attributes());
87
m_writerXmlTandemOutput
.writeCharacters(
m_originalMsDataFileName
);
88
m_writerXmlTandemOutput
.writeEndElement();
89
90
91
for
(
auto
pair_input :
m_mapTandemInputParameters
)
92
{
93
m_writerXmlTandemOutput
.writeStartElement(
"note"
);
94
m_writerXmlTandemOutput
.writeAttribute(
"type"
,
"input"
);
95
m_writerXmlTandemOutput
.writeAttribute(
"label"
, pair_input.first);
96
m_writerXmlTandemOutput
.writeCharacters(pair_input.second);
97
98
m_writerXmlTandemOutput
.writeEndElement();
99
}
100
m_qxmlStreamReader
.skipCurrentElement();
101
}
102
else
if
(label ==
"output, path"
)
103
{
104
105
//<note type="input" label="output,
106
// path">/tmp/tandemwrapper-sSGxtE/output_tandem.xml</note>
107
108
m_writerXmlTandemOutput
.writeStartElement(
"note"
);
109
m_writerXmlTandemOutput
.writeAttributes(
m_qxmlStreamReader
.attributes());
110
m_writerXmlTandemOutput
.writeCharacters(
111
QFileInfo(
m_destinationTandemOutputFile
).absoluteFilePath());
112
m_writerXmlTandemOutput
.writeEndElement();
113
m_qxmlStreamReader
.skipCurrentElement();
114
}
115
else
116
{
117
cloneElement
(
m_writerXmlTandemOutput
);
118
}
119
}
120
}
121
m_writerXmlTandemOutput
.writeEndElement();
122
}
123
124
void
125
WrapTandemResults::readStream
()
126
{
127
qDebug();
128
if
(
m_qxmlStreamReader
.readNextStartElement())
129
{
130
if
(
m_qxmlStreamReader
.name().toString() ==
"bioml"
)
131
{
132
cloneStartElement
(
m_writerXmlTandemOutput
);
133
qDebug();
134
while
(
m_qxmlStreamReader
.readNextStartElement())
135
{
136
if
(
m_qxmlStreamReader
.name().toString() ==
"group"
)
137
{
138
QString type =
m_qxmlStreamReader
.attributes().value(
"type"
).toString();
139
if
(type ==
"model"
)
140
{
141
cloneElement
(
m_writerXmlTandemOutput
);
142
}
143
else
if
(type ==
"parameters"
)
144
{
145
QString label =
m_qxmlStreamReader
.attributes().value(
"label"
).toString();
146
if
(label ==
"performance parameters"
)
147
{
148
cloneElement
(
m_writerXmlTandemOutput
);
149
}
150
else
if
(label ==
"input parameters"
)
151
{
152
process_group_note
();
153
// cloneElement(m_writerXmlTandemOutput);
154
}
155
else
if
(label ==
"unused input parameters"
)
156
{
157
cloneElement
(
m_writerXmlTandemOutput
);
158
}
159
else
160
{
161
m_qxmlStreamReader
.skipCurrentElement();
162
}
163
}
164
}
165
else
166
{
167
qDebug() <<
m_qxmlStreamReader
.name();
168
// read_note();
169
cloneStartElement
(
m_writerXmlTandemOutput
);
170
171
172
m_writerXmlTandemOutput
.writeCharacters(
m_qxmlStreamReader
.readElementText());
173
174
m_writerXmlTandemOutput
.writeEndElement();
175
}
176
}
177
}
178
else
179
{
180
m_qxmlStreamReader
.raiseError(QObject::tr(
"Not an X!Tandem result file"
));
181
m_qxmlStreamReader
.skipCurrentElement();
182
}
183
}
184
m_writerXmlTandemOutput
.writeEndDocument();
185
m_destinationTandemOutputFile
.close();
186
qDebug();
187
}
188
189
}
// namespace pappso
pappso::PappsoException
Definition
pappsoexception.h:41
pappso::WrapTandemResults::process_group_note
void process_group_note()
Definition
wraptandemresults.cpp:64
pappso::WrapTandemResults::m_destinationTandemOutputFile
QFile m_destinationTandemOutputFile
Definition
wraptandemresults.h:67
pappso::WrapTandemResults::m_writerXmlTandemOutput
QXmlStreamWriter m_writerXmlTandemOutput
Definition
wraptandemresults.h:68
pappso::WrapTandemResults::~WrapTandemResults
virtual ~WrapTandemResults()
Definition
wraptandemresults.cpp:52
pappso::WrapTandemResults::WrapTandemResults
WrapTandemResults(const QString &final_tandem_output, const QString &original_msdata_file_name)
Definition
wraptandemresults.cpp:36
pappso::WrapTandemResults::m_originalMsDataFileName
QString m_originalMsDataFileName
Definition
wraptandemresults.h:69
pappso::WrapTandemResults::readStream
virtual void readStream() override
Definition
wraptandemresults.cpp:125
pappso::WrapTandemResults::m_mapTandemInputParameters
std::map< QString, QString > m_mapTandemInputParameters
Definition
wraptandemresults.h:71
pappso::WrapTandemResults::setInputParameters
void setInputParameters(const QString &label_name_attribute, const QString &input_value)
Definition
wraptandemresults.cpp:57
pappso::XmlStreamReaderInterface::cloneStartElement
void cloneStartElement(QXmlStreamWriter &output) const
Definition
xmlstreamreaderinterface.cpp:108
pappso::XmlStreamReaderInterface::m_qxmlStreamReader
QXmlStreamReader m_qxmlStreamReader
Definition
xmlstreamreaderinterface.h:71
pappso::XmlStreamReaderInterface::cloneElement
void cloneElement(QXmlStreamWriter &output)
Definition
xmlstreamreaderinterface.cpp:120
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition
aa.cpp:39
pappsoexception.h
wraptandemresults.h
pappsomspp
core
processing
tandemwrapper
wraptandemresults.cpp
Generated on
for libpappsomspp by
1.17.0