void MapAlignmentTransformer::transformRetentionTimes( MSExperiment<>& msexp, const TransformationDescription& trafo, bool store_original_rt) { msexp.clearRanges(); // Transform spectra for (MSExperiment<>::iterator mse_iter = msexp.begin(); mse_iter != msexp.end(); ++mse_iter) { double rt = mse_iter->getRT(); if (store_original_rt) storeOriginalRT_(*mse_iter, rt); mse_iter->setRT(trafo.apply(rt)); } // Also transform chromatograms for (Size i = 0; i < msexp.getNrChromatograms(); ++i) { MSChromatogram<ChromatogramPeak>& chromatogram = msexp.getChromatogram(i); vector<double> original_rts; if (store_original_rt) original_rts.reserve(chromatogram.size()); for (Size j = 0; j < chromatogram.size(); j++) { double rt = chromatogram[j].getRT(); if (store_original_rt) original_rts.push_back(rt); chromatogram[j].setRT(trafo.apply(rt)); } if (store_original_rt && !chromatogram.metaValueExists("original_rt")) { chromatogram.setMetaValue("original_rt", original_rts); } } msexp.updateRanges(); }
ExitCodes main_(int, const char **) { //------------------------------------------------------------- // parameter handling //------------------------------------------------------------- in = getStringOption_("in"); out = getStringOption_("out"); String process_option = getStringOption_("processOption"); Param filter_param = getParam_().copy("algorithm:", true); writeDebug_("Parameters passed to filter", filter_param, 3); SavitzkyGolayFilter sgolay; sgolay.setLogType(log_type_); sgolay.setParameters(filter_param); if (process_option == "lowmemory") { return doLowMemAlgorithm(sgolay); } //------------------------------------------------------------- // loading input //------------------------------------------------------------- MzMLFile mz_data_file; mz_data_file.setLogType(log_type_); MSExperiment<Peak1D> exp; mz_data_file.load(in, exp); if (exp.empty() && exp.getChromatograms().size() == 0) { LOG_WARN << "The given file does not contain any conventional peak data, but might" " contain chromatograms. This tool currently cannot handle them, sorry."; return INCOMPATIBLE_INPUT_DATA; } //check for peak type (profile data required) if (!exp.empty() && PeakTypeEstimator().estimateType(exp[0].begin(), exp[0].end()) == SpectrumSettings::PEAKS) { writeLog_("Warning: OpenMS peak type estimation indicates that this is not profile data!"); } //check if spectra are sorted for (Size i = 0; i < exp.size(); ++i) { if (!exp[i].isSorted()) { writeLog_("Error: Not all spectra are sorted according to peak m/z positions. Use FileFilter to sort the input!"); return INCOMPATIBLE_INPUT_DATA; } } //check if chromatograms are sorted for (Size i = 0; i < exp.getChromatograms().size(); ++i) { if (!exp.getChromatogram(i).isSorted()) { writeLog_("Error: Not all chromatograms are sorted according to peak m/z positions. Use FileFilter to sort the input!"); return INCOMPATIBLE_INPUT_DATA; } } //------------------------------------------------------------- // calculations //------------------------------------------------------------- sgolay.filterExperiment(exp); //------------------------------------------------------------- // writing output //------------------------------------------------------------- //annotate output with data processing info addDataProcessing_(exp, getProcessingInfo_(DataProcessing::SMOOTHING)); mz_data_file.store(out, exp); return EXECUTION_OK; }