libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
precursorparser.cpp
Go to the documentation of this file.
1
2
/**
3
* \file pappsomspp/masschroq/input/precursorparser.h
4
* \date 25/09/2024
5
* \author Olivier Langella
6
* \brief read presurcors in ms run files for MassChroqLight
7
*/
8
9
/*******************************************************************************
10
* Copyright (c) 2024 Olivier Langella
11
*<Olivier.Langella@universite-paris-saclay.fr>.
12
*
13
* This file is part of MassChroQ.
14
*
15
* MassChroQ is free software: you can redistribute it and/or modify
16
* it under the terms of the GNU General Public License as published by
17
* the Free Software Foundation, either version 3 of the License, or
18
* (at your option) any later version.
19
*
20
* MassChroQ is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU General Public License for more details.
24
*
25
* You should have received a copy of the GNU General Public License
26
* along with MassChroQ. If not, see <http://www.gnu.org/licenses/>.
27
*
28
******************************************************************************/
29
30
#include "
precursorparser.h
"
31
#include "
pappsomspp/core/pappsoexception.h
"
32
#include "
pappsomspp/core/utils.h
"
33
34
35
pappso::masschroq::PrecursorParser::PrecursorParser
(
pappso::MsRunReaderCstSPtr
msrun_reader)
36
{
37
msp_msrunReader
= msrun_reader;
38
}
39
40
41
pappso::masschroq::PrecursorParser::~PrecursorParser
()
42
{
43
}
44
45
bool
46
pappso::masschroq::PrecursorParser::needPeakList
()
const
47
{
48
return
false
;
49
}
50
void
51
pappso::masschroq::PrecursorParser::setQualifiedMassSpectrum
(
52
const
pappso::QualifiedMassSpectrum
&qspectrum)
53
{
54
55
if
(qspectrum.
getMsLevel
() > 1)
56
{
57
58
pappso::masschroq::PrecursorSp
precursor = std::make_shared<pappso::masschroq::Precursor>(
59
qspectrum.
getPrecursorSpectrumIndex
(),
60
qspectrum.
getPrecursorMz
(),
61
qspectrum.
getPrecursorIntensity
(),
62
msp_msrunReader
.get()->newXicCoordSPtrFromQualifiedMassSpectrum(
63
qspectrum,
pappso::PrecisionFactory::getPpmInstance
(10)));
64
65
66
qDebug() <<
" native_id="
<< qspectrum.
getMassSpectrumId
().
getNativeId
()
67
<<
" scan idx="
<< qspectrum.
getMassSpectrumId
().
getSpectrumIndex
()
68
<<
" precursor_idx="
<< qspectrum.
getPrecursorSpectrumIndex
()
69
<<
" precursor.get()->getXicCoordSPtr().get()->toString="
70
<< precursor.get()->
getXicCoordSPtr
().get()->toString();
71
if
(precursor.get()->
getXicCoordSPtr
().get() ==
nullptr
)
72
{
73
throw
pappso::PappsoException
(QObject::tr(
"precursor.get()->getXicCoordSPtr().get() == "
74
"nullptr\nindex=%1 %2 %3 %4"
)
75
.arg(qspectrum.
getMassSpectrumId
().
getNativeId
())
76
.arg(__FILE__)
77
.arg(__FUNCTION__)
78
.arg(__LINE__));
79
}
80
/// adding this new precursor to the msrun's hash map of scan_num ->
81
/// precursor
82
qDebug();
83
if
(qspectrum.
getMassSpectrumId
().
getNativeId
().contains(
"scan="
))
84
{
85
qDebug();
86
mapScanNumberPrecursor
(
pappso::Utils::extractScanNumberFromMzmlNativeId
(
87
qspectrum.
getMassSpectrumId
().
getNativeId
()),
88
precursor);
89
mapSpectrumIndexToPrecursor
(qspectrum.
getMassSpectrumId
().
getSpectrumIndex
(), precursor);
90
qDebug();
91
}
92
else
93
{
94
qDebug();
95
mapScanNumberPrecursor
(qspectrum.
getMassSpectrumId
().
getSpectrumIndex
(), precursor);
96
97
mapSpectrumIndexToPrecursor
(qspectrum.
getMassSpectrumId
().
getSpectrumIndex
(), precursor);
98
qDebug();
99
}
100
qDebug();
101
}
102
}
103
104
bool
105
pappso::masschroq::PrecursorParser::isReadAhead
()
const
106
{
107
return
true
;
108
}
109
110
void
111
pappso::masschroq::PrecursorParser::mapScanNumberPrecursor
(std::size_t scan_num,
112
pappso::masschroq::PrecursorSp
precursor)
113
{
114
115
if
(precursor.get()->
getXicCoordSPtr
().get() ==
nullptr
)
116
{
117
throw
pappso::PappsoException
(
118
QObject::tr(
"precursor.get()->getXicCoordSPtr().get() == nullptr scan_num=%1\n"
)
119
.arg(scan_num));
120
}
121
m_scanNumber2PrecursorMap
[scan_num] = precursor;
122
}
123
124
void
125
pappso::masschroq::PrecursorParser::mapSpectrumIndexToPrecursor
(
126
std::size_t spectrum_index,
pappso::masschroq::PrecursorSp
precursor)
127
{
128
129
qDebug() <<
" spectrum_index="
<< spectrum_index;
130
131
if
(precursor.get()->
getXicCoordSPtr
().get() ==
nullptr
)
132
{
133
throw
pappso::PappsoException
(
134
QObject::tr(
"precursor.get()->getXicCoordSPtr().get() == nullptr \n"
)
135
.arg(
msp_msrunReader
.get()->getMsRunId()->getXmlId())
136
.arg(spectrum_index));
137
}
138
m_spectrumIndex2PrecursorMap
[spectrum_index] = precursor;
139
qDebug() <<
" spectrum_index="
<< spectrum_index;
140
}
141
142
const
pappso::masschroq::PrecursorSp
&
143
pappso::masschroq::PrecursorParser::getPrecursorSPtrBySpectrumIndex
(
144
std::size_t spectrum_index)
const
145
{
146
auto
it =
m_spectrumIndex2PrecursorMap
.find(spectrum_index);
147
if
(it !=
m_spectrumIndex2PrecursorMap
.end())
148
{
149
}
150
else
151
{
152
throw
pappso::PappsoException
(QObject::tr(
"spectrum index %1 not found in %2"
)
153
.arg(spectrum_index)
154
.arg(
msp_msrunReader
.get()->getMsRunId()->getXmlId()));
155
}
156
return
it->second;
157
}
158
159
const
pappso::masschroq::PrecursorSp
&
160
pappso::masschroq::PrecursorParser::getPrecursorSPtrByScanNumber
(std::size_t spectrum_index)
const
161
{
162
auto
it =
m_scanNumber2PrecursorMap
.find(spectrum_index);
163
if
(it !=
m_scanNumber2PrecursorMap
.end())
164
{
165
}
166
else
167
{
168
throw
pappso::PappsoException
(QObject::tr(
"scan number %1 not found in %2"
)
169
.arg(spectrum_index)
170
.arg(
msp_msrunReader
.get()->getMsRunId()->getXmlId()));
171
}
172
return
it->second;
173
}
pappso::MassSpectrumId::getSpectrumIndex
std::size_t getSpectrumIndex() const
Definition
massspectrumid.cpp:113
pappso::MassSpectrumId::getNativeId
const QString & getNativeId() const
Definition
massspectrumid.cpp:99
pappso::PappsoException
Definition
pappsoexception.h:41
pappso::PrecisionFactory::getPpmInstance
static PrecisionPtr getPpmInstance(pappso_double value)
get a ppm precision pointer
Definition
precision.cpp:155
pappso::QualifiedMassSpectrum
Class representing a fully specified mass spectrum.
Definition
qualifiedmassspectrum.h:98
pappso::QualifiedMassSpectrum::getMsLevel
uint getMsLevel() const
Get the mass spectrum level.
Definition
qualifiedmassspectrum.cpp:189
pappso::QualifiedMassSpectrum::getPrecursorIntensity
pappso_double getPrecursorIntensity(bool *ok=nullptr) const
get precursor intensity
Definition
qualifiedmassspectrum.cpp:396
pappso::QualifiedMassSpectrum::getMassSpectrumId
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
Definition
qualifiedmassspectrum.cpp:154
pappso::QualifiedMassSpectrum::getPrecursorMz
pappso_double getPrecursorMz(bool *ok=nullptr) const
get precursor mz
Definition
qualifiedmassspectrum.cpp:240
pappso::QualifiedMassSpectrum::getPrecursorSpectrumIndex
std::size_t getPrecursorSpectrumIndex() const
Get the scan number of the precursor ion.
Definition
qualifiedmassspectrum.cpp:422
pappso::Utils::extractScanNumberFromMzmlNativeId
static std::size_t extractScanNumberFromMzmlNativeId(const QString &spectrum_native_id)
Definition
utils.cpp:285
pappso::masschroq::PrecursorParser::getPrecursorSPtrBySpectrumIndex
const PrecursorSp & getPrecursorSPtrBySpectrumIndex(std::size_t spectrum_index) const
Definition
precursorparser.cpp:143
pappso::masschroq::PrecursorParser::mapSpectrumIndexToPrecursor
void mapSpectrumIndexToPrecursor(std::size_t spectrum_index, PrecursorSp precursor)
map spectrum index to precursor new modern method to replace obsolete scan number
Definition
precursorparser.cpp:125
pappso::masschroq::PrecursorParser::m_scanNumber2PrecursorMap
std::map< std::size_t, PrecursorSp > m_scanNumber2PrecursorMap
Definition
precursorparser.h:73
pappso::masschroq::PrecursorParser::needPeakList
virtual bool needPeakList() const override
tells if we need the peak list (if we want the binary data) for each spectrum
Definition
precursorparser.cpp:46
pappso::masschroq::PrecursorParser::mapScanNumberPrecursor
void mapScanNumberPrecursor(std::size_t scan_num, PrecursorSp precursor)
map precursor to its scan number as parsed in the xml file of this msrun
Definition
precursorparser.cpp:111
pappso::masschroq::PrecursorParser::m_spectrumIndex2PrecursorMap
std::map< std::size_t, PrecursorSp > m_spectrumIndex2PrecursorMap
Definition
precursorparser.h:74
pappso::masschroq::PrecursorParser::~PrecursorParser
virtual ~PrecursorParser()
Definition
precursorparser.cpp:41
pappso::masschroq::PrecursorParser::setQualifiedMassSpectrum
virtual void setQualifiedMassSpectrum(const pappso::QualifiedMassSpectrum &qspectrum) override
Definition
precursorparser.cpp:51
pappso::masschroq::PrecursorParser::isReadAhead
virtual bool isReadAhead() const override
tells if we want to read ahead spectrum
Definition
precursorparser.cpp:105
pappso::masschroq::PrecursorParser::getPrecursorSPtrByScanNumber
const PrecursorSp & getPrecursorSPtrByScanNumber(std::size_t spectrum_index) const
Definition
precursorparser.cpp:160
pappso::masschroq::PrecursorParser::PrecursorParser
PrecursorParser(pappso::MsRunReaderCstSPtr msrun_reader)
Definition
precursorparser.cpp:35
pappso::masschroq::PrecursorParser::msp_msrunReader
pappso::MsRunReaderCstSPtr msp_msrunReader
Definition
precursorparser.h:71
pappso::masschroq::Precursor::getXicCoordSPtr
const pappso::XicCoordSPtr & getXicCoordSPtr() const
Definition
precursor.cpp:71
pappso::masschroq::PrecursorSp
std::shared_ptr< Precursor > PrecursorSp
Definition
precursor.h:39
pappso::MsRunReaderCstSPtr
std::shared_ptr< const MsRunReader > MsRunReaderCstSPtr
Definition
msrunreader.h:58
pappsoexception.h
precursorparser.h
utils.h
pappsomspp
core
masschroq
input
precursorparser.cpp
Generated on
for libpappsomspp by
1.17.0