OpenSwath::ChromatogramPtr SpectrumAccessOpenMS::getChromatogramById(int id) { const MSChromatogramType& chromatogram = ms_experiment_->getChromatograms()[id]; OpenSwath::BinaryDataArrayPtr intensity_array(new OpenSwath::BinaryDataArray); OpenSwath::BinaryDataArrayPtr rt_array(new OpenSwath::BinaryDataArray); for (MSChromatogramType::const_iterator it = chromatogram.begin(); it != chromatogram.end(); it++) { rt_array->data.push_back(it->getRT()); intensity_array->data.push_back(it->getIntensity()); } // push back rt first, then intensity. // FEATURE (hroest) annotate which is which std::vector<OpenSwath::BinaryDataArrayPtr> binaryDataArrayPtrs; binaryDataArrayPtrs.push_back(rt_array); binaryDataArrayPtrs.push_back(intensity_array); OpenSwath::ChromatogramPtr cptr(new OpenSwath::Chromatogram); cptr->binaryDataArrayPtrs = binaryDataArrayPtrs; return cptr; }
OpenSwath::ChromatogramPtr SpectrumAccessOpenMSCached::getChromatogramById(int id) const { if (cache_.getChromatogramIndex().empty()) { // remove const from the cache since we need to recalculate the index // and re-read the data. (const_cast<CachedmzML*>(&cache_))->createMemdumpIndex(filename_cached_); } OpenSwath::BinaryDataArrayPtr rt_array(new OpenSwath::BinaryDataArray); OpenSwath::BinaryDataArrayPtr intensity_array(new OpenSwath::BinaryDataArray); std::ifstream ifs_((filename_cached_).c_str(), std::ios::binary); ifs_.seekg(cache_.getChromatogramIndex()[id]); cache_.readChromatogramFast(rt_array, intensity_array, ifs_); // push back rt first, then intensity. // FEATURE (hroest) annotate which is which std::vector<OpenSwath::BinaryDataArrayPtr> binaryDataArrayPtrs; binaryDataArrayPtrs.push_back(rt_array); binaryDataArrayPtrs.push_back(intensity_array); OpenSwath::ChromatogramPtr cptr(new OpenSwath::Chromatogram); cptr->binaryDataArrayPtrs = binaryDataArrayPtrs; return cptr; }