X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2FSamHeader.h;h=5c7a1019120f74981ad8ee3e73559d8247b569a9;hb=cdf4bbcb19025398d429035fe672661a8c8d1a80;hp=b51f1750d1beb55c77aeed552a39a19407d607da;hpb=ff5f2ec7c437660185a406d01739f42534105412;p=bamtools.git diff --git a/src/api/SamHeader.h b/src/api/SamHeader.h index b51f175..5c7a101 100644 --- a/src/api/SamHeader.h +++ b/src/api/SamHeader.h @@ -3,15 +3,16 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 23 December 2010 (DB) +// Last modified: 18 April 2011 (DB) // --------------------------------------------------------------------------- -// Provides functionality for querying/manipulating SAM header data -// ************************************************************************** +// Provides direct read/write access to the SAM header data fields. +// *************************************************************************** #ifndef SAM_HEADER_H #define SAM_HEADER_H #include +#include #include #include #include @@ -22,58 +23,45 @@ namespace BamTools { struct API_EXPORT SamHeader { // ctor & dtor - public: - explicit SamHeader(const std::string& headerText = ""); - ~SamHeader(void); - - // query/modify entire SamHeader at once - public: - - // clear all header contents - void Clear(void); - - // checks if SAM header is well-formed - // @verbose - if true, validation errors & warnings will be printed to stderr - // otherwise, output is suppressed and only validation check occurs - bool IsValid(bool verbose = false) const; - - // retrieves the printable, SAM-formatted header - // (with any local modifications since construction) - std::string ToString(void) const; - - // query if header contains data elements - public: - bool HasVersion(void) const; - bool HasSortOrder(void) const; - bool HasGroupOrder(void) const; - bool HasSequences(void) const; - bool HasReadGroups(void) const; - bool HasProgramName(void) const; - bool HasProgramVersion(void) const; - bool HasProgramCommandLine(void) const; - bool HasComments(void) const; - + SamHeader(const std::string& headerText = ""); + SamHeader(const SamHeader& other); + ~SamHeader(void); + + // query/modify entire SamHeader + void Clear(void); // clears all header contents + bool IsValid(bool verbose = false) const; // returns true if SAM header is well-formed + void SetHeaderText(const std::string& headerText); // replaces data fields with contents of SAM-formatted text + std::string ToString(void) const; // returns the printable, SAM-formatted header text + + // convenience query methods + bool HasVersion(void) const; // returns true if header contains format version entry + bool HasSortOrder(void) const; // returns true if header contains sort order entry + bool HasGroupOrder(void) const; // returns true if header contains group order entry + bool HasSequences(void) const; // returns true if header contains any sequence entries + bool HasReadGroups(void) const; // returns true if header contains any read group entries + bool HasPrograms(void) const; // returns true if header contains any program record entries + bool HasComments(void) const; // returns true if header contains comments + + // -------------- // data members - public: + // -------------- - // header metadata (@HD line) - std::string Version; // VN: - std::string SortOrder; // SO: - std::string GroupOrder; // GO: + // header metadata (@HD line) + std::string Version; // VN: *Required for valid SAM header, if @HD record is present* + std::string SortOrder; // SO: + std::string GroupOrder; // GO: - // header sequences (@SQ entries) - SamSequenceDictionary Sequences; + // header sequences (@SQ entries) + SamSequenceDictionary Sequences; - // header read groups (@RG entries) - SamReadGroupDictionary ReadGroups; + // header read groups (@RG entries) + SamReadGroupDictionary ReadGroups; - // header program data (@PG entries) - std::string ProgramName; // ID: - std::string ProgramVersion; // VN: - std::string ProgramCommandLine; // CL: + // header program data (@PG entries) + SamProgramChain Programs; - // header comments (@CO entries) - std::vector Comments; + // header comments (@CO entries) + std::vector Comments; }; } // namespace BamTools