OpenMS
Loading...
Searching...
No Matches
DIAQCMetrics.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg, David L. Tabb $
7// --------------------------------------------------------------------------
8
9#pragma once
10
13
14#include <array>
15#include <iosfwd>
16#include <string>
17#include <vector>
18
19namespace OpenMS
20{
21 class ExperimentalSettings;
22 class MSSpectrum;
23
57 {
58 public:
60 enum class TICSource
61 {
62 AUTO,
63 FILE,
65 };
66
68 enum class PeakCountMode
69 {
70 ALL,
71 NONZERO
72 };
73
75 enum class IonMobilityKey
76 {
77 AUTO,
79 FAIMS,
80 NONE
81 };
82
90
92 using PeakCountSummary = std::array<double, 5>;
93
95 using TICQuantileRTs = std::array<double, 3>;
96
119
122 {
123 std::string source_file;
124 std::string input_path;
126 std::string file_sha1;
127 std::string instrument;
128 std::string serial_number;
129 std::string start_time_stamp;
130
131 double rt_min;
132 double rt_max;
144
147 double ms1_total_tic = 0.0;
150
152 double ms2_total_tic = 0.0;
154
171
172 std::vector<WindowMetrics> windows;
173
177
178 RunMetrics();
179 };
180
183
184 explicit DIAQCMetrics(const Options& options);
185
187 void setExperimentalSettings(const ExperimentalSettings& settings);
188
190 void addSpectrum(const MSSpectrum& spectrum);
191
193 Size size() const;
194
196 RunMetrics compute() const;
197
199 void clear();
200
202 static void writeRunTable(const std::vector<RunMetrics>& runs, std::ostream& os);
203
206 static void writeWindowTable(const std::vector<RunMetrics>& runs, std::ostream& os);
207
222 static void writeMzQC(const std::vector<RunMetrics>& runs, std::ostream& os, const std::string& software_version, const std::string& creation_date);
223
224 private:
227 {
228 double rt = 0.0;
230 double tic = 0.0;
232 double mass_resolving_power = 0.0; // NaN if not annotated
234 double precursor_mz = 0.0; // NaN if none
235 double target_mz = 0.0;
236 double lower_offset = 0.0;
237 double upper_offset = 0.0;
238 double faims_cv = 0.0; // NaN if none
239 double ion_mobility_lower = 0.0; // NaN if none
240 double ion_mobility_upper = 0.0; // NaN if none
241 bool scan_ion_mobility = false; // the spectrum looks like a single ion mobility scan
242 bool im_array_without_range = false; // an ion mobility array, but no ion mobility range of the window
244 };
245
247 struct GroupStatistics;
248
250 std::vector<SpectrumRecord> records_;
251 std::string instrument_;
252 std::string serial_number_;
253 std::string start_time_stamp_;
254 };
255} // namespace OpenMS
Quality metrics for data-independent acquisition (DIA) runs, per run and per isolation window.
Definition DIAQCMetrics.h:57
double ion_mobility_lower
Definition DIAQCMetrics.h:239
Size peak_count
Definition DIAQCMetrics.h:231
void addSpectrum(const MSSpectrum &spectrum)
Record one spectrum; spectra can come in any order.
Definition DIAQCMetrics.cpp:331
static void writeWindowTable(const std::vector< RunMetrics > &runs, std::ostream &os)
Definition DIAQCMetrics.cpp:621
IonMobilityKey
Which ion mobility separates isolation windows with the same m/z range.
Definition DIAQCMetrics.h:76
@ NONE
none: windows are defined by their m/z range alone
@ FAIMS
only the FAIMS compensation voltage (like DIAuditor)
PeakCountMode
How peaks of a spectrum are counted.
Definition DIAQCMetrics.h:69
@ ALL
all data points (like DIAuditor's defaultArrayLength), including zero-intensity points of profile dat...
@ NONZERO
only data points with an intensity above zero
void setExperimentalSettings(const ExperimentalSettings &settings)
Take instrument, serial number and start time from the run's settings.
Definition DIAQCMetrics.cpp:311
bool scan_ion_mobility
Definition DIAQCMetrics.h:241
std::array< double, 3 > TICQuantileRTs
Retention times (seconds) at which 25%, 50% and 75% of the TIC have been accumulated.
Definition DIAQCMetrics.h:95
std::array< double, 5 > PeakCountSummary
Minimum, first quartile, median, third quartile and maximum of peak counts.
Definition DIAQCMetrics.h:92
Size precursor_count
Definition DIAQCMetrics.h:243
double tic
Definition DIAQCMetrics.h:230
bool has_isolation_window
Definition DIAQCMetrics.h:233
double ion_mobility_upper
Definition DIAQCMetrics.h:240
double mass_resolving_power
Definition DIAQCMetrics.h:232
RunMetrics compute() const
Compute the metrics of the recorded run.
Definition DIAQCMetrics.cpp:412
double lower_offset
Definition DIAQCMetrics.h:236
PeakCountMode peak_count
Definition DIAQCMetrics.h:87
TICSource tic_source
Definition DIAQCMetrics.h:86
DIAQCMetrics()
Default options.
IonMobilityKey ion_mobility
Definition DIAQCMetrics.h:88
Options options_
Definition DIAQCMetrics.h:249
bool im_array_without_range
Definition DIAQCMetrics.h:242
UInt ms_level
Definition DIAQCMetrics.h:229
double target_mz
Definition DIAQCMetrics.h:235
std::string instrument_
Definition DIAQCMetrics.h:251
static void writeMzQC(const std::vector< RunMetrics > &runs, std::ostream &os, const std::string &software_version, const std::string &creation_date)
Write an mzQC 1.0 file with one runQuality per run.
Definition DIAQCMetrics.cpp:650
double faims_cv
Definition DIAQCMetrics.h:238
double upper_offset
Definition DIAQCMetrics.h:237
static void writeRunTable(const std::vector< RunMetrics > &runs, std::ostream &os)
Write one row per run (DIAuditor's "byRun" table) as tab-separated values.
Definition DIAQCMetrics.cpp:583
std::string start_time_stamp_
Definition DIAQCMetrics.h:253
TICSource
Where the total ion current of a spectrum comes from.
Definition DIAQCMetrics.h:61
@ COMPUTED
always the sum of intensities of the spectrum
@ FILE
only the 'total ion current' value of the file; spectra without it count with a TIC of 0 (like DIAudi...
@ AUTO
the 'total ion current' value of the file (MS:1000285) if present, otherwise the sum of intensities
void clear()
Forget all recorded spectra and settings.
Definition DIAQCMetrics.cpp:404
Size size() const
Number of spectra recorded so far.
Definition DIAQCMetrics.cpp:399
double rt
Definition DIAQCMetrics.h:228
std::string serial_number_
Definition DIAQCMetrics.h:252
double precursor_mz
Definition DIAQCMetrics.h:234
std::vector< SpectrumRecord > records_
Definition DIAQCMetrics.h:250
Options.
Definition DIAQCMetrics.h:85
The per-spectrum data the metrics need.
Definition DIAQCMetrics.h:227
Description of the experimental settings.
Definition ExperimentalSettings.h:37
The representation of a 1D spectrum.
Definition MSSpectrum.h:44
unsigned int UInt
Unsigned integer type.
Definition Types.h:64
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Definition DIAQCMetrics.cpp:211
Metrics of one run, including its isolation windows.
Definition DIAQCMetrics.h:122
Size ms2_multiple_precursors
Definition DIAQCMetrics.h:137
std::vector< WindowMetrics > windows
the DIA isolation windows
Definition DIAQCMetrics.h:172
double window_spectra_max
most spectra of any window
Definition DIAQCMetrics.h:158
PeakCountSummary ms1_peak_count
Definition DIAQCMetrics.h:149
FileTypes::Type input_type
format of the input (for mzQC): mzML, Thermo RAW or Bruker TDF
Definition DIAQCMetrics.h:125
WindowMetrics without_isolation_window
Definition DIAQCMetrics.h:176
Size windows_measured_once
windows with a single MS2 spectrum
Definition DIAQCMetrics.h:156
PeakCountSummary ms2_peak_count
Definition DIAQCMetrics.h:153
double rt_min
seconds, over all spectra
Definition DIAQCMetrics.h:131
double window_mz_max
highest upper m/z of any window
Definition DIAQCMetrics.h:160
double window_peak_count_median_max
Definition DIAQCMetrics.h:170
Size spectra_without_rt
spectra without retention time (not used for other metrics)
Definition DIAQCMetrics.h:136
std::string instrument
instrument model name
Definition DIAQCMetrics.h:127
double rt_max
seconds, over all spectra
Definition DIAQCMetrics.h:132
RunMetrics()
Definition DIAQCMetrics.cpp:276
double precursor_mz_min
lowest precursor m/z of the MSn spectra (selected ion, or isolation target)
Definition DIAQCMetrics.h:142
double window_total_tic_min
Definition DIAQCMetrics.h:167
std::string start_time_stamp
start of the acquisition as written in the file
Definition DIAQCMetrics.h:129
double ms1_cycle_time_median
Definition DIAQCMetrics.h:148
double ms2_total_tic
Definition DIAQCMetrics.h:152
Size ms2_count
spectra of MS level 2
Definition DIAQCMetrics.h:135
double window_cycle_time_median
median of all times between consecutive spectra of the same window
Definition DIAQCMetrics.h:164
Size msn_count
spectra of MS level 2 and higher
Definition DIAQCMetrics.h:134
double ms1_total_tic
Definition DIAQCMetrics.h:147
double window_mz_min
lowest lower m/z of any window
Definition DIAQCMetrics.h:159
TICQuantileRTs ms2_tic_quantile_rt
Definition DIAQCMetrics.h:151
TICQuantileRTs ms1_tic_quantile_rt
Definition DIAQCMetrics.h:146
double window_cycle_time_mean
mean of the windows' median cycle times (DIAuditor's AverageMedianCycleTime)
Definition DIAQCMetrics.h:163
std::string input_path
path of the input file or directory (for mzQC)
Definition DIAQCMetrics.h:124
double window_width_max
Definition DIAQCMetrics.h:162
double window_total_tic_max
Definition DIAQCMetrics.h:168
Size ms2_scan_ion_mobility
MS2 spectra that look like single ion mobility scans (no range or IM array)
Definition DIAQCMetrics.h:139
Size ms2_im_array_without_range
Definition DIAQCMetrics.h:140
std::string file_sha1
SHA-1 of the input file (for mzQC); may be empty.
Definition DIAQCMetrics.h:126
double ms1_mass_resolving_power
median over MS1 spectra
Definition DIAQCMetrics.h:145
double window_peak_count_median_min
Definition DIAQCMetrics.h:169
std::string serial_number
instrument serial number
Definition DIAQCMetrics.h:128
double window_width_min
Definition DIAQCMetrics.h:161
double window_half_tic_rt_max
latest of the windows' 50% TIC retention times
Definition DIAQCMetrics.h:166
std::string source_file
file name without directory and extension
Definition DIAQCMetrics.h:123
Size ms1_count
Definition DIAQCMetrics.h:133
double window_half_tic_rt_min
earliest of the windows' 50% TIC retention times
Definition DIAQCMetrics.h:165
double window_spectra_min
fewest spectra of any window
Definition DIAQCMetrics.h:157
Size window_count
DIA isolation windows (not counting without_isolation_window)
Definition DIAQCMetrics.h:155
double precursor_mz_max
highest precursor m/z of the MSn spectra
Definition DIAQCMetrics.h:143
Metrics of one isolation window.
Definition DIAQCMetrics.h:99
WindowMetrics()
Definition DIAQCMetrics.cpp:259
double ion_mobility_lower
lower limit of the ion mobility range of the window; NaN if none
Definition DIAQCMetrics.h:106
TICQuantileRTs tic_quantile_rt
Definition DIAQCMetrics.h:113
double rt_min
seconds
Definition DIAQCMetrics.h:110
double upper_mz
target m/z plus upper offset
Definition DIAQCMetrics.h:103
double total_tic
Definition DIAQCMetrics.h:114
double rt_max
seconds
Definition DIAQCMetrics.h:111
bool has_isolation_window
false only for RunMetrics::without_isolation_window
Definition DIAQCMetrics.h:100
double ion_mobility_upper
upper limit of the ion mobility range of the window; NaN if none
Definition DIAQCMetrics.h:107
double mass_resolving_power
median over the spectra of the window; NaN if not annotated
Definition DIAQCMetrics.h:108
double width_mz
upper_mz - lower_mz
Definition DIAQCMetrics.h:104
double lower_mz
target m/z minus lower offset
Definition DIAQCMetrics.h:102
Size spectrum_count
Definition DIAQCMetrics.h:109
double target_mz
isolation window target m/z; NaN without isolation window (also below)
Definition DIAQCMetrics.h:101
double faims_cv
FAIMS compensation voltage; NaN if none.
Definition DIAQCMetrics.h:105
double cycle_time_median
seconds
Definition DIAQCMetrics.h:112
PeakCountSummary peak_count
Definition DIAQCMetrics.h:115
Type
Actual file types enum.
Definition FileTypes.h:31
@ MZML
MzML file (.mzML)
Definition FileTypes.h:44