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 // ***************************************************************************
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.
22 /*! \var SamReadGroup::Description
23 \brief corresponds to \@RG DS:\<Description\>
25 /*! \var SamReadGroup::FlowOrder
26 \brief corresponds to \@RG FO:\<FlowOrder\>
28 /*! \var SamReadGroup::ID
29 \brief corresponds to \@RG ID:\<ID\>
31 Required for valid SAM header.
33 /*! \var SamReadGroup::KeySequence
34 \brief corresponds to \@RG KS:\<KeySequence\>
36 /*! \var SamReadGroup::Library
37 \brief corresponds to \@RG LB:\<Library\>
39 /*! \var SamReadGroup::PlatformUnit
40 \brief corresponds to \@RG PU:\<PlatformUnit\>
42 /*! \var SamReadGroup::PredictedInsertSize
43 \brief corresponds to \@RG PI:\<PredictedInsertSize\>
45 /*! \var SamReadGroup::ProductionDate
46 \brief corresponds to \@RG DT:\<ProductionDate\>
48 /*! \var SamReadGroup::Program
49 \brief corresponds to \@RG PG:\<Program\>
51 /*! \var SamReadGroup::Sample
52 \brief corresponds to \@RG SM:\<Sample\>
54 /*! \var SamReadGroup::SequencingCenter
55 \brief corresponds to \@RG CN:\<SequencingCenter\>
57 /*! \var SamReadGroup::SequencingTechnology
58 \brief corresponds to \@RG PL:\<SequencingTechnology\>
61 /*! \fn SamReadGroup::SamReadGroup(void)
62 \brief default constructor
64 SamReadGroup::SamReadGroup(void)
71 , PredictedInsertSize("")
75 , SequencingCenter("")
76 , SequencingTechnology("")
79 /*! \fn SamReadGroup::SamReadGroup(const std::string& id)
80 \brief constructs read group with \a id
82 \param id desired read group ID
84 SamReadGroup::SamReadGroup(const std::string& id)
91 , PredictedInsertSize("")
95 , SequencingCenter("")
96 , SequencingTechnology("")
99 /*! \fn SamReadGroup::SamReadGroup(const SamReadGroup& other)
100 \brief copy constructor
102 SamReadGroup::SamReadGroup(const SamReadGroup& other)
103 : Description(other.Description)
104 , FlowOrder(other.FlowOrder)
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)
117 /*! \fn SamReadGroup::~SamReadGroup(void)
120 SamReadGroup::~SamReadGroup(void) { }
122 /*! \fn void SamReadGroup::Clear(void)
123 \brief Clears all data fields.
125 void SamReadGroup::Clear(void) {
131 PlatformUnit.clear();
132 PredictedInsertSize.clear();
133 ProductionDate.clear();
136 SequencingCenter.clear();
137 SequencingTechnology.clear();
140 /*! \fn bool SamReadGroup::HasDescription(void) const
141 \brief Returns \c true if read group contains \@RG DS:\<Description\>
143 bool SamReadGroup::HasDescription(void) const {
144 return (!Description.empty());
147 /*! \fn bool SamReadGroup::HasFlowOrder(void) const
148 \brief Returns \c true if read group contains \@RG FO:\<FlowOrder\>
150 bool SamReadGroup::HasFlowOrder(void) const {
151 return (!FlowOrder.empty());
154 /*! \fn bool SamReadGroup::HasID(void) const
155 \brief Returns \c true if read group contains \@RG: ID:\<ID\>
157 bool SamReadGroup::HasID(void) const {
158 return (!ID.empty());
161 /*! \fn bool SamReadGroup::HasKeySequence(void) const
162 \brief Returns \c true if read group contains \@RG KS:\<KeySequence\>
164 bool SamReadGroup::HasKeySequence(void) const {
165 return (!KeySequence.empty());
168 /*! \fn bool SamReadGroup::HasLibrary(void) const
169 \brief Returns \c true if read group contains \@RG LB:\<Library\>
171 bool SamReadGroup::HasLibrary(void) const {
172 return (!Library.empty());
175 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
176 \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
178 bool SamReadGroup::HasPlatformUnit(void) const {
179 return (!PlatformUnit.empty());
182 /*! \fn bool SamReadGroup::HasPredictedInsertSize(void) const
183 \brief Returns \c true if read group contains \@RG PI:\<PredictedInsertSize\>
185 bool SamReadGroup::HasPredictedInsertSize(void) const {
186 return (!PredictedInsertSize.empty());
189 /*! \fn bool SamReadGroup::HasProductionDate(void) const
190 \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
192 bool SamReadGroup::HasProductionDate(void) const {
193 return (!ProductionDate.empty());
196 /*! \fn bool SamReadGroup::HasProgram(void) const
197 \brief Returns \c true if read group contains \@RG PG:\<Program\>
199 bool SamReadGroup::HasProgram(void) const {
200 return (!Program.empty());
203 /*! \fn bool SamReadGroup::HasSample(void) const
204 \brief Returns \c true if read group contains \@RG SM:\<Sample\>
206 bool SamReadGroup::HasSample(void) const {
207 return (!Sample.empty());
210 /*! \fn bool SamReadGroup::HasSequencingCenter(void) const
211 \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
213 bool SamReadGroup::HasSequencingCenter(void) const {
214 return (!SequencingCenter.empty());
217 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
218 \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
220 bool SamReadGroup::HasSequencingTechnology(void) const {
221 return (!SequencingTechnology.empty());