]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamSequence.cpp
869c24dfef8e64272273c6a0d45e09b242750b77
[bamtools.git] / src / api / SamSequence.cpp
1 // ***************************************************************************
2 // SamSequence.cpp (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 20 March 2011 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides direct read/write access to the SAM sequence data fields.
9 // ***************************************************************************
10
11 #include <api/SamSequence.h>
12 #include <sstream>
13 using namespace BamTools;
14 using namespace std;
15
16 /*! \struct BamTools::SamSequence
17     \brief Represents a SAM sequence entry.
18
19     Provides direct read/write access to the SAM sequence data fields.
20
21     \sa http://samtools.sourceforge.net/SAM-1.3.pdf
22 */
23 /*! \var SamSequence::Name
24     \brief corresponds to \@SQ SN:\<Name\>
25 */
26 /*! \var SamSequence::Length
27     \brief corresponds to \@SQ LN:\<Length\>
28 */
29 /*! \var SamSequence::AssemblyID
30     \brief corresponds to \@SQ AS:\<AssemblyID\>
31 */
32 /*! \var SamSequence::Checksum
33     \brief corresponds to \@SQ M5:\<Checksum\>
34 */
35 /*! \var SamSequence::URI
36     \brief corresponds to \@SQ UR:\<URI\>
37 */
38 /*! \var SamSequence::Species
39     \brief corresponds to \@SQ SP:\<Species\>
40 */
41
42 /*! \fn SamSequence::SamSequence(void)
43     \brief default constructor
44 */
45 SamSequence::SamSequence(void)
46     : Name("")
47     , Length("")
48     , AssemblyID("")
49     , Checksum("")
50     , URI("")
51     , Species("")
52 { }
53
54 /*! \fn SamSequence::SamSequence(const std::string& name, const int& length)
55     \brief constructs sequence with \a name and \a length
56
57     \param name desired sequence name
58     \param length desired sequence length (numeric value)
59 */
60 SamSequence::SamSequence(const std::string& name, const int& length)
61     : Name(name)
62     , AssemblyID("")
63     , Checksum("")
64     , URI("")
65     , Species("")
66 {
67     stringstream s("");
68     s << length;
69     Length = s.str();
70 }
71
72 /*! \fn SamSequence::SamSequence(const SamSequence& other)
73     \brief copy constructor
74 */
75 SamSequence::SamSequence(const SamSequence& other)
76     : Name(other.Name)
77     , Length(other.Length)
78     , AssemblyID(other.AssemblyID)
79     , Checksum(other.Checksum)
80     , URI(other.URI)
81     , Species(other.Species)
82 { }
83
84 /*! \fn SamSequence::~SamSequence(void)
85     \brief destructor
86 */
87 SamSequence::~SamSequence(void) { }
88
89 /*! \fn void SamSequence::Clear(void)
90     \brief Clears all data fields.
91 */
92 void SamSequence::Clear(void) {
93     Name.clear();
94     Length.clear();
95     AssemblyID.clear();
96     Checksum.clear();
97     URI.clear();
98     Species.clear();
99 }
100
101 /*! \fn bool SamSequence::HasName(void) const
102     \brief Returns \c true if sequence contains \@SQ SN:\<Name\>
103 */
104 bool SamSequence::HasName(void) const {
105     return (!Name.empty());
106 }
107
108 /*! \fn bool SamSequence::HasLength(void) const
109     \brief Returns \c true if sequence contains \@SQ LN:\<Length\>
110 */
111 bool SamSequence::HasLength(void) const {
112     return (!Length.empty());
113 }
114
115 /*! \fn bool SamSequence::HasAssemblyID(void) const
116     \brief Returns \c true if sequence contains \@SQ AS:\<AssemblyID\>
117 */
118 bool SamSequence::HasAssemblyID(void) const {
119     return (!AssemblyID.empty());
120 }
121
122 /*! \fn bool SamSequence::HasChecksum(void) const
123     \brief Returns \c true if sequence contains \@SQ M5:\<Checksum\>
124 */
125 bool SamSequence::HasChecksum(void) const {
126     return (!Checksum.empty());
127 }
128
129 /*! \fn bool SamSequence::HasURI(void) const
130     \brief Returns \c true if sequence contains \@SQ UR:\<URI\>
131 */
132 bool SamSequence::HasURI(void) const {
133     return (!URI.empty());
134 }
135
136 /*! \fn bool SamSequence::HasSpecies(void) const
137     \brief Returns \c true if sequence contains \@SQ SP:\<Species\>
138 */
139 bool SamSequence::HasSpecies(void) const {
140     return (!Species.empty());
141 }