From 0c50d5abdc43df228147df3e3fb166b78b303fe9 Mon Sep 17 00:00:00 2001 From: Derek Date: Sat, 16 Oct 2010 16:45:08 -0400 Subject: [PATCH] modified/clarified some help & usage messages * (also a test run for different git commit system on my end) --- src/toolkit/bamtools.cpp | 52 ++++++++++++++------------------ src/toolkit/bamtools_convert.cpp | 8 ++--- src/toolkit/bamtools_count.cpp | 8 ++--- src/toolkit/bamtools_filter.cpp | 2 +- src/toolkit/bamtools_header.cpp | 10 ++---- src/toolkit/bamtools_index.cpp | 2 +- src/toolkit/bamtools_merge.cpp | 10 ++---- src/toolkit/bamtools_random.cpp | 6 ++-- src/toolkit/bamtools_sort.cpp | 2 +- src/toolkit/bamtools_split.cpp | 4 +-- src/toolkit/bamtools_stats.cpp | 8 ++--- 11 files changed, 45 insertions(+), 67 deletions(-) diff --git a/src/toolkit/bamtools.cpp b/src/toolkit/bamtools.cpp index 39ec842..160ff9a 100644 --- a/src/toolkit/bamtools.cpp +++ b/src/toolkit/bamtools.cpp @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 19 September 2010 +// Last modified: 12 October 2010 // --------------------------------------------------------------------------- // Integrates a number of BamTools functionalities into a single executable. // *************************************************************************** @@ -25,6 +25,7 @@ using namespace BamTools; // ------------------------------------------ // bamtools subtool names + static const string CONVERT = "convert"; static const string COUNT = "count"; static const string COVERAGE = "coverage"; @@ -39,6 +40,7 @@ static const string STATS = "stats"; // ------------------------------------------ // bamtools help/version names + static const string HELP = "help"; static const string LONG_HELP = "--help"; static const string SHORT_HELP = "-h"; @@ -47,6 +49,18 @@ static const string VERSION = "version"; static const string LONG_VERSION = "--version"; static const string SHORT_VERSION = "-v"; +static bool IsHelp(char* str) { + return ( str == HELP || + str == LONG_HELP || + str == SHORT_HELP ); +} + +static bool IsVersion(char* str) { + return ( str == VERSION || + str == LONG_VERSION || + str == SHORT_VERSION ); +} + // ------------------------------------------ // Subtool factory method AbstractTool* CreateTool(const string& arg) { @@ -72,27 +86,17 @@ AbstractTool* CreateTool(const string& arg) { // Print help info int Help(int argc, char* argv[]) { - // 'bamtools help COMMAND' + // check for 'bamtools help COMMAND' to print tool-specific help message if (argc > 2) { + // determine desired sub-tool AbstractTool* tool = CreateTool( argv[2] ); -// if ( argv[2] == CONVERT ) tool = new ConvertTool; -// if ( argv[2] == COUNT ) tool = new CountTool; -// if ( argv[2] == COVERAGE ) tool = new CoverageTool; -// if ( argv[2] == FILTER ) tool = new FilterTool; -// if ( argv[2] == HEADER ) tool = new HeaderTool; -// if ( argv[2] == INDEX ) tool = new IndexTool; -// if ( argv[2] == MERGE ) tool = new MergeTool; -// if ( argv[2] == RANDOM ) tool = new RandomTool; -// if ( argv[2] == SORT ) tool = new SortTool; -// if ( argv[2] == SPLIT ) tool = new SplitTool; -// if ( argv[2] == STATS ) tool = new StatsTool; - + // if tool known, print its help screen if ( tool ) return tool->Help(); } - // either 'bamtools help' or unrecognized argument after 'help' + // print general BamTools help message cerr << endl; cerr << "usage: bamtools [--help] COMMAND [ARGS]" << endl; cerr << endl; @@ -134,27 +138,15 @@ int main(int argc, char* argv[]) { if ( (argc == 1) ) return Help(argc, argv); // 'bamtools help', 'bamtools --help', or 'bamtools -h' - if ( (argv[1] == HELP) || (argv[1] == LONG_HELP) || (argv[1] == SHORT_HELP) ) return Help(argc, argv); + if ( IsHelp(argv[1]) ) return Help(argc, argv); // 'bamtools version', 'bamtools --version', or 'bamtools -v' - if ( (argv[1] == VERSION) || (argv[1] == LONG_VERSION) || (argv[1] == SHORT_VERSION) ) return Version(); + if ( IsVersion(argv[1]) ) return Version(); // determine desired sub-tool AbstractTool* tool = CreateTool( argv[1] ); -// if ( argv[1] == CONVERT ) tool = new ConvertTool; -// if ( argv[1] == COUNT ) tool = new CountTool; -// if ( argv[1] == COVERAGE ) tool = new CoverageTool; -// if ( argv[1] == FILTER ) tool = new FilterTool; -// if ( argv[1] == HEADER ) tool = new HeaderTool; -// if ( argv[1] == INDEX ) tool = new IndexTool; -// if ( argv[1] == MERGE ) tool = new MergeTool; -// if ( argv[1] == RANDOM ) tool = new RandomTool; -// if ( argv[1] == SORT ) tool = new SortTool; -// if ( argv[1] == SPLIT ) tool = new SplitTool; -// if ( argv[1] == STATS ) tool = new StatsTool; - // if found, run tool + // if found, run tool... otherwise show help if ( tool ) return tool->Run(argc, argv); - // no match found, show help else return Help(argc, argv); } diff --git a/src/toolkit/bamtools_convert.cpp b/src/toolkit/bamtools_convert.cpp index b236b63..6e37e8f 100644 --- a/src/toolkit/bamtools_convert.cpp +++ b/src/toolkit/bamtools_convert.cpp @@ -707,19 +707,17 @@ ConvertTool::ConvertTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools convert", "converts BAM to a number of other formats", "-format [-in -in ...] [-out ] [other options]"); + Options::SetProgramInfo("bamtools convert", "converts BAM to a number of other formats", "-format [-in -in ...] [-out ] [-region ] [format-specific options]"); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts, Options::StandardIn()); Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts, Options::StandardOut()); Options::AddValueOption("-format", "FORMAT", "the output file format - see README for recognized formats", "", m_settings->HasFormat, m_settings->Format, IO_Opts); - - OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters"); - Options::AddValueOption("-region", "REGION", "genomic region. Index file is recommended for better performance, and is read automatically if it exists as .bai. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, FilterOpts); + Options::AddValueOption("-region", "REGION", "genomic region. Index file is recommended for better performance, and is used automatically if it exists. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, IO_Opts); OptionGroup* PileupOpts = Options::CreateOptionGroup("Pileup Options"); - Options::AddValueOption("-fasta", "FASTA filename", "FASTA reference file", "", m_settings->HasFastaFilename, m_settings->FastaFilename, PileupOpts, ""); + Options::AddValueOption("-fasta", "FASTA filename", "FASTA reference file", "", m_settings->HasFastaFilename, m_settings->FastaFilename, PileupOpts); Options::AddOption("-mapqual", "print the mapping qualities", m_settings->IsPrintingPileupMapQualities, PileupOpts); OptionGroup* SamOpts = Options::CreateOptionGroup("SAM Options"); diff --git a/src/toolkit/bamtools_count.cpp b/src/toolkit/bamtools_count.cpp index 9d6623b..b6184db 100644 --- a/src/toolkit/bamtools_count.cpp +++ b/src/toolkit/bamtools_count.cpp @@ -49,14 +49,12 @@ CountTool::CountTool(void) , m_settings(new CountSettings) { // set program details - Options::SetProgramInfo("bamtools count", "prints alignment counts for a BAM file", "[-in -in ...] [-region ]"); + Options::SetProgramInfo("bamtools count", "prints number of alignments in BAM file(s)", "[-in -in ...] [-region ]"); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); - Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts, Options::StandardIn()); - - OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters"); - Options::AddValueOption("-region", "REGION", "genomic region. Index file is required and is read automatically if it exists as .bai or .bti. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, FilterOpts); + Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts, Options::StandardIn()); + Options::AddValueOption("-region", "REGION", "genomic region. Index file is recommended for better performance, and is used automatically if it exists. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, IO_Opts); } CountTool::~CountTool(void) { diff --git a/src/toolkit/bamtools_filter.cpp b/src/toolkit/bamtools_filter.cpp index f5232ec..83f67ac 100644 --- a/src/toolkit/bamtools_filter.cpp +++ b/src/toolkit/bamtools_filter.cpp @@ -372,7 +372,7 @@ FilterTool::FilterTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools filter", "filters BAM file(s)", "-in [-in ... ] -out -region [ [-script -in ...] [-out | [-forceCompression]] [-region ] [ [-script HasInputBamFilename, m_settings->InputFiles, IO_Opts, Options::StandardIn()); diff --git a/src/toolkit/bamtools_header.cpp b/src/toolkit/bamtools_header.cpp index b75f9a0..180ef9e 100644 --- a/src/toolkit/bamtools_header.cpp +++ b/src/toolkit/bamtools_header.cpp @@ -12,12 +12,10 @@ #include #include #include - #include "bamtools_header.h" #include "bamtools_options.h" #include "BamReader.h" #include "BamMultiReader.h" - using namespace std; using namespace BamTools; @@ -46,7 +44,7 @@ HeaderTool::HeaderTool(void) , m_settings(new HeaderSettings) { // set program details - Options::SetProgramInfo("bamtools header", "prints header from BAM file(s)", "-in [-in ... ] "); + Options::SetProgramInfo("bamtools header", "prints header from BAM file(s)", "[-in -in ...] "); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); @@ -72,12 +70,10 @@ int HeaderTool::Run(int argc, char* argv[]) { if ( !m_settings->HasInputBamFilename ) m_settings->InputFiles.push_back(Options::StandardIn()); - // open files + // if able to open files, dump (merged) header contents to stdout BamMultiReader reader; - if ( reader.Open(m_settings->InputFiles, false) ) { - // dump header contents to stdout + if ( reader.Open(m_settings->InputFiles, false) ) cout << reader.GetHeaderText() << endl; - } // clean up & exit reader.Close(); diff --git a/src/toolkit/bamtools_index.cpp b/src/toolkit/bamtools_index.cpp index b1e4bc3..90339c4 100644 --- a/src/toolkit/bamtools_index.cpp +++ b/src/toolkit/bamtools_index.cpp @@ -51,7 +51,7 @@ IndexTool::IndexTool(void) // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputBamFilename, m_settings->InputBamFilename, IO_Opts, Options::StandardIn()); - Options::AddOption("-bti", "create (non-standard) BamTools index file", m_settings->IsUsingBamtoolsIndex, IO_Opts); + Options::AddOption("-bti", "create (non-standard) BamTools index file (*.bti). Default behavior is to create standard BAM index (*.bai)", m_settings->IsUsingBamtoolsIndex, IO_Opts); } IndexTool::~IndexTool(void) { diff --git a/src/toolkit/bamtools_merge.cpp b/src/toolkit/bamtools_merge.cpp index 3d2d902..e2cc4a1 100644 --- a/src/toolkit/bamtools_merge.cpp +++ b/src/toolkit/bamtools_merge.cpp @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 7 September 2010 +// Last modified: 13 October 2010 // --------------------------------------------------------------------------- // Merges multiple BAM files into one. // *************************************************************************** @@ -11,13 +11,11 @@ #include #include #include - #include "bamtools_merge.h" #include "bamtools_options.h" #include "bamtools_utilities.h" #include "BamMultiReader.h" #include "BamWriter.h" - using namespace std; using namespace BamTools; @@ -57,16 +55,14 @@ MergeTool::MergeTool(void) , m_settings(new MergeSettings) { // set program details - Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one", "[-in -in ...] [-out ]"); + Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one", "[-in -in ...] [-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("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputBamFilename, 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); - - OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters"); - Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, FilterOpts); + Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, IO_Opts); } MergeTool::~MergeTool(void) { diff --git a/src/toolkit/bamtools_random.cpp b/src/toolkit/bamtools_random.cpp index fe8914f..ae6d63a 100644 --- a/src/toolkit/bamtools_random.cpp +++ b/src/toolkit/bamtools_random.cpp @@ -79,10 +79,10 @@ RandomTool::RandomTool(void) Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts, Options::StandardIn()); Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts, Options::StandardOut()); 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", "only pull random alignments from within this genomic region. Index file is recommended for better performance, and is used automatically if it exists. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, IO_Opts); - OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters"); - Options::AddValueOption("-n", "count", "number of alignments to grab. Note - no duplicate checking is performed", "", m_settings->HasAlignmentCount, m_settings->AlignmentCount, FilterOpts, RANDOM_MAX_ALIGNMENT_COUNT); - Options::AddValueOption("-region", "REGION", "limit source of random alignment subset to a particular genomic region. Index file is recommended for better performance, and is read automatically if it exists as .bai or .bti. See \'bamtools help index\' for more details on creating one", "", m_settings->HasRegion, m_settings->Region, FilterOpts); + OptionGroup* SettingsOpts = Options::CreateOptionGroup("Settings"); + Options::AddValueOption("-n", "count", "number of alignments to grab. Note - no duplicate checking is performed", "", m_settings->HasAlignmentCount, m_settings->AlignmentCount, SettingsOpts, RANDOM_MAX_ALIGNMENT_COUNT); } RandomTool::~RandomTool(void) { diff --git a/src/toolkit/bamtools_sort.cpp b/src/toolkit/bamtools_sort.cpp index a6b3bba..2f463ba 100644 --- a/src/toolkit/bamtools_sort.cpp +++ b/src/toolkit/bamtools_sort.cpp @@ -130,7 +130,7 @@ SortTool::SortTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools sort", "sorts a BAM file", "[-in ] [-out ]"); + Options::SetProgramInfo("bamtools sort", "sorts a BAM file", "[-in ] [-out ] [sortOptions]"); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); diff --git a/src/toolkit/bamtools_split.cpp b/src/toolkit/bamtools_split.cpp index ebd6fdb..62dc104 100644 --- a/src/toolkit/bamtools_split.cpp +++ b/src/toolkit/bamtools_split.cpp @@ -469,11 +469,11 @@ SplitTool::SplitTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools split", "splits a BAM file on user-specified property, creating a new BAM output file for each value found", "[-in ] [-stub ] < -mapped | -paired | -reference | -tag > "); + Options::SetProgramInfo("bamtools split", "splits a BAM file on user-specified property, creating a new BAM output file for each value found", "[-in ] [-stub ] < -mapped | -paired | -reference | -tag > "); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); - Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputFilename, m_settings->InputFilename, IO_Opts, Options::StandardIn()); + Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputFilename, m_settings->InputFilename, IO_Opts, Options::StandardIn()); Options::AddValueOption("-stub", "filename stub", "prefix stub for output BAM files (default behavior is to use input filename, without .bam extension, as stub). If input is stdin and no stub provided, a timestamp is generated as the stub.", "", m_settings->HasCustomOutputStub, m_settings->CustomOutputStub, IO_Opts); OptionGroup* SplitOpts = Options::CreateOptionGroup("Split Options"); diff --git a/src/toolkit/bamtools_stats.cpp b/src/toolkit/bamtools_stats.cpp index 072dffe..2764499 100644 --- a/src/toolkit/bamtools_stats.cpp +++ b/src/toolkit/bamtools_stats.cpp @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 5 October 2010 +// Last modified: 12 October 2010 // --------------------------------------------------------------------------- // Prints general alignment statistics for BAM file(s). // *************************************************************************** @@ -15,7 +15,6 @@ #include #include #include - #include "bamtools_stats.h" #include "bamtools_options.h" #include "BamMultiReader.h" @@ -225,9 +224,8 @@ bool StatsTool::StatsToolPrivate::Run() { // plow through file, keeping track of stats BamAlignment al; - while ( reader.GetNextAlignmentCore(al) ) { + while ( reader.GetNextAlignmentCore(al) ) ProcessAlignment(al); - } // print stats PrintStats(); @@ -246,7 +244,7 @@ StatsTool::StatsTool(void) , m_impl(0) { // set program details - Options::SetProgramInfo("bamtools stats", "prints general alignment statistics", "[-in -in ... ]"); + Options::SetProgramInfo("bamtools stats", "prints general alignment statistics", "[-in -in ...] [statsOptions]"); // set up options OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output"); -- 2.39.2