]> git.donarmstrong.com Git - bamtools.git/blob - src/api/BamReader.h
Added IsIndexLoaded() public method to BamReader. Allows client to make sure index...
[bamtools.git] / src / api / BamReader.h
1 // ***************************************************************************\r
2 // BamReader.h (c) 2009 Derek Barnett, Michael Str�mberg\r
3 // Marth Lab, Department of Biology, Boston College\r
4 // All rights reserved.\r
5 // ---------------------------------------------------------------------------\r
6 // Last modified: 2 September 2010 (DB)\r
7 // ---------------------------------------------------------------------------\r
8 // Uses BGZF routines were adapted from the bgzf.c code developed at the Broad\r
9 // Institute.\r
10 // ---------------------------------------------------------------------------\r
11 // Provides the basic functionality for reading BAM files\r
12 // ***************************************************************************\r
13 \r
14 #ifndef BAMREADER_H\r
15 #define BAMREADER_H\r
16 \r
17 // C++ includes\r
18 #include <string>\r
19 \r
20 // BamTools includes\r
21 #include "BamAux.h"\r
22 \r
23 namespace BamTools {\r
24   \r
25 class BamReader {\r
26 \r
27     // constructor / destructor\r
28     public:\r
29         BamReader(void);\r
30         ~BamReader(void);\r
31 \r
32     // public interface\r
33     public:\r
34 \r
35         // ----------------------\r
36         // BAM file operations\r
37         // ----------------------\r
38 \r
39         // close BAM file\r
40         void Close(void);\r
41         // returns whether index data is loaded (i.e. reader is able to Jump() or not)\r
42         bool IsIndexLoaded(void) const;\r
43         // returns whether reader is open for reading or not\r
44         bool IsOpen(void) const;\r
45         // performs random-access jump to reference, position\r
46         bool Jump(int refID, int position = 0);\r
47         // opens BAM file (and optional BAM index file, if provided)\r
48         bool Open(const std::string& filename, const std::string& indexFilename = "");\r
49         // returns file pointer to beginning of alignments\r
50         bool Rewind(void);\r
51         // sets a region of interest (with left & right bound reference/position)\r
52         // attempts a Jump() to left bound as well\r
53         // returns success/failure of Jump()\r
54         bool SetRegion(const BamRegion& region);\r
55         bool SetRegion(const int& leftRefID, const int& leftBound, const int& rightRefID, const int& rightBound);\r
56 \r
57         // ----------------------\r
58         // access alignment data\r
59         // ----------------------\r
60 \r
61         // retrieves next available alignment (returns success/fail)\r
62         bool GetNextAlignment(BamAlignment& bAlignment);\r
63         \r
64         // retrieves next available alignment core data (returns success/fail)\r
65         // ** DOES NOT parse any character data (read name, bases, qualities, tag data)\r
66         //    these can be accessed, if necessary, from the supportData \r
67         // useful for operations requiring ONLY positional or other alignment-related information\r
68         bool GetNextAlignmentCore(BamAlignment& bAlignment);\r
69 \r
70         // ----------------------\r
71         // access auxiliary data\r
72         // ----------------------\r
73 \r
74         // returns SAM header text\r
75         const std::string GetHeaderText(void) const;\r
76         // returns number of reference sequences\r
77         int GetReferenceCount(void) const;\r
78         // returns vector of reference objects\r
79         const BamTools::RefVector& GetReferenceData(void) const;\r
80         // returns reference id (used for BamReader::Jump()) for the given reference name\r
81         int GetReferenceID(const std::string& refName) const;\r
82         // returns the name of the file associated with this BamReader\r
83         const std::string GetFilename(void) const;\r
84 \r
85         // ----------------------\r
86         // BAM index operations\r
87         // ----------------------\r
88 \r
89         // creates index for BAM file, saves to file (default = bamFilename + ".bai")\r
90         bool CreateIndex(bool useDefaultIndex = true);\r
91         \r
92     // private implementation\r
93     private:\r
94         struct BamReaderPrivate;\r
95         BamReaderPrivate* d;\r
96 };\r
97 \r
98 } // namespace BamTools\r
99 \r
100 #endif // BAMREADER_H\r