OpenMS
QcMLFile.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: Mathias Walzer, Axel Walter $
6 // $Authors: Mathias Walzer $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
13 #include <OpenMS/FORMAT/XMLFile.h>
16 #include <vector>
17 
18 namespace OpenMS
19 {
20  class ConsensusMap;
21  class FeatureMap;
22 
32  class OPENMS_DLLAPI QcMLFile :
33  public Internal::XMLHandler,
34  public Internal::XMLFile,
35  public ProgressLogger
36  {
37 public:
39  class OPENMS_DLLAPI QualityParameter
40  {
41  public:
50 
53 
55 
57  bool operator==(const QualityParameter& rhs) const;
58  bool operator<(const QualityParameter& rhs) const;
59  bool operator>(const QualityParameter& rhs) const;
60 
61  String toXMLString(UInt indentation_level) const;
62  };
63 
65  class OPENMS_DLLAPI Attachment
66  {
67  public:
77  std::vector<String> colTypes;
78  std::vector< std::vector<String> > tableRows;
79  //~ TODO -schema- coltypes with full definition (uintRef, unitAcc)
80 
83 
84  Attachment(const Attachment& rhs);
85 
87  bool operator==(const Attachment& rhs) const;
88  bool operator<(const Attachment& rhs) const;
89  bool operator>(const Attachment& rhs) const;
90 
91  String toXMLString(UInt indentation_level) const;
92  String toCSVString(const String& separator) const;
93  };
94 
98  ~QcMLFile() override;
99 
100  String map2csv(const std::map< String, std::map<String, String> >& cvs_table, const String& separator) const;
101  String exportIDstats(const String& filename) const;
102 
104  void registerRun(const String& id, const String& name);
106  void registerSet(const String& id, const String& name, const std::set<String>& names);
108  void addRunQualityParameter(const String& r, const QualityParameter& qp);
110  void addRunAttachment(const String& r, const Attachment& at);
112  void addSetQualityParameter(const String& r, const QualityParameter& qp);
114  void addSetAttachment(const String& r, const Attachment& at);
116  void removeAttachment(const String& r, std::vector<String>& ids, const String& at = "");
118  void removeAttachment(const String& r, const String& at);
120  void removeAllAttachments(const String& at);
122  void removeQualityParameter(const String& r, std::vector<String>& ids);
124  void merge(const QcMLFile & addendum, const String& setname = "");
126  void/* std::vector<String>& */ collectSetParameter(const String& setname, const String& qp, std::vector<String>& ret);
128  String exportAttachment(const String& filename, const String& qpname) const;
130  String exportQP(const String& filename, const String& qpname) const;
132  String exportQPs(const String& filename, const StringList& qpnames) const;
134  void getRunIDs (std::vector<String>& ids) const;
136  void getRunNames (std::vector<String>& ids) const;
138  bool existsRun(const String& filename, bool checkname = false) const;
140  bool existsSet(const String& filename, bool checkname = false) const;
142  void existsRunQualityParameter(const String& filename, const String& qpname, std::vector<String>& ids) const;
144  void existsSetQualityParameter(const String& filename, const String& qpname, std::vector<String>& ids) const;
146 
156  void collectQCData(std::vector<ProteinIdentification>& prot_ids,
157  PeptideIdentificationList& pep_ids,
158  const FeatureMap& feature_map,
159  const ConsensusMap& consensus_map,
160  const String& inputfile_raw,
161  const bool remove_duplicate_features,
162  const MSExperiment& exp);
164 
168  void store(const String& filename) const;
169 
171  void load(const String & filename);
172 
173  //~ int siz; //debug
174 
175 protected:
176  // Docu in base class
177  void endElement(const XMLCh * const /*uri*/, const XMLCh * const /*local_name*/, const XMLCh * const qname) override;
178 
179  // Docu in base class
180  void startElement(const XMLCh * const /*uri*/, const XMLCh * const /*local_name*/, const XMLCh * const qname, const xercesc::Attributes & attributes) override;
181 
182  // Docu in base class
183  void characters(const XMLCh * const chars, const XMLSize_t length) override;
184 
185  std::map<String, std::vector< QualityParameter > > runQualityQPs_; //TODO run name attribute to schema of RunQuality
186  std::map<String, std::vector< Attachment > > runQualityAts_;
187  std::map<String, std::vector< QualityParameter > > setQualityQPs_;
188  std::map<String, std::vector< Attachment > > setQualityAts_;
189  std::map<String, std::set< String > > setQualityQPs_members_;
190  std::map<String, String > run_Name_ID_map_;
191  std::map<String, String > set_Name_ID_map_;
192 
197  std::vector<String> row_;
198  std::vector<String> header_;
201  std::set<String> names_;
202  std::vector<QualityParameter> qps_;
203  std::vector<Attachment> ats_;
204  };
205 
206 } // namespace OpenMS
char16_t XMLCh
Definition: ClassTest.h:28
A container for consensus elements.
Definition: ConsensusMap.h:68
A container for features.
Definition: FeatureMap.h:82
Base class for loading/storing XML files that have a handler derived from XMLHandler.
Definition: XMLFile.h:23
Base class for XML handlers.
Definition: XMLHandler.h:328
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:49
Container for peptide identifications from multiple spectra.
Definition: PeptideIdentificationList.h:66
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:27
Representation of an attachment.
Definition: QcMLFile.h:66
Attachment(const Attachment &rhs)
String toXMLString(UInt indentation_level) const
String qualityRef
reference to qp to which attachment, if empty attached to run/set
Definition: QcMLFile.h:76
String value
Value.
Definition: QcMLFile.h:70
String unitRef
cv reference of the unit
Definition: QcMLFile.h:73
String cvRef
cv reference
Definition: QcMLFile.h:71
String unitAcc
cv accession of the unit
Definition: QcMLFile.h:74
String id
Name.
Definition: QcMLFile.h:69
Attachment & operator=(const Attachment &rhs)
bool operator==(const Attachment &rhs) const
bool operator<(const Attachment &rhs) const
String binary
binary content of the attachment
Definition: QcMLFile.h:75
std::vector< String > colTypes
type of the cols if QP has a table of values
Definition: QcMLFile.h:77
String name
Name.
Definition: QcMLFile.h:68
Attachment()
Default constructor.
String cvAcc
cv accession
Definition: QcMLFile.h:72
std::vector< std::vector< String > > tableRows
cell values if QP has a table, type see colType
Definition: QcMLFile.h:78
String toCSVString(const String &separator) const
bool operator>(const Attachment &rhs) const
Representation of a quality parameter.
Definition: QcMLFile.h:40
bool operator<(const QualityParameter &rhs) const
String toXMLString(UInt indentation_level) const
QualityParameter(const QualityParameter &rhs)
QualityParameter()
Default constructor.
bool operator>(const QualityParameter &rhs) const
String value
Value.
Definition: QcMLFile.h:44
String unitRef
cv reference of the unit
Definition: QcMLFile.h:47
bool operator==(const QualityParameter &rhs) const
String cvRef
cv reference
Definition: QcMLFile.h:45
String unitAcc
cv accession of the unit
Definition: QcMLFile.h:48
String id
Identifier.
Definition: QcMLFile.h:43
String name
Name.
Definition: QcMLFile.h:42
String cvAcc
cv accession
Definition: QcMLFile.h:46
QualityParameter & operator=(const QualityParameter &rhs)
String flag
cv accession of the unit
Definition: QcMLFile.h:49
File adapter for QcML files used to load and store QcML files.
Definition: QcMLFile.h:36
std::map< String, std::vector< QualityParameter > > runQualityQPs_
Definition: QcMLFile.h:185
void collectQCData(std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids, const FeatureMap &feature_map, const ConsensusMap &consensus_map, const String &inputfile_raw, const bool remove_duplicate_features, const MSExperiment &exp)
Calculation and collection of QC data.
void addRunAttachment(const String &r, const Attachment &at)
Just adds a attachment to run by the name r.
void merge(const QcMLFile &addendum, const String &setname="")
merges the given QCFile into this one
std::vector< Attachment > ats_
Definition: QcMLFile.h:203
void addSetAttachment(const String &r, const Attachment &at)
Just adds a attachment to set by the name r.
String map2csv(const std::map< String, std::map< String, String > > &cvs_table, const String &separator) const
String exportQP(const String &filename, const String &qpname) const
Returns a String value in quotation of a qualityparameter by the name qpname in run/set by the name f...
void removeQualityParameter(const String &r, std::vector< String > &ids)
Just removes qualityparameter going by one of the ID attributes given in ids.
String exportQPs(const String &filename, const StringList &qpnames) const
Returns a String of a tab separated qualityparameter by the name qpname in run/set by the name filena...
void collectSetParameter(const String &setname, const String &qp, std::vector< String > &ret)
collects the values of given QPs (as CVid) of the given set
~QcMLFile() override
Destructor.
String name_
Definition: QcMLFile.h:199
std::vector< String > row_
Definition: QcMLFile.h:197
String tag_
Definition: QcMLFile.h:193
std::map< String, std::set< String > > setQualityQPs_members_
Definition: QcMLFile.h:189
void load(const String &filename)
Load a QCFile.
Attachment at_
Definition: QcMLFile.h:196
QualityParameter qp_
Definition: QcMLFile.h:195
void removeAllAttachments(const String &at)
Removes attachment with cv accession at from all runs/sets.
bool existsRun(const String &filename, bool checkname=false) const
Returns true if the given run id is present in this file, if checkname is true it also checks the nam...
void existsSetQualityParameter(const String &filename, const String &qpname, std::vector< String > &ids) const
Returns the ids of the parameter name given if found in given set, empty else.
void getRunIDs(std::vector< String > &ids) const
Gives the ids of the registered runs in the vector ids.
void registerRun(const String &id, const String &name)
Registers a run in the qcml file with the respective mappings.
void store(const String &filename) const
Store the QCFile.
UInt progress_
Definition: QcMLFile.h:194
void existsRunQualityParameter(const String &filename, const String &qpname, std::vector< String > &ids) const
Returns the ids of the parameter name given if found in given run empty else.
std::vector< QualityParameter > qps_
Definition: QcMLFile.h:202
std::map< String, std::vector< Attachment > > runQualityAts_
Definition: QcMLFile.h:186
void startElement(const XMLCh *const, const XMLCh *const, const XMLCh *const qname, const xercesc::Attributes &attributes) override
QcMLFile()
Default constructor.
String exportAttachment(const String &filename, const String &qpname) const
Returns a String of a tab separated rows if found empty string else from run/set by the name filename...
std::map< String, std::vector< Attachment > > setQualityAts_
Definition: QcMLFile.h:188
std::set< String > names_
Definition: QcMLFile.h:201
std::map< String, String > run_Name_ID_map_
Definition: QcMLFile.h:190
void removeAttachment(const String &r, std::vector< String > &ids, const String &at="")
Removes attachments referencing a id given in ids, from run/set r. All attachments if no attachment n...
String exportIDstats(const String &filename) const
void addSetQualityParameter(const String &r, const QualityParameter &qp)
Just adds a qualityparameter to set by the name r.
void characters(const XMLCh *const chars, const XMLSize_t length) override
void endElement(const XMLCh *const, const XMLCh *const, const XMLCh *const qname) override
bool existsSet(const String &filename, bool checkname=false) const
Returns true if the given set id is present in this file, if checkname is true it also checks the nam...
std::vector< String > header_
Definition: QcMLFile.h:198
std::map< String, std::vector< QualityParameter > > setQualityQPs_
Definition: QcMLFile.h:187
std::map< String, String > set_Name_ID_map_
Definition: QcMLFile.h:191
void registerSet(const String &id, const String &name, const std::set< String > &names)
Registers a set in the qcml file with the respective mappings.
void getRunNames(std::vector< String > &ids) const
Gives the names of the registered runs in the vector ids.
String run_id_
Definition: QcMLFile.h:200
void addRunQualityParameter(const String &r, const QualityParameter &qp)
Just adds a qualityparameter to run by the name r.
void removeAttachment(const String &r, const String &at)
Removes attachment with cv accession at from run/set r.
A more convenient string class.
Definition: String.h:34
unsigned int UInt
Unsigned integer type.
Definition: Types.h:64
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19