91void DemuxTest::GetMask(
const vector<double>& original,
const vector<double>& derived, vector<size_t>& mask)
const
93 unit_assert(std::is_sorted(original.begin(), original.end()));
94 unit_assert(std::is_sorted(derived.begin(), derived.end()));
96 auto originalIt = original.begin();
97 for (
auto derivedIt = derived.begin(); derivedIt != derived.end(); ++derivedIt)
99 for (; originalIt != original.end(); ++originalIt)
101 if (abs(*originalIt - *derivedIt) < 1.0e-5)
103 mask.push_back(originalIt - original.begin());
115 bfs::path overlapTestFile = filepath;
118 bfs::path testOutputFile =
"OverlapTestOutput.mzML";
125 demuxParams.
optimization = DemuxOptimization::OVERLAP_ONLY;
126 auto demuxList =
test.GenerateSpectrumList(overlapTestFile.string(),
true, demuxParams);
130 size_t originalIndex;
136 size_t originalIndexFromDemux;
143 auto originalMzs = originalSpectrum->getMZArray()->data;
144 auto originalIntensities = originalSpectrum->getIntensityArray()->data;
148 vector<double> peakSums(originalIntensities.size(), 0.0);
151 auto demuxSpectrum = demuxList.spectrumList->spectrum(demuxIndex);
152 auto demuxIntensities = demuxSpectrum->getIntensityArray()->data;
153 auto demuxMzs = demuxSpectrum->getMZArray()->data;
155 vector<size_t> indexMask;
156 test.GetMask(originalMzs, demuxMzs, indexMask);
159 for (
auto index : indexMask)
161 peakSums[index] += demuxIntensities.at(j++);
166 for (
size_t i = 0; i < peakSums.size(); ++i)
174 auto originalPrecursor = originalSpectrum->precursors[0];
179 auto windowStart = originalTarget - originalLowerOffset;
182 double expectedTarget = windowStart + expectedOffset + 2.0 * expectedOffset * i;
184 auto demuxSpectrum = demuxList.spectrumList->spectrum(demuxIndex);
185 auto demuxPrecursor = demuxSpectrum->precursors[0];
193 const double minimumWindowSize = 0.01;
201#ifdef _VERIFY_EXACT_SPECTRUM
215 vector<double> intensityValues =
253 auto demuxIntensities = demuxSpectrumAbsoluteCheck->getIntensityArray()->data;
254 auto demuxMzs = demuxSpectrumAbsoluteCheck->getMZArray()->data;
258 for (
size_t i = 0; i < intensityValues.size(); ++i)
268 bfs::path msxTestFile = filepath;
271 bfs::path testOutputFile =
"MsxTestOutput.mzML";
278 auto demuxList =
test.GenerateSpectrumList(msxTestFile.string(),
true, demuxParams);
282 size_t originalIndex;
288 size_t originalIndexFromDemux;
295 auto originalMzs = originalSpectrum->getMZArray()->data;
296 auto originalIntensities = originalSpectrum->getIntensityArray()->data;
300 vector<double> peakSums(originalIntensities.size(), 0.0);
303 auto demuxSpectrum = demuxList.spectrumList->spectrum(demuxIndex);
304 auto demuxIntensities = demuxSpectrum->getIntensityArray()->data;
305 auto demuxMzs = demuxSpectrum->getMZArray()->data;
307 vector<size_t> indexMask;
308 test.GetMask(originalMzs, demuxMzs, indexMask);
311 for (
auto index : indexMask)
313 peakSums[index] += demuxIntensities.at(j++);
318 for (
size_t i = 0; i < peakSums.size(); ++i)
326 struct SimplePrecursor
332 bool operator<(
const SimplePrecursor& rhs)
const {
return this->target < rhs.target; }
335 vector<SimplePrecursor> originalPrecursors;
336 for (
auto& precursor : originalSpectrum->precursors)
342 originalPrecursors.push_back(p);
344 sort(originalPrecursors.begin(), originalPrecursors.end());
348 const auto& originalPrecursor = originalPrecursors.at(i);
350 auto demuxSpectrum = demuxList.spectrumList->spectrum(demuxIndex);
351 auto demuxPrecursor = demuxSpectrum->precursors[0];
359 const double minimumWindowSize = 0.01;
361 unit_assert_equal(originalPrecursor.target, actualTarget, minimumWindowSize / 2.0);
362 unit_assert_equal(originalPrecursor.lowerOffset, actualLowerOffset, minimumWindowSize);
363 unit_assert_equal(originalPrecursor.upperOffset, actualUpperOffset, minimumWindowSize);
367#ifdef _VERIFY_EXACT_SPECTRUM
380 vector<double> intensityValues =
414 auto demuxIntensities = demuxSpectrumAbsoluteCheck->getIntensityArray()->data;
415 auto demuxMzs = demuxSpectrumAbsoluteCheck->getMZArray()->data;
419 for (
size_t i = 0; i < intensityValues.size(); ++i)