1 // ***************************************************************************
2 // SamReadGroup.cpp (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 read group data fields.
8 // ***************************************************************************
10 #include "api/SamReadGroup.h"
11 using namespace BamTools;
14 /*! \struct BamTools::SamReadGroup
15 \brief Represents a SAM read group entry.
17 Provides direct read/write access to the SAM read group data fields.
21 /*! \var SamReadGroup::Description
22 \brief corresponds to \@RG DS:\<Description\>
24 /*! \var SamReadGroup::FlowOrder
25 \brief corresponds to \@RG FO:\<FlowOrder\>
27 /*! \var SamReadGroup::ID
28 \brief corresponds to \@RG ID:\<ID\>
30 Required for valid SAM header.
32 /*! \var SamReadGroup::KeySequence
33 \brief corresponds to \@RG KS:\<KeySequence\>
35 /*! \var SamReadGroup::Library
36 \brief corresponds to \@RG LB:\<Library\>
38 /*! \var SamReadGroup::PlatformUnit
39 \brief corresponds to \@RG PU:\<PlatformUnit\>
41 /*! \var SamReadGroup::PredictedInsertSize
42 \brief corresponds to \@RG PI:\<PredictedInsertSize\>
44 /*! \var SamReadGroup::ProductionDate
45 \brief corresponds to \@RG DT:\<ProductionDate\>
47 /*! \var SamReadGroup::Program
48 \brief corresponds to \@RG PG:\<Program\>
50 /*! \var SamReadGroup::Sample
51 \brief corresponds to \@RG SM:\<Sample\>
53 /*! \var SamReadGroup::SequencingCenter
54 \brief corresponds to \@RG CN:\<SequencingCenter\>
56 /*! \var SamReadGroup::SequencingTechnology
57 \brief corresponds to \@RG PL:\<SequencingTechnology\>
60 /*! \fn SamReadGroup::SamReadGroup(void)
61 \brief default constructor
63 SamReadGroup::SamReadGroup(void)
70 , PredictedInsertSize("")
74 , SequencingCenter("")
75 , SequencingTechnology("")
78 /*! \fn SamReadGroup::SamReadGroup(const std::string& id)
79 \brief constructs read group with \a id
81 \param id desired read group ID
83 SamReadGroup::SamReadGroup(const std::string& id)
90 , PredictedInsertSize("")
94 , SequencingCenter("")
95 , SequencingTechnology("")
98 /*! \fn SamReadGroup::SamReadGroup(const SamReadGroup& other)
99 \brief copy constructor
101 SamReadGroup::SamReadGroup(const SamReadGroup& other)
102 : Description(other.Description)
103 , FlowOrder(other.FlowOrder)
105 , KeySequence(other.KeySequence)
106 , Library(other.Library)
107 , PlatformUnit(other.PlatformUnit)
108 , PredictedInsertSize(other.PredictedInsertSize)
109 , ProductionDate(other.ProductionDate)
110 , Program(other.Program)
111 , Sample(other.Sample)
112 , SequencingCenter(other.SequencingCenter)
113 , SequencingTechnology(other.SequencingTechnology)
116 /*! \fn SamReadGroup::~SamReadGroup(void)
119 SamReadGroup::~SamReadGroup(void) { }
121 /*! \fn void SamReadGroup::Clear(void)
122 \brief Clears all data fields.
124 void SamReadGroup::Clear(void) {
130 PlatformUnit.clear();
131 PredictedInsertSize.clear();
132 ProductionDate.clear();
135 SequencingCenter.clear();
136 SequencingTechnology.clear();
139 /*! \fn bool SamReadGroup::HasDescription(void) const
140 \brief Returns \c true if read group contains \@RG DS:\<Description\>
142 bool SamReadGroup::HasDescription(void) const {
143 return (!Description.empty());
146 /*! \fn bool SamReadGroup::HasFlowOrder(void) const
147 \brief Returns \c true if read group contains \@RG FO:\<FlowOrder\>
149 bool SamReadGroup::HasFlowOrder(void) const {
150 return (!FlowOrder.empty());
153 /*! \fn bool SamReadGroup::HasID(void) const
154 \brief Returns \c true if read group contains \@RG: ID:\<ID\>
156 bool SamReadGroup::HasID(void) const {
157 return (!ID.empty());
160 /*! \fn bool SamReadGroup::HasKeySequence(void) const
161 \brief Returns \c true if read group contains \@RG KS:\<KeySequence\>
163 bool SamReadGroup::HasKeySequence(void) const {
164 return (!KeySequence.empty());
167 /*! \fn bool SamReadGroup::HasLibrary(void) const
168 \brief Returns \c true if read group contains \@RG LB:\<Library\>
170 bool SamReadGroup::HasLibrary(void) const {
171 return (!Library.empty());
174 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
175 \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
177 bool SamReadGroup::HasPlatformUnit(void) const {
178 return (!PlatformUnit.empty());
181 /*! \fn bool SamReadGroup::HasPredictedInsertSize(void) const
182 \brief Returns \c true if read group contains \@RG PI:\<PredictedInsertSize\>
184 bool SamReadGroup::HasPredictedInsertSize(void) const {
185 return (!PredictedInsertSize.empty());
188 /*! \fn bool SamReadGroup::HasProductionDate(void) const
189 \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
191 bool SamReadGroup::HasProductionDate(void) const {
192 return (!ProductionDate.empty());
195 /*! \fn bool SamReadGroup::HasProgram(void) const
196 \brief Returns \c true if read group contains \@RG PG:\<Program\>
198 bool SamReadGroup::HasProgram(void) const {
199 return (!Program.empty());
202 /*! \fn bool SamReadGroup::HasSample(void) const
203 \brief Returns \c true if read group contains \@RG SM:\<Sample\>
205 bool SamReadGroup::HasSample(void) const {
206 return (!Sample.empty());
209 /*! \fn bool SamReadGroup::HasSequencingCenter(void) const
210 \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
212 bool SamReadGroup::HasSequencingCenter(void) const {
213 return (!SequencingCenter.empty());
216 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
217 \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
219 bool SamReadGroup::HasSequencingTechnology(void) const {
220 return (!SequencingTechnology.empty());