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