[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