libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
psmfilescanprocessandcopy.cpp
Go to the documentation of this file.
1/**
2 * \file pappsomspp/processing/cbor/psm/psmfilescanprocessandcopy.cpp
3 * \date 15/07/2025
4 * \author Olivier Langella
5 * \brief PSM file reader designed to parallelize scan process and then copy the results in PSM cbor
6 * output stream
7 */
8
9/*******************************************************************************
10 * Copyright (c) 2025 Olivier Langella <Olivier.Langella@universite-paris-saclay.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
32
33
34namespace pappso
35{
36namespace cbor
37{
38namespace psm
39{
40
42 CborStreamWriter *cbor_output_p,
43 const QString &operation)
44 : PsmFileScanProcess(buffer_scan_size)
45{
46 mp_cborOutput = cbor_output_p;
47 m_operation = operation;
48
49
50 mp_cborOutput->startMap();
51 mp_copyCborOutput = nullptr;
52}
53
54
66
67
68void
77
78void
80{
81 if(mp_copyCborOutput == nullptr)
82 {
83 mp_cborOutput->endMap();
84 }
85 else
86 {
87
88 // mpa_bufferWriterAfterProteinMap->endArray(); // end scan_list
89 // mpa_bufferWriterAfterProteinMap->endMap(); // end sample
90 // mpa_bufferWriterAfterProteinMap->endArray(); // end sample_list
91
92 mp_copyCborOutput->append("protein_map");
94
95 // copy buffer
96
97 mp_copyCborOutput->append("sample_list");
98
99 // mpa_writer->startArray(); // sample_list
100 // mpa_writer->endArray(); // end sample_list
101
102
104 // qWarning() << "size=" << mpa_buffer->data().size();
105
106 mp_copyCborOutput->device()->write(mpa_bufferAfterProteinMap->data());
107
108 mp_copyCborOutput->endMap();
109 }
110}
111
112void
114{
115 mp_cborOutput->writeInformations("pappsomspp_copy", Utils::getVersion(), "psm", m_operation);
116}
117
118
119void
121{
123 mp_cborOutput->append("log");
124 mp_cborOutput->writeCborArray(m_cborLog);
125}
126
127void
129{
130 mp_cborOutput->append("parameter_map");
131 mp_cborOutput->writeCborMap(m_cborParameterMap);
132}
133
134void
136{
137 // "target_fasta_files": ["zea_mays.fasta", "contaminant.fasta"],
138 if(!m_targetFastaFiles.isEmpty())
139 {
140 mp_cborOutput->append("target_fasta_files");
142 }
143 //"decoy_fasta_files" : ["rev_zea_mays.fasta", "rev_contaminant.fasta"],
144
145 if(!m_decoyFastaFiles.isEmpty())
146 {
147 mp_cborOutput->append("decoy_fasta_files");
148 mp_cborOutput->writeArray(m_decoyFastaFiles);
149 }
150}
151
152void
154{
155 if(mp_copyCborOutput == nullptr)
156 {
157 mp_cborOutput->append("protein_map");
158 m_proteinMap.writeMap(*mp_cborOutput);
159 }
160 else
161 {
162 // protein map writing is delayed : swap to temporary buffer writer
164 }
165}
166
167
168void
170 [[maybe_unused]])
171{
172
173 // monitor.setStatus(QObject::tr("PsmFileScanProcessAndCopy::processBufferScanDone"));
174 for(CborScanMapBase *cbor_scan_p : m_cborScanList)
175 {
176 // qDebug() << cbor_scan_p->keys();
177 cbor_scan_p->filterAndSortPsmList();
178
179 if(mp_copyCborOutput != nullptr)
180 {
181 // populate new protein map
182 cbor_scan_p->populateProteinMapUsingOldProteinMap(m_proteinMap, m_psmNewProteinMap);
183 }
184
185
186 // qWarning() << "PsmFileScanProcessAndCopy::processBufferScanDone "
187 // << cbor_scan_p->value("psm_list").toArray().size();
188
189 // cbor_scan_p->write(*mp_cborOutput);
190 mp_cborOutput->writeCborMap(*cbor_scan_p);
191
192 if(!cbor_scan_p->keys().contains("id"))
193 {
195 QObject::tr("missing scan id %1").arg(cbor_scan_p->keys().size()));
196 }
197 }
198}
199
200void
202{
203 mp_cborOutput->startMap();
204 mp_cborOutput->append("name");
207 {
208 mp_cborOutput->append("identification_file_list");
210 }
211 mp_cborOutput->append("peaklist_file");
213
214 mp_cborOutput->append("scan_list");
215 mp_cborOutput->startArray();
216}
217
218void
220{
221
222 processBufferScan(monitor);
224
225 mp_cborOutput->endArray();
226 mp_cborOutput->endMap();
227}
228
229void
231{
232 if(mp_copyCborOutput == nullptr)
233 {
234 mp_cborOutput->append("sample_list");
235 }
236 mp_cborOutput->startArray();
237}
238
239void
244
245
246} // namespace psm
247} // namespace cbor
248} // namespace pappso
static QString getVersion()
Definition utils.cpp:650
overrides QCborStreamWriter base class to provide convenient functions
void writePsmFileList(CborStreamWriter &writer, const std::vector< PsmFile > &file_list)
std::vector< PsmFile > m_currentIdentificationFileList
void writePsmFile(CborStreamWriter &writer, const PsmFile &psm_file)
void sampleStarted(pappso::UiMonitorInterface &monitor) override
void fastaFilesReady(pappso::UiMonitorInterface &monitor) override
void sampleFinished(pappso::UiMonitorInterface &monitor) override
PsmFileScanProcessAndCopy(std::size_t buffer_scan_size, CborStreamWriter *cbor_output_p, const QString &operation)
void sampleListStarted(pappso::UiMonitorInterface &monitor) override
pappso::cbor::CborStreamWriter * mpa_bufferWriterAfterProteinMap
void sampleListFinished(pappso::UiMonitorInterface &monitor) override
virtual void proteinMapReady(pappso::UiMonitorInterface &monitor) override
void close() override
convenient function to clean pointer before leaving
void informationsReady(pappso::UiMonitorInterface &monitor) override
virtual void processBufferScanDone(pappso::UiMonitorInterface &monitor) override
void parameterMapReady(pappso::UiMonitorInterface &monitor) override
void logReady(pappso::UiMonitorInterface &monitor) override
std::vector< CborScanMapBase * > m_cborScanList
PsmFileScanProcess(std::size_t buffer_scan_size)
virtual void processBufferScan(pappso::UiMonitorInterface &monitor)
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39