69 template <
typename ExperimentT>
73 double mz_extraction_window,
75 double rt_extraction_window,
81 Size input_size = input.size();
87 int used_filter = getFilterNr_(filter);
88 populatePeptideRTMap_(transition_exp, rt_extraction_window);
96 std::vector<typename ExperimentT::ChromatogramType> chromatograms;
97 prepareSpectra_(settings, chromatograms, transition_exp);
100 startProgress(0, input_size,
"Extracting chromatograms");
101 for (
Size scan_idx = 0; scan_idx < input_size; ++scan_idx)
103 setProgress(scan_idx);
105 if (input[scan_idx].size() == 0)
111 double integrated_intensity = 0;
117 for (
Size k = 0;
k < chromatograms.size(); ++
k)
120 double current_rt = input[scan_idx].getRT();
121 if (outsideExtractionWindow_(transition_exp.
getTransitions()[
k], current_rt, trafo, rt_extraction_window))
129 if (used_filter == 1)
131 extract_value_tophat(input[scan_idx], mz, peak_idx, integrated_intensity, mz_extraction_window, ppm);
133 else if (used_filter == 2)
135 extract_value_bartlett(input[scan_idx], mz, peak_idx, integrated_intensity, mz_extraction_window, ppm);
140 p.setIntensity(integrated_intensity);
141 chromatograms[
k].push_back(p);
147 output.setChromatograms(chromatograms);
168 std::vector< OpenSwath::ChromatogramPtr >& output,
169 const std::vector<ExtractionCoordinates>& extraction_coordinates,
170 double mz_extraction_window,
175 extraction_coordinates, mz_extraction_window, ppm, -1, filter);
197 std::vector< OpenSwath::ChromatogramPtr >& output,
198 const std::vector<ExtractionCoordinates>& extraction_coordinates,
199 double mz_extraction_window,
201 double im_extraction_window,
205 extraction_coordinates, mz_extraction_window, ppm, im_extraction_window, filter);
231 std::vector< ExtractionCoordinates > & coordinates,
233 const double rt_extraction_window,
234 const bool ms1 =
false,
235 const int ms1_isotopes = 0);
238 std::vector< ExtractionCoordinates > & coordinates,
240 const double rt_extraction_window,
241 const bool ms1 =
false,
242 const int ms1_isotopes = 0);
258 template <
typename TransitionExpT>
260 const std::vector< ChromatogramExtractor::ExtractionCoordinates > & coordinates,
261 TransitionExpT& transition_exp_used,
263 std::vector<OpenMS::MSChromatogram > & output_chromatograms,
265 double im_extraction_width = 0.0)
267 typedef std::map<String, const typename TransitionExpT::Transition* > TransitionMapType;
268 TransitionMapType trans_map;
269 for (
Size i = 0; i < transition_exp_used.getTransitions().size(); i++)
271 trans_map[transition_exp_used.getTransitions()[i].getNativeID()] = &transition_exp_used.getTransitions()[i];
274 for (
Size i = 0; i < chromatograms.size(); i++)
297 if (!transition_group_id.empty())
300 String r = extract_id_(transition_exp_used, transition_group_id, prec_charge);
307 typename TransitionExpT::Transition transition = (*trans_map[coord.
id]);
309 prec.
setMZ(transition.getPrecursorMZ());
318 prod.
setMZ(transition.getProductMZ());
324 if (!transition.getPeptideRef().empty())
327 String r = extract_id_(transition_exp_used, transition.getPeptideRef(), prec_charge);
334 String r = extract_id_(transition_exp_used, transition.getCompoundRef(), prec_charge);
340 if (coord.
ion_mobility >= 0 && im_extraction_width > 0.0)
358 output_chromatograms.push_back(chrom);
363 template <
typename SpectrumT>
367 double& integrated_intensity,
368 const double extract_window,
371 integrated_intensity = 0;
372 if (input.size() == 0)
381 left = mz - mz * extract_window / 2.0 * 1.0e-6;
382 right = mz + mz * extract_window / 2.0 * 1.0e-6;
386 left = mz - extract_window / 2.0;
387 right = mz + extract_window / 2.0;
393 while (peak_idx < input.size() && input[peak_idx].getMZ() < mz)
402 if (peak_idx >= input.size())
404 walker = input.size() - 1;
408 if (input[walker].getMZ() > left && input[walker].getMZ() < right)
410 integrated_intensity += input[walker].getIntensity();
421 if (walker == 0 && input[walker].getMZ() > left && input[walker].getMZ() < right)
423 integrated_intensity += input[walker].getIntensity();
426 while (walker > 0 && input[walker].getMZ() > left && input[walker].getMZ() < right)
428 integrated_intensity += input[walker].getIntensity(); walker--;
434 if (walker < input.size() )
438 while (walker < input.size() && input[walker].getMZ() > left && input[walker].getMZ() < right)
440 integrated_intensity += input[walker].getIntensity(); walker++;
445 template <
typename SpectrumT>
449 double& integrated_intensity,
450 const double extract_window,
453 integrated_intensity = 0;
454 if (input.size() == 0)
460 double left, right, half_window_size, weight;
463 half_window_size = mz * extract_window / 2.0 * 1.0e-6;
464 left = mz - mz * extract_window / 2.0 * 1.0e-6;
465 right = mz + mz * extract_window / 2.0 * 1.0e-6;
469 half_window_size = extract_window / 2.0;
470 left = mz - extract_window / 2.0;
471 right = mz + extract_window / 2.0;
477 while (peak_idx < input.size() && input[peak_idx].getMZ() < mz)
486 if (peak_idx >= input.size())
488 walker = input.size() - 1;
492 if (input[walker].getMZ() > left && input[walker].getMZ() < right)
494 weight = 1 - fabs(input[walker].getMZ() - mz) / half_window_size;
495 integrated_intensity += input[walker].getIntensity() * weight;
506 if (walker == 0 && input[walker].getMZ() > left && input[walker].getMZ() < right)
508 integrated_intensity += input[walker].getIntensity();
511 while (walker > 0 && input[walker].getMZ() > left && input[walker].getMZ() < right)
513 weight = 1 - fabs(input[walker].getMZ() - mz) / half_window_size;
514 integrated_intensity += input[walker].getIntensity() * weight; walker--;
520 if (walker < input.size() )
524 while (walker<input.size() && input[walker].getMZ()> left && input[walker].getMZ() < right)
526 weight = 1 - fabs(input[walker].getMZ() - mz) / half_window_size;
527 integrated_intensity += input[walker].getIntensity() * weight; walker++;
540 template <
typename TransitionExpT>
557 template <
class SpectrumSettingsT,
class ChromatogramT>
559 std::vector<ChromatogramT>& chromatograms,
571 if (settings.getPrecursors().size() > 0)
579 for (
Size pep_idx = 0; pep_idx < transition_exp.
getPeptides().size(); pep_idx++)
582 if (pep->
id == pepref)
589 for (
Size comp_idx = 0; comp_idx < transition_exp.
getCompounds().size(); comp_idx++)
592 if (comp->
id == compref)
600 chrom.setPrecursor(prec);
605 chrom.setProduct(prod);
608 chrom.setInstrumentSettings(settings.getInstrumentSettings());
609 chrom.setAcquisitionInfo(settings.getAcquisitionInfo());
610 chrom.setSourceFile(settings.getSourceFile());
612 for (
Size j = 0; j < settings.getDataProcessing().size(); ++j)
614 settings.getDataProcessing()[j]->setMetaValue(
"performed_on_spectra",
"true");
615 chrom.getDataProcessing().push_back(settings.getDataProcessing()[j]);
621 chromatograms.push_back(chrom);
630 double rt_extraction_window);
637 double rt_extraction_window);
650 prec_charge = comp.
charge;
677 if (
c.hasCharge()) {prec_charge =
c.getChargeState();}
void setPrecursor(const Precursor &precursor)
sets the precursors
void setProduct(const Product &product)
sets the products
void setInstrumentSettings(const InstrumentSettings &instrument_settings)
sets the instrument settings of the current spectrum
@ BASEPEAK_CHROMATOGRAM
Definition: ChromatogramSettings.h:46
@ SELECTED_REACTION_MONITORING_CHROMATOGRAM
Definition: ChromatogramSettings.h:48
void setSourceFile(const SourceFile &source_file)
sets the source file
void setChromatogramType(ChromatogramType type)
sets the chromatogram type
std::vector< DataProcessingPtr > & getDataProcessing()
returns a mutable reference to the description of the applied processing
void setAcquisitionInfo(const AcquisitionInfo &acquisition_info)
sets the acquisition info
void setNativeID(const String &native_id)
sets the native identifier for the spectrum, used by the acquisition software.
The representation of a chromatogram.
Definition: MSChromatogram.h:30
static void convertToOpenMSChromatogram(const OpenSwath::ChromatogramPtr &cptr, OpenMS::MSChromatogram &chromatogram)
Convert a ChromatogramPtr to an OpenMS Chromatogram.
static String computeTransitionGroupId(const String &precursor_id)
Compute transition group id.
Definition: OpenSwathHelper.h:56
void setMZ(CoordinateType mz)
Mutable access to m/z.
Definition: Peak1D.h:93
Precursor meta information.
Definition: Precursor.h:35
void setIsolationWindowUpperOffset(double bound)
sets the upper offset from the target m/z
void setDriftTime(double drift_time)
sets the ion mobility drift time in milliseconds
void setDriftTimeWindowUpperOffset(double drift_time)
sets the upper offset from the target ion mobility
void setDriftTimeWindowLowerOffset(double drift_time)
sets the lower offset from the target ion mobility
void setIsolationWindowLowerOffset(double bound)
sets the lower offset from the target m/z
void setCharge(Int charge)
Mutable access to the charge.
Product meta information.
Definition: Product.h:24
void setMZ(double mz)
sets the target m/z
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:27
This class stores a SRM/MRM transition.
Definition: ReactionMonitoringTransition.h:32
double getPrecursorMZ() const
get the precursor mz (Q1 value)
double getProductMZ() const
const String & getCompoundRef() const
const String & getPeptideRef() const
const String & getNativeID() const
Representation of 1D spectrum settings.
Definition: SpectrumSettings.h:39
const SourceFile & getSourceFile() const
returns a const reference to the source file
const AcquisitionInfo & getAcquisitionInfo() const
returns a const reference to the acquisition info
const InstrumentSettings & getInstrumentSettings() const
returns a const reference to the instrument settings of the current spectrum
std::vector< DataProcessingPtr > & getDataProcessing()
returns a mutable reference to the description of the applied processing
const std::vector< Precursor > & getPrecursors() const
returns a const reference to the precursors
A more convenient string class.
Definition: String.h:34
Represents a compound (small molecule)
Definition: TargetedExperimentHelper.h:296
String id
Definition: TargetedExperimentHelper.h:279
int getChargeState() const
Return the peptide or compound charge state.
Definition: TargetedExperimentHelper.h:216
bool hasCharge() const
Whether peptide or compound has set charge state.
Definition: TargetedExperimentHelper.h:210
Represents a peptide (amino acid sequence)
Definition: TargetedExperimentHelper.h:333
String sequence
Definition: TargetedExperimentHelper.h:393
A description of a targeted experiment containing precursor and production ions.
Definition: TargetedExperiment.h:39
const Peptide & getPeptideByRef(const String &ref) const
const std::vector< Peptide > & getPeptides() const
const Compound & getCompoundByRef(const String &ref) const
const std::vector< ReactionMonitoringTransition > & getTransitions() const
returns the transition list
void sortTransitionsByProductMZ()
Lexicographically sorts the transitions by their product m/z.
bool hasCompound(const String &ref) const
bool hasPeptide(const String &ref) const
const std::vector< Compound > & getCompounds() const
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:97
const double c
Definition: Constants.h:188
const double k
Definition: Constants.h:132
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Peak2D PeakType
Definition: MassTrace.h:21
boost::shared_ptr< Chromatogram > ChromatogramPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/DataStructures.h:146
boost::shared_ptr< ISpectrumAccess > SpectrumAccessPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:131
Definition: TransitionExperiment.h:127
std::string sequence
Definition: TransitionExperiment.h:138
std::string compound_name
Definition: TransitionExperiment.h:147
int charge
Definition: TransitionExperiment.h:137
Definition: TransitionExperiment.h:185
const LightCompound & getCompoundByRef(const std::string &ref)
Definition: TransitionExperiment.h:232