BamTools  2.5.1
SamHeader.h
Go to the documentation of this file.
1 // ***************************************************************************
2 // SamHeader.h (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // ---------------------------------------------------------------------------
5 // Last modified: 10 October 2011 (DB)
6 // ---------------------------------------------------------------------------
7 // Provides direct read/write access to the SAM header data fields.
8 // ***************************************************************************
9 
10 #ifndef SAM_HEADER_H
11 #define SAM_HEADER_H
12 
13 #include <string>
14 #include <vector>
15 #include "api/BamAux.h"
16 #include "api/SamProgramChain.h"
19 #include "api/api_global.h"
20 
21 namespace BamTools {
22 
24 {
25 
26  // ctor & dtor
27  SamHeader(const std::string& headerText = std::string());
28  SamHeader(const SamHeader& other);
29  ~SamHeader();
30 
31  // query/modify entire SamHeader
32  void Clear(); // clears all header contents
33  std::string GetErrorString() const;
34  bool HasError() const;
35  bool IsValid(bool verbose = false) const; // returns true if SAM header is well-formed
36  void SetHeaderText(
37  const std::string& headerText); // replaces data fields with contents of SAM-formatted text
38  std::string ToString() const; // returns the printable, SAM-formatted header text
39 
40  // convenience query methods
41  bool HasVersion() const; // returns true if header contains format version entry
42  bool HasSortOrder() const; // returns true if header contains sort order entry
43  bool HasGroupOrder() const; // returns true if header contains group order entry
44  bool HasSequences() const; // returns true if header contains any sequence entries
45  bool HasReadGroups() const; // returns true if header contains any read group entries
46  bool HasPrograms() const; // returns true if header contains any program record entries
47  bool HasComments() const; // returns true if header contains comments
48 
49  // --------------
50  // data members
51  // --------------
52 
53  // header metadata (@HD line)
54  std::string Version; // VN:<Version> *Required, if @HD record is present*
55  std::string SortOrder; // SO:<SortOrder>
56  std::string GroupOrder; // GO:<GroupOrder>
57  std::vector<CustomHeaderTag> CustomTags; // optional custom tags on @HD line
58 
59  // header sequences (@SQ entries)
61 
62  // header read groups (@RG entries)
64 
65  // header program data (@PG entries)
67 
68  // header comments (@CO entries)
69  std::vector<std::string> Comments;
70 
71  // internal data
72 private:
73  mutable std::string m_errorString;
74 };
75 
76 } // namespace BamTools
77 
78 #endif // SAM_HEADER_H
BamTools::SamHeader::SortOrder
std::string SortOrder
corresponds to @HD SO:<SortOrder>
Definition: SamHeader.h:55
BamTools::SamReadGroupDictionary
Container of SamReadGroup entries.
Definition: SamReadGroupDictionary.h:26
SamSequenceDictionary.h
BamTools::SamHeader::GroupOrder
std::string GroupOrder
corresponds to @HD GO:<GroupOrder>
Definition: SamHeader.h:56
BamAux.h
BamTools::SamHeader::Version
std::string Version
corresponds to @HD VN:<Version>
Definition: SamHeader.h:54
BamTools::SamHeader
Represents the SAM-formatted text header that is part of the BAM file header.
Definition: SamHeader.h:23
BamTools::SamSequenceDictionary
Container of SamSequence entries.
Definition: SamSequenceDictionary.h:26
BamTools
Contains all BamTools classes & methods.
Definition: Sort.h:24
API_EXPORT
#define API_EXPORT
Definition: api_global.h:18
BamTools::SamProgramChain
Sorted container "chain" of SamProgram records.
Definition: SamProgramChain.h:26
SamReadGroupDictionary.h
BamTools::SamHeader::CustomTags
std::vector< CustomHeaderTag > CustomTags
Definition: SamHeader.h:57
BamTools::SamHeader::ReadGroups
SamReadGroupDictionary ReadGroups
corresponds to @RG entries
Definition: SamHeader.h:63
BamTools::SamHeader::Sequences
SamSequenceDictionary Sequences
corresponds to @SQ entries
Definition: SamHeader.h:60
api_global.h
BamTools::SamHeader::Comments
std::vector< std::string > Comments
corresponds to @CO entries
Definition: SamHeader.h:69
BamTools::SamHeader::Programs
SamProgramChain Programs
corresponds to @PG entries
Definition: SamHeader.h:66
SamProgramChain.h