bpp-core  2.4.0
bpp::ApplicationTools Class Reference

This class provides some common tools for developping applications. More...

#include <Bpp/App/ApplicationTools.h>

Public Member Functions

 ApplicationTools ()
 
virtual ~ApplicationTools ()
 

Static Public Member Functions

static bool parameterExists (const std::string &parameterName, const std::map< std::string, std::string > &params)
 Tells if a parameter have been specified. More...
 
static bool parameterExists (const std::string &parameterName, std::vector< std::string > &params)
 
static std::vector< std::string > matchingParameters (const std::string &pattern, const std::map< std::string, std::string > &params)
 Returns a vector of parameter names that match a given pattern. More...
 
static std::vector< std::string > matchingParameters (const std::string &pattern, std::vector< std::string > &params)
 
static double getDoubleParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, double defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get a double parameter. More...
 
static int getIntParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, int defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get an integer parameter. More...
 
static std::string getStringParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, const std::string &defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get a string parameter. More...
 
static bool getBooleanParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, bool defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get a boolean parameter. More...
 
template<class T >
static T getParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, T defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get a parameter. More...
 
static std::string getAFilePath (const std::string &parameter, const std::map< std::string, std::string > &params, bool isRequired=true, bool mustExist=true, const std::string &suffix="", bool suffixIsOptional=false, const std::string &defaultPath="none", int warn=0)
 Get a file path. More...
 
template<class T >
static std::vector< T > getVectorParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, char separator, const std::string &defaultValue, const std::string &suffix="", bool suffixIsOptional=true, int warn=0)
 Get a vector. More...
 
template<class T >
static std::vector< T > getVectorParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, char separator, char rangeOperator, const std::string &defaultValue, const std::string &suffix="", bool suffixIsOptional=true, bool warn=true)
 Get a vector. More...
 
template<class T >
static RowMatrix< T > getMatrixParameter (const std::string &parameterName, const std::map< std::string, std::string > &params, char separator, const std::string &defaultValue, const std::string &suffix="", bool suffixIsOptional=true, bool warn=true)
 Get a RowMatrix. The input is made of embedded parenthesis, such as ((1,2),(3,4)), where the matrix is filled by lines. Here, the matrix would be:

\[ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ \end{pmatrix} \]

. More...

 
static void startTimer ()
 Starts the timer. More...
 
static void displayTime (const std::string &msg)
 Display the current timer value to the 'message' stream. More...
 
static double getTime ()
 Get the current timer value. More...
 
Output methods.
static void displayMessage (const std::string &text)
 Print a message. More...
 
static void displayError (const std::string &text)
 Print an error message. More...
 
static void displayWarning (const std::string &text)
 Print a warning message. More...
 
static void displayTask (const std::string &text, bool eof=false)
 Print a task message. More...
 
static void displayTaskDone ()
 Print a task ended message. More...
 
template<class T >
static void displayResult (const std::string &text, const T &result)
 Print a result message. More...
 
static void displayBooleanResult (const std::string &text, bool result)
 Print a boolean result message ("yes" or "no"). More...
 
static void displayGauge (size_t iter, size_t total, char symbol='>', const std::string &mes="")
 Display a gauge. More...
 
static void displayUnlimitedGauge (size_t iter, const std::string &mes="")
 Display a gauge for unefined amount of iterations. More...
 

Static Public Attributes

static std::shared_ptr< OutputStreamerror
 The output stream where errors have to be displayed. More...
 
static std::shared_ptr< OutputStreammessage
 The output stream where messages have to be displayed. More...
 
static std::shared_ptr< OutputStreamwarning
 The output stream where warnings have to be displayed. More...
 
static time_t startTime
 Timer variable. More...
 
static size_t terminalWidth = 80
 The width of the output terminal (in character). More...
 
static float terminalSplit = 0.5
 The fraction of terminal width dedicated to messages. More...
 
static bool interactive = true
 Tell if the program is interactive (typically run in foreground). Default to yes. More...
 
static int warningLevel = 0
 Specify the amount of warning to display. More...
 

Detailed Description

This class provides some common tools for developping applications.

These functions are designed for helping to parse an option file.

The option files are supposed to follow this simple format:

parameterName = parameterContent

with one parameter per line.

In files, shell comments:

# my comment line here

C comments:

/ * my comment block here * /

and C++ comments:

// my comment line here

are allowed, and ignored while parsing.

Some methods for displaying information (messages, errors, warnings...) are also provided.

Methods dealing with parameters takes as argument a map<string, string> object containing the parameters (names are the keys of the map, and values are... the values of the map!). These map objects may be obtained from the AttributesTools utilitary class.

Definition at line 92 of file ApplicationTools.h.

Constructor & Destructor Documentation

bpp::ApplicationTools::ApplicationTools ( )
inline

Definition at line 135 of file ApplicationTools.h.

virtual bpp::ApplicationTools::~ApplicationTools ( )
inlinevirtual

Definition at line 136 of file ApplicationTools.h.

Member Function Documentation

static void bpp::ApplicationTools::displayBooleanResult ( const std::string &  text,
bool  result 
)
inlinestatic

Print a boolean result message ("yes" or "no").

Result will be aligned to 30 character from the begining of the message.

Parameters
textThe text of the message.
resultThe result.

Definition at line 557 of file ApplicationTools.h.

References displayGauge(), displayResult(), and displayUnlimitedGauge().

void ApplicationTools::displayError ( const std::string &  text)
static

Print an error message.

Parameters
textThe text of the message.

Definition at line 262 of file ApplicationTools.cpp.

Referenced by getMatrixParameter().

void ApplicationTools::displayGauge ( size_t  iter,
size_t  total,
char  symbol = '>',
const std::string &  mes = "" 
)
static

Display a gauge.

Show progress status.

for(size_t i = 0; i < 1000; i++)
{
//Perform time consuming task...
}

will result in something like:

* [************************************]
* 
Parameters
iterThe current iteration number.
totalThe total number of iteration.
symbolThe character to display in the gauge.
mesA message to print before the gauge.

Definition at line 280 of file ApplicationTools.cpp.

References bpp::TextTools::resizeLeft(), bpp::TextTools::resizeRight(), and bpp::TextTools::toString().

Referenced by bpp::FunctionTools::computeGrid(), and displayBooleanResult().

void ApplicationTools::displayMessage ( const std::string &  text)
static

Print a message.

Parameters
textThe text of the message.

Definition at line 260 of file ApplicationTools.cpp.

Referenced by bpp::FunctionTools::computeGrid(), displayResult(), getMatrixParameter(), and bpp::ReparametrizationFunctionWrapper::init_().

template<class T >
static void bpp::ApplicationTools::displayResult ( const std::string &  text,
const T &  result 
)
inlinestatic

Print a result message.

Result will be aligned to 30 character from the begining of the message. ex: text = "Here is what you get:" and result = "THAT" gives "Here is what you get: THAT".

Parameters
textThe text of the message.
resultThe result.

Definition at line 545 of file ApplicationTools.h.

References displayMessage(), bpp::TextTools::resizeRight(), terminalSplit, and terminalWidth.

Referenced by bpp::AbstractParameterAliasable::aliasParameters(), bpp::BppApplication::BppApplication(), displayBooleanResult(), bpp::BppODiscreteDistributionFormat::initialize_(), and bpp::BppODiscreteDistributionFormat::read().

void ApplicationTools::displayTask ( const std::string &  text,
bool  eof = false 
)
static

Print a task message.

Display the message and flush the buffer, but do not end the current line.

Parameters
textThe text of the message.
eofInsert a carriage return after displaying the message.

Definition at line 266 of file ApplicationTools.cpp.

Referenced by getMatrixParameter().

void ApplicationTools::displayTaskDone ( )
static

Print a task ended message.

Print "Done." and go to next line.

Definition at line 276 of file ApplicationTools.cpp.

Referenced by getMatrixParameter().

void ApplicationTools::displayTime ( const std::string &  msg)
static

Display the current timer value to the 'message' stream.

Parameters
msgMessage to display before time.

Definition at line 341 of file ApplicationTools.cpp.

Referenced by bpp::BppApplication::done(), and startTimer().

void ApplicationTools::displayUnlimitedGauge ( size_t  iter,
const std::string &  mes = "" 
)
static

Display a gauge for unefined amount of iterations.

Show progress status.

for(size_t i = 0; i < 1000; i++)
{
//Perform time consuming task...
}

will result in something like:

* - 1
* / 2
* - 3
* \ 4
* - 5
* etc
* 
Parameters
iterThe current iteration number.
mesA message to print before the gauge.

Definition at line 318 of file ApplicationTools.cpp.

References bpp::TextTools::toString().

Referenced by displayBooleanResult(), and bpp::AbstractOptimizer::optimize().

void ApplicationTools::displayWarning ( const std::string &  text)
static
string ApplicationTools::getAFilePath ( const std::string &  parameter,
const std::map< std::string, std::string > &  params,
bool  isRequired = true,
bool  mustExist = true,
const std::string &  suffix = "",
bool  suffixIsOptional = false,
const std::string &  defaultPath = "none",
int  warn = 0 
)
static

Get a file path.

Parameters
parameterThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
isRequiredTell if this path is strictly required or is optional (in the first case, if the parameter is not found, the programm will send an error and exit).
mustExistTell if the corresponding file must already exist.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
defaultPathPath to use if no argument is provided.
warnTell if a warning must be sent in case the parameter is not found.
Exceptions
ExceptionIf no file path is specified and isRequired is true, or the file does not exist and mustExist is set to true.

Definition at line 134 of file ApplicationTools.cpp.

References bpp::FileTools::fileExists().

Referenced by getParameter().

bool ApplicationTools::getBooleanParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
bool  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
static

Get a boolean parameter.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 208 of file ApplicationTools.cpp.

References bpp::TextTools::toString().

Referenced by bpp::BppApplication::BppApplication(), and getStringParameter().

double ApplicationTools::getDoubleParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
double  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
static

Get a double parameter.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 160 of file ApplicationTools.cpp.

References bpp::TextTools::toDouble(), and bpp::TextTools::toString().

Referenced by bpp::BppODiscreteDistributionFormat::initialize_(), and parameterExists().

int ApplicationTools::getIntParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
int  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
static

Get an integer parameter.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 186 of file ApplicationTools.cpp.

References bpp::TextTools::toInt(), and bpp::TextTools::toString().

Referenced by bpp::BppApplication::BppApplication(), and parameterExists().

template<class T >
static RowMatrix<T> bpp::ApplicationTools::getMatrixParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
char  separator,
const std::string &  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
bool  warn = true 
)
inlinestatic

Get a RowMatrix. The input is made of embedded parenthesis, such as ((1,2),(3,4)), where the matrix is filled by lines. Here, the matrix would be:

\[ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ \end{pmatrix} \]

.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
separatorThe character used to delimit values.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 450 of file ApplicationTools.h.

References bpp::RowMatrix< Scalar >::addRow(), displayError(), displayMessage(), displayTask(), displayTaskDone(), displayWarning(), getStringParameter(), bpp::StringTokenizer::hasMoreToken(), bpp::TextTools::isEmpty(), bpp::StringTokenizer::nextToken(), bpp::StringTokenizer::numberOfRemainingTokens(), and bpp::TextTools::toString().

template<class T >
static T bpp::ApplicationTools::getParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
inlinestatic

Get a parameter.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 284 of file ApplicationTools.h.

References displayWarning(), getAFilePath(), parameterExists(), bpp::TextTools::toString(), and warningLevel.

static std::string bpp::ApplicationTools::getStringParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
const std::string &  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
inlinestatic

Get a string parameter.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 227 of file ApplicationTools.h.

References displayWarning(), getBooleanParameter(), and bpp::TextTools::isEmpty().

Referenced by getMatrixParameter(), bpp::NumCalcApplicationTools::getParameterGrid(), and getVectorParameter().

double ApplicationTools::getTime ( )
static

Get the current timer value.

Returns
The number of seconds from when timer was started.

Definition at line 365 of file ApplicationTools.cpp.

Referenced by startTimer().

template<class T >
static std::vector<T> bpp::ApplicationTools::getVectorParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
char  separator,
const std::string &  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
int  warn = 0 
)
inlinestatic

Get a vector.

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
separatorThe character used to delimit values.
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 348 of file ApplicationTools.h.

References getStringParameter(), bpp::TextTools::isEmpty(), bpp::NestedStringTokenizer::nextToken(), bpp::StringTokenizer::numberOfRemainingTokens(), and bpp::TextTools::toString().

template<class T >
static std::vector<T> bpp::ApplicationTools::getVectorParameter ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params,
char  separator,
char  rangeOperator,
const std::string &  defaultValue,
const std::string &  suffix = "",
bool  suffixIsOptional = true,
bool  warn = true 
)
inlinestatic

Get a vector.

Similar to getVectorParameter, but dedicated to numerical values. It allows the possibility to set range of values, which will be incremented by 1 (like the : operator in R).

Parameters
parameterNameThe name of the corresponding parameter.
paramsThe attribute map where options may be found.
separatorThe character used to delimit values.
rangeOperatorThe character used to delimit ranges (the + 1 operator must be available for T).
defaultValueThe default value to use if the parameter is not found.
suffixA suffix to be applied to the parameter name.
suffixIsOptionalTell if the suffix is absolutely required.
warnTell if a warning must be sent in case the parameter is not found.
Returns
The corresponding value.

Definition at line 390 of file ApplicationTools.h.

References getStringParameter(), bpp::TextTools::isEmpty(), bpp::StringTokenizer::nextToken(), bpp::StringTokenizer::numberOfRemainingTokens(), and bpp::TextTools::toString().

vector< string > ApplicationTools::matchingParameters ( const std::string &  pattern,
const std::map< std::string, std::string > &  params 
)
static

Returns a vector of parameter names that match a given pattern.

Only "*" wildcard is implemented now.

Parameters
patternThe pattern.
paramsThe parameter list.
Returns
a vector of matching names.

Definition at line 64 of file ApplicationTools.cpp.

References bpp::StringTokenizer::hasMoreToken(), and bpp::StringTokenizer::nextToken().

Referenced by parameterExists().

vector< string > ApplicationTools::matchingParameters ( const std::string &  pattern,
std::vector< std::string > &  params 
)
static
static bool bpp::ApplicationTools::parameterExists ( const std::string &  parameterName,
const std::map< std::string, std::string > &  params 
)
inlinestatic

Tells if a parameter have been specified.

Parameters
parameterNameThe name of the parameter.
paramsThe parameter list.
Returns
True is the parameter of specified name is in the list.

Definition at line 147 of file ApplicationTools.h.

References bpp::TextTools::isEmpty().

Referenced by getParameter().

static bool bpp::ApplicationTools::parameterExists ( const std::string &  parameterName,
std::vector< std::string > &  params 
)
inlinestatic

Definition at line 155 of file ApplicationTools.h.

References getDoubleParameter(), getIntParameter(), and matchingParameters().

static void bpp::ApplicationTools::startTimer ( )
inlinestatic

Starts the timer.

Definition at line 617 of file ApplicationTools.h.

References displayTime(), getTime(), and startTime.

Referenced by bpp::BppApplication::startTimer().

Member Data Documentation

std::shared_ptr< OutputStream > ApplicationTools::error
static

The output stream where errors have to be displayed.

Definition at line 99 of file ApplicationTools.h.

Referenced by bpp::ReparametrizationFunctionWrapper::fireParameterChanged().

bool ApplicationTools::interactive = true
static

Tell if the program is interactive (typically run in foreground). Default to yes.

Definition at line 127 of file ApplicationTools.h.

Referenced by bpp::BppApplication::BppApplication().

std::shared_ptr< OutputStream > ApplicationTools::message
static

The output stream where messages have to be displayed.

Definition at line 103 of file ApplicationTools.h.

Referenced by bpp::MetaOptimizer::doStep().

time_t ApplicationTools::startTime
static

Timer variable.

Definition at line 112 of file ApplicationTools.h.

Referenced by startTimer().

float ApplicationTools::terminalSplit = 0.5
static

The fraction of terminal width dedicated to messages.

Definition at line 122 of file ApplicationTools.h.

Referenced by displayResult().

size_t ApplicationTools::terminalWidth = 80
static

The width of the output terminal (in character).

Definition at line 117 of file ApplicationTools.h.

Referenced by displayResult().

std::shared_ptr< OutputStream > ApplicationTools::warning
static

The output stream where warnings have to be displayed.

Definition at line 107 of file ApplicationTools.h.

Referenced by bpp::RescaledHmmLikelihood::computeForward_(), and bpp::BppODiscreteDistributionFormat::initialize_().

int ApplicationTools::warningLevel = 0
static

Specify the amount of warning to display.

Definition at line 132 of file ApplicationTools.h.

Referenced by bpp::BppApplication::BppApplication(), and getParameter().


The documentation for this class was generated from the following files: