]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/api/SamReadGroup.cpp
Brought API up to compliance with recent SAM Format Spec (v1.4-r962)
[bamtools.git] / src / api / SamReadGroup.cpp
index da50d08176241df0c199ceea9547914fb332a873..2ba75f16b46b7e7a548581a3aa04144895675097 100644 (file)
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College
 // All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 4 March 2011 (DB)
+// Last modified: 18 April 2011 (DB)
 // ---------------------------------------------------------------------------
 // Provides direct read/write access to the SAM read group data fields.
 // ***************************************************************************
@@ -17,32 +17,43 @@ using namespace std;
 
     Provides direct read/write access to the SAM read group data fields.
 
-    \sa http://samtools.sourceforge.net/SAM-1.3.pdf
+    \sa \samSpecURL
+*/
+/*! \var SamReadGroup::Description
+    \brief corresponds to \@RG DS:\<Description\>
+*/
+/*! \var SamReadGroup::FlowOrder
+    \brief corresponds to \@RG FO:\<FlowOrder\>
 */
 /*! \var SamReadGroup::ID
     \brief corresponds to \@RG ID:\<ID\>
+
+    Required for valid SAM header.
 */
-/*! \var SamReadGroup::Sample
-    \brief corresponds to \@RG SM:\<Sample\>
+/*! \var SamReadGroup::KeySequence
+    \brief corresponds to \@RG KS:\<KeySequence\>
 */
 /*! \var SamReadGroup::Library
     \brief corresponds to \@RG LB:\<Library\>
 */
-/*! \var SamReadGroup::Description
-    \brief corresponds to \@RG DS:\<Description\>
-*/
 /*! \var SamReadGroup::PlatformUnit
     \brief corresponds to \@RG PU:\<PlatformUnit\>
 */
 /*! \var SamReadGroup::PredictedInsertSize
     \brief corresponds to \@RG PI:\<PredictedInsertSize\>
 */
-/*! \var SamReadGroup::SequencingCenter
-    \brief corresponds to \@RG CN:\<SequencingCenter\>
-*/
 /*! \var SamReadGroup::ProductionDate
     \brief corresponds to \@RG DT:\<ProductionDate\>
 */
+/*! \var SamReadGroup::Program
+    \brief corresponds to \@RG PG:\<Program\>
+*/
+/*! \var SamReadGroup::Sample
+    \brief corresponds to \@RG SM:\<Sample\>
+*/
+/*! \var SamReadGroup::SequencingCenter
+    \brief corresponds to \@RG CN:\<SequencingCenter\>
+*/
 /*! \var SamReadGroup::SequencingTechnology
     \brief corresponds to \@RG PL:\<SequencingTechnology\>
 */
@@ -51,14 +62,17 @@ using namespace std;
     \brief default constructor
 */
 SamReadGroup::SamReadGroup(void)
-    : ID("")
-    , Sample("")
+    : Description("")
+    , FlowOrder("")
+    , ID("")
+    , KeySequence("")
     , Library("")
-    , Description("")
     , PlatformUnit("")
     , PredictedInsertSize("")
-    , SequencingCenter("")
     , ProductionDate("")
+    , Program("")
+    , Sample("")
+    , SequencingCenter("")
     , SequencingTechnology("")
 { }
 
@@ -68,14 +82,17 @@ SamReadGroup::SamReadGroup(void)
     \param id desired read group ID
 */
 SamReadGroup::SamReadGroup(const std::string& id)
-    : ID(id)
-    , Sample("")
+    : Description("")
+    , FlowOrder("")
+    , ID(id)
+    , KeySequence("")
     , Library("")
-    , Description("")
     , PlatformUnit("")
     , PredictedInsertSize("")
-    , SequencingCenter("")
     , ProductionDate("")
+    , Program("")
+    , Sample("")
+    , SequencingCenter("")
     , SequencingTechnology("")
 { }
 
@@ -83,14 +100,17 @@ SamReadGroup::SamReadGroup(const std::string& id)
     \brief copy constructor
 */
 SamReadGroup::SamReadGroup(const SamReadGroup& other)
-    : ID(other.ID)
-    , Sample(other.Sample)
+    : Description(other.Description)
+    , FlowOrder(other.FlowOrder)
+    , ID(other.ID)
+    , KeySequence(other.KeySequence)
     , Library(other.Library)
-    , Description(other.Description)
     , PlatformUnit(other.PlatformUnit)
     , PredictedInsertSize(other.PredictedInsertSize)
-    , SequencingCenter(other.SequencingCenter)
     , ProductionDate(other.ProductionDate)
+    , Program(other.Program)
+    , Sample(other.Sample)
+    , SequencingCenter(other.SequencingCenter)
     , SequencingTechnology(other.SequencingTechnology)
 { }
 
@@ -103,17 +123,34 @@ SamReadGroup::~SamReadGroup(void) { }
     \brief Clears all data fields.
 */
 void SamReadGroup::Clear(void) {
+    Description.clear();
+    FlowOrder.clear();
     ID.clear();
-    Sample.clear();
+    KeySequence.clear();
     Library.clear();
-    Description.clear();
     PlatformUnit.clear();
     PredictedInsertSize.clear();
-    SequencingCenter.clear();
     ProductionDate.clear();
+    Program.clear();
+    Sample.clear();
+    SequencingCenter.clear();
     SequencingTechnology.clear();
 }
 
+/*! \fn bool SamReadGroup::HasDescription(void) const
+    \brief Returns \c true if read group contains \@RG DS:\<Description\>
+*/
+bool SamReadGroup::HasDescription(void) const {
+    return (!Description.empty());
+}
+
+/*! \fn bool SamReadGroup::HasFlowOrder(void) const
+    \brief Returns \c true if read group contains \@RG FO:\<FlowOrder\>
+*/
+bool SamReadGroup::HasFlowOrder(void) const {
+    return (!FlowOrder.empty());
+}
+
 /*! \fn bool SamReadGroup::HasID(void) const
     \brief Returns \c true if read group contains \@RG: ID:\<ID\>
 */
@@ -121,11 +158,11 @@ bool SamReadGroup::HasID(void) const {
     return (!ID.empty());
 }
 
-/*! \fn bool SamReadGroup::HasSample(void) const
-    \brief Returns \c true if read group contains \@RG SM:\<Sample\>
+/*! \fn bool SamReadGroup::HasKeySequence(void) const
+    \brief Returns \c true if read group contains \@RG KS:\<KeySequence\>
 */
-bool SamReadGroup::HasSample(void) const {
-    return (!Sample.empty());
+bool SamReadGroup::HasKeySequence(void) const {
+    return (!KeySequence.empty());
 }
 
 /*! \fn bool SamReadGroup::HasLibrary(void) const
@@ -135,13 +172,6 @@ bool SamReadGroup::HasLibrary(void) const {
     return (!Library.empty());
 }
 
-/*! \fn bool SamReadGroup::HasDescription(void) const
-    \brief Returns \c true if read group contains \@RG DS:\<Description\>
-*/
-bool SamReadGroup::HasDescription(void) const {
-    return (!Description.empty());
-}
-
 /*! \fn bool SamReadGroup::HasPlatformUnit(void) const
     \brief Returns \c true if read group contains \@RG PU:\<PlatformUnit\>
 */
@@ -156,13 +186,6 @@ bool SamReadGroup::HasPredictedInsertSize(void) const {
     return (!PredictedInsertSize.empty());
 }
 
-/*! \fn bool SamReadGroup::HasSequencingCenter(void) const
-    \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
-*/
-bool SamReadGroup::HasSequencingCenter(void) const {
-    return (!SequencingCenter.empty());
-}
-
 /*! \fn bool SamReadGroup::HasProductionDate(void) const
     \brief Returns \c true if read group contains \@RG DT:\<ProductionDate\>
 */
@@ -170,6 +193,27 @@ bool SamReadGroup::HasProductionDate(void) const {
     return (!ProductionDate.empty());
 }
 
+/*! \fn bool SamReadGroup::HasProgram(void) const
+    \brief Returns \c true if read group contains \@RG PG:\<Program\>
+*/
+bool SamReadGroup::HasProgram(void) const {
+    return (!Program.empty());
+}
+
+/*! \fn bool SamReadGroup::HasSample(void) const
+    \brief Returns \c true if read group contains \@RG SM:\<Sample\>
+*/
+bool SamReadGroup::HasSample(void) const {
+    return (!Sample.empty());
+}
+
+/*! \fn bool SamReadGroup::HasSequencingCenter(void) const
+    \brief Returns \c true if read group contains \@RG CN:\<SequencingCenter\>
+*/
+bool SamReadGroup::HasSequencingCenter(void) const {
+    return (!SequencingCenter.empty());
+}
+
 /*! \fn bool SamReadGroup::HasSequencingTechnology(void) const
     \brief Returns \c true if read group contains \@RG PL:\<SequencingTechnology\>
 */