1 // ***************************************************************************
2 // bamtools_convert.cpp (c) 2010 Derek Barnett, Erik Garrison
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 2 June 2010
7 // ---------------------------------------------------------------------------
8 // Converts between BAM and a number of other formats
9 // ***************************************************************************
15 #include "bamtools_convert.h"
16 #include "bamtools_format.h"
17 #include "bamtools_options.h"
18 #include "BamReader.h"
19 #include "BamMultiReader.h"
22 using namespace BamTools;
24 // ---------------------------------------------
25 // ConvertSettings implementation
27 struct ConvertTool::ConvertSettings {
30 bool HasInputBamFilename;
31 bool HasOutputBamFilename;
36 string OutputFilename;
41 : HasInputBamFilename(false)
42 , HasOutputBamFilename(false)
43 , InputFilename(Options::StandardIn())
44 , OutputFilename(Options::StandardOut())
48 // ---------------------------------------------
49 // ConvertTool implementation
51 ConvertTool::ConvertTool(void)
53 , m_settings(new ConvertSettings)
55 // set program details
56 Options::SetProgramInfo("bamtools convert", "converts between BAM and a number of other formats", "-in <filename> -out <filename> -format <FORMAT>");
59 OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
60 Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInputBamFilename, m_settings->InputFilename, IO_Opts, Options::StandardIn());
61 Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputBamFilename, m_settings->OutputFilename, IO_Opts, Options::StandardOut());
62 Options::AddValueOption("-format", "FORMAT", "the output file format - see README for recognized formats", "", m_settings->HasFormat, m_settings->Format, IO_Opts);
65 ConvertTool::~ConvertTool(void) {
70 int ConvertTool::Help(void) {
71 Options::DisplayHelp();
75 int ConvertTool::Run(int argc, char* argv[]) {
77 // parse command line arguments
78 Options::Parse(argc, argv, 1);
82 reader.Open(m_settings->InputFilename);