libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::specglob::ExperimentalSpectrum Class Reference

#include <experimentalspectrum.h>

Inheritance diagram for pappso::specglob::ExperimentalSpectrum:

Public Member Functions

 ExperimentalSpectrum (const pappso::QualifiedMassSpectrum &qmass_spectrum, pappso::PrecisionPtr precision_ptr)
 
 ExperimentalSpectrum (const pappso::QualifiedMassSpectrum &qmass_spectrum, pappso::PrecisionPtr precision_ptr, double precursor_mass_error)
 
 ExperimentalSpectrum (const ExperimentalSpectrum &other)
 
virtual ~ExperimentalSpectrum ()
 
std::vector< double > getMassList () const
 
double getSymetricMz (double mz) const
 compute the symmetric mass for debuggin purpose
 
double getTargetMzSum () const
 
double getPrecursorMass () const
 
std::vector< double > getMassList (ExperimentalSpectrumDataPointType type) const
 
QString toString () const
 
const pappso::QualifiedMassSpectrumgetQualifiedMassSpectrum () const
 
std::vector< ExperimentalSpectrumDataPoint >::const_reverse_iterator reverseFindDiffMz (std::size_t start_position, const pappso::MzRange &targeted_mass_range) const
 find the peak for wich mass difference from rbegin corresponds to aaTheoMass Find if a peak back in the peak list has a mass difference that corresponds to the targeted mass
 

Private Member Functions

void createSymetricPeakList ()
 add symmetric peaks to the spectrum Create a SymetricPeakList that contain symmetric peaks and the information if a peak is the initial peak, the symmetric peak, or both if already exist. assuming fragment ion charge is 1
 
void createSymetricPeakList (double precursor_mass_error)
 
std::vector< pappso::DataPoint >::const_iterator findMz (double mz)
 find the correspondin mz in the mass spectrum (given the precision)
 

Private Attributes

pappso::QualifiedMassSpectrum m_qualifiedMassSpectrum
 
double m_targetMzSum
 
double m_precursorMass
 
pappso::PrecisionPtr m_precisionPtr
 

Detailed Description

Todo
write docs

Definition at line 63 of file experimentalspectrum.h.

Constructor & Destructor Documentation

◆ ExperimentalSpectrum() [1/3]

pappso::specglob::ExperimentalSpectrum::ExperimentalSpectrum ( const pappso::QualifiedMassSpectrum & qmass_spectrum,
pappso::PrecisionPtr precision_ptr )

Default constructor

Definition at line 45 of file experimentalspectrum.cpp.

47 : std::vector<ExperimentalSpectrumDataPoint>()
48{
49 m_qualifiedMassSpectrum = qmass_spectrum;
50 m_precisionPtr = precision_ptr;
52}
void createSymetricPeakList()
add symmetric peaks to the spectrum Create a SymetricPeakList that contain symmetric peaks and the in...
pappso::QualifiedMassSpectrum m_qualifiedMassSpectrum

References createSymetricPeakList(), m_precisionPtr, and m_qualifiedMassSpectrum.

Referenced by ExperimentalSpectrum().

◆ ExperimentalSpectrum() [2/3]

pappso::specglob::ExperimentalSpectrum::ExperimentalSpectrum ( const pappso::QualifiedMassSpectrum & qmass_spectrum,
pappso::PrecisionPtr precision_ptr,
double precursor_mass_error )

specpeptidoms post-processing constructor

Definition at line 54 of file experimentalspectrum.cpp.

57 : std::vector<ExperimentalSpectrumDataPoint>()
58{
59 m_qualifiedMassSpectrum = qmass_spectrum;
60 m_precisionPtr = precision_ptr;
61 createSymetricPeakList(precursor_mass_error);
62}

References createSymetricPeakList(), m_precisionPtr, and m_qualifiedMassSpectrum.

◆ ExperimentalSpectrum() [3/3]

pappso::specglob::ExperimentalSpectrum::ExperimentalSpectrum ( const ExperimentalSpectrum & other)

Copy constructor

Parameters
otherTODO

Definition at line 64 of file experimentalspectrum.cpp.

65 : std::vector<ExperimentalSpectrumDataPoint>(other)
66{
67 m_targetMzSum = other.m_targetMzSum;
68 m_qualifiedMassSpectrum = other.m_qualifiedMassSpectrum;
69 m_precisionPtr = other.m_precisionPtr;
70}

References ExperimentalSpectrum(), m_precisionPtr, m_qualifiedMassSpectrum, and m_targetMzSum.

◆ ~ExperimentalSpectrum()

pappso::specglob::ExperimentalSpectrum::~ExperimentalSpectrum ( )
virtual

Destructor

Definition at line 72 of file experimentalspectrum.cpp.

73{
74}

Member Function Documentation

◆ createSymetricPeakList() [1/2]

void pappso::specglob::ExperimentalSpectrum::createSymetricPeakList ( )
private

add symmetric peaks to the spectrum Create a SymetricPeakList that contain symmetric peaks and the information if a peak is the initial peak, the symmetric peak, or both if already exist. assuming fragment ion charge is 1

Definition at line 77 of file experimentalspectrum.cpp.

78{
80}

References createSymetricPeakList().

Referenced by ExperimentalSpectrum(), ExperimentalSpectrum(), and createSymetricPeakList().

◆ createSymetricPeakList() [2/2]

void pappso::specglob::ExperimentalSpectrum::createSymetricPeakList ( double precursor_mass_error)
private

Definition at line 83 of file experimentalspectrum.cpp.

84{
85
86 bool ok;
87 auto charge = m_qualifiedMassSpectrum.getPrecursorCharge(&ok);
88 if(!ok)
89 {
90 throw pappso::PappsoException(
91 QObject::tr("precursor charge is not defined in spectrum %1")
92 .arg(m_qualifiedMassSpectrum.getMassSpectrumId().getNativeId()));
93 }
94
95 double mz_prec = m_qualifiedMassSpectrum.getPrecursorMz(&ok);
96 if(!ok)
97 {
98 throw pappso::PappsoException(
99 QObject::tr("precursor m/z is not defined in spectrum %1")
100 .arg(m_qualifiedMassSpectrum.getMassSpectrumId().getNativeId()));
101 }
102
103 // compute precursor mass given the charge state
104 m_precursorMass = mz_prec * (double)charge - precursor_mass_error;
105 m_precursorMass -= pappso::MHPLUS * (double)charge;
107
108 std::vector<double> mz_list = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->xValues();
109
110 std::size_t mz_current_indice = 0;
111 auto itend = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end();
112 for(std::vector<pappso::DataPoint>::const_iterator it =
113 m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->begin();
114 it != itend;
115 it++)
116 {
117 double current_mz = it->x;
118
119 double symmetric_current_mz = getSymetricMz(current_mz);
120
121 auto itpair_symmetric = findMz(symmetric_current_mz);
122 if(itpair_symmetric != itend)
123 {
124 // there is a counterpart
125 push_back({ExperimentalSpectrumDataPointType::both, it->x, 0});
126 qDebug() << "current_mz=" << current_mz << " both";
127 }
128 else
129 {
130 // there is no counterpart
131 push_back({ExperimentalSpectrumDataPointType::native, it->x, 0});
132 push_back({ExperimentalSpectrumDataPointType::symmetric, symmetric_current_mz, 0});
133 qDebug() << "current_mz=" << current_mz << " symmetrics";
134 }
135
136 mz_current_indice++;
137 }
138
139 // we add a peak with NT mass (1.0078) if it is not detected, to give better
140 // chance to align the first amino acid in b if it is present
141 if(findMz(pappso::MPROTIUM) == itend)
142 {
144 }
145
146 // We add the B peak corresponding to the precursor (complete peptide)
147 double precusorBion = m_targetMzSum - pappso::MASSH2O - pappso::MPROTIUM;
148
149 if(findMz(precusorBion) == itend)
150 {
151 push_back({ExperimentalSpectrumDataPointType::synthetic, precusorBion, 0});
152 }
153
154 std::sort(begin(),
155 end(),
156 [](const ExperimentalSpectrumDataPoint &a, const ExperimentalSpectrumDataPoint &b) {
157 return (a.peak_mz < b.peak_mz);
158 });
159
160 std::size_t i = 0;
161 for(auto &data_point : *this)
162 {
163 data_point.indice = i;
164 i++;
165 }
166}
double getSymetricMz(double mz) const
compute the symmetric mass for debuggin purpose
std::vector< pappso::DataPoint >::const_iterator findMz(double mz)
find the correspondin mz in the mass spectrum (given the precision)
@ synthetic
does not correspond to existing peak, for computational purpose
Definition types.h:85
@ both
both, the ion and the complement exists in the original spectrum
Definition types.h:83
@ symmetric
new peak : computed symmetric mass from a corresponding native peak
Definition types.h:81
const pappso_double MHPLUS(1.007276466879)
const pappso_double MPROTIUM(1.007825032241)
const pappso_double MASSH2O((MPROTIUM *2)+MASSOXYGEN)

References pappso::a, pappso::b, pappso::specglob::both, findMz(), getSymetricMz(), m_precursorMass, m_qualifiedMassSpectrum, m_targetMzSum, pappso::MASSH2O(), pappso::MHPLUS(), pappso::MPROTIUM(), pappso::specglob::native, pappso::specglob::symmetric, and pappso::specglob::synthetic.

◆ findMz()

std::vector< pappso::DataPoint >::const_iterator pappso::specglob::ExperimentalSpectrum::findMz ( double mz)
private

find the correspondin mz in the mass spectrum (given the precision)

Definition at line 169 of file experimentalspectrum.cpp.

170{
171 pappso::MzRange mz_range(mz, m_precisionPtr);
172 auto itend = m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end();
173 auto it =
174 findFirstEqualOrGreaterX(m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->begin(),
175 m_qualifiedMassSpectrum.getMassSpectrumCstSPtr().get()->end(),
176 mz_range.lower());
177
178 if(it != itend)
179 {
180 if(it->x <= mz_range.upper())
181 {
182 return it;
183 }
184 }
185 return itend;
186}
std::vector< DataPoint >::iterator findFirstEqualOrGreaterX(std::vector< DataPoint >::iterator begin, std::vector< DataPoint >::iterator end, const double &value)
find the first element in which X is equal or greater than the value searched important : it implies ...
Definition trace.cpp:70

References pappso::findFirstEqualOrGreaterX(), pappso::MzRange::lower(), m_precisionPtr, m_qualifiedMassSpectrum, and pappso::MzRange::upper().

Referenced by createSymetricPeakList().

◆ getMassList() [1/2]

std::vector< double > pappso::specglob::ExperimentalSpectrum::getMassList ( ) const

Definition at line 195 of file experimentalspectrum.cpp.

196{
197 std::vector<double> mass_list;
198 for(const ExperimentalSpectrumDataPoint &n : *this)
199 {
200 mass_list.push_back(n.peak_mz);
201 }
202
203 return mass_list;
204}

References pappso::specglob::ExperimentalSpectrumDataPoint::peak_mz.

◆ getMassList() [2/2]

std::vector< double > pappso::specglob::ExperimentalSpectrum::getMassList ( ExperimentalSpectrumDataPointType type) const

Definition at line 213 of file experimentalspectrum.cpp.

214{
215 std::vector<double> mass_list;
216 for(const ExperimentalSpectrumDataPoint &n : *this)
217 {
218 if(n.type == type)
219 mass_list.push_back(n.peak_mz);
220 }
221
222 return mass_list;
223}

References pappso::specglob::ExperimentalSpectrumDataPoint::peak_mz, and pappso::specglob::ExperimentalSpectrumDataPoint::type.

◆ getPrecursorMass()

double pappso::specglob::ExperimentalSpectrum::getPrecursorMass ( ) const

Definition at line 237 of file experimentalspectrum.cpp.

238{
239 return m_precursorMass;
240}

References m_precursorMass.

◆ getQualifiedMassSpectrum()

const pappso::QualifiedMassSpectrum & pappso::specglob::ExperimentalSpectrum::getQualifiedMassSpectrum ( ) const

Definition at line 284 of file experimentalspectrum.cpp.

285{
287}

References m_qualifiedMassSpectrum.

◆ getSymetricMz()

double pappso::specglob::ExperimentalSpectrum::getSymetricMz ( double mz) const

compute the symmetric mass for debuggin purpose

Definition at line 207 of file experimentalspectrum.cpp.

208{
209 return m_targetMzSum - mz;
210}

References m_targetMzSum.

Referenced by createSymetricPeakList().

◆ getTargetMzSum()

double pappso::specglob::ExperimentalSpectrum::getTargetMzSum ( ) const

Definition at line 189 of file experimentalspectrum.cpp.

190{
191 return m_targetMzSum;
192}

References m_targetMzSum.

◆ reverseFindDiffMz()

std::vector< ExperimentalSpectrumDataPoint >::const_reverse_iterator pappso::specglob::ExperimentalSpectrum::reverseFindDiffMz ( std::size_t start_position,
const pappso::MzRange & targeted_mass_range ) const

find the peak for wich mass difference from rbegin corresponds to aaTheoMass Find if a peak back in the peak list has a mass difference that corresponds to the targeted mass

Parameters
start_positionreverse iterator on the reference peak to look for mass difference from
targeted_mass_rangethe mass difference to look forconst pappso::PeptideSp peptide_sp
Returns
a reverse iterator on the peak (found) or the end of the search (not found)

Definition at line 243 of file experimentalspectrum.cpp.

245{
246
247 qDebug() << "start_position" << start_position << " lookfor=" << aaTheoMzRange.getMz();
248 std::vector<ExperimentalSpectrumDataPoint>::const_reverse_iterator itrbegin =
249 rbegin() + (size() - 1 - start_position);
250
251 qDebug() << itrbegin->indice << "mz=" << itrbegin->peak_mz;
252 double eperimentalMzReference = itrbegin->peak_mz;
253 auto itrend = this->rend();
254 // We check all row from j to 0
255 qDebug();
256 for(auto itr = itrbegin + 1; itr != itrend; ++itr)
257 {
258 qDebug() << itr->indice;
259 double experimentalMzDifference = eperimentalMzReference - itr->peak_mz;
260
261 if(experimentalMzDifference > aaTheoMzRange.upper())
262 {
263 // if we pass the mass of the theoretical amino acid, we stop to not
264 // over
265 // calculate
266 qDebug() << experimentalMzDifference << ">" << aaTheoMzRange.upper();
267 return itrend;
268 }
269 else if(experimentalMzDifference < aaTheoMzRange.lower())
270 {
271 continue;
272 }
273
274 qDebug() << itr->indice << " diff=" << experimentalMzDifference;
275 // if we found that j-k give an amino acid, we keep k value
276 return itr;
277 }
278 qDebug() << "rend";
279 return itrend; // a value of -1 to show that
280 // there is no k value
281}

References pappso::MzRange::getMz(), pappso::MzRange::lower(), and pappso::MzRange::upper().

Referenced by pappso::specglob::SpectralAlignment::fillMatricesWithScores().

◆ toString()

QString pappso::specglob::ExperimentalSpectrum::toString ( ) const

Definition at line 226 of file experimentalspectrum.cpp.

227{
228 QStringList all_element;
229 for(const ExperimentalSpectrumDataPoint &n : *this)
230 {
231 all_element << QString("%1 %2").arg(n.peak_mz).arg((std::uint8_t)n.type);
232 }
233 return QString("[%1]").arg(all_element.join("] ["));
234}

References pappso::specglob::ExperimentalSpectrumDataPoint::peak_mz, and pappso::specglob::ExperimentalSpectrumDataPoint::type.

Member Data Documentation

◆ m_precisionPtr

pappso::PrecisionPtr pappso::specglob::ExperimentalSpectrum::m_precisionPtr
private

◆ m_precursorMass

double pappso::specglob::ExperimentalSpectrum::m_precursorMass
private

Definition at line 140 of file experimentalspectrum.h.

Referenced by createSymetricPeakList(), and getPrecursorMass().

◆ m_qualifiedMassSpectrum

pappso::QualifiedMassSpectrum pappso::specglob::ExperimentalSpectrum::m_qualifiedMassSpectrum
private

◆ m_targetMzSum

double pappso::specglob::ExperimentalSpectrum::m_targetMzSum
private

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