OpenMS
Loading...
Searching...
No Matches
MzMLSqliteHandler.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: Hannes Roest $
6// $Authors: Hannes Roest
7// --------------------------------------------------------------------------
8
9#pragma once
10
13
15
16namespace OpenMS
17{
18 class ProgressLogger;
19 class SqliteConnector;
20
21 namespace Internal
22 {
23
48 class OPENMS_DLLAPI MzMLSqliteHandler
49 {
50
51public:
52
59 MzMLSqliteHandler(const std::string& filename, const UInt64 run_id);
60
68
75 void readExperiment(MSExperiment & exp, bool meta_only = false) const;
76
80
88 void readSpectra(std::vector<MSSpectrum> & exp, const std::vector<int> & indices, bool meta_only = false) const;
89
97 void readChromatograms(std::vector<MSChromatogram> & exp, const std::vector<int> & indices, bool meta_only = false) const;
98
105
112
121 void setConfig(bool write_full_meta, bool use_lossy_compression, double linear_abs_mass_acc, int sql_batch_size = 500)
122 {
123 write_full_meta_ = write_full_meta;
124 use_lossy_compression_ = use_lossy_compression;
125 linear_abs_mass_acc_ = linear_abs_mass_acc;
126 sql_batch_size_ = sql_batch_size;
127 }
128
134 void setRunId(const UInt64 run_id);
135
144 std::vector<size_t> getSpectraIndicesbyRT(double RT, double deltaRT, const std::vector<int> & indices) const;
145
146protected:
147
148 // These helpers operate on an open SQLite connection. They take the SqliteConnector
149 // (a SQLite-type-free type) rather than a raw sqlite3*, so this installed header names
150 // no SQLite type; the native handle is resolved in the .cpp via SqliteConnector_impl.h.
151 void populateChromatogramsWithData_(SqliteConnector& conn, std::vector<MSChromatogram>& chromatograms) const;
152
153 void populateChromatogramsWithData_(SqliteConnector& conn, std::vector<MSChromatogram>& chromatograms, const std::vector<int> & indices) const;
154
155 void populateSpectraWithData_(SqliteConnector& conn, std::vector<MSSpectrum>& spectra) const;
156
157 void populateSpectraWithData_(SqliteConnector& conn, std::vector<MSSpectrum>& spectra, const std::vector<int> & indices) const;
158
159 void prepareChroms_(SqliteConnector& conn, std::vector<MSChromatogram>& chromatograms, const std::vector<int> & indices = {}) const;
160
161 void prepareSpectra_(SqliteConnector& conn, std::vector<MSSpectrum>& spectra, const std::vector<int> & indices = {}) const;
163
164public:
165
173
179 void writeExperiment(const MSExperiment & exp);
180
191
197 void writeSpectra(const std::vector<MSSpectrum>& spectra);
198
204 void writeChromatograms(const std::vector<MSChromatogram>& chroms);
205
214 void writeRunLevelInformation(const MSExperiment& exp, bool write_full_meta);
215
216protected:
217
220
221 std::string filename_;
222
223 /*
224 * These are spectra and chromatogram ids that are global for a specific
225 * database file. Keeping track of them allows us to append spectra and
226 * chromatograms multiple times to a database.
227 *
228 * However, currently they are initialized to zero when opening a new
229 * file, so appending to an existing file won't work.
230 */
234
239 };
240
241
242 } // namespace Internal
243} // namespace OpenMS
244
245
Sqlite handler for storing spectra and chromatograms in sqMass format.
Definition MzMLSqliteHandler.h:49
void populateSpectraWithData_(SqliteConnector &conn, std::vector< MSSpectrum > &spectra, const std::vector< int > &indices) const
void populateSpectraWithData_(SqliteConnector &conn, std::vector< MSSpectrum > &spectra) const
void prepareChroms_(SqliteConnector &conn, std::vector< MSChromatogram > &chromatograms, const std::vector< int > &indices={}) const
void writeExperiment(const MSExperiment &exp)
Write an experiment to disk.
std::string filename_
Definition MzMLSqliteHandler.h:221
Size getNrSpectra() const
Get number of spectra in the file.
MzMLSqliteHandler(const std::string &filename, const UInt64 run_id)
Constructor of sqMass file.
UInt64 run_id_
Definition MzMLSqliteHandler.h:233
void createTables()
Create data tables for a new file.
Size getNrChromatograms() const
Get number of chromatograms in the file.
void populateChromatogramsWithData_(SqliteConnector &conn, std::vector< MSChromatogram > &chromatograms) const
void readChromatograms(std::vector< MSChromatogram > &exp, const std::vector< int > &indices, bool meta_only=false) const
Read an set of chromatograms (potentially restricted to a subset)
Int spec_id_
Definition MzMLSqliteHandler.h:231
void setRunId(const UInt64 run_id)
Set the run id used when writing run-level information.
void populateChromatogramsWithData_(SqliteConnector &conn, std::vector< MSChromatogram > &chromatograms, const std::vector< int > &indices) const
void setConfig(bool write_full_meta, bool use_lossy_compression, double linear_abs_mass_acc, int sql_batch_size=500)
Set file configuration.
Definition MzMLSqliteHandler.h:121
void readExperiment(MSExperiment &exp, bool meta_only=false) const
Read an experiment into an MSExperiment structure.
void writeRunLevelInformation(const MSExperiment &exp, bool write_full_meta)
Write the run-level information for an experiment into tables.
void readSpectra(std::vector< MSSpectrum > &exp, const std::vector< int > &indices, bool meta_only=false) const
Read an set of spectra (potentially restricted to a subset)
std::vector< size_t > getSpectraIndicesbyRT(double RT, double deltaRT, const std::vector< int > &indices) const
Get spectral indices around a specific retention time.
bool use_lossy_compression_
Definition MzMLSqliteHandler.h:235
void writeSpectra(const std::vector< MSSpectrum > &spectra)
Writes a set of spectra to disk.
void writeChromatograms(const std::vector< MSChromatogram > &chroms)
Writes a set of chromatograms to disk.
void prepareSpectra_(SqliteConnector &conn, std::vector< MSSpectrum > &spectra, const std::vector< int > &indices={}) const
double write_full_meta_
Definition MzMLSqliteHandler.h:237
Int chrom_id_
Definition MzMLSqliteHandler.h:232
int sql_batch_size_
Definition MzMLSqliteHandler.h:238
double linear_abs_mass_acc_
Definition MzMLSqliteHandler.h:236
In-Memory representation of a mass spectrometry run.
Definition MSExperiment.h:49
File adapter for Sqlite files.
Definition SqliteConnector.h:41
int Int
Signed integer type.
Definition Types.h:72
uint64_t UInt64
Unsigned integer type (64bit)
Definition Types.h:47
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