Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
OpenSwathOSWWriter.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2017.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: George Rosenberger $
32 // $Authors: George Rosenberger $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
37 // Interfaces
39 
41 
43 
44 #include <sqlite3.h>
45 
46 #include <fstream>
47 
48 namespace OpenMS
49 {
50 
58  class OPENMS_DLLAPI OpenSwathOSWWriter
59  {
63  bool doWrite_;
65  bool sonar_;
67 
68  public:
69 
70  OpenSwathOSWWriter(String output_filename, String input_filename = "inputfile", bool ms1_scores = false, bool sonar = false, bool uis_scores = false) :
71  output_filename_(output_filename),
72  input_filename_(input_filename),
73  run_id_(OpenMS::UniqueIdGenerator::getUniqueId()),
74  doWrite_(!output_filename.empty()),
75  use_ms1_traces_(ms1_scores),
76  sonar_(sonar),
77  enable_uis_scoring_(uis_scores)
78  {}
79 
80  static int callback(void * /* NotUsed */, int argc, char **argv, char **azColName){
81  int i;
82  for(i=0; i<argc; i++)
83  {
84  printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
85  }
86  printf("\n");
87  return(0);
88  }
89 
90  bool isActive()
91  {
92  return doWrite_;
93  }
94 
99  void writeHeader()
100  {
101  sqlite3 *db;
102  char *zErrMsg = nullptr;
103  int rc;
104 
105  // Open database
106  rc = sqlite3_open(output_filename_.c_str(), &db);
107  if( rc )
108  {
109  fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
110  }
111 
112  // Create SQL structure
113  const char * create_sql =
114  "CREATE TABLE RUN(" \
115  "ID INT PRIMARY KEY NOT NULL," \
116  "FILENAME TEXT NOT NULL); " \
117 
118  "CREATE TABLE FEATURE(" \
119  "ID INT PRIMARY KEY NOT NULL," \
120  "RUN_ID INT NOT NULL," \
121  "PRECURSOR_ID INT NOT NULL," \
122  "EXP_RT REAL NOT NULL," \
123  "NORM_RT REAL NOT NULL," \
124  "DELTA_RT REAL NOT NULL," \
125  "LEFT_WIDTH REAL NOT NULL," \
126  "RIGHT_WIDTH REAL NOT NULL); " \
127 
128  "CREATE TABLE FEATURE_MS1(" \
129  "FEATURE_ID INT NOT NULL," \
130  "AREA_INTENSITY REAL NOT NULL," \
131  "APEX_INTENSITY REAL NOT NULL," \
132  "VAR_MASSDEV_SCORE REAL NOT NULL," \
133  "VAR_ISOTOPE_CORRELATION_SCORE REAL NOT NULL," \
134  "VAR_ISOTOPE_OVERLAP_SCORE REAL NOT NULL," \
135  "VAR_XCORR_COELUTION REAL NOT NULL," \
136  "VAR_XCORR_SHAPE REAL NOT NULL); " \
137 
138  "CREATE TABLE FEATURE_MS2(" \
139  "FEATURE_ID INT NOT NULL," \
140  "AREA_INTENSITY REAL NOT NULL," \
141  "APEX_INTENSITY REAL NOT NULL," \
142  "VAR_BSERIES_SCORE REAL NOT NULL," \
143  "VAR_DOTPROD_SCORE REAL NOT NULL," \
144  "VAR_INTENSITY_SCORE REAL NOT NULL," \
145  "VAR_ISOTOPE_CORRELATION_SCORE REAL NOT NULL," \
146  "VAR_ISOTOPE_OVERLAP_SCORE REAL NOT NULL," \
147  "VAR_LIBRARY_CORR REAL NOT NULL," \
148  "VAR_LIBRARY_DOTPROD REAL NOT NULL," \
149  "VAR_LIBRARY_MANHATTAN REAL NOT NULL," \
150  "VAR_LIBRARY_RMSD REAL NOT NULL," \
151  "VAR_LIBRARY_ROOTMEANSQUARE REAL NOT NULL," \
152  "VAR_LIBRARY_SANGLE REAL NOT NULL," \
153  "VAR_LOG_SN_SCORE REAL NOT NULL," \
154  "VAR_MANHATTAN_SCORE REAL NOT NULL," \
155  "VAR_MASSDEV_SCORE REAL NOT NULL," \
156  "VAR_MASSDEV_SCORE_WEIGHTED REAL NOT NULL," \
157  "VAR_NORM_RT_SCORE REAL NOT NULL," \
158  "VAR_XCORR_COELUTION REAL NOT NULL," \
159  "VAR_XCORR_COELUTION_WEIGHTED REAL NOT NULL," \
160  "VAR_XCORR_SHAPE REAL NOT NULL," \
161  "VAR_XCORR_SHAPE_WEIGHTED REAL NOT NULL," \
162  "VAR_YSERIES_SCORE REAL NOT NULL," \
163  "VAR_ELUTION_MODEL_FIT_SCORE REAL NULL," \
164  "VAR_SONAR_LAG REAL NULL," \
165  "VAR_SONAR_SHAPE REAL NULL," \
166  "VAR_SONAR_LOG_SN REAL NULL," \
167  "VAR_SONAR_LOG_DIFF REAL NULL," \
168  "VAR_SONAR_LOG_TREND REAL NULL," \
169  "VAR_SONAR_RSQ REAL NULL); " \
170 
171  "CREATE TABLE FEATURE_TRANSITION(" \
172  "FEATURE_ID INT NOT NULL," \
173  "TRANSITION_ID INT NOT NULL," \
174  "AREA_INTENSITY REAL NOT NULL," \
175  "APEX_INTENSITY REAL NOT NULL," \
176  "VAR_LOG_INTENSITY REAL NULL," \
177  "VAR_XCORR_COELUTION REAL NULL," \
178  "VAR_XCORR_SHAPE REAL NULL," \
179  "VAR_LOG_SN_SCORE REAL NULL," \
180  "VAR_MASSDEV_SCORE REAL NULL," \
181  "VAR_ISOTOPE_CORRELATION_SCORE REAL NULL," \
182  "VAR_ISOTOPE_OVERLAP_SCORE REAL NULL); " ;
183 
184 
185  // Execute SQL create statement
186  rc = sqlite3_exec(db, create_sql, callback, nullptr, &zErrMsg);
187  if( rc != SQLITE_OK )
188  {
189  std::string error_message = zErrMsg;
190  sqlite3_free(zErrMsg);
191  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
192  error_message);
193  }
194 
195  // Insert run_id information
196  std::stringstream sql_run;
197  sql_run << "INSERT INTO RUN (ID, FILENAME) VALUES ("
198  << *(int64_t*)&run_id_ << ", '" // Conversion from UInt64 to int64_t to support SQLite
199  << input_filename_ << "'); ";
200 
201  // Execute SQL insert statement
202  rc = sqlite3_exec(db, sql_run.str().c_str(), callback, nullptr, &zErrMsg);
203  if( rc != SQLITE_OK )
204  {
205  std::string error_message = zErrMsg;
206  sqlite3_free(zErrMsg);
207  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
208  error_message);
209  }
210 
211  sqlite3_close(db);
212  }
213 
229  const OpenSwath::LightTransition* /* transition */,
230  FeatureMap& output, String id)
231  {
232  std::stringstream sql, sql_feature, sql_feature_ms1, sql_feature_ms2, sql_feature_ms2_transition, sql_feature_uis_transition;
233 
234  for (FeatureMap::iterator feature_it = output.begin(); feature_it != output.end(); ++feature_it)
235  {
236  UInt64 uint64_feature_id = feature_it->getUniqueId();
237  int64_t feature_id = *(int64_t*)&uint64_feature_id; // Conversion from UInt64 to int64_t to support SQLite
238 
239  for (std::vector<Feature>::iterator sub_it = feature_it->getSubordinates().begin(); sub_it != feature_it->getSubordinates().end(); ++sub_it)
240  {
241  if (sub_it->metaValueExists("FeatureLevel") && sub_it->getMetaValue("FeatureLevel") == "MS2")
242  {
243  sql_feature_ms2_transition << "INSERT INTO FEATURE_TRANSITION (FEATURE_ID, TRANSITION_ID, AREA_INTENSITY, APEX_INTENSITY) VALUES ("
244  << feature_id << ", "
245  << sub_it->getMetaValue("native_id") << ", "
246  << sub_it->getIntensity() << ", "
247  << sub_it->getMetaValue("peak_apex_int") << "); ";
248  }
249  else if (sub_it->metaValueExists("FeatureLevel") && sub_it->getMetaValue("FeatureLevel") == "MS1")
250  {
251  sql_feature_ms1 << "INSERT INTO FEATURE_MS1 (FEATURE_ID, AREA_INTENSITY, APEX_INTENSITY, VAR_MASSDEV_SCORE, VAR_ISOTOPE_CORRELATION_SCORE, VAR_ISOTOPE_OVERLAP_SCORE, VAR_XCORR_COELUTION, VAR_XCORR_SHAPE) VALUES ("
252  << feature_id << ", "
253  << sub_it->getIntensity() << ", "
254  << sub_it->getMetaValue("peak_apex_int") << ", "
255  << feature_it->getMetaValue("var_ms1_ppm_diff") << ", "
256  << feature_it->getMetaValue("var_ms1_isotope_correlation") << ", "
257  << feature_it->getMetaValue("var_ms1_isotope_overlap") << ", "
258  << feature_it->getMetaValue("var_ms1_xcorr_coelution") << ", "
259  << feature_it->getMetaValue("var_ms1_xcorr_shape") << "); ";
260  }
261  }
262 
263  sql_feature << "INSERT INTO FEATURE (ID, RUN_ID, PRECURSOR_ID, EXP_RT, NORM_RT, DELTA_RT, LEFT_WIDTH, RIGHT_WIDTH) VALUES ("
264  << feature_id << ", '"
265  << *(int64_t*)&run_id_ << "', "
266  << id << ", "
267  << feature_it->getRT() << ", "
268  << feature_it->getMetaValue("norm_RT") << ", "
269  << feature_it->getMetaValue("delta_rt") << ", "
270  << feature_it->getMetaValue("leftWidth") << ", "
271  << feature_it->getMetaValue("rightWidth") << "); ";
272 
273  std::string var_elution_model_fit_score = "NULL", var_sonar_lag = "NULL", var_sonar_shape = "NULL", var_sonar_log_sn = "NULL", var_sonar_log_diff = "NULL", var_sonar_log_trend = "NULL", var_sonar_rsq = "NULL";
274 
275  if (!feature_it->getMetaValue("var_elution_model_fit_score").isEmpty())
276  {
277  var_elution_model_fit_score = feature_it->getMetaValue("var_elution_model_fit_score").toString();
278  }
279  if (!feature_it->getMetaValue("var_sonar_lag").isEmpty())
280  {
281  var_sonar_lag = feature_it->getMetaValue("var_sonar_lag").toString();
282  }
283  if (!feature_it->getMetaValue("var_sonar_shape").isEmpty())
284  {
285  var_sonar_shape = feature_it->getMetaValue("var_sonar_shape").toString();
286  }
287  if (!feature_it->getMetaValue("var_sonar_log_sn").isEmpty())
288  {
289  var_sonar_log_sn = feature_it->getMetaValue("var_sonar_log_sn").toString();
290  }
291  if (!feature_it->getMetaValue("var_sonar_log_diff").isEmpty())
292  {
293  var_sonar_log_diff = feature_it->getMetaValue("var_sonar_log_diff").toString();
294  }
295  if (!feature_it->getMetaValue("var_sonar_log_trend").isEmpty())
296  {
297  var_sonar_log_trend = feature_it->getMetaValue("var_sonar_log_trend").toString();
298  }
299  if (!feature_it->getMetaValue("var_sonar_rsq").isEmpty())
300  {
301  var_sonar_rsq = feature_it->getMetaValue("var_sonar_rsq").toString();
302  }
303 
304  sql_feature_ms2 << "INSERT INTO FEATURE_MS2 (FEATURE_ID, AREA_INTENSITY, APEX_INTENSITY, VAR_BSERIES_SCORE, VAR_DOTPROD_SCORE, VAR_INTENSITY_SCORE, VAR_ISOTOPE_CORRELATION_SCORE, VAR_ISOTOPE_OVERLAP_SCORE, VAR_LIBRARY_CORR, VAR_LIBRARY_DOTPROD, VAR_LIBRARY_MANHATTAN, VAR_LIBRARY_RMSD, VAR_LIBRARY_ROOTMEANSQUARE, VAR_LIBRARY_SANGLE, VAR_LOG_SN_SCORE, VAR_MANHATTAN_SCORE, VAR_MASSDEV_SCORE, VAR_MASSDEV_SCORE_WEIGHTED, VAR_NORM_RT_SCORE, VAR_XCORR_COELUTION,VAR_XCORR_COELUTION_WEIGHTED, VAR_XCORR_SHAPE, VAR_XCORR_SHAPE_WEIGHTED, VAR_YSERIES_SCORE, VAR_ELUTION_MODEL_FIT_SCORE, VAR_SONAR_LAG, VAR_SONAR_SHAPE, VAR_SONAR_LOG_SN, VAR_SONAR_LOG_DIFF, VAR_SONAR_LOG_TREND, VAR_SONAR_RSQ) VALUES ("
305  << feature_id << ", "
306  << feature_it->getIntensity() << ", "
307  << feature_it->getMetaValue("peak_apices_sum") << ", "
308  << feature_it->getMetaValue("var_bseries_score") << ", "
309  << feature_it->getMetaValue("var_dotprod_score") << ", "
310  << feature_it->getMetaValue("var_intensity_score") << ", "
311  << feature_it->getMetaValue("var_isotope_correlation_score") << ", "
312  << feature_it->getMetaValue("var_isotope_overlap_score") << ", "
313  << feature_it->getMetaValue("var_library_corr") << ", "
314  << feature_it->getMetaValue("var_library_dotprod") << ", "
315  << feature_it->getMetaValue("var_library_manhattan") << ", "
316  << feature_it->getMetaValue("var_library_rmsd") << ", "
317  << feature_it->getMetaValue("var_library_rootmeansquare") << ", "
318  << feature_it->getMetaValue("var_library_sangle") << ", "
319  << feature_it->getMetaValue("var_log_sn_score") << ", "
320  << feature_it->getMetaValue("var_manhatt_score") << ", "
321  << feature_it->getMetaValue("var_massdev_score") << ", "
322  << feature_it->getMetaValue("var_massdev_score_weighted") << ", "
323  << feature_it->getMetaValue("var_norm_rt_score") << ", "
324  << feature_it->getMetaValue("var_xcorr_coelution") << ", "
325  << feature_it->getMetaValue("var_xcorr_coelution_weighted") << ", "
326  << feature_it->getMetaValue("var_xcorr_shape") << ", "
327  << feature_it->getMetaValue("var_xcorr_shape_weighted") << ", "
328  << feature_it->getMetaValue("var_yseries_score") << ", "
329  << var_elution_model_fit_score << ", "
330  << var_sonar_lag << ", "
331  << var_sonar_shape << ", "
332  << var_sonar_log_sn << ", "
333  << var_sonar_log_diff << ", "
334  << var_sonar_log_trend << ", "
335  << var_sonar_rsq << "); ";
336 
337  if (enable_uis_scoring_)
338  {
339  std::vector<String> id_target_transition_names = ListUtils::create<String>((String)feature_it->getMetaValue("id_target_transition_names"),';');
340  std::vector<double> id_target_area_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_area_intensity"),';');
341  std::vector<double> id_target_apex_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_apex_intensity"),';');
342  std::vector<double> id_target_log_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_log_intensity"),';');
343  std::vector<double> id_target_ind_xcorr_coelution = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_xcorr_coelution"),';');
344  std::vector<double> id_target_ind_xcorr_shape = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_xcorr_shape"),';');
345  std::vector<double> id_target_ind_log_sn_score = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_log_sn_score"),';');
346  std::vector<double> id_target_ind_massdev_score = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_massdev_score"),';');
347  std::vector<double> id_target_ind_isotope_correlation = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_isotope_correlation"),';');
348  std::vector<double> id_target_ind_isotope_overlap = ListUtils::create<double>((String)feature_it->getMetaValue("id_target_ind_isotope_overlap"),';');
349 
350  if ((String)feature_it->getMetaValue("id_target_num_transitions") != "")
351  {
352  for (int i = 0; i < feature_it->getMetaValue("id_target_num_transitions").toString().toInt(); ++i)
353  {
354  sql_feature_uis_transition << "INSERT INTO FEATURE_TRANSITION (FEATURE_ID, TRANSITION_ID, AREA_INTENSITY, APEX_INTENSITY, VAR_LOG_INTENSITY, VAR_XCORR_COELUTION, VAR_XCORR_SHAPE, VAR_LOG_SN_SCORE, VAR_MASSDEV_SCORE, VAR_ISOTOPE_CORRELATION_SCORE, VAR_ISOTOPE_OVERLAP_SCORE) VALUES ("
355  << feature_id << ", "
356  << id_target_transition_names[i] << ", "
357  << id_target_area_intensity[i] << ", "
358  << id_target_apex_intensity[i] << ", "
359  << id_target_log_intensity[i] << ", "
360  << id_target_ind_xcorr_coelution[i] << ", "
361  << id_target_ind_xcorr_shape[i] << ", "
362  << id_target_ind_log_sn_score[i] << ", "
363  << id_target_ind_massdev_score[i] << ", "
364  << id_target_ind_isotope_correlation[i] << ", "
365  << id_target_ind_isotope_overlap[i] << "); ";
366  }
367  }
368 
369  std::vector<String> id_decoy_transition_names = ListUtils::create<String>((String)feature_it->getMetaValue("id_decoy_transition_names"),';');
370  std::vector<double> id_decoy_area_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_area_intensity"),';');
371  std::vector<double> id_decoy_apex_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_apex_intensity"),';');
372  std::vector<double> id_decoy_log_intensity = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_log_intensity"),';');
373  std::vector<double> id_decoy_ind_xcorr_coelution = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_xcorr_coelution"),';');
374  std::vector<double> id_decoy_ind_xcorr_shape = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_xcorr_shape"),';');
375  std::vector<double> id_decoy_ind_log_sn_score = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_log_sn_score"),';');
376  std::vector<double> id_decoy_ind_massdev_score = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_massdev_score"),';');
377  std::vector<double> id_decoy_ind_isotope_correlation = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_isotope_correlation"),';');
378  std::vector<double> id_decoy_ind_isotope_overlap = ListUtils::create<double>((String)feature_it->getMetaValue("id_decoy_ind_isotope_overlap"),';');
379 
380  if ((String)feature_it->getMetaValue("id_decoy_num_transitions") != "")
381  {
382  for (int i = 0; i < feature_it->getMetaValue("id_decoy_num_transitions").toString().toInt(); ++i)
383  {
384  sql_feature_uis_transition << "INSERT INTO FEATURE_TRANSITION (FEATURE_ID, TRANSITION_ID, AREA_INTENSITY, APEX_INTENSITY, VAR_LOG_INTENSITY, VAR_XCORR_COELUTION, VAR_XCORR_SHAPE, VAR_LOG_SN_SCORE, VAR_MASSDEV_SCORE, VAR_ISOTOPE_CORRELATION_SCORE, VAR_ISOTOPE_OVERLAP_SCORE) VALUES ("
385  << feature_id << ", "
386  << id_decoy_transition_names[i] << ", "
387  << id_decoy_area_intensity[i] << ", "
388  << id_decoy_apex_intensity[i] << ", "
389  << id_decoy_log_intensity[i] << ", "
390  << id_decoy_ind_xcorr_coelution[i] << ", "
391  << id_decoy_ind_xcorr_shape[i] << ", "
392  << id_decoy_ind_log_sn_score[i] << ", "
393  << id_decoy_ind_massdev_score[i] << ", "
394  << id_decoy_ind_isotope_correlation[i] << ", "
395  << id_decoy_ind_isotope_overlap[i] << "); ";
396  }
397  }
398  }
399  }
400 
401  if (enable_uis_scoring_)
402  {
403  sql << sql_feature.str() << sql_feature_ms1.str() << sql_feature_ms2.str() << sql_feature_uis_transition.str();
404  }
405  else
406  {
407  sql << sql_feature.str() << sql_feature_ms1.str() << sql_feature_ms2.str() << sql_feature_ms2_transition.str();
408  }
409 
410  return(sql.str());
411  }
412 
426  void writeLines(std::vector<String> to_osw_output)
427  {
428  sqlite3 *db;
429  char *zErrMsg = nullptr;
430  int rc;
431  // char *create_sql;
432 
433  // Open database
434  rc = sqlite3_open(output_filename_.c_str(), &db);
435  if( rc )
436  {
437  fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
438  }
439 
440  sqlite3_exec(db, "BEGIN TRANSACTION", nullptr, nullptr, &zErrMsg);
441 
442  for (Size i = 0; i < to_osw_output.size(); i++)
443  {
444  rc = sqlite3_exec(db, to_osw_output[i].c_str(), callback, nullptr, &zErrMsg);
445  if( rc != SQLITE_OK )
446  {
447  std::string error_message = zErrMsg;
448  sqlite3_free(zErrMsg);
449  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
450  error_message);
451  }
452  }
453 
454  sqlite3_exec(db, "END TRANSACTION", nullptr, nullptr, &zErrMsg);
455 
456  sqlite3_close(db);
457  }
458 
459  };
460 
461 }
462 
463 
String input_filename_
Definition: OpenSwathOSWWriter.h:61
String output_filename_
Definition: OpenSwathOSWWriter.h:60
A more convenient string class.
Definition: String.h:57
A container for features.
Definition: FeatureMap.h:93
bool sonar_
Definition: OpenSwathOSWWriter.h:65
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
bool use_ms1_traces_
Definition: OpenSwathOSWWriter.h:64
static int callback(void *, int argc, char **argv, char **azColName)
Definition: OpenSwathOSWWriter.h:80
Class to write out an OpenSwath OSW SQLite output (PyProphet input)
Definition: OpenSwathOSWWriter.h:58
void writeHeader()
Initializes file by generating SQLite tables.
Definition: OpenSwathOSWWriter.h:99
bool enable_uis_scoring_
Definition: OpenSwathOSWWriter.h:66
A generator for unique ids.
Definition: UniqueIdGenerator.h:59
OpenSwathOSWWriter(String output_filename, String input_filename="inputfile", bool ms1_scores=false, bool sonar=false, bool uis_scores=false)
Definition: OpenSwathOSWWriter.h:70
A method or algorithm argument contains illegal values.
Definition: Exception.h:648
String prepareLine(const OpenSwath::LightCompound &, const OpenSwath::LightTransition *, FeatureMap &output, String id)
Prepare a single line (feature) for output.
Definition: OpenSwathOSWWriter.h:228
bool doWrite_
Definition: OpenSwathOSWWriter.h:63
OPENMS_UINT64_TYPE UInt64
Unsigned integer type (64bit)
Definition: Types.h:77
Definition: TransitionExperiment.h:149
OpenMS::UInt64 run_id_
Definition: OpenSwathOSWWriter.h:62
Definition: TransitionExperiment.h:46
bool isActive()
Definition: OpenSwathOSWWriter.h:90
void writeLines(std::vector< String > to_osw_output)
Write data to disk.
Definition: OpenSwathOSWWriter.h:426
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127

OpenMS / TOPP release 2.3.0 Documentation generated on Wed Apr 18 2018 19:29:07 using doxygen 1.8.14