]> git.donarmstrong.com Git - bamtools.git/blob - BamReaderMain.cpp
d568fed2e86f3458647254f12907883283e596ad
[bamtools.git] / BamReaderMain.cpp
1 // BamReaderMain.cpp\r
2 \r
3 // Derek Barnett\r
4 // Marth Lab, Boston College\r
5 // Last modified: 12 May 2009\r
6 \r
7 #include "BamReader.h"\r
8 \r
9 // C++ includes\r
10 #include <iostream>\r
11 using std::cerr;\r
12 using std::cout;\r
13 using std::endl;\r
14 \r
15 #include <vector>\r
16 using std::vector;\r
17 \r
18 #include <string>\r
19 using std::string;\r
20 \r
21 int main(int argc, char* argv[]) {\r
22 \r
23         // check command line parameters\r
24         if (argc != 3) {\r
25                 cerr << endl;\r
26                 cerr << "Usage: BamReaderTest <bamFile> <bamIndexFile>" << endl;\r
27                 cerr << endl;\r
28                 exit(1);\r
29         }\r
30 \r
31         // get filenames from command line\r
32         const char* bamFilename = argv[1];\r
33         const char* bamIndexFilename = argv[2];\r
34 \r
35         int alignmentsRead = 0;\r
36         BamAlignment bAlignment;\r
37         \r
38         BamReader bReader;\r
39         cerr << endl << "Opening BAM file (and index)" << endl << endl;\r
40         bReader.Open(bamFilename, bamIndexFilename);\r
41 \r
42         string header = bReader.GetHeaderText();\r
43         cerr << "Printing header text..." << endl;\r
44         if ( header.empty() ) {\r
45                 cerr << "No header provided." << endl << endl;\r
46         } else {\r
47                 cerr << "----------------------" << endl;\r
48                 cerr << "Header Text: " << endl;\r
49                 cerr << "----------------------" << endl;\r
50                 cerr << header << endl << endl;\r
51         }\r
52 \r
53         RefVector references = bReader.GetReferenceData();\r
54         cerr << "Printing references..." << endl;\r
55         RefVector::const_iterator refIter = references.begin();\r
56         RefVector::const_iterator refEnd  = references.end();\r
57         for ( ; refIter != refEnd; ++refIter) {\r
58                 cerr << "Reference entry: " << endl;\r
59                 cerr << (*refIter).RefName << endl;\r
60                 cerr << (*refIter).RefLength << endl;\r
61                 cerr << "Has alignments? : " << ( ((*refIter).RefHasAlignments) ? "yes" : "no" ) << endl;\r
62         }\r
63         cerr << endl;\r
64 \r
65         alignmentsRead = 0;\r
66         while ( bReader.GetNextAlignment(bAlignment) && (alignmentsRead <= 10) ) {\r
67                 cerr << "Alignment " << alignmentsRead << endl;\r
68                 cerr << bAlignment.Name << endl;\r
69                 cerr << "Aligned to ref " << bAlignment.RefID << " at position " << bAlignment.Position << endl;\r
70                 ++alignmentsRead;\r
71         }\r
72 \r
73         cerr << "Jumping in BAM file" << endl;\r
74         if ( bReader.Jump(1, 5000) ) {\r
75                 cerr << "Jumping seems ok - getting first 10 alignments that start at or after chr2:5000" << endl;\r
76 \r
77                 alignmentsRead = 0;\r
78                 while ( bReader.GetNextAlignment(bAlignment) && (alignmentsRead <= 10) ) {\r
79                         if ( bAlignment.Position >= 5000 ) { \r
80                                 cerr << "Alignment " << alignmentsRead << endl;\r
81                                 cerr << bAlignment.Name << endl;\r
82                                 cerr << "Aligned to ref " << bAlignment.RefID << " at position " << bAlignment.Position << endl;\r
83                                 ++alignmentsRead;\r
84                         }\r
85                 }\r
86         }\r
87 \r
88         cerr << "Rewinding BAM file" << endl;\r
89         if ( bReader.Rewind() ) {\r
90                 cerr << "Rewind seems to be ok - getting first 10 alignments" << endl;\r
91                 \r
92                 alignmentsRead = 0;\r
93                 while ( bReader.GetNextAlignment(bAlignment) && (alignmentsRead <= 10) ) {\r
94                         cerr << "Alignment " << alignmentsRead << endl;\r
95                         cerr << bAlignment.Name << endl;\r
96                         cerr << "Aligned to ref " << bAlignment.RefID << " at position " << bAlignment.Position << endl;\r
97                         ++alignmentsRead;\r
98                 }\r
99         }\r
100 \r
101         cerr << "Closing BAM file..." << endl << endl;\r
102         bReader.Close();\r
103 \r
104         cerr << "Exiting..." << endl << endl;\r
105         return 0;\r
106 }\r