1 // ***************************************************************************
2 // SamReadGroup.cpp (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 4 March 2011 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides direct read/write access to the SAM read group data fields.
9 // ***************************************************************************
11 #include <api/SamReadGroup.h>
12 using namespace BamTools;
15 /*! \struct BamTools::SamReadGroup
16 \brief Represents a SAM read group entry.
18 Provides direct read/write access to the SAM read group data fields.
20 \sa http://samtools.sourceforge.net/SAM-1.3.pdf
22 /*! \var SamReadGroup::ID
23 \brief corresponds to \@RG ID:\<ID\>
25 /*! \var SamReadGroup::Sample
26 \brief corresponds to \@RG SM:\<Sample\>
28 /*! \var SamReadGroup::Library
29 \brief corresponds to \@RG LB:\<Library\>
31 /*! \var SamReadGroup::Description
32 \brief corresponds to \@RG DS:\<Description\>
34 /*! \var SamReadGroup::PlatformUnit
35 \brief corresponds to \@RG PU:\<PlatformUnit\>
37 /*! \var SamReadGroup::PredictedInsertSize
38 \brief corresponds to \@RG PI:\<PredictedInsertSize\>
40 /*! \var SamReadGroup::SequencingCenter
41 \brief corresponds to \@RG CN:\<SequencingCenter\>
43 /*! \var SamReadGroup::ProductionDate
44 \brief corresponds to \@RG DT:\<ProductionDate\>
46 /*! \var SamReadGroup::SequencingTechnology
47 \brief corresponds to \@RG PL:\<SequencingTechnology\>
50 /*! \fn SamReadGroup::SamReadGroup(void)
51 \brief default constructor
53 SamReadGroup::SamReadGroup(void)
59 , PredictedInsertSize("")
60 , SequencingCenter("")
62 , SequencingTechnology("")
65 /*! \fn SamReadGroup::SamReadGroup(const std::string& id)
66 \brief constructs read group with \a id
68 \param id desired read group ID
70 SamReadGroup::SamReadGroup(const std::string& id)
76 , PredictedInsertSize("")
77 , SequencingCenter("")
79 , SequencingTechnology("")
82 /*! \fn SamReadGroup::SamReadGroup(const SamReadGroup& other)
83 \brief copy constructor
85 SamReadGroup::SamReadGroup(const SamReadGroup& other)
87 , Sample(other.Sample)
88 , Library(other.Library)
89 , Description(other.Description)
90 , PlatformUnit(other.PlatformUnit)
91 , PredictedInsertSize(other.PredictedInsertSize)
92 , SequencingCenter(other.SequencingCenter)
93 , ProductionDate(other.ProductionDate)
94 , SequencingTechnology(other.SequencingTechnology)
97 /*! \fn SamReadGroup::~SamReadGroup(void)
100 SamReadGroup::~SamReadGroup(void) { }
102 /*! \fn void SamReadGroup::Clear(void)
103 \brief Clears all data fields.
105 void SamReadGroup::Clear(void) {
110 PlatformUnit.clear();
111 PredictedInsertSize.clear();
112 SequencingCenter.clear();
113 ProductionDate.clear();
114 SequencingTechnology.clear();
117 /*! \fn bool SamReadGroup::HasID(void) const
118 \brief Returns \c true if read group contains \@RG: ID:\<ID\>
120 bool SamReadGroup::HasID(void) const {
121 return (!ID.empty());
124 /*! \fn bool SamReadGroup::HasSample(void) const
125 \brief Returns \c true if read group contains \@RG SM:\<Sample\>
127 bool SamReadGroup::HasSample(void) const {
128 return (!Sample.empty());
131 /*! \fn bool SamReadGroup::HasLibrary(void) const
132 \brief Returns \c true if read group contains \@RG LB:\<Library\>
134 bool SamReadGroup::HasLibrary(void) const {
135 return (!Library.empty());
138 /*! \fn bool SamReadGroup::HasDescription(void) const
139 \brief Returns \c true if read group contains \@RG DS:\<Description\>
141 bool SamReadGroup::HasDescription(void) const {
142 return (!Description.empty());
145 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
146 \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
148 bool SamReadGroup::HasPlatformUnit(void) const {
149 return (!PlatformUnit.empty());
152 /*! \fn bool SamReadGroup::HasPredictedInsertSize(void) const
153 \brief Returns \c true if read group contains \@RG PI:\<PredictedInsertSize\>
155 bool SamReadGroup::HasPredictedInsertSize(void) const {
156 return (!PredictedInsertSize.empty());
159 /*! \fn bool SamReadGroup::HasSequencingCenter(void) const
160 \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
162 bool SamReadGroup::HasSequencingCenter(void) const {
163 return (!SequencingCenter.empty());
166 /*! \fn bool SamReadGroup::HasProductionDate(void) const
167 \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
169 bool SamReadGroup::HasProductionDate(void) const {
170 return (!ProductionDate.empty());
173 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
174 \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
176 bool SamReadGroup::HasSequencingTechnology(void) const {
177 return (!SequencingTechnology.empty());