[med-svn] [libgtextutils] 44/83: Improved Boost-Program-Options classes.
Charles Plessy
plessy at moszumanska.debian.org
Wed Jan 8 13:37:28 UTC 2014
This is an automated email from the git hooks/post-receive script.
plessy pushed a commit to branch debian/unstable
in repository libgtextutils.
commit c3f5931dcee9865620d42563ebbfa16ceeb36ea5
Author: A. Gordon <gordon at cshl.edu>
Date: Wed Oct 28 20:18:39 2009 -0400
Improved Boost-Program-Options classes.
---
src/gtextutils/bpo_base.cpp | 2 +-
src/gtextutils/bpo_base.h | 2 ++
src/gtextutils/bpo_interval_file.cpp | 26 +++++++++++++++++++++++---
src/gtextutils/bpo_interval_file.h | 10 ++++++++++
src/gtextutils/bpo_io.cpp | 6 ++++--
src/gtextutils/bpo_io.h | 3 ++-
6 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/src/gtextutils/bpo_base.cpp b/src/gtextutils/bpo_base.cpp
index b4bca17..c64be39 100644
--- a/src/gtextutils/bpo_base.cpp
+++ b/src/gtextutils/bpo_base.cpp
@@ -11,6 +11,7 @@ using namespace std;
using namespace std::tr1;
using std::tr1::placeholders::_1;
+
namespace po = boost::program_options;
BPO_EasyParser::BPO_EasyParser()
@@ -43,4 +44,3 @@ void BPO_EasyParser::parse ( int argc, char* argv[] )
exit(1);
}
}
-
diff --git a/src/gtextutils/bpo_base.h b/src/gtextutils/bpo_base.h
index 0ea8cfe..83d4bdb 100644
--- a/src/gtextutils/bpo_base.h
+++ b/src/gtextutils/bpo_base.h
@@ -1,8 +1,10 @@
#ifndef __BPO_BASE_H__
#define __BPO_BASE_H__
+#include <boost/program_options.hpp>
#include <vector>
+
class GenericBoostProgramOptions
{
public:
diff --git a/src/gtextutils/bpo_interval_file.cpp b/src/gtextutils/bpo_interval_file.cpp
index ce771a4..71b4350 100644
--- a/src/gtextutils/bpo_interval_file.cpp
+++ b/src/gtextutils/bpo_interval_file.cpp
@@ -9,18 +9,38 @@
namespace po = boost::program_options;
IntervalFileColumnOptions::IntervalFileColumnOptions() :
- column_options("Input file format")
+ column_options("Input file format"),
+ _bed_base(true),
+ _zero_base(false),
+ _one_base(false),
+ _zero_based_start_coord(true),
+ _zero_based_end_coord(false)
{
column_options.add_options()
("chrom-col,c", po::value<unsigned int>(&_chrom_column)->default_value(1), "chromosome column")
("start-col,s", po::value<unsigned int>(&_start_column)->default_value(2), "start-coordinate column")
("end-col,e", po::value<unsigned int>(&_end_column)->default_value(3), "end-coordinate column")
("orien-col,a", po::value<unsigned int>(&_orientation_column)->default_value(0), "orientation(+/-) column (default: no orientation information)")
- ("multi-col,m", po::value<unsigned int>(&_multiplicity_column)->default_value(0), "multiplicity (=read count) column (default: no multiplicity information)") ;
+ ("multi-col,m", po::value<unsigned int>(&_multiplicity_column)->default_value(0), "multiplicity (=read count) column (default: no multiplicity information)")
+ ("BED-BASE", po::value<bool>(&_bed_base)->zero_tokens(), "Zero-based start coordinate, one-based end coordinate - like in BED files from UCSC.\nThis is the default." )
+ ("ZERO-BASE", po::value<bool>(&_zero_base)->zero_tokens(),"BOTH start & end coordinates are zero based" )
+ ("ONE-BASE", po::value<bool>(&_one_base)->zero_tokens(),"BOTH start & end coordinates are one based")
+ ;
}
void IntervalFileColumnOptions::validate()
{
+ if ( _bed_base ) {
+ _zero_based_start_coord = true ;
+ _zero_based_end_coord = false ;
+ } else if ( _zero_base ) {
+ _zero_based_start_coord = true ;
+ _zero_based_end_coord = true ;
+ } else if ( _one_base ) {
+ _zero_based_start_coord = false ;
+ _zero_based_end_coord = false ;
+ }
+
std::stringstream os ;
if (_chrom_column <= 0) {
os << "Invalid chromosome-column value: '" << _chrom_column << "' - must be larger than zero" ;
@@ -35,7 +55,7 @@ void IntervalFileColumnOptions::validate()
throw po::error(os.str()) ;
}
- std::vector<int> columns;
+ std::vector<unsigned int> columns;
columns.push_back ( _chrom_column );
if ( std::find(columns.begin(), columns.end(), _start_column ) != columns.end()) {
diff --git a/src/gtextutils/bpo_interval_file.h b/src/gtextutils/bpo_interval_file.h
index 7d8ca86..bbb9331 100644
--- a/src/gtextutils/bpo_interval_file.h
+++ b/src/gtextutils/bpo_interval_file.h
@@ -20,6 +20,13 @@ class IntervalFileColumnOptions : public GenericBoostProgramOptions
unsigned int _multiplicity_column ;
unsigned int _max_used_column ;
+
+ bool _bed_base ;
+ bool _zero_base ;
+ bool _one_base ;
+
+ bool _zero_based_start_coord ;
+ bool _zero_based_end_coord ;
public:
IntervalFileColumnOptions() ;
@@ -35,6 +42,9 @@ public:
unsigned int max_used_column() const { return _max_used_column; }
+ bool zero_based_start_coord() const { return _zero_based_start_coord; }
+ bool zero_based_end_coord() const { return _zero_based_end_coord; }
+
virtual void validate() ;
};
diff --git a/src/gtextutils/bpo_io.cpp b/src/gtextutils/bpo_io.cpp
index 2166225..8f02c74 100644
--- a/src/gtextutils/bpo_io.cpp
+++ b/src/gtextutils/bpo_io.cpp
@@ -11,13 +11,15 @@ namespace po = boost::program_options;
InputOutputOptions::InputOutputOptions() :
io_options("Input/Output options"),
_verbose(false),
- _help(false)
+ _help(false),
+ _skip_first_line(false)
{
io_options.add_options()
("input-file,i", po::value<std::string>(&_input_filename), "Input file (default: stdin)")
("output-file,o", po::value<std::string>(&_output_filename), "Output file (default: stdout)" )
("verbose,v", po::value<bool>(&_verbose)->zero_tokens(), "verbose (if output goes to STDOUT, verbose summary will be printed to STDERR. If output goes to afile, verbose summary will be printed to STDOUT).")
- ("help,h", po::value<bool>(&_help)->zero_tokens(), "help and command line options") ;
+ ("help,h", po::value<bool>(&_help)->zero_tokens(), "help and command line options")
+ ("skip-first-line,L", po::value<bool>(&_skip_first_line)->zero_tokens(),"skip first input line (use if input file contains header line)" );
}
diff --git a/src/gtextutils/bpo_io.h b/src/gtextutils/bpo_io.h
index 163d1be..5e463e7 100644
--- a/src/gtextutils/bpo_io.h
+++ b/src/gtextutils/bpo_io.h
@@ -7,7 +7,6 @@
/*
Future improvements:
- option "SKIP_FIRST_LINE",
option "DEBUG"
make "VERBOSE" optional
*/
@@ -19,6 +18,7 @@ class InputOutputOptions : public GenericBoostProgramOptions
std::string _output_filename ;
bool _verbose ;
bool _help ;
+ bool _skip_first_line ;
public:
InputOutputOptions();
@@ -30,6 +30,7 @@ public:
std::string output_file() const { return _output_filename ; }
bool verbose() const { return _verbose; }
bool help() const { return _help ; }
+ bool skip_first_line() const { return _skip_first_line; }
};
#endif
--
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/libgtextutils.git
More information about the debian-med-commit
mailing list