libpappsomspp
Library for mass spectrometry
pappso::masschroq::CborOutputStream Class Reference

#include <cboroutputstream.h>

Public Member Functions

 CborOutputStream (QIODevice *device)
 
virtual ~CborOutputStream ()
 
void setIsTraceOutput (bool is_trace_output)
 set trace output flag More...
 
void setIsPeakShapeOutput (bool is_shape_output, double margin_in_seconds)
 set peak shape output flag More...
 
void writeJsonObject (const QString &name, const QJsonObject &json_object)
 
void writeProjectParameters (const pappso::ProjectParameters &project_parameters)
 
void writeActionBegin (const QString &operation)
 
void close ()
 
QCborStreamWriter & getCborStreamWriter ()
 
void writeQrDataBlock (pappso::UiMonitorInterface &m_uiMonitor, const MsRunPeptideList &msrun_peptide_list, bool is_mbr)
 
void writeMsRunRetentionTime (const pappso::Trace &report_common_ms2, const pappso::MsRunRetentionTime< QString > &msrun_retention_time)
 

Private Member Functions

void writeMbrPeptideMeasurements (const MbrPeptideMeasurements &peptide_measurements, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
 
void writeMeasurement (const PeptideMeasurements::Measurement &measurement, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
 
void writeTrace (const pappso::Trace &trace)
 
void writeVectorDouble (const std::vector< double > &vector)
 
void writeTracePeak (const pappso::TracePeak &peak, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
 
void writeActionEnd ()
 
void writeMsRun (const MsRun &msrun)
 
void writePeptideMeasurements (const PeptideMeasurements &peptide_measurements, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
 

Private Attributes

pappso::cbor::CborStreamWritermpa_writer = nullptr
 
bool m_isTraceOutput = false
 
bool m_isPeakShapeOutput = false
 
bool m_isXicCoordOutput = true
 
double m_peakShapeMarginInSeconds = 20
 

Detailed Description

Todo:
write docs

Definition at line 50 of file cboroutputstream.h.

Constructor & Destructor Documentation

◆ CborOutputStream()

pappso::masschroq::CborOutputStream::CborOutputStream ( QIODevice *  device)

Default constructor

Definition at line 40 of file cboroutputstream.cpp.

41{
43 mpa_writer->startMap();
44}
pappso::cbor::CborStreamWriter * mpa_writer

References mpa_writer.

◆ ~CborOutputStream()

pappso::masschroq::CborOutputStream::~CborOutputStream ( )
virtual

Destructor

Definition at line 46 of file cboroutputstream.cpp.

47{
48}

Member Function Documentation

◆ close()

void pappso::masschroq::CborOutputStream::close ( )

Definition at line 82 of file cboroutputstream.cpp.

83{
85 mpa_writer->endMap();
86
87 delete mpa_writer;
88}

◆ getCborStreamWriter()

◆ setIsPeakShapeOutput()

void pappso::masschroq::CborOutputStream::setIsPeakShapeOutput ( bool  is_shape_output,
double  margin_in_seconds 
)

set peak shape output flag

Definition at line 51 of file cboroutputstream.cpp.

53{
54 m_isPeakShapeOutput = is_shape_output;
55 m_peakShapeMarginInSeconds = margin_in_seconds;
56}

◆ setIsTraceOutput()

void pappso::masschroq::CborOutputStream::setIsTraceOutput ( bool  is_trace_output)

set trace output flag

Definition at line 59 of file cboroutputstream.cpp.

60{
61 m_isTraceOutput = is_trace_output;
62}

◆ writeActionBegin()

void pappso::masschroq::CborOutputStream::writeActionBegin ( const QString &  operation)

Definition at line 65 of file cboroutputstream.cpp.

66{
68 "masschroq", pappso::masschroq::Utils::getVersion(), "quantification", "quantification");
69}
void writeInformations(const QString &software_name, const QString &software_version, const QString &type, const QString &operation)
static QString getVersion()
Definition: utils.cpp:37

References pappso::masschroq::Utils::getVersion().

Referenced by pappso::masschroq::JsonInput::action().

◆ writeActionEnd()

void pappso::masschroq::CborOutputStream::writeActionEnd ( )
private

Definition at line 73 of file cboroutputstream.cpp.

74{
75 mpa_writer->append(QLatin1String("end"));
76 mpa_writer->startMap();
77 mpa_writer->append(QLatin1String("timestamp"));
78 mpa_writer->append(QDateTime::currentDateTime().toString(Qt::ISODate));
79 mpa_writer->endMap();
80}

◆ writeJsonObject()

void pappso::masschroq::CborOutputStream::writeJsonObject ( const QString &  name,
const QJsonObject &  json_object 
)

Definition at line 91 of file cboroutputstream.cpp.

93{
94 mpa_writer->append(name);
95 QCborMap map;
96 map = map.fromJsonObject(json_object);
97 map.toCborValue().toCbor(*mpa_writer);
98}

Referenced by pappso::masschroq::JsonInput::action().

◆ writeMbrPeptideMeasurements()

void pappso::masschroq::CborOutputStream::writeMbrPeptideMeasurements ( const MbrPeptideMeasurements peptide_measurements,
const pappso::MsRunRetentionTime< QString > *  msrun_retention_time_p 
)
private

Definition at line 300 of file cboroutputstream.cpp.

303{
304 pappso::masschroq::PeptideSp peptide_sp = mbr_peptide_measurements.getPeptideSp();
305
306 mpa_writer->append(peptide_sp.get()->getId());
307 mpa_writer->startMap();
308 mpa_writer->append(QLatin1String("proforma"));
309 mpa_writer->append(peptide_sp.get()->getPappsoPeptideSp().get()->toProForma());
310
311
312 mpa_writer->append(QLatin1String("mods"));
313 mpa_writer->append(peptide_sp.get()->getMods());
314
315
316 std::size_t size_measurement = mbr_peptide_measurements.getMeasurementList().size();
317 if(size_measurement > 0)
318 {
319 mpa_writer->append(QLatin1String("rt_target"));
320 mpa_writer->append(
321 mbr_peptide_measurements.getMeasurementList().at(0).msp_xicCoord.get()->rtTarget);
322 }
323
324 mpa_writer->append(QLatin1String("xics"));
325 mpa_writer->startArray(mbr_peptide_measurements.getMeasurementList().size());
327 mbr_peptide_measurements.getMeasurementList())
328 {
329 // write(peptide_sp, measure, msrun_retention_time_p);
330 writeMeasurement(measure, msrun_retention_time_p);
331 }
332 mpa_writer->endArray();
333
334 mpa_writer->endMap();
335}
void writeMeasurement(const PeptideMeasurements::Measurement &measurement, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
std::shared_ptr< Peptide > PeptideSp
Definition: peptide.h:46

References pappso::masschroq::PeptideMeasurementsBase::getMeasurementList(), and pappso::masschroq::MbrPeptideMeasurements::getPeptideSp().

◆ writeMeasurement()

void pappso::masschroq::CborOutputStream::writeMeasurement ( const PeptideMeasurements::Measurement measurement,
const pappso::MsRunRetentionTime< QString > *  msrun_retention_time_p 
)
private

Definition at line 163 of file cboroutputstream.cpp.

166{
167
168 mpa_writer->startMap();
169 mpa_writer->append(QLatin1String("charge"));
170 mpa_writer->append(measurement.m_charge);
171
172 mpa_writer->append(QLatin1String("mz"));
173 mpa_writer->append(measurement.msp_xicCoord.get()->mzRange.getMz());
174
176 {
177 measurement.msp_xicCoord.get()->writeCborStream(*mpa_writer);
178 }
179
180 if(measurement.m_peptideNaturalIsotopeAverageSp.get() != nullptr)
181 {
182 mpa_writer->append(QLatin1String("isotope"));
183 mpa_writer->append(measurement.m_peptideNaturalIsotopeAverageSp.get()->getIsotopeNumber());
184
185 mpa_writer->append(QLatin1String("rank"));
186 mpa_writer->append(measurement.m_peptideNaturalIsotopeAverageSp.get()->getIsotopeRank());
187
188 mpa_writer->append(QLatin1String("th_ratio"));
189 mpa_writer->append(measurement.m_peptideNaturalIsotopeAverageSp.get()->getIntensityRatio());
190 }
191
192
193 mpa_writer->append(QLatin1String("quality"));
194 mpa_writer->append(pappso::masschroq::Utils::enumToString(measurement.m_peakQualityCategory));
195
196 // label
197 if(measurement.mp_peptideLabel != nullptr)
198 {
199 mpa_writer->append(QLatin1String("label"));
200 mpa_writer->append(measurement.mp_peptideLabel->getLabel());
201 }
202
203 if(m_isTraceOutput && (measurement.msp_xicCoord.get()->xicSptr.get() != nullptr))
204 {
205 mpa_writer->append(QLatin1String("trace"));
206 writeTrace(*(measurement.msp_xicCoord.get()->xicSptr.get()));
207 }
208
209
210 if(measurement.m_tracePeakSp.get() != nullptr)
211 {
212
213 if(m_isPeakShapeOutput && (measurement.msp_xicCoord.get()->xicSptr.get() != nullptr))
214 {
215
216 mpa_writer->append(QLatin1String("peak_shape"));
217 mpa_writer->startMap();
218 mpa_writer->append(QLatin1String("trace"));
219
220 pappso::TraceSPtr trace_sp;
221
223 measurement.m_tracePeakSp.get()->getLeftBoundary().x - m_peakShapeMarginInSeconds,
224 measurement.m_tracePeakSp.get()->getRightBoundary().x + m_peakShapeMarginInSeconds);
225
226 trace_sp = measurement.msp_xicCoord.get()->xicSptr;
227 trace_sp.get()->filter(cut_xic);
228
229
230 writeTrace(*(trace_sp.get()));
231 mpa_writer->endMap();
232 }
233
234 mpa_writer->append(QLatin1String("peak"));
235 writeTracePeak(*(measurement.m_tracePeakSp.get()), msrun_retention_time_p);
236 }
237 mpa_writer->endMap();
238}
void writeTrace(const pappso::Trace &trace)
void writeTracePeak(const pappso::TracePeak &peak, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
static QString enumToString(PeakQualityCategory peak_category)
Convenience function to return a string describing the specglob alingment type.
Definition: utils.cpp:44
std::shared_ptr< Trace > TraceSPtr
Definition: trace.h:135

References pappso::masschroq::Utils::enumToString(), pappso::masschroq::PeptideLabel::getLabel(), pappso::masschroq::PeptideMeasurementsBase::Measurement::m_charge, pappso::masschroq::PeptideMeasurementsBase::Measurement::m_peakQualityCategory, pappso::masschroq::PeptideMeasurementsBase::Measurement::m_peptideNaturalIsotopeAverageSp, pappso::masschroq::PeptideMeasurementsBase::Measurement::m_tracePeakSp, pappso::masschroq::PeptideMeasurementsBase::Measurement::mp_peptideLabel, and pappso::masschroq::PeptideMeasurementsBase::Measurement::msp_xicCoord.

◆ writeMsRun()

void pappso::masschroq::CborOutputStream::writeMsRun ( const MsRun msrun)
private

Definition at line 108 of file cboroutputstream.cpp.

109{
110 mpa_writer->append(QLatin1String("msrun"));
111 mpa_writer->startMap(3);
112 mpa_writer->append(QLatin1String("id"));
113 mpa_writer->append(msrun.getMsRunReaderSPtr().get()->getMsRunId().get()->getXmlId());
114 mpa_writer->append(QLatin1String("filename"));
115 mpa_writer->append(msrun.getMsRunReaderSPtr().get()->getMsRunId().get()->getFileName());
116 mpa_writer->append(QLatin1String("sample"));
117 mpa_writer->append(msrun.getMsRunReaderSPtr().get()->getMsRunId().get()->getSampleName());
118 mpa_writer->endMap();
119}

References pappso::masschroq::MsRun::getMsRunReaderSPtr().

◆ writeMsRunRetentionTime()

void pappso::masschroq::CborOutputStream::writeMsRunRetentionTime ( const pappso::Trace report_common_ms2,
const pappso::MsRunRetentionTime< QString > &  msrun_retention_time 
)

Definition at line 432 of file cboroutputstream.cpp.

435{
436 mpa_writer->startMap(5);
437 mpa_writer->append(QLatin1String("original"));
438 writeVectorDouble(msrun_retention_time.getMs1RetentionTimeVector());
439 mpa_writer->append(QLatin1String("aligned"));
440 writeVectorDouble(msrun_retention_time.getAlignedRetentionTimeVector());
441 mpa_writer->append(QLatin1String("ms2_delta_rt"));
442 writeTrace(report_common_ms2);
443
444 pappso::Trace median(report_common_ms2);
445 msrun_retention_time.getMs2MedianFilter().filter(median);
446
447 mpa_writer->append(QLatin1String("ms2_median"));
448 writeVectorDouble(median.yValues());
449
450 msrun_retention_time.getMs2MeanFilter().filter(median);
451 mpa_writer->append(QLatin1String("ms2_mean"));
452 writeVectorDouble(median.yValues());
453
454
455 mpa_writer->endMap();
456}
virtual Trace & filter(Trace &data_points) const override
const FilterMorphoMedian & getMs2MedianFilter() const
const std::vector< double > & getAlignedRetentionTimeVector() const
get aligned retention time vector
const std::vector< double > & getMs1RetentionTimeVector() const
get orginal retention time vector (not aligned)
const FilterMorphoMean & getMs2MeanFilter() const
A simple container of DataPoint instances.
Definition: trace.h:148
void writeVectorDouble(const std::vector< double > &vector)

References pappso::Trace::append(), pappso::FilterMorphoWindowBase::filter(), pappso::MsRunRetentionTime< T >::getAlignedRetentionTimeVector(), pappso::MsRunRetentionTime< T >::getMs1RetentionTimeVector(), pappso::MsRunRetentionTime< T >::getMs2MeanFilter(), pappso::MsRunRetentionTime< T >::getMs2MedianFilter(), and pappso::Trace::yValues().

Referenced by pappso::masschroq::MsRunGroup::alignRetentionTimeBetweenMsRuns().

◆ writePeptideMeasurements()

void pappso::masschroq::CborOutputStream::writePeptideMeasurements ( const PeptideMeasurements peptide_measurements,
const pappso::MsRunRetentionTime< QString > *  msrun_retention_time_p 
)
private

Definition at line 123 of file cboroutputstream.cpp.

126{
128 peptide_measurements.getPeptideObservationSp().get()->getPeptideSp();
129
130 mpa_writer->append(peptide_sp.get()->getId());
131 mpa_writer->startMap();
132 // mpa_writer->append(QLatin1String("peptide_id"));
133 // mpa_writer->append(peptide_sp.get()->getId());
134 mpa_writer->append(QLatin1String("proforma"));
135 mpa_writer->append(peptide_sp.get()->getPappsoPeptideSp().get()->toProForma());
136
137
138 mpa_writer->append(QLatin1String("mods"));
139 mpa_writer->append(peptide_sp.get()->getMods());
140
141 std::size_t size_measurement = peptide_measurements.getMeasurementList().size();
142 if(size_measurement > 0)
143 {
144 mpa_writer->append(QLatin1String("rt_target"));
145 mpa_writer->append(
146 peptide_measurements.getMeasurementList().at(0).msp_xicCoord.get()->rtTarget);
147 }
148
149 mpa_writer->append(QLatin1String("xics"));
150 mpa_writer->startArray(size_measurement);
152 peptide_measurements.getMeasurementList())
153 {
154 // write(peptide_sp, measure, msrun_retention_time_p);
155 writeMeasurement(measure, msrun_retention_time_p);
156 }
157 mpa_writer->endArray();
158
159 mpa_writer->endMap();
160}

References pappso::masschroq::PeptideMeasurementsBase::getMeasurementList(), and pappso::masschroq::PeptideMeasurements::getPeptideObservationSp().

◆ writeProjectParameters()

void pappso::masschroq::CborOutputStream::writeProjectParameters ( const pappso::ProjectParameters project_parameters)

Definition at line 425 of file cboroutputstream.cpp.

427{
428 project_parameters.writeParameters(*mpa_writer);
429}
void writeParameters(CalcWriterInterface &writer) const

References pappso::ProjectParameters::writeParameters().

Referenced by pappso::masschroq::JsonInput::action().

◆ writeQrDataBlock()

void pappso::masschroq::CborOutputStream::writeQrDataBlock ( pappso::UiMonitorInterface m_uiMonitor,
const MsRunPeptideList msrun_peptide_list,
bool  is_mbr 
)

Definition at line 338 of file cboroutputstream.cpp.

342{
343
344 quint64 size;
345 if(is_mbr)
346 {
347 size = msrun_peptide_list.getMbrPeptideMeasurementsList().size();
348
349 monitor.setStatus(QString("Writing MBR quantification results for msrun %1")
350 .arg(msrun_peptide_list.getMsRunSp()
351 .get()
352 ->getMsRunReaderSPtr()
353 .get()
354 ->getMsRunId()
355 .get()
356 ->getSampleName()));
357 }
358 else
359 {
360 size = msrun_peptide_list.getPeptideMeasurementsList().size();
361
362 monitor.setStatus(QString("Writing quantification results for msrun %1")
363 .arg(msrun_peptide_list.getMsRunSp()
364 .get()
365 ->getMsRunReaderSPtr()
366 .get()
367 ->getMsRunId()
368 .get()
369 ->getSampleName()));
370 }
371 monitor.setTotalSteps(size);
372 mpa_writer->append(msrun_peptide_list.getMsRunSp()
373 .get()
374 ->getMsRunReaderSPtr()
375 .get()
376 ->getMsRunId()
377 .get()
378 ->getXmlId());
379 mpa_writer->startMap();
380 writeMsRun(*(msrun_peptide_list.getMsRunSp().get()));
381
382
383 mpa_writer->append("peptide_measurements");
384 mpa_writer->startMap(size);
385 if(is_mbr)
386 {
388 msrun_peptide_list.getMbrPeptideMeasurementsList())
389 {
390 writeMbrPeptideMeasurements(*(measures.get()),
391 msrun_peptide_list.getMsRunRetentionTimeConstPtr());
392
393 monitor.count();
394 }
395 }
396 else
397 {
398 for(const pappso::masschroq::PeptideMeasurementsSp &measures :
399 msrun_peptide_list.getPeptideMeasurementsList())
400 {
401 writePeptideMeasurements(*(measures.get()),
402 msrun_peptide_list.getMsRunRetentionTimeConstPtr());
403
404 monitor.count();
405 }
406 }
407 monitor.setTotalSteps(0);
408 mpa_writer->endMap();
409
410 mpa_writer->endMap();
411}
void writeMbrPeptideMeasurements(const MbrPeptideMeasurements &peptide_measurements, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
void writePeptideMeasurements(const PeptideMeasurements &peptide_measurements, const pappso::MsRunRetentionTime< QString > *msrun_retention_time_p)
std::shared_ptr< PeptideMeasurements > PeptideMeasurementsSp
std::shared_ptr< MbrPeptideMeasurements > MbrPeptideMeasurementsSp

References pappso::UiMonitorInterface::count(), pappso::masschroq::MsRunPeptideList::getMbrPeptideMeasurementsList(), pappso::masschroq::MsRunPeptideList::getMsRunRetentionTimeConstPtr(), pappso::masschroq::MsRunPeptideList::getMsRunSp(), pappso::masschroq::MsRunPeptideList::getPeptideMeasurementsList(), pappso::UiMonitorInterface::setStatus(), and pappso::UiMonitorInterface::setTotalSteps().

Referenced by pappso::masschroq::MsRunGroup::quantify().

◆ writeTrace()

void pappso::masschroq::CborOutputStream::writeTrace ( const pappso::Trace trace)
private

Definition at line 242 of file cboroutputstream.cpp.

243{
244 mpa_writer->startMap(2);
245 mpa_writer->append(QLatin1String("x"));
246 mpa_writer->startArray(trace.size());
247 for(double x : trace.xValues())
248 {
249 mpa_writer->append(x);
250 }
251 mpa_writer->endArray();
252
253
254 mpa_writer->append(QLatin1String("y"));
255 mpa_writer->startArray(trace.size());
256 for(double y : trace.yValues())
257 {
258 mpa_writer->append(y);
259 }
260 mpa_writer->endArray();
261 mpa_writer->endMap();
262}
std::vector< pappso_double > xValues() const
Definition: trace.cpp:688
std::vector< pappso_double > yValues() const
Definition: trace.cpp:702

References pappso::x, pappso::Trace::xValues(), pappso::y, and pappso::Trace::yValues().

◆ writeTracePeak()

void pappso::masschroq::CborOutputStream::writeTracePeak ( const pappso::TracePeak peak,
const pappso::MsRunRetentionTime< QString > *  msrun_retention_time_p 
)
private

Definition at line 265 of file cboroutputstream.cpp.

267{
268 mpa_writer->startMap();
269 mpa_writer->append(QLatin1String("area"));
270 mpa_writer->append(peak.getArea());
271
272 mpa_writer->append(QLatin1String("max_intensity"));
273 mpa_writer->append(peak.getMaxXicElement().y);
274
275 mpa_writer->append(QLatin1String("rt"));
276 mpa_writer->startArray();
277 mpa_writer->append(peak.getLeftBoundary().x);
278 mpa_writer->append(peak.getMaxXicElement().x);
279 mpa_writer->append(peak.getRightBoundary().x);
280 mpa_writer->endArray();
281
282 if((msrun_retention_time_p != nullptr) && msrun_retention_time_p->isAligned())
283 {
284 mpa_writer->append(QLatin1String("aligned_rt"));
285 mpa_writer->startArray();
286 mpa_writer->append(
287 msrun_retention_time_p->translateOriginal2AlignedRetentionTime(peak.getLeftBoundary().x));
288 mpa_writer->append(
289 msrun_retention_time_p->translateOriginal2AlignedRetentionTime(peak.getMaxXicElement().x));
290 mpa_writer->append(
291 msrun_retention_time_p->translateOriginal2AlignedRetentionTime(peak.getRightBoundary().x));
292 mpa_writer->endArray();
293 }
294
295 mpa_writer->endMap();
296}
double translateOriginal2AlignedRetentionTime(double original_retention_time) const
DataPoint & getLeftBoundary()
Definition: tracepeak.cpp:93
pappso_double getArea() const
Definition: tracepeak.cpp:119
DataPoint & getMaxXicElement()
Definition: tracepeak.cpp:83
DataPoint & getRightBoundary()
Definition: tracepeak.cpp:104
pappso_double x
Definition: datapoint.h:23
pappso_double y
Definition: datapoint.h:24

References pappso::TracePeak::getArea(), pappso::TracePeak::getLeftBoundary(), pappso::TracePeak::getMaxXicElement(), pappso::TracePeak::getRightBoundary(), pappso::MsRunRetentionTime< T >::isAligned(), pappso::MsRunRetentionTime< T >::translateOriginal2AlignedRetentionTime(), pappso::DataPoint::x, and pappso::DataPoint::y.

◆ writeVectorDouble()

void pappso::masschroq::CborOutputStream::writeVectorDouble ( const std::vector< double > &  vector)
private

Definition at line 414 of file cboroutputstream.cpp.

415{
416 mpa_writer->startArray(vector.size());
417 for(double x : vector)
418 {
419 mpa_writer->append(x);
420 }
421 mpa_writer->endArray();
422}

References pappso::x.

Member Data Documentation

◆ m_isPeakShapeOutput

bool pappso::masschroq::CborOutputStream::m_isPeakShapeOutput = false
private

Definition at line 115 of file cboroutputstream.h.

◆ m_isTraceOutput

bool pappso::masschroq::CborOutputStream::m_isTraceOutput = false
private

Definition at line 114 of file cboroutputstream.h.

◆ m_isXicCoordOutput

bool pappso::masschroq::CborOutputStream::m_isXicCoordOutput = true
private

Definition at line 116 of file cboroutputstream.h.

◆ m_peakShapeMarginInSeconds

double pappso::masschroq::CborOutputStream::m_peakShapeMarginInSeconds = 20
private

Definition at line 118 of file cboroutputstream.h.

◆ mpa_writer

pappso::cbor::CborStreamWriter* pappso::masschroq::CborOutputStream::mpa_writer = nullptr
private

Definition at line 113 of file cboroutputstream.h.

Referenced by CborOutputStream().


The documentation for this class was generated from the following files: