4 // Marth Lab, Boston College
\r
5 // Last modified: 12 May 2009
\r
7 #include "BamReader.h"
\r
21 int main(int argc, char* argv[]) {
\r
23 // check command line parameters
\r
26 cerr << "Usage: BamReaderTest <bamFile> <bamIndexFile>" << endl;
\r
31 // get filenames from command line
\r
32 const char* bamFilename = argv[1];
\r
33 const char* bamIndexFilename = argv[2];
\r
35 int alignmentsRead = 0;
\r
36 BamAlignment bAlignment;
\r
39 cerr << endl << "Opening BAM file (and index)" << endl << endl;
\r
40 bReader.Open(bamFilename, bamIndexFilename);
\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
47 cerr << "----------------------" << endl;
\r
48 cerr << "Header Text: " << endl;
\r
49 cerr << "----------------------" << endl;
\r
50 cerr << header << endl << endl;
\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
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
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
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
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
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
101 cerr << "Closing BAM file..." << endl << endl;
\r
104 cerr << "Exiting..." << endl << endl;
\r