Gamgee
You miserable little maggot. I'll stove your head in!
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
variant_header.h
Go to the documentation of this file.
1 #ifndef __gamgee__variant_header__
2 #define __gamgee__variant_header__
3 
4 #include "htslib/vcf.h"
5 
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 namespace gamgee {
11 
19  public:
20  VariantHeader() = default;
21  explicit VariantHeader(const std::shared_ptr<bcf_hdr_t>& header) : m_header{header} {}
22  VariantHeader(const VariantHeader& other);
23  VariantHeader(VariantHeader&& other) noexcept;
24  VariantHeader& operator=(const VariantHeader& other);
25  VariantHeader& operator=(VariantHeader&& other) noexcept;
26  ~VariantHeader() = default;
27 
32  uint32_t n_samples() const { return uint32_t(m_header->n[BCF_DT_SAMPLE]); }
33 
34  std::vector<std::string> filters() const;
35  std::vector<std::string> samples() const;
36  std::vector<std::string> contigs() const;
37  std::vector<std::string> info_fields() const;
38  std::vector<std::string> format_fields() const;
39 
40  void advanced_merge_header(const VariantHeader& other) { bcf_hdr_combine(other.m_header.get(), m_header.get()); }
41 
42  private:
43  std::shared_ptr<bcf_hdr_t> m_header;
44 
45  friend class VariantWriter;
46 };
47 
48 }
49 
50 #endif
std::vector< std::string > format_fields() const
builds a vector with the format fields
Definition: variant_header.cpp:72
std::vector< std::string > filters() const
builds a vector with the filters
Definition: variant_header.cpp:64
utility class to write out a SAM/BAM/CRAM file to any stream
Definition: variant_writer.h:16
std::vector< std::string > info_fields() const
builds a vector with the info fields
Definition: variant_header.cpp:68
std::vector< std::string > contigs() const
builds a vector with the contigs
Definition: variant_header.cpp:60
void advanced_merge_header(const VariantHeader &other)
Definition: variant_header.h:40
VariantHeader()=default
initializes a null VariantHeader
uint32_t n_samples() const
returns the number of samples in the header
Definition: variant_header.h:32
Utility class to hold a variant header.
Definition: variant_header.h:18
VariantHeader(const std::shared_ptr< bcf_hdr_t > &header)
creates a VariantHeader given htslib object.
Definition: variant_header.h:21
std::vector< std::string > samples() const
builds a vector with the names of the samples
Definition: variant_header.cpp:56