本文整理汇总了C++中PeakMap::getPrecursorSpectrum方法的典型用法代码示例。如果您正苦于以下问题:C++ PeakMap::getPrecursorSpectrum方法的具体用法?C++ PeakMap::getPrecursorSpectrum怎么用?C++ PeakMap::getPrecursorSpectrum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PeakMap
的用法示例。
在下文中一共展示了PeakMap::getPrecursorSpectrum方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: abs
set<Size> correctToNearestMS1Peak(PeakMap & exp, double mz_tolerance, bool ppm, vector<double> & deltaMZs, vector<double> & mzs, vector<double> & rts)
{
set<Size> corrected_precursors;
// load experiment and extract precursors
vector<Precursor> precursors; // precursor
vector<double> precursors_rt; // RT of precursor MS2 spectrum
vector<Size> precursor_scan_index;
getPrecursors_(exp, precursors, precursors_rt, precursor_scan_index);
for (Size i = 0; i != precursors_rt.size(); ++i)
{
// get precursor rt
double rt = precursors_rt[i];
// get precursor MZ
double mz = precursors[i].getMZ();
//cout << rt << " " << mz << endl;
// get precursor spectrum
MSExperiment<Peak1D>::ConstIterator rt_it = exp.RTBegin(rt - 1e-8);
// store index of MS2 spectrum
UInt precursor_spectrum_idx = rt_it - exp.begin();
// get parent (MS1) of precursor spectrum
rt_it = exp.getPrecursorSpectrum(rt_it);
if (rt_it->getMSLevel() != 1)
{
LOG_WARN << "Error: no MS1 spectrum for this precursor" << endl;
}
//cout << rt_it->getRT() << " " << rt_it->size() << endl;
// find peak (index) closest to expected position
Size nearest_peak_idx = rt_it->findNearest(mz);
// get actual position of closest peak
double nearest_peak_mz = (*rt_it)[nearest_peak_idx].getMZ();
// calculate error between expected and actual position
double nearestPeakError = ppm ? abs(nearest_peak_mz - mz)/mz * 1e6 : abs(nearest_peak_mz - mz);
// check if error is small enough
if (nearestPeakError < mz_tolerance)
{
// sanity check: do we really have the same precursor in the original and the picked spectrum
if (fabs(exp[precursor_spectrum_idx].getPrecursors()[0].getMZ() - mz) > 0.0001)
{
LOG_WARN << "Error: index is referencing different precursors in original and picked spectrum." << endl;
}
// cout << mz << " -> " << nearest_peak_mz << endl;
double deltaMZ = nearest_peak_mz - mz;
deltaMZs.push_back(deltaMZ);
mzs.push_back(mz);
rts.push_back(rt);
// correct entries
Precursor corrected_prec = precursors[i];
corrected_prec.setMZ(nearest_peak_mz);
exp[precursor_spectrum_idx].getPrecursors()[0] = corrected_prec;
corrected_precursors.insert(precursor_spectrum_idx);
}
}
return corrected_precursors;
}
示例2: correct
void correct(PeakMap & exp, vector<DoubleReal> & deltaMZs, vector<DoubleReal> & mzs, vector<DoubleReal> & rts)
{
// load experiment and extract precursors
vector<Precursor> precursors; // precursor
vector<double> precursors_rt; // RT of precursor MS2 spectrum
getPrecursors_(exp, precursors, precursors_rt);
for (Size i = 0; i != precursors_rt.size(); ++i)
{
// get precursor rt
DoubleReal rt = precursors_rt[i];
// get precursor MZ
DoubleReal mz = precursors[i].getMZ();
//cout << rt << " " << mz << endl;
// get precursor spectrum
MSExperiment<Peak1D>::ConstIterator rt_it = exp.RTBegin(rt);
// store index of MS2 spectrum
UInt precursor_spectrum_idx = rt_it - exp.begin();
// get parent (MS1) of precursor spectrum
rt_it = exp.getPrecursorSpectrum(rt_it);
if (rt_it->getMSLevel() != 1)
{
cout << "Error: no MS1 spectrum for this precursor" << endl;
}
//cout << rt_it->getRT() << " " << rt_it->size() << endl;
// find peak (index) closest to expected position
Size nearest_peak_idx = rt_it->findNearest(mz);
// get actual position of closest peak
DoubleReal nearest_peak_mz = (*rt_it)[nearest_peak_idx].getMZ();
// calculate error between expected and actual position
DoubleReal nearestPeakError = abs(nearest_peak_mz - mz);
// check if error is small enough
if (nearestPeakError < 0.1)
{
// sanity check: do we really have the same precursor in the original and the picked spectrum
if (fabs(exp[precursor_spectrum_idx].getPrecursors()[0].getMZ() - mz) > 0.0001)
{
cout << "Error: index is referencing different precursors in original and picked spectrum." << endl;
}
// cout << mz << " -> " << nearest_peak_mz << endl;
DoubleReal deltaMZ = nearest_peak_mz - mz;
deltaMZs.push_back(deltaMZ);
mzs.push_back(mz);
rts.push_back(rt);
// correct entries
Precursor corrected_prec = precursors[i];
corrected_prec.setMZ(nearest_peak_mz);
exp[precursor_spectrum_idx].getPrecursors()[0] = corrected_prec;
}
}
}