]> git.donarmstrong.com Git - bamtools.git/commitdiff
modified/clarified some help & usage messages
authorDerek <derekwbarnett@gmail.com>
Sat, 16 Oct 2010 20:45:08 +0000 (16:45 -0400)
committerDerek <derekwbarnett@gmail.com>
Sat, 16 Oct 2010 20:45:08 +0000 (16:45 -0400)
 * (also a test run for different git commit system on my end)

src/toolkit/bamtools.cpp
src/toolkit/bamtools_convert.cpp
src/toolkit/bamtools_count.cpp
src/toolkit/bamtools_filter.cpp
src/toolkit/bamtools_header.cpp
src/toolkit/bamtools_index.cpp
src/toolkit/bamtools_merge.cpp
src/toolkit/bamtools_random.cpp
src/toolkit/bamtools_sort.cpp
src/toolkit/bamtools_split.cpp
src/toolkit/bamtools_stats.cpp

index 39ec8427e4c017230c6b5f526f7b8a8bda822147..160ff9ac7e46c7ee5e5c91f4155ce68b2515390b 100644 (file)
@@ -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); 
 }
index b236b63dda0ce2eb20cc70c66d4e7a231269d523..6e37e8f3347ee03d06001acb7f003fbc19fd8dac 100644 (file)
@@ -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 <FORMAT> [-in <filename> -in <filename> ...] [-out <filename>] [other options]");
+    Options::SetProgramInfo("bamtools convert", "converts BAM to a number of other formats", "-format <FORMAT> [-in <filename> -in <filename> ...] [-out <filename>] [-region <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 <filename>.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");
index 9d6623b3604cb79bb4dc54fa375c50660f67114e..b6184db87dad930ebf941a851514fc28669e3651 100644 (file)
@@ -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 <filename> -in <filename> ...] [-region <REGION>]");
+    Options::SetProgramInfo("bamtools count", "prints number of alignments in BAM file(s)", "[-in <filename> -in <filename> ...] [-region <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 <filename>.bai or <filename>.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) { 
index f5232ec0824a94a2120c0fc47a23f27c6b4108f0..83f67ace059e1cdcb995e1a66d4cdea833963bf5 100644 (file)
@@ -372,7 +372,7 @@ FilterTool::FilterTool(void)
     , m_impl(0)
 {
     // set program details
-    Options::SetProgramInfo("bamtools filter", "filters BAM file(s)", "-in <filename> [-in <filename> ... ] -out <filename> -region <REGION> [ [-script <filename] | [filterOptions] ]");
+    Options::SetProgramInfo("bamtools filter", "filters BAM file(s)", "[-in <filename> -in <filename> ...] [-out <filename> | [-forceCompression]] [-region <REGION>] [ [-script <filename] | [filterOptions] ]");
     
     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::StandardIn());
index b75f9a0e558b192cdac42350552881158efdc3c9..180ef9e8f5f74cae23597eb46491f6dd73fe0248 100644 (file)
 #include <iostream>
 #include <string>
 #include <vector>
-
 #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 <filename> [-in <filename> ... ] ");
+    Options::SetProgramInfo("bamtools header", "prints header from BAM file(s)", "[-in <filename> -in <filename> ...] ");
     
     // 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();
index b1e4bc3e00eaf6fd359b35fc081d6147b4ecb0ae..90339c4fe3b4de9ccb6f59a634f2c23831f426e2 100644 (file)
@@ -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) {
index 3d2d9026de085553863827645d5a87c77dae838b..e2cc4a110773dc5eb0611083969e259aaaa5c905 100644 (file)
@@ -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.
 // ***************************************************************************
 #include <iostream>
 #include <string>
 #include <vector>
-
 #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 <filename> -in <filename> ...] [-out <filename>]");
+    Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one", "[-in <filename> -in <filename> ...] [-out <filename> | [-forceCompression]] [-region <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) {
index fe8914f6768fddbcf2faf756ea73148826d8b6dc..ae6d63add0a08edcb8fd74664806c98c80e95d05 100644 (file)
@@ -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 <filename>.bai or <filename>.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) { 
index a6b3bba7a1964b40c4f3b5757469901e5352b2c9..2f463ba610e389452a1be2181e8c7f390ee289a7 100644 (file)
@@ -130,7 +130,7 @@ SortTool::SortTool(void)
     , m_impl(0)
 {
     // set program details
-    Options::SetProgramInfo("bamtools sort", "sorts a BAM file", "[-in <filename>] [-out <filename>]");
+    Options::SetProgramInfo("bamtools sort", "sorts a BAM file", "[-in <filename>] [-out <filename>] [sortOptions]");
     
     // set up options 
     OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
index ebd6fdbd0aa0772123a80e89ad4e810855a1b14d..62dc1046c9587d86e76e69c0133a5f5e0cffca0c 100644 (file)
@@ -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 <filename>] [-stub <filename>] < -mapped | -paired | -reference | -tag <TAG> > ");
+    Options::SetProgramInfo("bamtools split", "splits a BAM file on user-specified property, creating a new BAM output file for each value found", "[-in <filename>] [-stub <filename stub>] < -mapped | -paired | -reference | -tag <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");
index 072dffedbe2000d801625469acd03e822d037a5f..2764499df82b59b3332f0dcd49df6472125be726 100644 (file)
@@ -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 <numeric>
 #include <string>
 #include <vector>
-
 #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 <filename> -in <filename> ... ]");
+    Options::SetProgramInfo("bamtools stats", "prints general alignment statistics", "[-in <filename> -in <filename> ...] [statsOptions]");
     
     // set up options 
     OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");