X-Git-Url: https://git.donarmstrong.com/?p=bamtools.git;a=blobdiff_plain;f=src%2Ftoolkit%2Fbamtools_merge.cpp;h=6a33d12352c900e3c47ac7fa61e4f53946aa9877;hp=2bb47c4d1846fe9ee455df317c1b0a04fdfcd51b;hb=f34f0673ce130d54298c7cac3fe106c31171a4f7;hpb=1a0f5104b8e573a22be5a57ea861129b5e86ad22 diff --git a/src/toolkit/bamtools_merge.cpp b/src/toolkit/bamtools_merge.cpp index 2bb47c4..6a33d12 100644 --- a/src/toolkit/bamtools_merge.cpp +++ b/src/toolkit/bamtools_merge.cpp @@ -2,7 +2,7 @@ // bamtools_merge.cpp (c) 2010 Derek Barnett, Erik Garrison // Marth Lab, Department of Biology, Boston College // --------------------------------------------------------------------------- -// Last modified: 7 April 2011 +// Last modified: 10 December 2012 // --------------------------------------------------------------------------- // Merges multiple BAM files into one // *************************************************************************** @@ -15,6 +15,7 @@ #include using namespace BamTools; +#include #include #include #include @@ -26,9 +27,9 @@ using namespace std; struct MergeTool::MergeSettings { // flags - bool HasInputBamFilename; - bool HasInputBamFilelist; - bool HasOutputBamFilename; + bool HasInput; + bool HasInputFilelist; + bool HasOutput; bool IsForceCompression; bool HasRegion; @@ -42,9 +43,9 @@ struct MergeTool::MergeSettings { // constructor MergeSettings(void) - : HasInputBamFilename(false) - , HasInputBamFilelist(false) - , HasOutputBamFilename(false) + : HasInput(false) + , HasInputFilelist(false) + , HasOutput(false) , IsForceCompression(false) , HasRegion(false) , OutputFilename(Options::StandardOut()) @@ -76,20 +77,21 @@ struct MergeTool::MergeToolPrivate { bool MergeTool::MergeToolPrivate::Run(void) { // set to default input if none provided - if ( !m_settings->HasInputBamFilename && !m_settings->HasInputBamFilelist ) + if ( !m_settings->HasInput && !m_settings->HasInputFilelist ) m_settings->InputFiles.push_back(Options::StandardIn()); // add files in the filelist to the input file list - if ( m_settings->HasInputBamFilelist ) { - ifstream filelist(m_settings->InputFilelist.c_str(), ios::in); - if ( !filelist.is_open() ) { - cerr << "bamtools merge ERROR: could not open input BAM file list... Aborting." << endl; - return false; - } - string line; - while ( getline(filelist, line) ) { - m_settings->InputFiles.push_back(line); - } + if ( m_settings->HasInputFilelist ) { + + ifstream filelist(m_settings->InputFilelist.c_str(), ios::in); + if ( !filelist.is_open() ) { + cerr << "bamtools merge ERROR: could not open input BAM file list... Aborting." << endl; + return false; + } + + string line; + while ( getline(filelist, line) ) + m_settings->InputFiles.push_back(line); } // opens the BAM files (by default without checking for indexes) @@ -197,13 +199,14 @@ MergeTool::MergeTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one", "[ [-in -in ...] | [-list ] ] [-out | [-forceCompression]] [-region ]"); + Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one", + "[-in -in ... | -list ] [-out | [-forceCompression]] [-region ]"); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); - Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInputBamFilename, m_settings->InputFiles, IO_Opts); - Options::AddValueOption("-list", "BAM filename", "the input BAM file list, one line per file", "", m_settings->HasInputBamFilelist, m_settings->InputFilelist, IO_Opts); - Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputBamFilename, m_settings->OutputFilename, IO_Opts); + Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts); + Options::AddValueOption("-list", "filename", "the input BAM file list, one line per file", "", m_settings->HasInputFilelist, m_settings->InputFilelist, IO_Opts); + Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts); Options::AddOption("-forceCompression", "if results are sent to stdout (like when piping to another tool), default behavior is to leave output uncompressed. Use this flag to override and force compression", m_settings->IsForceCompression, IO_Opts); Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, IO_Opts); }