]> git.donarmstrong.com Git - bamtools.git/blob - BamConversionMain.cpp
Major overhaul of BamReader. No longer relying on bgzf.* API. Sped up random-access...
[bamtools.git] / BamConversionMain.cpp
1 #include <iostream>
2 #include "BamReader.h"
3 #include "BamWriter.h"
4
5 using namespace std;
6
7 int main(int argc, char* argv[]) {
8
9         if(argc != 3) {
10                 cout << "USAGE: " << argv[0] << " <input BAM file> <output BAM file>" << endl;
11                 exit(1);
12         }
13
14         // localize our arguments
15         const char* inputFilename  = argv[1];
16         const char* outputFilename = argv[2];
17
18         // open our BAM reader
19         BamReader reader;
20         reader.Open(inputFilename);
21
22         // retrieve the SAM header text
23         string samHeader = reader.GetHeaderText();
24
25         // retrieve the reference sequence vector
26         RefVector referenceSequences = reader.GetReferenceData();
27
28         // open the BAM writer
29         BamWriter writer;
30         writer.Open(outputFilename, samHeader, referenceSequences);
31
32         // copy all of the reads from the input file to the output file
33         BamAlignment al;
34         while(reader.GetNextAlignment(al)) writer.SaveAlignment(al);
35
36         // close our files
37         reader.Close();
38         writer.Close();
39
40         return 0;
41 }