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