fix print problem, fix Tong's email format

This commit is contained in:
tqchen 2014-08-30 18:49:30 -07:00
parent 9739a1c806
commit 9c0389981a
10 changed files with 54 additions and 38 deletions

View File

@ -4,7 +4,7 @@ Title: R wrapper of xgboost
Version: 0.3-0 Version: 0.3-0
Date: 2014-08-23 Date: 2014-08-23
Author: Tianqi Chen, Tong He Author: Tianqi Chen, Tong He
Maintainer: Tong He <hetong007 at gmail.com> Maintainer: Tong He <hetong007@gmail.com>
Description: xgboost Description: xgboost
License: file LICENSE License: file LICENSE
URL: https://github.com/tqchen/xgboost URL: https://github.com/tqchen/xgboost

View File

@ -4,8 +4,8 @@ PKGROOT=../../
CXX=`R CMD config CXX` CXX=`R CMD config CXX`
TCFLAGS=`R CMD config CFLAGS` TCFLAGS=`R CMD config CFLAGS`
# expose these flags to R CMD SHLIB # expose these flags to R CMD SHLIB
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_ERROR_ -I$(PKGROOT) $(SHLIB_OPENMP_CFLAGS) PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -I$(PKGROOT) $(SHLIB_OPENMP_CFLAGS)
XGBFLAG= $(TCFLAGS) -DXGBOOST_CUSTOMIZE_ERROR_ -fPIC $(SHLIB_OPENMP_CFLAGS) XGBFLAG= $(TCFLAGS) -DXGBOOST_CUSTOMIZE_MSG_ -fPIC $(SHLIB_OPENMP_CFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS) PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
ifeq ($(no_omp),1) ifeq ($(no_omp),1)

View File

@ -4,8 +4,8 @@ PKGROOT=../../
CXX=`Rcmd config CXX` CXX=`Rcmd config CXX`
TCFLAGS=`Rcmd config CFLAGS` TCFLAGS=`Rcmd config CFLAGS`
# expose these flags to R CMD SHLIB # expose these flags to R CMD SHLIB
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_ERROR_ -I$(PKGROOT) $(SHLIB_OPENMP_CFLAGS) PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -I$(PKGROOT) $(SHLIB_OPENMP_CFLAGS)
XGBFLAG= -O3 -DXGBOOST_CUSTOMIZE_ERROR_ -fPIC $(SHLIB_OPENMP_CFLAGS) XGBFLAG= -O3 -DXGBOOST_CUSTOMIZE_MSG_ -fPIC $(SHLIB_OPENMP_CFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS) PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
ifeq ($(no_omp),1) ifeq ($(no_omp),1)
@ -29,4 +29,3 @@ $(CXXOBJ) :
clean: clean:
rm -rf *.so *.o *~ *.dll rm -rf *.so *.o *~ *.dll

View File

@ -18,6 +18,9 @@ void HandleAssertError(const char *msg) {
void HandleCheckError(const char *msg) { void HandleCheckError(const char *msg) {
error("%s", msg); error("%s", msg);
} }
void HandlePrint(const char *msg) {
Rprintf("%s", msg);
}
} // namespace utils } // namespace utils
} // namespace xgboost } // namespace xgboost

View File

@ -104,10 +104,10 @@ class DMatrixSimple : public DataMatrix {
this->AddRow(feats); this->AddRow(feats);
if (!silent) { if (!silent) {
printf("%lux%lu matrix with %lu entries is loaded from %s\n", utils::Printf("%lux%lu matrix with %lu entries is loaded from %s\n",
static_cast<unsigned long>(info.num_row()), static_cast<unsigned long>(info.num_row()),
static_cast<unsigned long>(info.num_col()), static_cast<unsigned long>(info.num_col()),
static_cast<unsigned long>(row_data_.size()), fname); static_cast<unsigned long>(row_data_.size()), fname);
} }
fclose(file); fclose(file);
// try to load in additional file // try to load in additional file
@ -156,17 +156,17 @@ class DMatrixSimple : public DataMatrix {
fmat_->LoadColAccess(fs); fmat_->LoadColAccess(fs);
if (!silent) { if (!silent) {
printf("%lux%lu matrix with %lu entries is loaded", utils::Printf("%lux%lu matrix with %lu entries is loaded",
static_cast<unsigned long>(info.num_row()), static_cast<unsigned long>(info.num_row()),
static_cast<unsigned long>(info.num_col()), static_cast<unsigned long>(info.num_col()),
static_cast<unsigned long>(row_data_.size())); static_cast<unsigned long>(row_data_.size()));
if (fname != NULL) { if (fname != NULL) {
printf(" from %s\n", fname); utils::Printf(" from %s\n", fname);
} else { } else {
printf("\n"); utils::Printf("\n");
} }
if (info.group_ptr.size() != 0) { if (info.group_ptr.size() != 0) {
printf("data contains %u groups\n", (unsigned)info.group_ptr.size()-1); utils::Printf("data contains %u groups\n", (unsigned)info.group_ptr.size()-1);
} }
} }
} }
@ -186,13 +186,13 @@ class DMatrixSimple : public DataMatrix {
fs.Close(); fs.Close();
if (!silent) { if (!silent) {
printf("%lux%lu matrix with %lu entries is saved to %s\n", utils::Printf("%lux%lu matrix with %lu entries is saved to %s\n",
static_cast<unsigned long>(info.num_row()), static_cast<unsigned long>(info.num_row()),
static_cast<unsigned long>(info.num_col()), static_cast<unsigned long>(info.num_col()),
static_cast<unsigned long>(row_data_.size()), fname); static_cast<unsigned long>(row_data_.size()), fname);
if (info.group_ptr.size() != 0) { if (info.group_ptr.size() != 0) {
printf("data contains %u groups\n", utils::Printf("data contains %u groups\n",
static_cast<unsigned>(info.group_ptr.size()-1)); static_cast<unsigned>(info.group_ptr.size()-1));
} }
} }
} }

View File

@ -98,8 +98,8 @@ struct MetaInfo {
group_ptr.push_back(group_ptr.back()+nline); group_ptr.push_back(group_ptr.back()+nline);
} }
if (!silent) { if (!silent) {
printf("%u groups are loaded from %s\n", utils::Printf("%u groups are loaded from %s\n",
static_cast<unsigned>(group_ptr.size()-1), fname); static_cast<unsigned>(group_ptr.size()-1), fname);
} }
fclose(fi); fclose(fi);
return true; return true;
@ -133,7 +133,7 @@ struct MetaInfo {
weights.push_back(wt); weights.push_back(wt);
} }
if (!silent) { if (!silent) {
printf("loading %s from %s\n", field, fname); utils::Printf("loading %s from %s\n", field, fname);
} }
fclose(fi); fclose(fi);
return true; return true;

View File

@ -183,7 +183,7 @@ struct EvalAMS : public IEvaluator {
} }
} }
if (ntop == ndata) { if (ntop == ndata) {
fprintf(stderr, "\tams-ratio=%g", static_cast<float>(thresindex) / ndata); utils::Printf("\tams-ratio=%g", static_cast<float>(thresindex) / ndata);
return static_cast<float>(tams); return static_cast<float>(tams);
} else { } else {
return static_cast<float>(sqrt(2*((s_tp+b_fp+br) * log(1.0 + s_tp/(b_fp+br)) - s_tp))); return static_cast<float>(sqrt(2*((s_tp+b_fp+br) * log(1.0 + s_tp/(b_fp+br)) - s_tp)));

View File

@ -70,7 +70,7 @@ class BoostLearner {
static_cast<unsigned long>(buffer_size)); static_cast<unsigned long>(buffer_size));
this->SetParam("num_pbuffer", str_temp); this->SetParam("num_pbuffer", str_temp);
if (!silent) { if (!silent) {
printf("buffer_size=%ld\n", static_cast<long>(buffer_size)); utils::Printf("buffer_size=%ld\n", static_cast<long>(buffer_size));
} }
} }
/*! /*!

View File

@ -63,8 +63,8 @@ class TreePruner: public IUpdater {
} }
} }
if (silent == 0) { if (silent == 0) {
printf("tree prunning end, %d roots, %d extra nodes, %d pruned nodes ,max_depth=%d\n", utils::Printf("tree prunning end, %d roots, %d extra nodes, %d pruned nodes ,max_depth=%d\n",
tree.param.num_roots, tree.num_extra_nodes(), npruned, tree.MaxDepth()); tree.param.num_roots, tree.num_extra_nodes(), npruned, tree.MaxDepth());
} }
} }

View File

@ -48,9 +48,9 @@ namespace xgboost {
/*! \brief namespace for helper utils of the project */ /*! \brief namespace for helper utils of the project */
namespace utils { namespace utils {
/*! \brief error message buffer length */ /*! \brief error message buffer length */
const int kErrorBuffer = 1 << 12; const int kPrintBuffer = 1 << 12;
#ifndef XGBOOST_CUSTOMIZE_ERROR_ #ifndef XGBOOST_CUSTOMIZE_MSG_
/*! /*!
* \brief handling of Assert error, caused by in-apropriate input * \brief handling of Assert error, caused by in-apropriate input
* \param msg error message * \param msg error message
@ -67,19 +67,33 @@ inline void HandleCheckError(const char *msg) {
fprintf(stderr, "%s\n", msg); fprintf(stderr, "%s\n", msg);
exit(-1); exit(-1);
} }
inline void HandlePrint(const char *msg) {
printf("%s", msg);
}
#else #else
// include declarations, some one must implement this // include declarations, some one must implement this
void HandleAssertError(const char *msg); void HandleAssertError(const char *msg);
void HandleCheckError(const char *msg); void HandleCheckError(const char *msg);
void HandlePrint(const char *msg);
#endif #endif
/*! \brief printf, print message to the console */
inline void Printf(const char *fmt, ...) {
std::string msg(kPrintBuffer, '\0');
va_list args;
va_start(args, fmt);
vsnprintf(&msg[0], kPrintBuffer, fmt, args);
va_end(args);
HandlePrint(msg.c_str());
}
/*! \brief assert an condition is true, use this to handle debug information */ /*! \brief assert an condition is true, use this to handle debug information */
inline void Assert(bool exp, const char *fmt, ...) { inline void Assert(bool exp, const char *fmt, ...) {
if (!exp) { if (!exp) {
std::string msg(kErrorBuffer, '\0'); std::string msg(kPrintBuffer, '\0');
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vsnprintf(&msg[0], kErrorBuffer, fmt, args); vsnprintf(&msg[0], kPrintBuffer, fmt, args);
va_end(args); va_end(args);
HandleAssertError(msg.c_str()); HandleAssertError(msg.c_str());
} }
@ -88,10 +102,10 @@ inline void Assert(bool exp, const char *fmt, ...) {
/*!\brief same as assert, but this is intended to be used as message for user*/ /*!\brief same as assert, but this is intended to be used as message for user*/
inline void Check(bool exp, const char *fmt, ...) { inline void Check(bool exp, const char *fmt, ...) {
if (!exp) { if (!exp) {
std::string msg(kErrorBuffer, '\0'); std::string msg(kPrintBuffer, '\0');
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vsnprintf(&msg[0], kErrorBuffer, fmt, args); vsnprintf(&msg[0], kPrintBuffer, fmt, args);
va_end(args); va_end(args);
HandleCheckError(msg.c_str()); HandleCheckError(msg.c_str());
} }
@ -100,10 +114,10 @@ inline void Check(bool exp, const char *fmt, ...) {
/*! \brief report error message, same as check */ /*! \brief report error message, same as check */
inline void Error(const char *fmt, ...) { inline void Error(const char *fmt, ...) {
{ {
std::string msg(kErrorBuffer, '\0'); std::string msg(kPrintBuffer, '\0');
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vsnprintf(&msg[0], kErrorBuffer, fmt, args); vsnprintf(&msg[0], kPrintBuffer, fmt, args);
va_end(args); va_end(args);
HandleCheckError(msg.c_str()); HandleCheckError(msg.c_str());
} }