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
117
118
119void
126
127void
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");
149 }
150}
151
152void
154{
155 if(mp_copyCborOutput == nullptr)
156 {
157 mp_cborOutput->append("protein_map");
159 }
160 else
161 {
162 // protein map writing is delayed : swap to temporary buffer writer
164 }
165}
166
167
168void
170{
171
172 // monitor.setStatus(QObject::tr("PsmFileScanProcessAndCopy::processBufferScanDone"));
173 for(CborScanMapBase *cbor_scan_p : m_cborScanList)
174 {
175 // qDebug() << cbor_scan_p->keys();
176 cbor_scan_p->filterAndSortPsmList();
177
178 if(mp_copyCborOutput != nullptr)
179 {
180 // populate new protein map
181 cbor_scan_p->populateProteinMapUsingOldProteinMap(m_proteinMap, m_psmNewProteinMap);
182 }
183
184
185 // qWarning() << "PsmFileScanProcessAndCopy::processBufferScanDone "
186 // << cbor_scan_p->value("psm_list").toArray().size();
187
188 // cbor_scan_p->write(*mp_cborOutput);
189 mp_cborOutput->writeCborMap(*cbor_scan_p);
190
191 if(!cbor_scan_p->keys().contains("id"))
192 {
194 QObject::tr("missing scan id %1").arg(cbor_scan_p->keys().size()));
195 }
196 }
197}
198
199void
201{
202 mp_cborOutput->startMap();
203 mp_cborOutput->append("name");
206 {
207 mp_cborOutput->append("identification_file_list");
209 }
210 mp_cborOutput->append("peaklist_file");
212
213 mp_cborOutput->append("scan_list");
214 mp_cborOutput->startArray();
215}
216
217void
219{
220
221 processBufferScan(monitor);
223
224 mp_cborOutput->endArray();
225 mp_cborOutput->endMap();
226}
227
228void
230{
231 if(mp_copyCborOutput == nullptr)
232 {
233 mp_cborOutput->append("sample_list");
234 }
235 mp_cborOutput->startArray();
236}
237
238void
243
244
245} // namespace psm
246} // namespace cbor
247} // namespace pappso
static QString getVersion()
Definition utils.cpp:623
void writeInformations(const QString &software_name, const QString &software_version, const QString &type, const QString &operation)
void writeArray(const std::vector< std::size_t > &int_list)
void writeCborMap(const QCborMap &cbor_map)
void writeCborArray(const QCborArray &cbor_array)
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 informationsReady(pappso::UiMonitorInterface &monitor) override
virtual void processBufferScanDone(pappso::UiMonitorInterface &monitor) override
void parameterMapReady(pappso::UiMonitorInterface &monitor) override
void logReady(pappso::UiMonitorInterface &monitor) override
Basic PSM file reader to process scan (parallelized scan processing)
std::vector< CborScanMapBase * > m_cborScanList
virtual void processBufferScan(pappso::UiMonitorInterface &monitor)
void writeMap(CborStreamWriter &writer) const
writes the protein map in a cbor output stream this output a CborMap structure directly in the output...
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39