]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamReadGroup.cpp
da50d08176241df0c199ceea9547914fb332a873
[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: 4 March 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 http://samtools.sourceforge.net/SAM-1.3.pdf
21 */
22 /*! \var SamReadGroup::ID
23     \brief corresponds to \@RG ID:\<ID\>
24 */
25 /*! \var SamReadGroup::Sample
26     \brief corresponds to \@RG SM:\<Sample\>
27 */
28 /*! \var SamReadGroup::Library
29     \brief corresponds to \@RG LB:\<Library\>
30 */
31 /*! \var SamReadGroup::Description
32     \brief corresponds to \@RG DS:\<Description\>
33 */
34 /*! \var SamReadGroup::PlatformUnit
35     \brief corresponds to \@RG PU:\<PlatformUnit\>
36 */
37 /*! \var SamReadGroup::PredictedInsertSize
38     \brief corresponds to \@RG PI:\<PredictedInsertSize\>
39 */
40 /*! \var SamReadGroup::SequencingCenter
41     \brief corresponds to \@RG CN:\<SequencingCenter\>
42 */
43 /*! \var SamReadGroup::ProductionDate
44     \brief corresponds to \@RG DT:\<ProductionDate\>
45 */
46 /*! \var SamReadGroup::SequencingTechnology
47     \brief corresponds to \@RG PL:\<SequencingTechnology\>
48 */
49
50 /*! \fn SamReadGroup::SamReadGroup(void)
51     \brief default constructor
52 */
53 SamReadGroup::SamReadGroup(void)
54     : ID("")
55     , Sample("")
56     , Library("")
57     , Description("")
58     , PlatformUnit("")
59     , PredictedInsertSize("")
60     , SequencingCenter("")
61     , ProductionDate("")
62     , SequencingTechnology("")
63 { }
64
65 /*! \fn SamReadGroup::SamReadGroup(const std::string& id)
66     \brief constructs read group with \a id
67
68     \param id desired read group ID
69 */
70 SamReadGroup::SamReadGroup(const std::string& id)
71     : ID(id)
72     , Sample("")
73     , Library("")
74     , Description("")
75     , PlatformUnit("")
76     , PredictedInsertSize("")
77     , SequencingCenter("")
78     , ProductionDate("")
79     , SequencingTechnology("")
80 { }
81
82 /*! \fn SamReadGroup::SamReadGroup(const SamReadGroup& other)
83     \brief copy constructor
84 */
85 SamReadGroup::SamReadGroup(const SamReadGroup& other)
86     : ID(other.ID)
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)
95 { }
96
97 /*! \fn SamReadGroup::~SamReadGroup(void)
98     \brief destructor
99 */
100 SamReadGroup::~SamReadGroup(void) { }
101
102 /*! \fn void SamReadGroup::Clear(void)
103     \brief Clears all data fields.
104 */
105 void SamReadGroup::Clear(void) {
106     ID.clear();
107     Sample.clear();
108     Library.clear();
109     Description.clear();
110     PlatformUnit.clear();
111     PredictedInsertSize.clear();
112     SequencingCenter.clear();
113     ProductionDate.clear();
114     SequencingTechnology.clear();
115 }
116
117 /*! \fn bool SamReadGroup::HasID(void) const
118     \brief Returns \c true if read group contains \@RG: ID:\<ID\>
119 */
120 bool SamReadGroup::HasID(void) const {
121     return (!ID.empty());
122 }
123
124 /*! \fn bool SamReadGroup::HasSample(void) const
125     \brief Returns \c true if read group contains \@RG SM:\<Sample\>
126 */
127 bool SamReadGroup::HasSample(void) const {
128     return (!Sample.empty());
129 }
130
131 /*! \fn bool SamReadGroup::HasLibrary(void) const
132     \brief Returns \c true if read group contains \@RG LB:\<Library\>
133 */
134 bool SamReadGroup::HasLibrary(void) const {
135     return (!Library.empty());
136 }
137
138 /*! \fn bool SamReadGroup::HasDescription(void) const
139     \brief Returns \c true if read group contains \@RG DS:\<Description\>
140 */
141 bool SamReadGroup::HasDescription(void) const {
142     return (!Description.empty());
143 }
144
145 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
146     \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
147 */
148 bool SamReadGroup::HasPlatformUnit(void) const {
149     return (!PlatformUnit.empty());
150 }
151
152 /*! \fn bool SamReadGroup::HasPredictedInsertSize(void) const
153     \brief Returns \c true if read group contains \@RG PI:\<PredictedInsertSize\>
154 */
155 bool SamReadGroup::HasPredictedInsertSize(void) const {
156     return (!PredictedInsertSize.empty());
157 }
158
159 /*! \fn bool SamReadGroup::HasSequencingCenter(void) const
160     \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
161 */
162 bool SamReadGroup::HasSequencingCenter(void) const {
163     return (!SequencingCenter.empty());
164 }
165
166 /*! \fn bool SamReadGroup::HasProductionDate(void) const
167     \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
168 */
169 bool SamReadGroup::HasProductionDate(void) const {
170     return (!ProductionDate.empty());
171 }
172
173 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
174     \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
175 */
176 bool SamReadGroup::HasSequencingTechnology(void) const {
177     return (!SequencingTechnology.empty());
178 }