]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamReadGroup.cpp
Brought API up to compliance with recent SAM Format Spec (v1.4-r962)
[bamtools.git] / src / api / SamReadGroup.cpp
1 // ***************************************************************************
2 // SamReadGroup.cpp (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 18 April 2011 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides direct read/write access to the SAM read group data fields.
9 // ***************************************************************************
10
11 #include <api/SamReadGroup.h>
12 using namespace BamTools;
13 using namespace std;
14
15 /*! \struct BamTools::SamReadGroup
16     \brief Represents a SAM read group entry.
17
18     Provides direct read/write access to the SAM read group data fields.
19
20     \sa \samSpecURL
21 */
22 /*! \var SamReadGroup::Description
23     \brief corresponds to \@RG DS:\<Description\>
24 */
25 /*! \var SamReadGroup::FlowOrder
26     \brief corresponds to \@RG FO:\<FlowOrder\>
27 */
28 /*! \var SamReadGroup::ID
29     \brief corresponds to \@RG ID:\<ID\>
30
31     Required for valid SAM header.
32 */
33 /*! \var SamReadGroup::KeySequence
34     \brief corresponds to \@RG KS:\<KeySequence\>
35 */
36 /*! \var SamReadGroup::Library
37     \brief corresponds to \@RG LB:\<Library\>
38 */
39 /*! \var SamReadGroup::PlatformUnit
40     \brief corresponds to \@RG PU:\<PlatformUnit\>
41 */
42 /*! \var SamReadGroup::PredictedInsertSize
43     \brief corresponds to \@RG PI:\<PredictedInsertSize\>
44 */
45 /*! \var SamReadGroup::ProductionDate
46     \brief corresponds to \@RG DT:\<ProductionDate\>
47 */
48 /*! \var SamReadGroup::Program
49     \brief corresponds to \@RG PG:\<Program\>
50 */
51 /*! \var SamReadGroup::Sample
52     \brief corresponds to \@RG SM:\<Sample\>
53 */
54 /*! \var SamReadGroup::SequencingCenter
55     \brief corresponds to \@RG CN:\<SequencingCenter\>
56 */
57 /*! \var SamReadGroup::SequencingTechnology
58     \brief corresponds to \@RG PL:\<SequencingTechnology\>
59 */
60
61 /*! \fn SamReadGroup::SamReadGroup(void)
62     \brief default constructor
63 */
64 SamReadGroup::SamReadGroup(void)
65     : Description("")
66     , FlowOrder("")
67     , ID("")
68     , KeySequence("")
69     , Library("")
70     , PlatformUnit("")
71     , PredictedInsertSize("")
72     , ProductionDate("")
73     , Program("")
74     , Sample("")
75     , SequencingCenter("")
76     , SequencingTechnology("")
77 { }
78
79 /*! \fn SamReadGroup::SamReadGroup(const std::string& id)
80     \brief constructs read group with \a id
81
82     \param id desired read group ID
83 */
84 SamReadGroup::SamReadGroup(const std::string& id)
85     : Description("")
86     , FlowOrder("")
87     , ID(id)
88     , KeySequence("")
89     , Library("")
90     , PlatformUnit("")
91     , PredictedInsertSize("")
92     , ProductionDate("")
93     , Program("")
94     , Sample("")
95     , SequencingCenter("")
96     , SequencingTechnology("")
97 { }
98
99 /*! \fn SamReadGroup::SamReadGroup(const SamReadGroup& other)
100     \brief copy constructor
101 */
102 SamReadGroup::SamReadGroup(const SamReadGroup& other)
103     : Description(other.Description)
104     , FlowOrder(other.FlowOrder)
105     , ID(other.ID)
106     , KeySequence(other.KeySequence)
107     , Library(other.Library)
108     , PlatformUnit(other.PlatformUnit)
109     , PredictedInsertSize(other.PredictedInsertSize)
110     , ProductionDate(other.ProductionDate)
111     , Program(other.Program)
112     , Sample(other.Sample)
113     , SequencingCenter(other.SequencingCenter)
114     , SequencingTechnology(other.SequencingTechnology)
115 { }
116
117 /*! \fn SamReadGroup::~SamReadGroup(void)
118     \brief destructor
119 */
120 SamReadGroup::~SamReadGroup(void) { }
121
122 /*! \fn void SamReadGroup::Clear(void)
123     \brief Clears all data fields.
124 */
125 void SamReadGroup::Clear(void) {
126     Description.clear();
127     FlowOrder.clear();
128     ID.clear();
129     KeySequence.clear();
130     Library.clear();
131     PlatformUnit.clear();
132     PredictedInsertSize.clear();
133     ProductionDate.clear();
134     Program.clear();
135     Sample.clear();
136     SequencingCenter.clear();
137     SequencingTechnology.clear();
138 }
139
140 /*! \fn bool SamReadGroup::HasDescription(void) const
141     \brief Returns \c true if read group contains \@RG DS:\<Description\>
142 */
143 bool SamReadGroup::HasDescription(void) const {
144     return (!Description.empty());
145 }
146
147 /*! \fn bool SamReadGroup::HasFlowOrder(void) const
148     \brief Returns \c true if read group contains \@RG FO:\<FlowOrder\>
149 */
150 bool SamReadGroup::HasFlowOrder(void) const {
151     return (!FlowOrder.empty());
152 }
153
154 /*! \fn bool SamReadGroup::HasID(void) const
155     \brief Returns \c true if read group contains \@RG: ID:\<ID\>
156 */
157 bool SamReadGroup::HasID(void) const {
158     return (!ID.empty());
159 }
160
161 /*! \fn bool SamReadGroup::HasKeySequence(void) const
162     \brief Returns \c true if read group contains \@RG KS:\<KeySequence\>
163 */
164 bool SamReadGroup::HasKeySequence(void) const {
165     return (!KeySequence.empty());
166 }
167
168 /*! \fn bool SamReadGroup::HasLibrary(void) const
169     \brief Returns \c true if read group contains \@RG LB:\<Library\>
170 */
171 bool SamReadGroup::HasLibrary(void) const {
172     return (!Library.empty());
173 }
174
175 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
176     \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
177 */
178 bool SamReadGroup::HasPlatformUnit(void) const {
179     return (!PlatformUnit.empty());
180 }
181
182 /*! \fn bool SamReadGroup::HasPredictedInsertSize(void) const
183     \brief Returns \c true if read group contains \@RG PI:\<PredictedInsertSize\>
184 */
185 bool SamReadGroup::HasPredictedInsertSize(void) const {
186     return (!PredictedInsertSize.empty());
187 }
188
189 /*! \fn bool SamReadGroup::HasProductionDate(void) const
190     \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
191 */
192 bool SamReadGroup::HasProductionDate(void) const {
193     return (!ProductionDate.empty());
194 }
195
196 /*! \fn bool SamReadGroup::HasProgram(void) const
197     \brief Returns \c true if read group contains \@RG PG:\<Program\>
198 */
199 bool SamReadGroup::HasProgram(void) const {
200     return (!Program.empty());
201 }
202
203 /*! \fn bool SamReadGroup::HasSample(void) const
204     \brief Returns \c true if read group contains \@RG SM:\<Sample\>
205 */
206 bool SamReadGroup::HasSample(void) const {
207     return (!Sample.empty());
208 }
209
210 /*! \fn bool SamReadGroup::HasSequencingCenter(void) const
211     \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
212 */
213 bool SamReadGroup::HasSequencingCenter(void) const {
214     return (!SequencingCenter.empty());
215 }
216
217 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
218     \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
219 */
220 bool SamReadGroup::HasSequencingTechnology(void) const {
221     return (!SequencingTechnology.empty());
222 }